diff --git a/docshtml/Workspace.html b/docshtml/Workspace.html index 33d2e61f..d66311df 100644 --- a/docshtml/Workspace.html +++ b/docshtml/Workspace.html @@ -1 +1 @@ -Workspace
/*
*The Workspace Service (WSS) is primarily a language independent remote storage
*and retrieval system for KBase typed objects (TO) defined with the KBase
*Interface Description Language (KIDL). It has the following primary features:
*- Immutable storage of TOs with
*- user defined metadata
*- data provenance
*- Versioning of TOs
*- Referencing from TO to TO
*- Typechecking of all saved objects against a KIDL specification
*- Collecting typed objects into a workspace
*- Sharing workspaces with specific KBase users or the world
*- Freezing and publishing workspaces
*/
moduleWorkspace{

/*
*A boolean. 0 = false, other = true.
*/
typedefintboolean;

/*
*The unique, permanent numerical ID of a workspace.
*/
typedefintws_id;

/*
*A string used as a name for a workspace.
*Any string consisting of alphanumeric characters and "_", ".", or "-"
*that is not an integer is acceptable. The name may optionally be
*prefixed with the workspace owner's user name and a colon, e.g.
*kbasetest:my_workspace.
*/
typedefstringws_name;

/*
*Represents the permissions a user or users have to a workspace:
*
*'a' - administrator. All operations allowed.
*'w' - read/write.
*'r' - read.
*'n' - no permissions.
*/
typedefstringpermission;

/*
*Login name of a KBase user account.
*/
typedefstringusername;

/*
*A time in the format YYYY-MM-DDThh:mm:ssZ, where Z is either the
*character Z (representing the UTC timezone) or the difference
*in time to UTC in the format +/-HHMM, eg:
*2012-12-17T23:24:06-0500 (EST time)
*2013-04-03T08:56:32+0000 (UTC time)
*2013-04-03T08:56:32Z (UTC time)
*/
typedefstringtimestamp;

/*
*A Unix epoch (the time since 00:00:00 1/1/1970 UTC) in milliseconds.
*/
typedefintepoch;

/*
*A type string.
*Specifies the type and its version in a single string in the format
*[module].[typename]-[major].[minor]:
*
*module - a string. The module name of the typespec containing the type.
*typename - a string. The name of the type as assigned by the typedef
*statement.
*major - an integer. The major version of the type. A change in the
*major version implies the type has changed in a non-backwards
*compatible way.
*minor - an integer. The minor version of the type. A change in the
*minor version implies that the type has changed in a way that is
*backwards compatible with previous type definitions.
*
*In many cases, the major and minor versions are optional, and if not
*provided the most recent version will be used.
*
*Example: MyModule.MyType-3.1
*/
typedefstringtype_string;

/*
*An id type (e.g. from a typespec @id annotation: @id [idtype])
*/
typedefstringid_type;

/*
*An id extracted from an object.
*/
typedefstringextracted_id;

/*
*User provided metadata about an object.
*Arbitrary key-value pairs provided by the user.
*/
typedefmapping<string,string>usermeta;

/*
*The lock status of a workspace.
*One of 'unlocked', 'locked', or 'published'.
*/
typedefstringlock_status;

/*
*A workspace identifier.
*
*Select a workspace by one, and only one, of the numerical id or name.
*ws_id id - the numerical ID of the workspace.
*ws_name workspace - the name of the workspace.
*/
typedefstructure{
ws_nameworkspace;
ws_idid;
}
WorkspaceIdentity;

/*
*Meta data associated with a workspace. Provided for backwards
*compatibility. To be replaced by workspace_info.
*
*ws_name id - name of the workspace
*username owner - name of the user who owns (who created) this workspace
*timestamp moddate - date when the workspace was last modified
*int objects - the approximate number of objects currently stored in
*the workspace.
*permission user_permission - permissions for the currently logged in
*user for the workspace
*permission global_permission - default permissions for the workspace
*for all KBase users
*ws_id num_id - numerical ID of the workspace
*
*@deprecatedWorkspace.workspace_info
*/
typedeftuple<ws_nameid,usernameowner,timestampmoddate,intobjects,permissionuser_permission,permissionglobal_permission,ws_idnum_id>workspace_metadata;

/*
*Information about a workspace.
*
*ws_id id - the numerical ID of the workspace.
*ws_name workspace - name of the workspace.
*username owner - name of the user who owns (e.g. created) this workspace.
*timestamp moddate - date when the workspace was last modified.
*int max_objid - the maximum object ID appearing in this workspace.
*Since cloning a workspace preserves object IDs, this number may be
*greater than the number of objects in a newly cloned workspace.
*permission user_permission - permissions for the authenticated user of
*this workspace.
*permission globalread - whether this workspace is globally readable.
*lock_status lockstat - the status of the workspace lock.
*usermeta metadata - arbitrary user-supplied metadata about
*the workspace.
*/
typedeftuple<ws_idid,ws_nameworkspace,usernameowner,timestampmoddate,intmax_objid,permissionuser_permission,permissionglobalread,lock_statuslockstat,usermetametadata>workspace_info;

/*
*The unique, permanent numerical ID of an object.
*/
typedefintobj_id;

/*
*A string used as a name for an object.
*Any string consisting of alphanumeric characters and the characters
*|._- that is not an integer is acceptable.
*/
typedefstringobj_name;

/*
*An object version.
*The version of the object, starting at 1.
*/
typedefintobj_ver;

/*
*A string that uniquely identifies an object in the workspace service.
*
*The format is [ws_name or id]/[obj_name or id]/[obj_ver].
*For example, MyFirstWorkspace/MyFirstObject/3 would identify the third version
*of an object called MyFirstObject in the workspace called
*MyFirstWorkspace. 42/Panic/1 would identify the first version of
*the object name Panic in workspace with id 42. Towel/1/6 would
*identify the 6th version of the object with id 1 in the Towel
*workspace.If the version number is omitted, the latest version of
*the object is assumed.
*/
typedefstringobj_ref;

/*
*An object identifier.
*
*Select an object by either:
*One, and only one, of the numerical id or name of the workspace.
*ws_id wsid - the numerical ID of the workspace.
*ws_name workspace - the name of the workspace.
*AND
*One, and only one, of the numerical id or name of the object.
*obj_id objid- the numerical ID of the object.
*obj_name name - name of the object.
*OPTIONALLY
*obj_ver ver - the version of the object.
*OR an object reference string:
*obj_ref ref - an object reference string.
*/
typedefstructure{
ws_nameworkspace;
ws_idwsid;
obj_namename;
obj_idobjid;
obj_verver;
obj_refref;
}
ObjectIdentity;

/*
*A chain of objects with references to one another.
*
*An object reference chain consists of a list of objects where the nth
*object possesses a reference, either in the object itself or in the
*object provenance, to the n+1th object.
*/
typedeflist<ObjectIdentity>ref_chain;

/*
*A chain of objects with references to one another as a string.
*
*A single string that is semantically identical to ref_chain above.
*Represents a path from one workspace object to another through an
*arbitrarily number of intermediate objects where each object has a
*dependency or provenance reference to the next object. Each entry is
*an obj_ref as defined earlier. Entries are separated by semicolons.
*Whitespace is ignored.
*
*Examples:
*3/5/6; kbaseuser:myworkspace/myobject; 5/myobject/2
*aworkspace/6
*/
typedefstringref_string;

/*
*A path into an object.
*Identify a sub portion of an object by providing the path, delimited by
*a slash (/), to that portion of the object. Thus the path may not have
*slashes in the structure or mapping keys. Examples:
*/foo/bar/3 - specifies the bar key of the foo mapping and the 3rd
*entry of the array if bar maps to an array or the value mapped to
*the string "3" if bar maps to a map.
*/foo/bar/[*]/baz - specifies the baz field of all the objects in the
*list mapped by the bar key in the map foo.
*/foo/asterisk/baz - specifies the baz field of all the objects in the
*values of the foo mapping. Swap 'asterisk' for * in the path.
*In case you need to use '/' or '~' in path items use JSON Pointer
*notation defined here: http://tools.ietf.org/html/rfc6901
*/
typedefstringobject_path;

/*
*DEPRECATED
*
*An object subset identifier.
*
*Select a subset of an object by:
*EITHER
*One, and only one, of the numerical id or name of the workspace.
*ws_id wsid - the numerical ID of the workspace.
*ws_name workspace - name of the workspace.
*AND
*One, and only one, of the numerical id or name of the object.
*obj_id objid- the numerical ID of the object.
*obj_name name - name of the object.
*OPTIONALLY
*obj_ver ver - the version of the object.
*OR an object reference string:
*obj_ref ref - an object reference string.
*AND a subset specification:
*list<object_path> included - the portions of the object to include
*in the object subset.
*boolean strict_maps - if true, throw an exception if the subset
*specification traverses a non-existant map key (default false)
*boolean strict_arrays - if true, throw an exception if the subset
*specification exceeds the size of an array (default true)
*
*@deprecatedWorkspace.ObjectSpecification
*/
typedefstructure{
ws_nameworkspace;
ws_idwsid;
obj_namename;
obj_idobjid;
obj_verver;
obj_refref;
list<object_path>included;
booleanstrict_maps;
booleanstrict_arrays;
}
SubObjectIdentity;

/*
*An Object Specification (OS). Inherits from ObjectIdentity (OI).
*Specifies which object, and which parts of that object, to retrieve
*from the Workspace Service.
*
*The fields wsid, workspace, objid, name, and ver are identical to
*the OI fields.
*
*The ref field's behavior is extended from OI. It maintains its
*previous behavior, but now also can act as a reference string. See
*reference following below for more information.
*
*REFERENCE FOLLOWING:
*
*Reference following guarantees that a user that has access to an
*object can always see a) objects that are referenced inside the object
*and b) objects that are referenced in the object's provenance. This
*ensures that the user has visibility into the entire provenance of the
*object and the object's object dependencies (e.g. references).
*
*The user must have at least read access to the object specified in this
*SO, but need not have access to any further objects in the reference
*chain, and those objects may be deleted.
*
*Optional reference following fields:
*Note that only one of the following fields may be specified.
*
*ref_chain obj_path - a path to the desired object from the object
*specified in this OS. In other words, the object specified in this
*OS is assumed to be accessible to the user, and the objects in
*the object path represent a chain of references to the desired
*object at the end of the object path. If the references are all
*valid, the desired object will be returned.
*- OR -
*list<obj_ref> obj_ref_path - shorthand for the obj_path.
*- OR -
*ref_chain to_obj_path - identical to obj_path, except that the path
*is TO the object specified in this OS, rather than from the object.
*In other words the object specified by wsid/objid/ref etc. is the
*end of the path, and to_obj_path is the rest of the path. The user
*must have access to the first object in the to_obj_path.
*- OR -
*list<obj_ref> to_obj_ref_path - shorthand for the to_obj_path.
*- OR -
*ref_string ref - A string representing a reference path from
*one object to another. Unlike the previous reference following
*options, the ref_string represents the ENTIRE path from the source
*object to the target object. As with the OI object, the ref field
*may contain a single reference.
*- OR -
*boolean find_refence_path - This is the last, slowest, and most expensive resort
*for getting a referenced object - do not use this method unless the
*path to the object is unavailable by any other means. Setting the
*find_refence_path parameter to true means that the workspace service will
*search through the object reference graph from the object specified
*in this OS to find an object that 1) the user can access, and 2)
*has an unbroken reference path to the target object. If the search
*succeeds, the object will be returned as normal. Note that the search
*will automatically fail after a certain (but much larger than necessary
*for the vast majority of cases) number of objects are traversed.
*
*
*OBJECT SUBSETS:
*
*When selecting a subset of an array in an object, the returned
*array is compressed to the size of the subset, but the ordering of
*the array is maintained. For example, if the array stored at the
*'feature' key of a Genome object has 4000 entries, and the object paths
*provided are:
*/feature/7
*/feature/3015
*/feature/700
*The returned feature array will be of length three and the entries will
*consist, in order, of the 7th, 700th, and 3015th entries of the
*original array.
*
*Optional object subset fields:
*list<object_path> included - the portions of the object to include
*in the object subset.
*boolean strict_maps - if true, throw an exception if the subset
*specification traverses a non-existent map key (default false)
*boolean strict_arrays - if true, throw an exception if the subset
*specification exceeds the size of an array (default true)
*/
typedefstructure{
ws_nameworkspace;
ws_idwsid;
obj_namename;
obj_idobjid;
obj_verver;
ref_stringref;
ref_chainobj_path;
list<obj_ref>obj_ref_path;
ref_chainto_obj_path;
list<obj_ref>to_obj_ref_path;
booleanfind_reference_path;
list<object_path>included;
booleanstrict_maps;
booleanstrict_arrays;
}
ObjectSpecification;

/*
*Meta data associated with an object stored in a workspace. Provided for
*backwards compatibility.
*
*obj_name id - name of the object.
*type_string type - type of the object.
*timestamp moddate - date when the object was saved
*obj_ver instance - the version of the object
*string command - Deprecated. Always returns the empty string.
*username lastmodifier - name of the user who last saved the object,
*including copying the object
*username owner - Deprecated. Same as lastmodifier.
*ws_name workspace - name of the workspace in which the object is
*stored
*string ref - Deprecated. Always returns the empty string.
*string chsum - the md5 checksum of the object.
*usermeta metadata - arbitrary user-supplied metadata about
*the object.
*obj_id objid - the numerical id of the object.
*
*@deprecatedobject_info
*/
typedeftuple<obj_nameid,type_stringtype,timestampmoddate,intinstance,stringcommand,usernamelastmodifier,usernameowner,ws_nameworkspace,stringref,stringchsum,usermetametadata,obj_idobjid>object_metadata;

/*
*Information about an object, including user provided metadata.
*
*obj_id objid - the numerical id of the object.
*obj_name name - the name of the object.
*type_string type - the type of the object.
*timestamp save_date - the save date of the object.
*obj_ver ver - the version of the object.
*username saved_by - the user that saved or copied the object.
*ws_id wsid - the workspace containing the object.
*ws_name workspace - the workspace containing the object.
*string chsum - the md5 checksum of the object.
*int size - the size of the object in bytes.
*usermeta meta - arbitrary user-supplied metadata about
*the object.
*/
typedeftuple<obj_idobjid,obj_namename,type_stringtype,timestampsave_date,intversion,usernamesaved_by,ws_idwsid,ws_nameworkspace,stringchsum,intsize,usermetameta>object_info;

/*
*An external data unit. A piece of data from a source outside the
*Workspace.
*
*On input, only one of the resource_release_date or
*resource_release_epoch may be supplied. Both are supplied on output.
*
*All fields are optional, but at least one field must be present.
*
*string resource_name - the name of the resource, for example JGI.
*string resource_url - the url of the resource, for example
*http://genome.jgi.doe.gov
*string resource_version - version of the resource
*timestamp resource_release_date - the release date of the resource
*epoch resource_release_epoch - the release date of the resource
*string data_url - the url of the data, for example
*http://genome.jgi.doe.gov/pages/dynamicOrganismDownload.jsf?
*organism=BlaspURHD0036
*string data_id - the id of the data, for example
*7625.2.79179.AGTTCC.adnq.fastq.gz
*string description - a free text description of the data.
*/
typedefstructure{
stringresource_name;
stringresource_url;
stringresource_version;
timestampresource_release_date;
epochresource_release_epoch;
stringdata_url;
stringdata_id;
stringdescription;
}
ExternalDataUnit;

/*
*Information about a subaction that is invoked by a provenance action.
*
*A provenance action (PA) may invoke subactions (SA), e.g. calling a
*separate piece of code, a service, or a script. In most cases these
*calls are the same from PA to PA and so do not need to be listed in
*the provenance since providing information about the PA alone provides
*reproducibility.
*
*In some cases, however, SAs may change over time, such that invoking
*the same PA with the same parameters may produce different results.
*For example, if a PA calls a remote server, that server may be updated
*between a PA invoked on day T and another PA invoked on day T+1.
*
*The SubAction structure allows for specifying information about SAs
*that may dynamically change from PA invocation to PA invocation.
*
*All fields are optional but at least one field must be present.
*
*string name - the name of the SA.
*string ver - the version of SA.
*string code_url - a url pointing to the SA's codebase.
*string commit - a version control commit ID for the SA.
*string endpoint_url - a url pointing to the access point for the SA -
*a server url, for instance.
*/
typedefstructure{
stringname;
stringver;
stringcode_url;
stringcommit;
stringendpoint_url;
}
SubAction;

/*
*A provenance action.
*
*A provenance action (PA) is an action taken while transforming one data
*object to another. There may be several PAs taken in series. A PA is
*typically running a script, running an api command, etc. All of the
*following fields are optional, but more information provided equates to
*better data provenance.
*
*If a provenance action has no fields defined at all, it is silently dropped from
*the list.
*
*resolved_ws_objects should never be set by the user; it is set by the
*workspace service when returning data.
*
*On input, only one of the time or epoch may be supplied. Both are
*supplied on output.
*
*The maximum size of the entire provenance object, including all actions,
*is 1MB.
*
*timestamp time - the time the action was started
*epoch epoch - the time the action was started.
*string caller - the name or id of the invoker of this provenance
*action. In most cases, this will be the same for all PAs.
*string service - the name of the service that performed this action.
*string service_ver - the version of the service that performed this action.
*string method - the method of the service that performed this action.
*list<UnspecifiedObject> method_params - the parameters of the method
*that performed this action. If an object in the parameters is a
*workspace object, also put the object reference in the
*input_ws_object list.
*string script - the name of the script that performed this action.
*string script_ver - the version of the script that performed this action.
*string script_command_line - the command line provided to the script
*that performed this action. If workspace objects were provided in
*the command line, also put the object reference in the
*input_ws_object list.
*list<ref_string> input_ws_objects - the workspace objects that
*were used as input to this action; typically these will also be
*present as parts of the method_params or the script_command_line
*arguments. A reference path into the object graph may be supplied.
*list<obj_ref> resolved_ws_objects - the workspace objects ids from
*input_ws_objects resolved to permanent workspace object references
*by the workspace service.
*list<string> intermediate_incoming - if the previous action produced
*output that 1) was not stored in a referrable way, and 2) is
*used as input for this action, provide it with an arbitrary and
*unique ID here, in the order of the input arguments to this action.
*These IDs can be used in the method_params argument.
*list<string> intermediate_outgoing - if this action produced output
*that 1) was not stored in a referrable way, and 2) is
*used as input for the next action, provide it with an arbitrary and
*unique ID here, in the order of the output values from this action.
*These IDs can be used in the intermediate_incoming argument in the
*next action.
*list<ExternalDataUnit> external_data - data external to the workspace
*that was either imported to the workspace or used to create a
*workspace object.
*list<SubAction> subactions - the subactions taken as a part of this
*action.
*mapping<string, string> custom - user definable custom provenance
*fields and their values.
*string description - a free text description of this action.
*/
typedefstructure{
timestamptime;
epochepoch;
stringcaller;
stringservice;
stringservice_ver;
stringmethod;
list<UnspecifiedObject>method_params;
stringscript;
stringscript_ver;
stringscript_command_line;
list<ref_string>input_ws_objects;
list<obj_ref>resolved_ws_objects;
list<string>intermediate_incoming;
list<string>intermediate_outgoing;
list<ExternalDataUnit>external_data;
list<SubAction>subactions;
mapping<string,string>custom;
stringdescription;
}
ProvenanceAction;

/*
*Returns the version of the workspace service.
*/
funcdefver()returns(stringver)authenticationnone;

/*
*Input parameters for the "create_workspace" function.
*
*Required arguments:
*ws_name workspace - name of the workspace to be created.
*
*Optional arguments:
*permission globalread - 'r' to set the new workspace globally readable,
*default 'n'.
*string description - A free-text description of the new workspace, 1000
*characters max. Longer strings will be mercilessly and brutally
*truncated.
*usermeta meta - arbitrary user-supplied metadata for the workspace.
*/
typedefstructure{
ws_nameworkspace;
permissionglobalread;
stringdescription;
usermetameta;
}
CreateWorkspaceParams;

/*
*Creates a new workspace.
*/
funcdefcreate_workspace(CreateWorkspaceParamsparams)returns(workspace_infoinfo)authenticationrequired;

/*
*Input parameters for the "alter_workspace_metadata" function.
*
*Required arguments:
*WorkspaceIdentity wsi - the workspace to be altered
*
*One or both of the following arguments are required:
*usermeta new - metadata to assign to the workspace. Duplicate keys will
*be overwritten.
*list<string> remove - these keys will be removed from the workspace
*metadata key/value pairs.
*/
typedefstructure{
WorkspaceIdentitywsi;
usermetanew;
list<string>remove;
}
AlterWorkspaceMetadataParams;

/*
*Change the metadata associated with a workspace.
*/
funcdefalter_workspace_metadata(AlterWorkspaceMetadataParamsparams)returns()authenticationrequired;

/*
*Input parameters for the "clone_workspace" function.
*
*Note that deleted objects are not cloned, although hidden objects are
*and remain hidden in the new workspace.
*
*Required arguments:
*WorkspaceIdentity wsi - the workspace to be cloned.
*ws_name workspace - name of the workspace to be cloned into. This must
*be a non-existant workspace name.
*
*Optional arguments:
*permission globalread - 'r' to set the new workspace globally readable,
*default 'n'.
*string description - A free-text description of the new workspace, 1000
*characters max. Longer strings will be mercilessly and brutally
*truncated.
*usermeta meta - arbitrary user-supplied metadata for the workspace.
*list<ObjectIdentity> exclude - exclude the specified objects from the
*cloned workspace. Either an object ID or a object name must be
*specified in each ObjectIdentity - any supplied reference strings,
*workspace names or IDs, and versions are ignored.
*/
typedefstructure{
WorkspaceIdentitywsi;
ws_nameworkspace;
permissionglobalread;
stringdescription;
usermetameta;
list<ObjectIdentity>exclude;
}
CloneWorkspaceParams;

/*
*Clones a workspace.
*/
funcdefclone_workspace(CloneWorkspaceParamsparams)returns(workspace_infoinfo)authenticationrequired;

/*
*Lock a workspace, preventing further changes.
*
*WARNING: Locking a workspace is permanent. A workspace, once locked,
*cannot be unlocked.
*
*The only changes allowed for a locked workspace are changing user
*based permissions or making a private workspace globally readable,
*thus permanently publishing the workspace. A locked, globally readable
*workspace cannot be made private.
*/
funcdeflock_workspace(WorkspaceIdentitywsi)returns(workspace_infoinfo)authenticationrequired;

/*
*DEPRECATED
*
*Input parameters for the "get_workspacemeta" function. Provided for
*backwards compatibility.
*
*One, and only one of:
*ws_name workspace - name of the workspace.
*ws_id id - the numerical ID of the workspace.
*
*Optional arguments:
*string auth - the authentication token of the KBase account accessing
*the workspace. Overrides the client provided authorization
*credentials if they exist.
*
*@deprecatedWorkspace.WorkspaceIdentity
*/
typedefstructure{
ws_nameworkspace;
ws_idid;
stringauth;
}
get_workspacemeta_params;

/*
*Retrieves the metadata associated with the specified workspace.
*Provided for backwards compatibility.
*@deprecatedWorkspace.get_workspace_info
*/
funcdefget_workspacemeta(get_workspacemeta_paramsparams)returns(workspace_metadatametadata)authenticationoptional;

/*
*Get information associated with a workspace.
*/
funcdefget_workspace_info(WorkspaceIdentitywsi)returns(workspace_infoinfo)authenticationoptional;

/*
*Get a workspace's description.
*/
funcdefget_workspace_description(WorkspaceIdentitywsi)returns(stringdescription)authenticationoptional;

/*
*Input parameters for the "set_permissions" function.
*
*One, and only one, of the following is required:
*ws_id id - the numerical ID of the workspace.
*ws_name workspace - the name of the workspace.
*
*Required arguments:
*permission new_permission - the permission to assign to the users.
*list<username> users - the users whose permissions will be altered.
*/
typedefstructure{
ws_nameworkspace;
ws_idid;
permissionnew_permission;
list<username>users;
}
SetPermissionsParams;

/*
*Set permissions for a workspace.
*/
funcdefset_permissions(SetPermissionsParamsparams)returns()authenticationrequired;

/*
*Input parameters for the "set_global_permission" function.
*
*One, and only one, of the following is required:
*ws_id id - the numerical ID of the workspace.
*ws_name workspace - the name of the workspace.
*
*Required arguments:
*permission new_permission - the permission to assign to all users,
*either 'n' or 'r'. 'r' means that all users will be able to read
*the workspace; otherwise users must have specific permission to
*access the workspace.
*/
typedefstructure{
ws_nameworkspace;
ws_idid;
permissionnew_permission;
}
SetGlobalPermissionsParams;

/*
*Set the global permission for a workspace.
*/
funcdefset_global_permission(SetGlobalPermissionsParamsparams)returns()authenticationrequired;

/*
*Input parameters for the "set_workspace_description" function.
*
*One, and only one, of the following is required:
*ws_id id - the numerical ID of the workspace.
*ws_name workspace - the name of the workspace.
*
*Optional arguments:
*string description - A free-text description of the workspace, 1000
*characters max. Longer strings will be mercilessly and brutally
*truncated. If omitted, the description is set to null.
*/
typedefstructure{
ws_nameworkspace;
ws_idid;
stringdescription;
}
SetWorkspaceDescriptionParams;

/*
*Set the description for a workspace.
*/
funcdefset_workspace_description(SetWorkspaceDescriptionParamsparams)returns()authenticationrequired;

/*
*Input parameters for the "get_permissions_mass" function.
*workspaces - the workspaces for which to return the permissions,
*maximum 1000.
*/
typedefstructure{
list<WorkspaceIdentity>workspaces;
}
GetPermissionsMassParams;

/*
*A set of workspace permissions.
*perms - the list of permissions for each requested workspace
*/
typedefstructure{
list<mapping<username,permission>>perms;
}
WorkspacePermissions;

/*
*Get permissions for multiple workspaces.
*/
funcdefget_permissions_mass(GetPermissionsMassParamsmass)returns(WorkspacePermissionsperms)authenticationoptional;

/*
*Get permissions for a workspace.
*@deprecatedget_permissions_mass
*/
funcdefget_permissions(WorkspaceIdentitywsi)returns(mapping<username,permission>perms)authenticationoptional;

/*
*Input parameters for the "save_object" function. Provided for backwards
*compatibility.
*
*Required arguments:
*type_string type - type of the object to be saved
*ws_name workspace - name of the workspace where the object is to be
*saved
*obj_name id - name behind which the object will be saved in the
*workspace
*UnspecifiedObject data - data to be saved in the workspace
*
*Optional arguments:
*usermeta metadata - arbitrary user-supplied metadata for the object,
*not to exceed 16kb; if the object type specifies automatic
*metadata extraction with the 'meta ws' annotation, and your
*metadata name conflicts, then your metadata will be silently
*overwritten.
*string auth - the authentication token of the KBase account accessing
*the workspace. Overrides the client provided authorization
*credentials if they exist.
*
*@deprecated
*/
typedefstructure{
obj_nameid;
type_stringtype;
UnspecifiedObjectdata;
ws_nameworkspace;
mapping<string,string>metadata;
stringauth;
}
save_object_params;

/*
*Saves the input object data and metadata into the selected workspace,
*returning the object_metadata of the saved object. Provided
*for backwards compatibility.
*
*@deprecatedWorkspace.save_objects
*/
funcdefsave_object(save_object_paramsparams)returns(object_metadatametadata)authenticationoptional;

/*
*An object and associated data required for saving.
*
*Required arguments:
*type_string type - the type of the object. Omit the version information
*to use the latest version.
*UnspecifiedObject data - the object data.
*One, and only one, of:
*obj_name name - the name of the object.
*obj_id objid - the id of the object to save over.
*
*
*Optional arguments:
*usermeta meta - arbitrary user-supplied metadata for the object,
*not to exceed 16kb; if the object type specifies automatic
*metadata extraction with the 'meta ws' annotation, and your
*metadata name conflicts, then your metadata will be silently
*overwritten.
*list<ProvenanceAction> provenance - provenance data for the object.
*boolean hidden - true if this object should not be listed when listing
*workspace objects.
*/
typedefstructure{
type_stringtype;
UnspecifiedObjectdata;
obj_namename;
obj_idobjid;
usermetameta;
list<ProvenanceAction>provenance;
booleanhidden;
}
ObjectSaveData;

/*
*Input parameters for the "save_objects" function.
*
*One, and only one, of the following is required:
*ws_id id - the numerical ID of the workspace.
*ws_name workspace - the name of the workspace.
*
*Required arguments:
*list<ObjectSaveData> objects - the objects to save.
*/
typedefstructure{
ws_nameworkspace;
ws_idid;
list<ObjectSaveData>objects;
}
SaveObjectsParams;

/*
*Save objects to the workspace. Saving over a deleted object undeletes
*it.
*/
funcdefsave_objects(SaveObjectsParamsparams)returns(list<object_info>info)authenticationrequired;

/*
*Input parameters for the "get_object" function. Provided for backwards
*compatibility.
*
*Required arguments:
*ws_name workspace - Name of the workspace containing the object to be
*retrieved
*obj_name id - Name of the object to be retrieved
*
*Optional arguments:
*int instance - Version of the object to be retrieved, enabling
*retrieval of any previous version of an object
*string auth - the authentication token of the KBase account accessing
*the object. Overrides the client provided authorization
*credentials if they exist.
*
*@deprecatedWorkspace.ObjectIdentity
*/
typedefstructure{
obj_nameid;
ws_nameworkspace;
intinstance;
stringauth;
}
get_object_params;

/*
*Output generated by the "get_object" function. Provided for backwards
*compatibility.
*
*UnspecifiedObject data - The object's data.
*object_metadata metadata - Metadata for object retrieved/
*
*@deprecatedWorkspaces.ObjectData
*/
typedefstructure{
UnspecifiedObjectdata;
object_metadatametadata;
}
get_object_output;

/*
*Retrieves the specified object from the specified workspace.
*Both the object data and metadata are returned.
*Provided for backwards compatibility.
*
*@deprecatedWorkspace.get_objects
*/
funcdefget_object(get_object_paramsparams)returns(get_object_outputoutput)authenticationoptional;

/*
*DEPRECATED
*
*The provenance and supplemental info for an object.
*
*object_info info - information about the object.
*list<ProvenanceAction> provenance - the object's provenance.
*username creator - the user that first saved the object to the
*workspace.
*ws_id orig_wsid - the id of the workspace in which this object was
*originally saved. Missing for objects saved prior to version
*0.4.1.
*timestamp created - the date the object was first saved to the
*workspace.
*epoch epoch - the date the object was first saved to the
*workspace.
*list<obj_ref> - the references contained within the object.
*obj_ref copied - the reference of the source object if this object is
*a copy and the copy source exists and is accessible.
*null otherwise.
*boolean copy_source_inaccessible - true if the object was copied from
*another object, but that object is no longer accessible to the
*user. False otherwise.
*mapping<id_type, list<extracted_id>> extracted_ids - any ids extracted
*from the object.
*string handle_error - if an error occurs while setting ACLs on
*embedded external IDs, it will be reported here. If not for historical reasons the
*parameter would be called "external_id_error".
*string handle_stacktrace - the stacktrace for handle_error. As above, the parameter
*should be called "external_id_stacktrace".
*
*@deprecated
*/
typedefstructure{
object_infoinfo;
list<ProvenanceAction>provenance;
usernamecreator;
ws_idorig_wsid;
timestampcreated;
epochepoch;
list<obj_ref>refs;
obj_refcopied;
booleancopy_source_inaccessible;
mapping<id_type,list<extracted_id>>extracted_ids;
stringhandle_error;
stringhandle_stacktrace;
}
ObjectProvenanceInfo;

/*
*DEPRECATED
*Get object provenance from the workspace.
*
*@deprecatedWorkspace.get_objects2
*/
funcdefget_object_provenance(list<ObjectIdentity>object_ids)returns(list<ObjectProvenanceInfo>data)authenticationoptional;

/*
*The data and supplemental info for an object.
*
*UnspecifiedObject data - the object's data or subset data.
*object_info info - information about the object.
*list<obj_ref> path - the path to the object through the object reference graph. All the
*references in the path are absolute.
*list<ProvenanceAction> provenance - the object's provenance.
*username creator - the user that first saved the object to the workspace.
*ws_id orig_wsid - the id of the workspace in which this object was
*originally saved. Missing for objects saved prior to version
*0.4.1.
*timestamp created - the date the object was first saved to the
*workspace.
*epoch epoch - the date the object was first saved to the
*workspace.
*list<obj_ref> refs - the references contained within the object.
*obj_ref copied - the reference of the source object if this object is
*a copy and the copy source exists and is accessible.
*null otherwise.
*boolean copy_source_inaccessible - true if the object was copied from
*another object, but that object is no longer accessible to the
*user. False otherwise.
*mapping<id_type, list<extracted_id>> extracted_ids - any ids extracted
*from the object.
*string handle_error - if an error occurs while setting ACLs on
*embedded external IDs, it will be reported here. If not for historical reasons the
*parameter would be called "external_id_error".
*string handle_stacktrace - the stacktrace for handle_error. As above, the parameter
*should be called "external_id_stacktrace".
*/
typedefstructure{
UnspecifiedObjectdata;
object_infoinfo;
list<obj_ref>path;
list<ProvenanceAction>provenance;
usernamecreator;
ws_idorig_wsid;
timestampcreated;
epochepoch;
list<obj_ref>refs;
obj_refcopied;
booleancopy_source_inaccessible;
mapping<id_type,list<extracted_id>>extracted_ids;
stringhandle_error;
stringhandle_stacktrace;
}
ObjectData;

/*
*DEPRECATED
*Get objects from the workspace.
*@deprecatedWorkspace.get_objects2
*/
funcdefget_objects(list<ObjectIdentity>object_ids)returns(list<ObjectData>data)authenticationoptional;

/*
*Input parameters for the get_objects2 function.
*
*Required parameters:
*list<ObjectSpecification> objects - the list of object specifications
*for the objects to return (via reference chain and as a subset if
*specified).
*
*Optional parameters:
*boolean ignoreErrors - Don't throw an exception if an object cannot
*be accessed; return null for that object's information instead.
*Default false.
*boolean no_data - return the provenance, references, and
*object_info for this object without the object data. Default false.
*boolean skip_external_system_updates - if the objects contain any external IDs, don't
*contact external systems to perform any updates for those IDs (often ACL updates,
*e.g. for handle / blobstore / sample IDs). In some cases this can speed up fetching the
*data. Default false.
*boolean batch_external_system_updates - if the objects contain any external IDs,
*send all external system updates in a batch to each external system when possible
*rather than object by object. This can potentially speed up the updates, but the
*drawback is that if the external update fails for any object, all the objects that
*required updates for that system will be marked as having a failed update.
*Has no effect if skip_external_system_updates is true. Default false.
*/
typedefstructure{
list<ObjectSpecification>objects;
booleanignoreErrors;
booleanno_data;
booleanskip_external_system_updates;
booleanbatch_external_system_updates;
}
GetObjects2Params;

/*
*Results from the get_objects2 function.
*
*list<ObjectData> data - the returned objects.
*/
typedefstructure{
list<ObjectData>data;
}
GetObjects2Results;

/*
*Get objects from the workspace.
*/
funcdefget_objects2(GetObjects2Paramsparams)returns(GetObjects2Resultsresults)authenticationoptional;

/*
*DEPRECATED
*Get portions of objects from the workspace.
*
*When selecting a subset of an array in an object, the returned
*array is compressed to the size of the subset, but the ordering of
*the array is maintained. For example, if the array stored at the
*'feature' key of a Genome object has 4000 entries, and the object paths
*provided are:
*/feature/7
*/feature/3015
*/feature/700
*The returned feature array will be of length three and the entries will
*consist, in order, of the 7th, 700th, and 3015th entries of the
*original array.
*@deprecatedWorkspace.get_objects2
*/
funcdefget_object_subset(list<SubObjectIdentity>sub_object_ids)returns(list<ObjectData>data)authenticationoptional;

/*
*Get an object's history. The version argument of the ObjectIdentity is
*ignored.
*/
funcdefget_object_history(ObjectIdentityobject)returns(list<object_info>history)authenticationoptional;

/*
*List objects that reference one or more specified objects. References
*in the deleted state are not returned.
*/
funcdeflist_referencing_objects(list<ObjectIdentity>object_ids)returns(list<list<object_info>>referrers)authenticationoptional;

/*
*DEPRECATED
*
*List the number of times objects have been referenced.
*
*This count includes both provenance and object-to-object references
*and, unlike list_referencing_objects, includes objects that are
*inaccessible to the user.
*
*@deprecated
*/
funcdeflist_referencing_object_counts(list<ObjectIdentity>object_ids)returns(list<int>counts)authenticationoptional;

/*
*DEPRECATED
*
*Get objects by references from other objects.
*
*NOTE: In the vast majority of cases, this method is not necessary and
*get_objects should be used instead.
*
*get_referenced_objects guarantees that a user that has access to an
*object can always see a) objects that are referenced inside the object
*and b) objects that are referenced in the object's provenance. This
*ensures that the user has visibility into the entire provenance of the
*object and the object's object dependencies (e.g. references).
*
*The user must have at least read access to the first object in each
*reference chain, but need not have access to any further objects in
*the chain, and those objects may be deleted.
*
*@deprecatedWorkspace.get_objects2
*/
funcdefget_referenced_objects(list<ref_chain>ref_chains)returns(list<ObjectData>data)authenticationoptional;

/*
*Input parameters for the "list_workspaces" function. Provided for
*backwards compatibility.
*
*Optional parameters:
*string auth - the authentication token of the KBase account accessing
*the list of workspaces. Overrides the client provided authorization
*credentials if they exist.
*boolean excludeGlobal - if excludeGlobal is true exclude world
*readable workspaces. Defaults to false.
*
*@deprecatedWorkspace.ListWorkspaceInfoParams
*/
typedefstructure{
stringauth;
booleanexcludeGlobal;
}
list_workspaces_params;

/*
*Lists the metadata of all workspaces a user has access to. Provided for
*backwards compatibility - to be replaced by the functionality of
*list_workspace_info
*
*@deprecatedWorkspace.list_workspace_info
*/
funcdeflist_workspaces(list_workspaces_paramsparams)returns(list<workspace_metadata>workspaces)authenticationoptional;

/*
*Input parameters for the "list_workspace_info" function.
*
*Only one of each timestamp/epoch pair may be supplied.
*
*Optional parameters:
*permission perm - filter workspaces by minimum permission level. 'None'
*and 'readable' are ignored.
*list<username> owners - filter workspaces by owner.
*usermeta meta - filter workspaces by the user supplied metadata. NOTE:
*only one key/value pair is supported at this time. A full map
*is provided as input for the possibility for expansion in the
*future.
*timestamp after - only return workspaces that were modified after this
*date.
*timestamp before - only return workspaces that were modified before
*this date.
*epoch after_epoch - only return workspaces that were modified after
*this date.
*epoch before_epoch - only return workspaces that were modified before
*this date.
*boolean excludeGlobal - if excludeGlobal is true exclude world
*readable workspaces. Defaults to false.
*boolean showDeleted - show deleted workspaces that are owned by the
*user.
*boolean showOnlyDeleted - only show deleted workspaces that are owned
*by the user.
*/
typedefstructure{
permissionperm;
list<username>owners;
usermetameta;
timestampafter;
timestampbefore;
epochafter_epoch;
epochbefore_epoch;
booleanexcludeGlobal;
booleanshowDeleted;
booleanshowOnlyDeleted;
}
ListWorkspaceInfoParams;

/*
*List workspaces viewable by the user.
*/
funcdeflist_workspace_info(ListWorkspaceInfoParamsparams)returns(list<workspace_info>wsinfo)authenticationoptional;

/*
*Input parameters for the "list_workspace_ids" function.
*
*Optional parameters:
*permission perm - filter workspaces by minimum permission level. 'None'
*and 'readable' are ignored.
*boolean onlyGlobal - if onlyGlobal is true only include world readable
*workspaces. Defaults to false. If true, excludeGlobal is ignored.
*boolean excludeGlobal - if excludeGlobal is true exclude world
*readable workspaces. Defaults to true.
*/
typedefstructure{
permissionperm;
booleanexcludeGlobal;
booleanonlyGlobal;
}
ListWorkspaceIDsParams;

/*
*Results of the "list_workspace_ids" function.
*
*list<int> workspaces - the workspaces to which the user has explicit
*access.
*list<int> pub - the workspaces to which the user has access because
*they're globally readable.
*/
typedefstructure{
list<int>workspaces;
list<int>pub;
}
ListWorkspaceIDsResults;

/*
*List workspace IDs to which the user has access.
*
*This function returns a subset of the information in the
*list_workspace_info method and should be substantially faster.
*/
funcdeflist_workspace_ids(ListWorkspaceIDsParamsparams)returns(ListWorkspaceIDsResultsresults)authenticationoptional;

/*
*Input parameters for the "list_workspace_objects" function. Provided
*for backwards compatibility.
*
*Required arguments:
*ws_name workspace - Name of the workspace for which objects should be
*listed
*
*Optional arguments:
*type_string type - type of the objects to be listed. Here, omitting
*version information will find any objects that match the provided
*type - e.g. Foo.Bar-0 will match Foo.Bar-0.X where X is any
*existing version.
*boolean showDeletedObject - show objects that have been deleted
*string auth - the authentication token of the KBase account requesting
*access. Overrides the client provided authorization credentials if
*they exist.
*
*@deprecatedWorkspace.ListObjectsParams
*/
typedefstructure{
ws_nameworkspace;
type_stringtype;
booleanshowDeletedObject;
stringauth;
}
list_workspace_objects_params;

/*
*Lists the metadata of all objects in the specified workspace with the
*specified type (or with any type). Provided for backwards compatibility.
*
*@deprecatedWorkspace.list_objects
*/
funcdeflist_workspace_objects(list_workspace_objects_paramsparams)returns(list<object_metadata>objects)authenticationoptional;

/*
*Parameters for the 'list_objects' function.
*
*At least one, and no more than 10000, workspaces must be specified in one of the
*two following parameters. It is strongly recommended that the list is restricted to
*the workspaces of interest, or the results may be very large:
*list<ws_id> ids - the numerical IDs of the workspaces of interest.
*list<ws_name> workspaces - the names of the workspaces of interest.
*
*Only one of each timestamp/epoch pair may be supplied.
*
*Optional arguments:
*type_string type - type of the objects to be listed. Here, omitting
*version information will find any objects that match the provided
*type - e.g. Foo.Bar-0 will match Foo.Bar-0.X where X is any
*existing version.
*permission perm - DEPRECATED, no longer useful. Filter on minimum permission by providing
*only workspaces with the desired permission levels in the input list(s).
*list<username> savedby - filter objects by the user that saved or
*copied the object.
*usermeta meta - filter objects by the user supplied metadata. NOTE:
*only one key/value pair is supported at this time. A full map
*is provided as input for the possibility for expansion in the
*future.
*timestamp after - only return objects that were created after this
*date.
*timestamp before - only return objects that were created before this
*date.
*epoch after_epoch - only return objects that were created after this
*date.
*epoch before_epoch - only return objects that were created before this
*date.
*string startafter - a reference-like string that determines where the
*list of objects will begin. It takes the form X/Y/Z, where X is
*the workspace ID, Y the object ID, and Z the version. The version
*may be omitted, and the object ID omitted if the version is also
*omitted. After a '/' separator either an integer or no characters
*at all, including whitespace, may occur. Whitespace strings are
*ignored. If startafter is provided, after, before,
*after_epoch, before_epoch, savedby, meta, minObjectID, and
*maxObjectID may not be provided. Only objects that are ordered
*after the reference, exclusive, will be included in the
*result, and the resulting list will be sorted by reference.
*obj_id minObjectID - only return objects with an object id greater or
*equal to this value.
*obj_id maxObjectID - only return objects with an object id less than or
*equal to this value.
*boolean showDeleted - show deleted objects in workspaces to which the
*user has write access.
*boolean showOnlyDeleted - only show deleted objects in workspaces to
*which the user has write access.
*boolean showHidden - show hidden objects.
*boolean showAllVersions - show all versions of each object that match
*the filters rather than only the most recent version.
*boolean includeMetadata - include the user provided metadata in the
*returned object_info. If false (0 or null), the default, the
*metadata will be null.
*boolean excludeGlobal - DEPRECATED, no longer useful. Filter on global workspaces by
*excluding them from the input workspace list(s).
*int limit - limit the output to X objects. Default and maximum value
*is 10000. Limit values < 1 are treated as 10000, the default.
*/
typedefstructure{
list<ws_name>workspaces;
list<ws_id>ids;
type_stringtype;
permissionperm;
list<username>savedby;
usermetameta;
timestampafter;
timestampbefore;
epochafter_epoch;
epochbefore_epoch;
stringstartafter;
obj_idminObjectID;
obj_idmaxObjectID;
booleanshowDeleted;
booleanshowOnlyDeleted;
booleanshowHidden;
booleanshowAllVersions;
booleanincludeMetadata;
booleanexcludeGlobal;
intlimit;
}
ListObjectsParams;

/*
*List objects in one or more workspaces.
*/
funcdeflist_objects(ListObjectsParamsparams)returns(list<object_info>objinfo)authenticationoptional;

/*
*Input parameters for the "get_objectmeta" function.
*
*Required arguments:
*ws_name workspace - name of the workspace containing the object for
*which metadata is to be retrieved
*obj_name id - name of the object for which metadata is to be retrieved
*
*Optional arguments:
*int instance - Version of the object for which metadata is to be
*retrieved, enabling retrieval of any previous version of an object
*string auth - the authentication token of the KBase account requesting
*access. Overrides the client provided authorization credentials if
*they exist.
*
*@deprecatedWorkspace.ObjectIdentity
*/
typedefstructure{
obj_nameid;
ws_nameworkspace;
intinstance;
stringauth;
}
get_objectmeta_params;

/*
*Retrieves the metadata for a specified object from the specified
*workspace. Provides access to metadata for all versions of the object
*via the instance parameter. Provided for backwards compatibility.
*
*@deprecatedWorkspace.get_object_info3
*/
funcdefget_objectmeta(get_objectmeta_paramsparams)returns(object_metadatametadata)authenticationoptional;

/*
*Get information about objects from the workspace.
*
*Set includeMetadata true to include the user specified metadata.
*Otherwise the metadata in the object_info will be null.
*
*This method will be replaced by the behavior of get_object_info_new
*in the future.
*
*@deprecatedWorkspace.get_object_info3
*/
funcdefget_object_info(list<ObjectIdentity>object_ids,booleanincludeMetadata)returns(list<object_info>info)authenticationoptional;

/*
*Input parameters for the "get_object_info_new" function.
*
*Required arguments:
*list<ObjectSpecification> objects - the objects for which the
*information should be fetched. Subsetting related parameters are
*ignored.
*
*Optional arguments:
*boolean includeMetadata - include the object metadata in the returned
*information. Default false.
*boolean ignoreErrors - Don't throw an exception if an object cannot
*be accessed; return null for that object's information instead.
*Default false.
*
*@deprecatedWorkspace.GetObjectInfo3Params
*/
typedefstructure{
list<ObjectSpecification>objects;
booleanincludeMetadata;
booleanignoreErrors;
}
GetObjectInfoNewParams;

/*
*Get information about objects from the workspace.
*
*@deprecatedWorkspace.get_object_info3
*/
funcdefget_object_info_new(GetObjectInfoNewParamsparams)returns(list<object_info>info)authenticationoptional;

/*
*Input parameters for the "get_object_info3" function.
*
*Required arguments:
*list<ObjectSpecification> objects - the objects for which the
*information should be fetched. Subsetting related parameters are
*ignored.
*
*Optional arguments:
*boolean includeMetadata - include the object metadata in the returned
*information. Default false.
*boolean ignoreErrors - Don't throw an exception if an object cannot
*be accessed; return null for that object's information and path instead.
*Default false.
*/
typedefstructure{
list<ObjectSpecification>objects;
booleanincludeMetadata;
booleanignoreErrors;
}
GetObjectInfo3Params;

/*
*Output from the get_object_info3 function.
*
*list<object_info> infos - the object_info data for each object.
*list<list<obj_ref> paths - the path to the object through the object reference graph for
*each object. All the references in the path are absolute.
*/
typedefstructure{
list<object_info>infos;
list<list<obj_ref>>paths;
}
GetObjectInfo3Results;

funcdefget_object_info3(GetObjectInfo3Paramsparams)returns(GetObjectInfo3Resultsresults)authenticationoptional;

/*
*Input parameters for the 'rename_workspace' function.
*
*Required arguments:
*WorkspaceIdentity wsi - the workspace to rename.
*ws_name new_name - the new name for the workspace.
*/
typedefstructure{
WorkspaceIdentitywsi;
ws_namenew_name;
}
RenameWorkspaceParams;

/*
*Rename a workspace.
*/
funcdefrename_workspace(RenameWorkspaceParamsparams)returns(workspace_inforenamed)authenticationrequired;

/*
*Input parameters for the 'rename_object' function.
*
*Required arguments:
*ObjectIdentity obj - the object to rename.
*obj_name new_name - the new name for the object.
*/
typedefstructure{
ObjectIdentityobj;
obj_namenew_name;
}
RenameObjectParams;

/*
*Rename an object. User meta data is always returned as null.
*/
funcdefrename_object(RenameObjectParamsparams)returns(object_inforenamed)authenticationrequired;

/*
*Input parameters for the 'copy_object' function.
*
*If the 'from' ObjectIdentity includes no version and the object is
*copied to a new name, the entire version history of the object is
*copied. In all other cases only the version specified, or the latest
*version if no version is specified, is copied.
*
*The version from the 'to' ObjectIdentity is always ignored.
*
*Required arguments:
*ObjectIdentity from - the object to copy.
*ObjectIdentity to - where to copy the object.
*/
typedefstructure{
ObjectIdentityfrom;
ObjectIdentityto;
}
CopyObjectParams;

/*
*Copy an object. Returns the object_info for the newest version.
*/
funcdefcopy_object(CopyObjectParamsparams)returns(object_infocopied)authenticationrequired;

/*
*Revert an object.
*
*The object specified in the ObjectIdentity is reverted to the version
*specified in the ObjectIdentity.
*/
funcdefrevert_object(ObjectIdentityobject)returns(object_inforeverted)authenticationrequired;

/*
*Input parameters for the get_names_by_prefix function.
*
*Required arguments:
*list<WorkspaceIdentity> workspaces - the workspaces to search.
*string prefix - the prefix of the object names to return.
*
*Optional arguments:
*boolean includeHidden - include names of hidden objects in the results.
*Default false.
*/
typedefstructure{
list<WorkspaceIdentity>workspaces;
stringprefix;
booleanincludeHidden;
}
GetNamesByPrefixParams;

/*
*Results object for the get_names_by_prefix function.
*
*list<list<obj_name>> names - the names matching the provided prefix,
*listed in order of the input workspaces.
*/
typedefstructure{
list<list<obj_name>>names;
}
GetNamesByPrefixResults;

/*
*Get object names matching a prefix. At most 1000 names are returned.
*No particular ordering is guaranteed, nor is which names will be
*returned if more than 1000 are found.
*
*This function is intended for use as an autocomplete helper function.
*/
funcdefget_names_by_prefix(GetNamesByPrefixParamsparams)returns(GetNamesByPrefixResultsres)authenticationoptional;

/*
*Hide objects. All versions of an object are hidden, regardless of
*the version specified in the ObjectIdentity. Hidden objects do not
*appear in the list_objects method.
*/
funcdefhide_objects(list<ObjectIdentity>object_ids)returns()authenticationrequired;

/*
*Unhide objects. All versions of an object are unhidden, regardless
*of the version specified in the ObjectIdentity.
*/
funcdefunhide_objects(list<ObjectIdentity>object_ids)returns()authenticationrequired;

/*
*Delete objects. All versions of an object are deleted, regardless of
*the version specified in the ObjectIdentity.
*/
funcdefdelete_objects(list<ObjectIdentity>object_ids)returns()authenticationrequired;

/*
*Undelete objects. All versions of an object are undeleted, regardless
*of the version specified in the ObjectIdentity. If an object is not
*deleted, no error is thrown.
*/
funcdefundelete_objects(list<ObjectIdentity>object_ids)returns()authenticationrequired;

/*
*Delete a workspace. All objects contained in the workspace are deleted.
*/
funcdefdelete_workspace(WorkspaceIdentitywsi)returns()authenticationrequired;

/*
*A type specification (typespec) file in the KBase Interface Description
*Language (KIDL).
*/
typedefstringtypespec;

/*
*A module name defined in a KIDL typespec.
*/
typedefstringmodulename;

/*
*A type definition name in a KIDL typespec.
*/
typedefstringtypename;

/*
*A version of a type.
*Specifies the version of the type in a single string in the format
*[major].[minor]:
*
*major - an integer. The major version of the type. A change in the
*major version implies the type has changed in a non-backwards
*compatible way.
*minor - an integer. The minor version of the type. A change in the
*minor version implies that the type has changed in a way that is
*backwards compatible with previous type definitions.
*/
typedefstringtypever;

/*
*A function string for referencing a funcdef.
*Specifies the function and its version in a single string in the format
*[modulename].[funcname]-[major].[minor]:
*
*modulename - a string. The name of the module containing the function.
*funcname - a string. The name of the function as assigned by the funcdef
*statement.
*major - an integer. The major version of the function. A change in the
*major version implies the function has changed in a non-backwards
*compatible way.
*minor - an integer. The minor version of the function. A change in the
*minor version implies that the function has changed in a way that is
*backwards compatible with previous function definitions.
*
*In many cases, the major and minor versions are optional, and if not
*provided the most recent version will be used.
*
*Example: MyModule.MyFunc-3.1
*/
typedefstringfunc_string;

/*
*The version of a typespec file.
*/
typedefintspec_version;

/*
*The JSON Schema (v4) representation of a type definition.
*/
typedefstringjsonschema;

/*
*Request ownership of a module name. A Workspace administrator
*must approve the request.
*/
funcdefrequest_module_ownership(modulenamemod)returns()authenticationrequired;

/*
*Parameters for the register_typespec function.
*
*Required arguments:
*One of:
*typespec spec - the new typespec to register.
*modulename mod - the module to recompile with updated options (see below).
*
*Optional arguments:
*boolean dryrun - Return, but do not save, the results of compiling the
*spec. Default true. Set to false for making permanent changes.
*list<typename> new_types - types in the spec to make available in the
*workspace service. When compiling a spec for the first time, if
*this argument is empty no types will be made available. Previously
*available types remain so upon recompilation of a spec or
*compilation of a new spec.
*list<typename> remove_types - no longer make these types available in
*the workspace service for the new version of the spec. This does
*not remove versions of types previously compiled.
*mapping<modulename, spec_version> dependencies - By default, the
*latest released versions of spec dependencies will be included when
*compiling a spec. Specific versions can be specified here.
*spec_version prev_ver - the id of the previous version of the typespec.
*An error will be thrown if this is set and prev_ver is not the
*most recent version of the typespec. This prevents overwriting of
*changes made since retrieving a spec and compiling an edited spec.
*This argument is ignored if a modulename is passed.
*/
typedefstructure{
typespecspec;
modulenamemod;
list<typename>new_types;
list<typename>remove_types;
mapping<modulename,spec_version>dependencies;
booleandryrun;
spec_versionprev_ver;
}
RegisterTypespecParams;

/*
*Register a new typespec or recompile a previously registered typespec
*with new options.
*See the documentation of RegisterTypespecParams for more details.
*Also see the release_types function.
*/
funcdefregister_typespec(RegisterTypespecParamsparams)returns(mapping<type_string,jsonschema>)authenticationrequired;

/*
*Parameters for the register_typespec_copy function.
*
*Required arguments:
*string external_workspace_url - the URL of the workspace server from
*which to copy a typespec.
*modulename mod - the name of the module in the workspace server
*
*Optional arguments:
*spec_version version - the version of the module in the workspace
*server
*/
typedefstructure{
stringexternal_workspace_url;
modulenamemod;
spec_versionversion;
}
RegisterTypespecCopyParams;

/*
*Register a copy of new typespec or refresh an existing typespec which is
*loaded from another workspace for synchronization. Method returns new
*version of module in current workspace.
*
*Also see the release_types function.
*/
funcdefregister_typespec_copy(RegisterTypespecCopyParamsparams)returns(spec_versionnew_local_version)authenticationrequired;

/*
*Release a module for general use of its types.
*
*Releases the most recent version of a module. Releasing a module does
*two things to the module's types:
*1) If a type's major version is 0, it is changed to 1. A major
*version of 0 implies that the type is in development and may have
*backwards incompatible changes from minor version to minor version.
*Once a type is released, backwards incompatible changes always
*cause a major version increment.
*2) This version of the type becomes the default version, and if a
*specific version is not supplied in a function call, this version
*will be used. This means that newer, unreleased versions of the
*type may be skipped.
*/
funcdefrelease_module(modulenamemod)returns(list<type_string>types)authenticationrequired;

/*
*Parameters for the list_modules() function.
*
*Optional arguments:
*username owner - only list modules owned by this user.
*/
typedefstructure{
usernameowner;
}
ListModulesParams;

/*
*List typespec modules.
*/
funcdeflist_modules(ListModulesParamsparams)returns(list<modulename>modules)authenticationnone;

/*
*Parameters for the list_module_versions function.
*
*Required arguments:
*One of:
*modulename mod - returns all versions of the module.
*type_string type - returns all versions of the module associated with
*the type.
*/
typedefstructure{
modulenamemod;
type_stringtype;
}
ListModuleVersionsParams;

/*
*A set of versions from a module.
*
*modulename mod - the name of the module.
*list<spec_version> - a set or subset of versions associated with the
*module.
*list<spec_version> - a set or subset of released versions associated
*with the module.
*/
typedefstructure{
modulenamemod;
list<spec_version>vers;
list<spec_version>released_vers;
}
ModuleVersions;

/*
*List typespec module versions.
*/
funcdeflist_module_versions(ListModuleVersionsParamsparams)returns(ModuleVersionsvers)authenticationoptional;

/*
*Parameters for the get_module_info function.
*
*Required arguments:
*modulename mod - the name of the module to retrieve.
*
*Optional arguments:
*spec_version ver - the version of the module to retrieve. Defaults to
*the latest version.
*/
typedefstructure{
modulenamemod;
spec_versionver;
}
GetModuleInfoParams;

/*
*Information about a module.
*
*list<username> owners - the owners of the module.
*spec_version ver - the version of the module.
*typespec spec - the typespec.
*string description - the description of the module from the typespec.
*mapping<type_string, jsonschema> types - the types associated with this
*module and their JSON schema.
*mapping<modulename, spec_version> included_spec_version - names of
*included modules associated with their versions.
*string chsum - the md5 checksum of the object.
*list<func_string> functions - list of names of functions registered in spec.
*boolean is_released - shows if this version of module was released (and
*hence can be seen by others).
*/
typedefstructure{
list<username>owners;
spec_versionver;
typespecspec;
stringdescription;
mapping<type_string,jsonschema>types;
mapping<modulename,spec_version>included_spec_version;
stringchsum;
list<func_string>functions;
booleanis_released;
}
ModuleInfo;

funcdefget_module_info(GetModuleInfoParamsparams)returns(ModuleInfoinfo)authenticationoptional;

/*
*Get JSON schema for a type.
*/
funcdefget_jsonschema(type_stringtype)returns(jsonschemaschema)authenticationoptional;

/*
*Translation from types qualified with MD5 to their semantic versions
*/
funcdeftranslate_from_MD5_types(list<type_string>md5_types)returns(mapping<type_string,list<type_string>>sem_types)authenticationnone;

/*
*Translation from types qualified with semantic versions to their MD5'ed versions
*/
funcdeftranslate_to_MD5_types(list<type_string>sem_types)returns(mapping<type_string,type_string>md5_types)authenticationoptional;

/*
*Information about a type
*
*type_string type_def - resolved type definition id.
*string description - the description of the type from spec file.
*string spec_def - reconstruction of type definition from spec file.
*jsonschema json_schema - JSON schema of this type.
*string parsing_structure - json document describing parsing structure of type
*in spec file including involved sub-types.
*list<spec_version> module_vers - versions of spec-files containing
*given type version.
*list<spec_version> released_module_vers - versions of released spec-files
*containing given type version.
*list<type_string> type_vers - all versions of type with given type name.
*list<type_string> released_type_vers - all released versions of type with
*given type name.
*list<func_string> using_func_defs - list of functions (with versions)
*referring to this type version.
*list<type_string> using_type_defs - list of types (with versions)
*referring to this type version.
*list<type_string> used_type_defs - list of types (with versions)
*referred from this type version.
*/
typedefstructure{
type_stringtype_def;
stringdescription;
stringspec_def;
jsonschemajson_schema;
stringparsing_structure;
list<spec_version>module_vers;
list<spec_version>released_module_vers;
list<type_string>type_vers;
list<type_string>released_type_vers;
list<func_string>using_func_defs;
list<type_string>using_type_defs;
list<type_string>used_type_defs;
}
TypeInfo;

funcdefget_type_info(type_stringtype)returns(TypeInfoinfo)authenticationoptional;

funcdefget_all_type_info(modulenamemod)returns(list<TypeInfo>)authenticationoptional;

/*
*DEPRECATED
*@deprecated
*/
typedefstructure{
func_stringfunc_def;
stringdescription;
stringspec_def;
stringparsing_structure;
list<spec_version>module_vers;
list<spec_version>released_module_vers;
list<func_string>func_vers;
list<func_string>released_func_vers;
list<type_string>used_type_defs;
}
FuncInfo;

/*
*@deprecated
*/
funcdefget_func_info(func_stringfunc)returns(FuncInfoinfo)authenticationoptional;

/*
*@deprecated
*/
funcdefget_all_func_info(modulenamemod)returns(list<FuncInfo>info)authenticationoptional;

/*
*Parameters for the grant_module_ownership function.
*
*Required arguments:
*modulename mod - the module to modify.
*username new_owner - the user to add to the module's list of
*owners.
*
*Optional arguments:
*boolean with_grant_option - true to allow the user to add owners
*to the module.
*/
typedefstructure{
modulenamemod;
usernamenew_owner;
booleanwith_grant_option;
}
GrantModuleOwnershipParams;

/*
*Grant ownership of a module. You must have grant ability on the
*module.
*/
funcdefgrant_module_ownership(GrantModuleOwnershipParamsparams)returns()authenticationrequired;

/*
*Parameters for the remove_module_ownership function.
*
*Required arguments:
*modulename mod - the module to modify.
*username old_owner - the user to remove from the module's list of
*owners.
*/
typedefstructure{
modulenamemod;
usernameold_owner;
}
RemoveModuleOwnershipParams;

/*
*Remove ownership from a current owner. You must have the grant ability
*on the module.
*/
funcdefremove_module_ownership(RemoveModuleOwnershipParamsparams)returns()authenticationrequired;

/*
*Parameters for list_all_types function.
*
*Optional arguments:
*boolean with_empty_modules - include empty module names, optional flag,
*default value is false.
*/
typedefstructure{
booleanwith_empty_modules;
}
ListAllTypesParams;

/*
*List all released types with released version from all modules. Return
*mapping from module name to mapping from type name to released type
*version.
*/
funcdeflist_all_types(ListAllTypesParamsparams)returns(mapping<modulename,mapping<typename,typever>>)authenticationoptional;

/*
*The results of the get_admin_role call.
*
*adminrole - the users's administration role, one of `none`, `read`, or `full`.
*/
typedefstructure{
stringadminrole;
}
GetAdminRoleResults;

/*
*Get the administrative role for the current user.
*/
funcdefget_admin_role()returns(GetAdminRoleResultsresults)authenticationrequired;

/*
*The administration interface.
*/
funcdefadminister(UnspecifiedObjectcommand)returns(UnspecifiedObjectresponse)authenticationrequired;
};

Function Index

administer
alter_workspace_metadata
clone_workspace
copy_object
create_workspace
delete_objects
delete_workspace
get_admin_role
get_all_func_info
get_all_type_info
get_func_info
get_jsonschema
get_module_info
get_names_by_prefix
get_object
get_object_history
get_object_info
get_object_info3
get_object_info_new
get_object_provenance
get_object_subset
get_objectmeta
get_objects
get_objects2
get_permissions
get_permissions_mass
get_referenced_objects
get_type_info
get_workspace_description
get_workspace_info
get_workspacemeta
grant_module_ownership
hide_objects
list_all_types
list_module_versions
list_modules
list_objects
list_referencing_object_counts
list_referencing_objects
list_workspace_ids
list_workspace_info
list_workspace_objects
list_workspaces
lock_workspace
register_typespec
register_typespec_copy
release_module
remove_module_ownership
rename_object
rename_workspace
request_module_ownership
revert_object
save_object
save_objects
set_global_permission
set_permissions
set_workspace_description
translate_from_MD5_types
translate_to_MD5_types
undelete_objects
unhide_objects
ver

Type Index

AlterWorkspaceMetadataParams
boolean
CloneWorkspaceParams
CopyObjectParams
CreateWorkspaceParams
epoch
ExternalDataUnit
extracted_id
func_string
FuncInfo
get_object_output
get_object_params
get_objectmeta_params
get_workspacemeta_params
GetAdminRoleResults
GetModuleInfoParams
GetNamesByPrefixParams
GetNamesByPrefixResults
GetObjectInfo3Params
GetObjectInfo3Results
GetObjectInfoNewParams
GetObjects2Params
GetObjects2Results
GetPermissionsMassParams
GrantModuleOwnershipParams
id_type
jsonschema
list_workspace_objects_params
list_workspaces_params
ListAllTypesParams
ListModulesParams
ListModuleVersionsParams
ListObjectsParams
ListWorkspaceIDsParams
ListWorkspaceIDsResults
ListWorkspaceInfoParams
lock_status
ModuleInfo
modulename
ModuleVersions
obj_id
obj_name
obj_ref
obj_ver
object_info
object_metadata
object_path
ObjectData
ObjectIdentity
ObjectProvenanceInfo
ObjectSaveData
ObjectSpecification
permission
ProvenanceAction
ref_chain
ref_string
RegisterTypespecCopyParams
RegisterTypespecParams
RemoveModuleOwnershipParams
RenameObjectParams
RenameWorkspaceParams
save_object_params
SaveObjectsParams
SetGlobalPermissionsParams
SetPermissionsParams
SetWorkspaceDescriptionParams
spec_version
SubAction
SubObjectIdentity
timestamp
type_string
TypeInfo
typename
typespec
typever
usermeta
username
workspace_info
workspace_metadata
WorkspaceIdentity
WorkspacePermissions
ws_id
ws_name
\ No newline at end of file +Workspace
/*
*The Workspace Service (WSS) is primarily a language independent remote storage
*and retrieval system for KBase typed objects (TO) defined with the KBase
*Interface Description Language (KIDL). It has the following primary features:
*- Immutable storage of TOs with
*- user defined metadata
*- data provenance
*- Versioning of TOs
*- Referencing from TO to TO
*- Typechecking of all saved objects against a KIDL specification
*- Collecting typed objects into a workspace
*- Sharing workspaces with specific KBase users or the world
*- Freezing and publishing workspaces
*/
moduleWorkspace{

/*
*A boolean. 0 = false, other = true.
*/
typedefintboolean;

/*
*The unique, permanent numerical ID of a workspace.
*/
typedefintws_id;

/*
*A string used as a name for a workspace.
*Any string consisting of alphanumeric characters and "_", ".", or "-"
*that is not an integer is acceptable. The name may optionally be
*prefixed with the workspace owner's user name and a colon, e.g.
*kbasetest:my_workspace.
*/
typedefstringws_name;

/*
*Represents the permissions a user or users have to a workspace:
*
*'a' - administrator. All operations allowed.
*'w' - read/write.
*'r' - read.
*'n' - no permissions.
*/
typedefstringpermission;

/*
*Login name of a KBase user account.
*/
typedefstringusername;

/*
*A time in the format YYYY-MM-DDThh:mm:ssZ, where Z is either the
*character Z (representing the UTC timezone) or the difference
*in time to UTC in the format +/-HHMM, eg:
*2012-12-17T23:24:06-0500 (EST time)
*2013-04-03T08:56:32+0000 (UTC time)
*2013-04-03T08:56:32Z (UTC time)
*/
typedefstringtimestamp;

/*
*A Unix epoch (the time since 00:00:00 1/1/1970 UTC) in milliseconds.
*/
typedefintepoch;

/*
*A type string.
*Specifies the type and its version in a single string in the format
*[module].[typename]-[major].[minor]:
*
*module - a string. The module name of the typespec containing the type.
*typename - a string. The name of the type as assigned by the typedef
*statement.
*major - an integer. The major version of the type. A change in the
*major version implies the type has changed in a non-backwards
*compatible way.
*minor - an integer. The minor version of the type. A change in the
*minor version implies that the type has changed in a way that is
*backwards compatible with previous type definitions.
*
*In many cases, the major and minor versions are optional, and if not
*provided the most recent version will be used.
*
*Example: MyModule.MyType-3.1
*/
typedefstringtype_string;

/*
*An id type (e.g. from a typespec @id annotation: @id [idtype])
*/
typedefstringid_type;

/*
*An id extracted from an object.
*/
typedefstringextracted_id;

/*
*User provided metadata about an object.
*Arbitrary key-value pairs provided by the user.
*/
typedefmapping<string,string>usermeta;

/*
*The lock status of a workspace.
*One of 'unlocked', 'locked', or 'published'.
*/
typedefstringlock_status;

/*
*A workspace identifier.
*
*Select a workspace by one, and only one, of the numerical id or name.
*ws_id id - the numerical ID of the workspace.
*ws_name workspace - the name of the workspace.
*/
typedefstructure{
ws_nameworkspace;
ws_idid;
}
WorkspaceIdentity;

/*
*Meta data associated with a workspace. Provided for backwards
*compatibility. To be replaced by workspace_info.
*
*ws_name id - name of the workspace
*username owner - name of the user who owns (who created) this workspace
*timestamp moddate - date when the workspace was last modified
*int objects - the approximate number of objects currently stored in
*the workspace.
*permission user_permission - permissions for the currently logged in
*user for the workspace
*permission global_permission - default permissions for the workspace
*for all KBase users
*ws_id num_id - numerical ID of the workspace
*
*@deprecatedWorkspace.workspace_info
*/
typedeftuple<ws_nameid,usernameowner,timestampmoddate,intobjects,permissionuser_permission,permissionglobal_permission,ws_idnum_id>workspace_metadata;

/*
*Information about a workspace.
*
*ws_id id - the numerical ID of the workspace.
*ws_name workspace - name of the workspace.
*username owner - name of the user who owns (e.g. created) this workspace.
*timestamp moddate - date when the workspace was last modified.
*int max_objid - the maximum object ID appearing in this workspace.
*Since cloning a workspace preserves object IDs, this number may be
*greater than the number of objects in a newly cloned workspace.
*permission user_permission - permissions for the authenticated user of
*this workspace.
*permission globalread - whether this workspace is globally readable.
*lock_status lockstat - the status of the workspace lock.
*usermeta metadata - arbitrary user-supplied metadata about
*the workspace.
*/
typedeftuple<ws_idid,ws_nameworkspace,usernameowner,timestampmoddate,intmax_objid,permissionuser_permission,permissionglobalread,lock_statuslockstat,usermetametadata>workspace_info;

/*
*The unique, permanent numerical ID of an object.
*/
typedefintobj_id;

/*
*A string used as a name for an object.
*Any string consisting of alphanumeric characters and the characters
*|._- that is not an integer is acceptable.
*/
typedefstringobj_name;

/*
*An object version.
*The version of the object, starting at 1.
*/
typedefintobj_ver;

/*
*A string that uniquely identifies an object in the workspace service.
*
*The format is [ws_name or id]/[obj_name or id]/[obj_ver].
*For example, MyFirstWorkspace/MyFirstObject/3 would identify the third version
*of an object called MyFirstObject in the workspace called
*MyFirstWorkspace. 42/Panic/1 would identify the first version of
*the object name Panic in workspace with id 42. Towel/1/6 would
*identify the 6th version of the object with id 1 in the Towel
*workspace.If the version number is omitted, the latest version of
*the object is assumed.
*/
typedefstringobj_ref;

/*
*An object identifier.
*
*Select an object by either:
*One, and only one, of the numerical id or name of the workspace.
*ws_id wsid - the numerical ID of the workspace.
*ws_name workspace - the name of the workspace.
*AND
*One, and only one, of the numerical id or name of the object.
*obj_id objid- the numerical ID of the object.
*obj_name name - name of the object.
*OPTIONALLY
*obj_ver ver - the version of the object.
*OR an object reference string:
*obj_ref ref - an object reference string.
*/
typedefstructure{
ws_nameworkspace;
ws_idwsid;
obj_namename;
obj_idobjid;
obj_verver;
obj_refref;
}
ObjectIdentity;

/*
*A chain of objects with references to one another.
*
*An object reference chain consists of a list of objects where the nth
*object possesses a reference, either in the object itself or in the
*object provenance, to the n+1th object.
*/
typedeflist<ObjectIdentity>ref_chain;

/*
*A chain of objects with references to one another as a string.
*
*A single string that is semantically identical to ref_chain above.
*Represents a path from one workspace object to another through an
*arbitrarily number of intermediate objects where each object has a
*dependency or provenance reference to the next object. Each entry is
*an obj_ref as defined earlier. Entries are separated by semicolons.
*Whitespace is ignored.
*
*Examples:
*3/5/6; kbaseuser:myworkspace/myobject; 5/myobject/2
*aworkspace/6
*/
typedefstringref_string;

/*
*A path into an object.
*Identify a sub portion of an object by providing the path, delimited by
*a slash (/), to that portion of the object. Thus the path may not have
*slashes in the structure or mapping keys. Examples:
*/foo/bar/3 - specifies the bar key of the foo mapping and the 3rd
*entry of the array if bar maps to an array or the value mapped to
*the string "3" if bar maps to a map.
*/foo/bar/[*]/baz - specifies the baz field of all the objects in the
*list mapped by the bar key in the map foo.
*/foo/asterisk/baz - specifies the baz field of all the objects in the
*values of the foo mapping. Swap 'asterisk' for * in the path.
*In case you need to use '/' or '~' in path items use JSON Pointer
*notation defined here: http://tools.ietf.org/html/rfc6901
*/
typedefstringobject_path;

/*
*DEPRECATED
*
*An object subset identifier.
*
*Select a subset of an object by:
*EITHER
*One, and only one, of the numerical id or name of the workspace.
*ws_id wsid - the numerical ID of the workspace.
*ws_name workspace - name of the workspace.
*AND
*One, and only one, of the numerical id or name of the object.
*obj_id objid- the numerical ID of the object.
*obj_name name - name of the object.
*OPTIONALLY
*obj_ver ver - the version of the object.
*OR an object reference string:
*obj_ref ref - an object reference string.
*AND a subset specification:
*list<object_path> included - the portions of the object to include
*in the object subset.
*boolean strict_maps - if true, throw an exception if the subset
*specification traverses a non-existant map key (default false)
*boolean strict_arrays - if true, throw an exception if the subset
*specification exceeds the size of an array (default true)
*
*@deprecatedWorkspace.ObjectSpecification
*/
typedefstructure{
ws_nameworkspace;
ws_idwsid;
obj_namename;
obj_idobjid;
obj_verver;
obj_refref;
list<object_path>included;
booleanstrict_maps;
booleanstrict_arrays;
}
SubObjectIdentity;

/*
*An Object Specification (OS). Inherits from ObjectIdentity (OI).
*Specifies which object, and which parts of that object, to retrieve
*from the Workspace Service.
*
*The fields wsid, workspace, objid, name, and ver are identical to
*the OI fields.
*
*The ref field's behavior is extended from OI. It maintains its
*previous behavior, but now also can act as a reference string. See
*reference following below for more information.
*
*REFERENCE FOLLOWING:
*
*Reference following guarantees that a user that has access to an
*object can always see a) objects that are referenced inside the object
*and b) objects that are referenced in the object's provenance. This
*ensures that the user has visibility into the entire provenance of the
*object and the object's object dependencies (e.g. references).
*
*The user must have at least read access to the object specified in this
*SO, but need not have access to any further objects in the reference
*chain, and those objects may be deleted.
*
*Optional reference following fields:
*Note that only one of the following fields may be specified.
*
*ref_chain obj_path - a path to the desired object from the object
*specified in this OS. In other words, the object specified in this
*OS is assumed to be accessible to the user, and the objects in
*the object path represent a chain of references to the desired
*object at the end of the object path. If the references are all
*valid, the desired object will be returned.
*- OR -
*list<obj_ref> obj_ref_path - shorthand for the obj_path.
*- OR -
*ref_chain to_obj_path - identical to obj_path, except that the path
*is TO the object specified in this OS, rather than from the object.
*In other words the object specified by wsid/objid/ref etc. is the
*end of the path, and to_obj_path is the rest of the path. The user
*must have access to the first object in the to_obj_path.
*- OR -
*list<obj_ref> to_obj_ref_path - shorthand for the to_obj_path.
*- OR -
*ref_string ref - A string representing a reference path from
*one object to another. Unlike the previous reference following
*options, the ref_string represents the ENTIRE path from the source
*object to the target object. As with the OI object, the ref field
*may contain a single reference.
*- OR -
*boolean find_refence_path - This is the last, slowest, and most expensive resort
*for getting a referenced object - do not use this method unless the
*path to the object is unavailable by any other means. Setting the
*find_refence_path parameter to true means that the workspace service will
*search through the object reference graph from the object specified
*in this OS to find an object that 1) the user can access, and 2)
*has an unbroken reference path to the target object. If the search
*succeeds, the object will be returned as normal. Note that the search
*will automatically fail after a certain (but much larger than necessary
*for the vast majority of cases) number of objects are traversed.
*
*
*OBJECT SUBSETS:
*
*When selecting a subset of an array in an object, the returned
*array is compressed to the size of the subset, but the ordering of
*the array is maintained. For example, if the array stored at the
*'feature' key of a Genome object has 4000 entries, and the object paths
*provided are:
*/feature/7
*/feature/3015
*/feature/700
*The returned feature array will be of length three and the entries will
*consist, in order, of the 7th, 700th, and 3015th entries of the
*original array.
*
*Optional object subset fields:
*list<object_path> included - the portions of the object to include
*in the object subset.
*boolean strict_maps - if true, throw an exception if the subset
*specification traverses a non-existent map key (default false)
*boolean strict_arrays - if true, throw an exception if the subset
*specification exceeds the size of an array (default true)
*/
typedefstructure{
ws_nameworkspace;
ws_idwsid;
obj_namename;
obj_idobjid;
obj_verver;
ref_stringref;
ref_chainobj_path;
list<obj_ref>obj_ref_path;
ref_chainto_obj_path;
list<obj_ref>to_obj_ref_path;
booleanfind_reference_path;
list<object_path>included;
booleanstrict_maps;
booleanstrict_arrays;
}
ObjectSpecification;

/*
*Meta data associated with an object stored in a workspace. Provided for
*backwards compatibility.
*
*obj_name id - name of the object.
*type_string type - type of the object.
*timestamp moddate - date when the object was saved
*obj_ver instance - the version of the object
*string command - Deprecated. Always returns the empty string.
*username lastmodifier - name of the user who last saved the object,
*including copying the object
*username owner - Deprecated. Same as lastmodifier.
*ws_name workspace - name of the workspace in which the object is
*stored
*string ref - Deprecated. Always returns the empty string.
*string chsum - the md5 checksum of the object.
*usermeta metadata - arbitrary user-supplied metadata about
*the object.
*obj_id objid - the numerical id of the object.
*
*@deprecatedobject_info
*/
typedeftuple<obj_nameid,type_stringtype,timestampmoddate,intinstance,stringcommand,usernamelastmodifier,usernameowner,ws_nameworkspace,stringref,stringchsum,usermetametadata,obj_idobjid>object_metadata;

/*
*Information about an object, including user provided metadata.
*
*obj_id objid - the numerical id of the object.
*obj_name name - the name of the object.
*type_string type - the type of the object.
*timestamp save_date - the save date of the object.
*obj_ver ver - the version of the object.
*username saved_by - the user that saved or copied the object.
*ws_id wsid - the workspace containing the object.
*ws_name workspace - the workspace containing the object.
*string chsum - the md5 checksum of the object.
*int size - the size of the object in bytes.
*usermeta meta - arbitrary user-supplied metadata about
*the object.
*/
typedeftuple<obj_idobjid,obj_namename,type_stringtype,timestampsave_date,intversion,usernamesaved_by,ws_idwsid,ws_nameworkspace,stringchsum,intsize,usermetameta>object_info;

/*
*Information about an object as a struct rather than a tuple.
*This allows adding fields in a backward compatible way in the future.
*Includes more fields than object_info.
*
*obj_id objid - the numerical id of the object.
*obj_name name - the name of the object.
*type_string type - the type of the object.
*timestamp save_date - the save date of the object.
*obj_ver ver - the version of the object.
*username saved_by - the user that saved or copied the object.
*ws_id wsid - the workspace containing the object.
*ws_name workspace - the workspace containing the object.
*string chsum - the md5 checksum of the object.
*int size - the size of the object in bytes.
*usermeta meta - arbitrary user-supplied metadata about the object.
*usermeta adminmeta - service administrator metadata set on an object. Unlike most
*other object fields, admin metadata is mutable.
*list<obj_ref> path - the path to the object.
*/
typedefstructure{
obj_idobjid;
obj_namename;
type_stringtype;
timestampsave_date;
intversion;
usernamesaved_by;
ws_idwsid;
ws_nameworkspace;
stringchsum;
intsize;
usermetameta;
usermetaadminmeta;
list<obj_ref>path;
}
ObjectInfo;

/*
*An external data unit. A piece of data from a source outside the
*Workspace.
*
*On input, only one of the resource_release_date or
*resource_release_epoch may be supplied. Both are supplied on output.
*
*All fields are optional, but at least one field must be present.
*
*string resource_name - the name of the resource, for example JGI.
*string resource_url - the url of the resource, for example
*http://genome.jgi.doe.gov
*string resource_version - version of the resource
*timestamp resource_release_date - the release date of the resource
*epoch resource_release_epoch - the release date of the resource
*string data_url - the url of the data, for example
*http://genome.jgi.doe.gov/pages/dynamicOrganismDownload.jsf?
*organism=BlaspURHD0036
*string data_id - the id of the data, for example
*7625.2.79179.AGTTCC.adnq.fastq.gz
*string description - a free text description of the data.
*/
typedefstructure{
stringresource_name;
stringresource_url;
stringresource_version;
timestampresource_release_date;
epochresource_release_epoch;
stringdata_url;
stringdata_id;
stringdescription;
}
ExternalDataUnit;

/*
*Information about a subaction that is invoked by a provenance action.
*
*A provenance action (PA) may invoke subactions (SA), e.g. calling a
*separate piece of code, a service, or a script. In most cases these
*calls are the same from PA to PA and so do not need to be listed in
*the provenance since providing information about the PA alone provides
*reproducibility.
*
*In some cases, however, SAs may change over time, such that invoking
*the same PA with the same parameters may produce different results.
*For example, if a PA calls a remote server, that server may be updated
*between a PA invoked on day T and another PA invoked on day T+1.
*
*The SubAction structure allows for specifying information about SAs
*that may dynamically change from PA invocation to PA invocation.
*
*All fields are optional but at least one field must be present.
*
*string name - the name of the SA.
*string ver - the version of SA.
*string code_url - a url pointing to the SA's codebase.
*string commit - a version control commit ID for the SA.
*string endpoint_url - a url pointing to the access point for the SA -
*a server url, for instance.
*/
typedefstructure{
stringname;
stringver;
stringcode_url;
stringcommit;
stringendpoint_url;
}
SubAction;

/*
*A provenance action.
*
*A provenance action (PA) is an action taken while transforming one data
*object to another. There may be several PAs taken in series. A PA is
*typically running a script, running an api command, etc. All of the
*following fields are optional, but more information provided equates to
*better data provenance.
*
*If a provenance action has no fields defined at all, it is silently dropped from
*the list.
*
*resolved_ws_objects should never be set by the user; it is set by the
*workspace service when returning data.
*
*On input, only one of the time or epoch may be supplied. Both are
*supplied on output.
*
*The maximum size of the entire provenance object, including all actions,
*is 1MB.
*
*timestamp time - the time the action was started
*epoch epoch - the time the action was started.
*string caller - the name or id of the invoker of this provenance
*action. In most cases, this will be the same for all PAs.
*string service - the name of the service that performed this action.
*string service_ver - the version of the service that performed this action.
*string method - the method of the service that performed this action.
*list<UnspecifiedObject> method_params - the parameters of the method
*that performed this action. If an object in the parameters is a
*workspace object, also put the object reference in the
*input_ws_object list.
*string script - the name of the script that performed this action.
*string script_ver - the version of the script that performed this action.
*string script_command_line - the command line provided to the script
*that performed this action. If workspace objects were provided in
*the command line, also put the object reference in the
*input_ws_object list.
*list<ref_string> input_ws_objects - the workspace objects that
*were used as input to this action; typically these will also be
*present as parts of the method_params or the script_command_line
*arguments. A reference path into the object graph may be supplied.
*list<obj_ref> resolved_ws_objects - the workspace objects ids from
*input_ws_objects resolved to permanent workspace object references
*by the workspace service.
*list<string> intermediate_incoming - if the previous action produced
*output that 1) was not stored in a referrable way, and 2) is
*used as input for this action, provide it with an arbitrary and
*unique ID here, in the order of the input arguments to this action.
*These IDs can be used in the method_params argument.
*list<string> intermediate_outgoing - if this action produced output
*that 1) was not stored in a referrable way, and 2) is
*used as input for the next action, provide it with an arbitrary and
*unique ID here, in the order of the output values from this action.
*These IDs can be used in the intermediate_incoming argument in the
*next action.
*list<ExternalDataUnit> external_data - data external to the workspace
*that was either imported to the workspace or used to create a
*workspace object.
*list<SubAction> subactions - the subactions taken as a part of this
*action.
*mapping<string, string> custom - user definable custom provenance
*fields and their values.
*string description - a free text description of this action.
*/
typedefstructure{
timestamptime;
epochepoch;
stringcaller;
stringservice;
stringservice_ver;
stringmethod;
list<UnspecifiedObject>method_params;
stringscript;
stringscript_ver;
stringscript_command_line;
list<ref_string>input_ws_objects;
list<obj_ref>resolved_ws_objects;
list<string>intermediate_incoming;
list<string>intermediate_outgoing;
list<ExternalDataUnit>external_data;
list<SubAction>subactions;
mapping<string,string>custom;
stringdescription;
}
ProvenanceAction;

/*
*Returns the version of the workspace service.
*/
funcdefver()returns(stringver)authenticationnone;

/*
*Input parameters for the "create_workspace" function.
*
*Required arguments:
*ws_name workspace - name of the workspace to be created.
*
*Optional arguments:
*permission globalread - 'r' to set the new workspace globally readable,
*default 'n'.
*string description - A free-text description of the new workspace, 1000
*characters max. Longer strings will be mercilessly and brutally
*truncated.
*usermeta meta - arbitrary user-supplied metadata for the workspace.
*/
typedefstructure{
ws_nameworkspace;
permissionglobalread;
stringdescription;
usermetameta;
}
CreateWorkspaceParams;

/*
*Creates a new workspace.
*/
funcdefcreate_workspace(CreateWorkspaceParamsparams)returns(workspace_infoinfo)authenticationrequired;

/*
*Input parameters for the "alter_workspace_metadata" function.
*
*Required arguments:
*WorkspaceIdentity wsi - the workspace to be altered
*
*One or both of the following arguments are required:
*usermeta new - metadata to assign to the workspace. Duplicate keys will
*be overwritten.
*list<string> remove - these keys will be removed from the workspace
*metadata key/value pairs.
*/
typedefstructure{
WorkspaceIdentitywsi;
usermetanew;
list<string>remove;
}
AlterWorkspaceMetadataParams;

/*
*Change the metadata associated with a workspace.
*/
funcdefalter_workspace_metadata(AlterWorkspaceMetadataParamsparams)returns()authenticationrequired;

/*
*Input parameters for the "clone_workspace" function.
*
*Note that deleted objects are not cloned, although hidden objects are
*and remain hidden in the new workspace.
*
*Required arguments:
*WorkspaceIdentity wsi - the workspace to be cloned.
*ws_name workspace - name of the workspace to be cloned into. This must
*be a non-existant workspace name.
*
*Optional arguments:
*permission globalread - 'r' to set the new workspace globally readable,
*default 'n'.
*string description - A free-text description of the new workspace, 1000
*characters max. Longer strings will be mercilessly and brutally
*truncated.
*usermeta meta - arbitrary user-supplied metadata for the workspace.
*list<ObjectIdentity> exclude - exclude the specified objects from the
*cloned workspace. Either an object ID or a object name must be
*specified in each ObjectIdentity - any supplied reference strings,
*workspace names or IDs, and versions are ignored.
*/
typedefstructure{
WorkspaceIdentitywsi;
ws_nameworkspace;
permissionglobalread;
stringdescription;
usermetameta;
list<ObjectIdentity>exclude;
}
CloneWorkspaceParams;

/*
*Clones a workspace.
*/
funcdefclone_workspace(CloneWorkspaceParamsparams)returns(workspace_infoinfo)authenticationrequired;

/*
*Lock a workspace, preventing further changes.
*
*WARNING: Locking a workspace is permanent. A workspace, once locked,
*cannot be unlocked.
*
*The only changes allowed for a locked workspace are changing user
*based permissions or making a private workspace globally readable,
*thus permanently publishing the workspace. A locked, globally readable
*workspace cannot be made private.
*/
funcdeflock_workspace(WorkspaceIdentitywsi)returns(workspace_infoinfo)authenticationrequired;

/*
*DEPRECATED
*
*Input parameters for the "get_workspacemeta" function. Provided for
*backwards compatibility.
*
*One, and only one of:
*ws_name workspace - name of the workspace.
*ws_id id - the numerical ID of the workspace.
*
*Optional arguments:
*string auth - the authentication token of the KBase account accessing
*the workspace. Overrides the client provided authorization
*credentials if they exist.
*
*@deprecatedWorkspace.WorkspaceIdentity
*/
typedefstructure{
ws_nameworkspace;
ws_idid;
stringauth;
}
get_workspacemeta_params;

/*
*Retrieves the metadata associated with the specified workspace.
*Provided for backwards compatibility.
*@deprecatedWorkspace.get_workspace_info
*/
funcdefget_workspacemeta(get_workspacemeta_paramsparams)returns(workspace_metadatametadata)authenticationoptional;

/*
*Get information associated with a workspace.
*/
funcdefget_workspace_info(WorkspaceIdentitywsi)returns(workspace_infoinfo)authenticationoptional;

/*
*Get a workspace's description.
*/
funcdefget_workspace_description(WorkspaceIdentitywsi)returns(stringdescription)authenticationoptional;

/*
*Input parameters for the "set_permissions" function.
*
*One, and only one, of the following is required:
*ws_id id - the numerical ID of the workspace.
*ws_name workspace - the name of the workspace.
*
*Required arguments:
*permission new_permission - the permission to assign to the users.
*list<username> users - the users whose permissions will be altered.
*/
typedefstructure{
ws_nameworkspace;
ws_idid;
permissionnew_permission;
list<username>users;
}
SetPermissionsParams;

/*
*Set permissions for a workspace.
*/
funcdefset_permissions(SetPermissionsParamsparams)returns()authenticationrequired;

/*
*Input parameters for the "set_global_permission" function.
*
*One, and only one, of the following is required:
*ws_id id - the numerical ID of the workspace.
*ws_name workspace - the name of the workspace.
*
*Required arguments:
*permission new_permission - the permission to assign to all users,
*either 'n' or 'r'. 'r' means that all users will be able to read
*the workspace; otherwise users must have specific permission to
*access the workspace.
*/
typedefstructure{
ws_nameworkspace;
ws_idid;
permissionnew_permission;
}
SetGlobalPermissionsParams;

/*
*Set the global permission for a workspace.
*/
funcdefset_global_permission(SetGlobalPermissionsParamsparams)returns()authenticationrequired;

/*
*Input parameters for the "set_workspace_description" function.
*
*One, and only one, of the following is required:
*ws_id id - the numerical ID of the workspace.
*ws_name workspace - the name of the workspace.
*
*Optional arguments:
*string description - A free-text description of the workspace, 1000
*characters max. Longer strings will be mercilessly and brutally
*truncated. If omitted, the description is set to null.
*/
typedefstructure{
ws_nameworkspace;
ws_idid;
stringdescription;
}
SetWorkspaceDescriptionParams;

/*
*Set the description for a workspace.
*/
funcdefset_workspace_description(SetWorkspaceDescriptionParamsparams)returns()authenticationrequired;

/*
*Input parameters for the "get_permissions_mass" function.
*workspaces - the workspaces for which to return the permissions,
*maximum 1000.
*/
typedefstructure{
list<WorkspaceIdentity>workspaces;
}
GetPermissionsMassParams;

/*
*A set of workspace permissions.
*perms - the list of permissions for each requested workspace
*/
typedefstructure{
list<mapping<username,permission>>perms;
}
WorkspacePermissions;

/*
*Get permissions for multiple workspaces.
*/
funcdefget_permissions_mass(GetPermissionsMassParamsmass)returns(WorkspacePermissionsperms)authenticationoptional;

/*
*Get permissions for a workspace.
*@deprecatedget_permissions_mass
*/
funcdefget_permissions(WorkspaceIdentitywsi)returns(mapping<username,permission>perms)authenticationoptional;

/*
*Input parameters for the "save_object" function. Provided for backwards
*compatibility.
*
*Required arguments:
*type_string type - type of the object to be saved
*ws_name workspace - name of the workspace where the object is to be
*saved
*obj_name id - name behind which the object will be saved in the
*workspace
*UnspecifiedObject data - data to be saved in the workspace
*
*Optional arguments:
*usermeta metadata - arbitrary user-supplied metadata for the object,
*not to exceed 16kb; if the object type specifies automatic
*metadata extraction with the 'meta ws' annotation, and your
*metadata name conflicts, then your metadata will be silently
*overwritten.
*string auth - the authentication token of the KBase account accessing
*the workspace. Overrides the client provided authorization
*credentials if they exist.
*
*@deprecated
*/
typedefstructure{
obj_nameid;
type_stringtype;
UnspecifiedObjectdata;
ws_nameworkspace;
mapping<string,string>metadata;
stringauth;
}
save_object_params;

/*
*Saves the input object data and metadata into the selected workspace,
*returning the object_metadata of the saved object. Provided
*for backwards compatibility.
*
*@deprecatedWorkspace.save_objects
*/
funcdefsave_object(save_object_paramsparams)returns(object_metadatametadata)authenticationoptional;

/*
*An object and associated data required for saving.
*
*Required arguments:
*type_string type - the type of the object. Omit the version information
*to use the latest version.
*UnspecifiedObject data - the object data.
*One, and only one, of:
*obj_name name - the name of the object.
*obj_id objid - the id of the object to save over.
*
*
*Optional arguments:
*usermeta meta - arbitrary user-supplied metadata for the object,
*not to exceed 16kb; if the object type specifies automatic
*metadata extraction with the 'meta ws' annotation, and your
*metadata name conflicts, then your metadata will be silently
*overwritten.
*list<ProvenanceAction> provenance - provenance data for the object.
*boolean hidden - true if this object should not be listed when listing
*workspace objects.
*/
typedefstructure{
type_stringtype;
UnspecifiedObjectdata;
obj_namename;
obj_idobjid;
usermetameta;
list<ProvenanceAction>provenance;
booleanhidden;
}
ObjectSaveData;

/*
*Input parameters for the "save_objects" function.
*
*One, and only one, of the following is required:
*ws_id id - the numerical ID of the workspace.
*ws_name workspace - the name of the workspace.
*
*Required arguments:
*list<ObjectSaveData> objects - the objects to save.
*/
typedefstructure{
ws_nameworkspace;
ws_idid;
list<ObjectSaveData>objects;
}
SaveObjectsParams;

/*
*Save objects to the workspace. Saving over a deleted object undeletes
*it.
*/
funcdefsave_objects(SaveObjectsParamsparams)returns(list<object_info>info)authenticationrequired;

/*
*Input parameters for the "get_object" function. Provided for backwards
*compatibility.
*
*Required arguments:
*ws_name workspace - Name of the workspace containing the object to be
*retrieved
*obj_name id - Name of the object to be retrieved
*
*Optional arguments:
*int instance - Version of the object to be retrieved, enabling
*retrieval of any previous version of an object
*string auth - the authentication token of the KBase account accessing
*the object. Overrides the client provided authorization
*credentials if they exist.
*
*@deprecatedWorkspace.ObjectIdentity
*/
typedefstructure{
obj_nameid;
ws_nameworkspace;
intinstance;
stringauth;
}
get_object_params;

/*
*Output generated by the "get_object" function. Provided for backwards
*compatibility.
*
*UnspecifiedObject data - The object's data.
*object_metadata metadata - Metadata for object retrieved/
*
*@deprecatedWorkspaces.ObjectData
*/
typedefstructure{
UnspecifiedObjectdata;
object_metadatametadata;
}
get_object_output;

/*
*Retrieves the specified object from the specified workspace.
*Both the object data and metadata are returned.
*Provided for backwards compatibility.
*
*@deprecatedWorkspace.get_objects
*/
funcdefget_object(get_object_paramsparams)returns(get_object_outputoutput)authenticationoptional;

/*
*DEPRECATED
*
*The provenance and supplemental info for an object.
*
*object_info info - information about the object.
*list<ProvenanceAction> provenance - the object's provenance.
*username creator - the user that first saved the object to the
*workspace.
*ws_id orig_wsid - the id of the workspace in which this object was
*originally saved. Missing for objects saved prior to version
*0.4.1.
*timestamp created - the date the object was first saved to the
*workspace.
*epoch epoch - the date the object was first saved to the
*workspace.
*list<obj_ref> - the references contained within the object.
*obj_ref copied - the reference of the source object if this object is
*a copy and the copy source exists and is accessible.
*null otherwise.
*boolean copy_source_inaccessible - true if the object was copied from
*another object, but that object is no longer accessible to the
*user. False otherwise.
*mapping<id_type, list<extracted_id>> extracted_ids - any ids extracted
*from the object.
*string handle_error - if an error occurs while setting ACLs on
*embedded external IDs, it will be reported here. If not for historical reasons the
*parameter would be called "external_id_error".
*string handle_stacktrace - the stacktrace for handle_error. As above, the parameter
*should be called "external_id_stacktrace".
*
*@deprecated
*/
typedefstructure{
object_infoinfo;
list<ProvenanceAction>provenance;
usernamecreator;
ws_idorig_wsid;
timestampcreated;
epochepoch;
list<obj_ref>refs;
obj_refcopied;
booleancopy_source_inaccessible;
mapping<id_type,list<extracted_id>>extracted_ids;
stringhandle_error;
stringhandle_stacktrace;
}
ObjectProvenanceInfo;

/*
*DEPRECATED
*Get object provenance from the workspace.
*
*@deprecatedWorkspace.get_objects2
*/
funcdefget_object_provenance(list<ObjectIdentity>object_ids)returns(list<ObjectProvenanceInfo>data)authenticationoptional;

/*
*The data and supplemental info for an object.
*
*UnspecifiedObject data - the object's data or subset data.
*object_info info - information about the object.
*ObjectInfo infostruct - information about the object as a structure rather than a tuple.
*list<obj_ref> path - the path to the object through the object reference graph. All the
*references in the path are absolute.
*list<ProvenanceAction> provenance - the object's provenance.
*username creator - the user that first saved the object to the workspace.
*ws_id orig_wsid - the id of the workspace in which this object was
*originally saved. Missing for objects saved prior to version
*0.4.1.
*timestamp created - the date the object was first saved to the
*workspace.
*epoch epoch - the date the object was first saved to the
*workspace.
*list<obj_ref> refs - the references contained within the object.
*obj_ref copied - the reference of the source object if this object is
*a copy and the copy source exists and is accessible.
*null otherwise.
*boolean copy_source_inaccessible - true if the object was copied from
*another object, but that object is no longer accessible to the
*user. False otherwise.
*mapping<id_type, list<extracted_id>> extracted_ids - any ids extracted
*from the object.
*string handle_error - if an error occurs while setting ACLs on
*embedded external IDs, it will be reported here. If not for historical reasons the
*parameter would be called "external_id_error".
*string handle_stacktrace - the stacktrace for handle_error. As above, the parameter
*should be called "external_id_stacktrace".
*/
typedefstructure{
UnspecifiedObjectdata;
object_infoinfo;
ObjectInfoinfostruct;
list<obj_ref>path;
list<ProvenanceAction>provenance;
usernamecreator;
ws_idorig_wsid;
timestampcreated;
epochepoch;
list<obj_ref>refs;
obj_refcopied;
booleancopy_source_inaccessible;
mapping<id_type,list<extracted_id>>extracted_ids;
stringhandle_error;
stringhandle_stacktrace;
}
ObjectData;

/*
*DEPRECATED
*Get objects from the workspace.
*@deprecatedWorkspace.get_objects2
*/
funcdefget_objects(list<ObjectIdentity>object_ids)returns(list<ObjectData>data)authenticationoptional;

/*
*Input parameters for the get_objects2 function.
*
*Required parameters:
*list<ObjectSpecification> objects - the list of object specifications
*for the objects to return (via reference chain and as a subset if
*specified).
*
*Optional parameters:
*boolean ignoreErrors - Don't throw an exception if an object cannot
*be accessed; return null for that object's information instead.
*Default false.
*boolean infostruct - return the object information as a structure rather than a tuple.
*Default false. If true, ObjectData.path will be null as it is provided in
*the ObjectInfo data.
*boolean no_data - return the provenance, references, and
*object_info for this object without the object data. Default false.
*boolean skip_external_system_updates - if the objects contain any external IDs, don't
*contact external systems to perform any updates for those IDs (often ACL updates,
*e.g. for handle / blobstore / sample IDs). In some cases this can speed up fetching the
*data. Default false.
*boolean batch_external_system_updates - if the objects contain any external IDs,
*send all external system updates in a batch to each external system when possible
*rather than object by object. This can potentially speed up the updates, but the
*drawback is that if the external update fails for any object, all the objects that
*required updates for that system will be marked as having a failed update.
*Has no effect if skip_external_system_updates is true. Default false.
*/
typedefstructure{
list<ObjectSpecification>objects;
booleanignoreErrors;
booleaninfostruct;
booleanno_data;
booleanskip_external_system_updates;
booleanbatch_external_system_updates;
}
GetObjects2Params;

/*
*Results from the get_objects2 function.
*
*list<ObjectData> data - the returned objects.
*/
typedefstructure{
list<ObjectData>data;
}
GetObjects2Results;

/*
*Get objects from the workspace.
*/
funcdefget_objects2(GetObjects2Paramsparams)returns(GetObjects2Resultsresults)authenticationoptional;

/*
*DEPRECATED
*Get portions of objects from the workspace.
*
*When selecting a subset of an array in an object, the returned
*array is compressed to the size of the subset, but the ordering of
*the array is maintained. For example, if the array stored at the
*'feature' key of a Genome object has 4000 entries, and the object paths
*provided are:
*/feature/7
*/feature/3015
*/feature/700
*The returned feature array will be of length three and the entries will
*consist, in order, of the 7th, 700th, and 3015th entries of the
*original array.
*@deprecatedWorkspace.get_objects2
*/
funcdefget_object_subset(list<SubObjectIdentity>sub_object_ids)returns(list<ObjectData>data)authenticationoptional;

/*
*Get an object's history. The version argument of the ObjectIdentity is
*ignored.
*/
funcdefget_object_history(ObjectIdentityobject)returns(list<object_info>history)authenticationoptional;

/*
*List objects that reference one or more specified objects. References
*in the deleted state are not returned.
*/
funcdeflist_referencing_objects(list<ObjectIdentity>object_ids)returns(list<list<object_info>>referrers)authenticationoptional;

/*
*DEPRECATED
*
*List the number of times objects have been referenced.
*
*This count includes both provenance and object-to-object references
*and, unlike list_referencing_objects, includes objects that are
*inaccessible to the user.
*
*@deprecated
*/
funcdeflist_referencing_object_counts(list<ObjectIdentity>object_ids)returns(list<int>counts)authenticationoptional;

/*
*DEPRECATED
*
*Get objects by references from other objects.
*
*NOTE: In the vast majority of cases, this method is not necessary and
*get_objects should be used instead.
*
*get_referenced_objects guarantees that a user that has access to an
*object can always see a) objects that are referenced inside the object
*and b) objects that are referenced in the object's provenance. This
*ensures that the user has visibility into the entire provenance of the
*object and the object's object dependencies (e.g. references).
*
*The user must have at least read access to the first object in each
*reference chain, but need not have access to any further objects in
*the chain, and those objects may be deleted.
*
*@deprecatedWorkspace.get_objects2
*/
funcdefget_referenced_objects(list<ref_chain>ref_chains)returns(list<ObjectData>data)authenticationoptional;

/*
*Input parameters for the "list_workspaces" function. Provided for
*backwards compatibility.
*
*Optional parameters:
*string auth - the authentication token of the KBase account accessing
*the list of workspaces. Overrides the client provided authorization
*credentials if they exist.
*boolean excludeGlobal - if excludeGlobal is true exclude world
*readable workspaces. Defaults to false.
*
*@deprecatedWorkspace.ListWorkspaceInfoParams
*/
typedefstructure{
stringauth;
booleanexcludeGlobal;
}
list_workspaces_params;

/*
*Lists the metadata of all workspaces a user has access to. Provided for
*backwards compatibility - to be replaced by the functionality of
*list_workspace_info
*
*@deprecatedWorkspace.list_workspace_info
*/
funcdeflist_workspaces(list_workspaces_paramsparams)returns(list<workspace_metadata>workspaces)authenticationoptional;

/*
*Input parameters for the "list_workspace_info" function.
*
*Only one of each timestamp/epoch pair may be supplied.
*
*Optional parameters:
*permission perm - filter workspaces by minimum permission level. 'None'
*and 'readable' are ignored.
*list<username> owners - filter workspaces by owner.
*usermeta meta - filter workspaces by the user supplied metadata. NOTE:
*only one key/value pair is supported at this time. A full map
*is provided as input for the possibility for expansion in the
*future.
*timestamp after - only return workspaces that were modified after this
*date.
*timestamp before - only return workspaces that were modified before
*this date.
*epoch after_epoch - only return workspaces that were modified after
*this date.
*epoch before_epoch - only return workspaces that were modified before
*this date.
*boolean excludeGlobal - if excludeGlobal is true exclude world
*readable workspaces. Defaults to false.
*boolean showDeleted - show deleted workspaces that are owned by the
*user.
*boolean showOnlyDeleted - only show deleted workspaces that are owned
*by the user.
*/
typedefstructure{
permissionperm;
list<username>owners;
usermetameta;
timestampafter;
timestampbefore;
epochafter_epoch;
epochbefore_epoch;
booleanexcludeGlobal;
booleanshowDeleted;
booleanshowOnlyDeleted;
}
ListWorkspaceInfoParams;

/*
*List workspaces viewable by the user.
*/
funcdeflist_workspace_info(ListWorkspaceInfoParamsparams)returns(list<workspace_info>wsinfo)authenticationoptional;

/*
*Input parameters for the "list_workspace_ids" function.
*
*Optional parameters:
*permission perm - filter workspaces by minimum permission level. 'None'
*and 'readable' are ignored.
*boolean onlyGlobal - if onlyGlobal is true only include world readable
*workspaces. Defaults to false. If true, excludeGlobal is ignored.
*boolean excludeGlobal - if excludeGlobal is true exclude world
*readable workspaces. Defaults to true.
*/
typedefstructure{
permissionperm;
booleanexcludeGlobal;
booleanonlyGlobal;
}
ListWorkspaceIDsParams;

/*
*Results of the "list_workspace_ids" function.
*
*list<int> workspaces - the workspaces to which the user has explicit
*access.
*list<int> pub - the workspaces to which the user has access because
*they're globally readable.
*/
typedefstructure{
list<int>workspaces;
list<int>pub;
}
ListWorkspaceIDsResults;

/*
*List workspace IDs to which the user has access.
*
*This function returns a subset of the information in the
*list_workspace_info method and should be substantially faster.
*/
funcdeflist_workspace_ids(ListWorkspaceIDsParamsparams)returns(ListWorkspaceIDsResultsresults)authenticationoptional;

/*
*Input parameters for the "list_workspace_objects" function. Provided
*for backwards compatibility.
*
*Required arguments:
*ws_name workspace - Name of the workspace for which objects should be
*listed
*
*Optional arguments:
*type_string type - type of the objects to be listed. Here, omitting
*version information will find any objects that match the provided
*type - e.g. Foo.Bar-0 will match Foo.Bar-0.X where X is any
*existing version.
*boolean showDeletedObject - show objects that have been deleted
*string auth - the authentication token of the KBase account requesting
*access. Overrides the client provided authorization credentials if
*they exist.
*
*@deprecatedWorkspace.ListObjectsParams
*/
typedefstructure{
ws_nameworkspace;
type_stringtype;
booleanshowDeletedObject;
stringauth;
}
list_workspace_objects_params;

/*
*Lists the metadata of all objects in the specified workspace with the
*specified type (or with any type). Provided for backwards compatibility.
*
*@deprecatedWorkspace.list_objects
*/
funcdeflist_workspace_objects(list_workspace_objects_paramsparams)returns(list<object_metadata>objects)authenticationoptional;

/*
*Parameters for the 'list_objects' function.
*
*At least one, and no more than 10000, workspaces must be specified in one of the
*two following parameters. It is strongly recommended that the list is restricted to
*the workspaces of interest, or the results may be very large:
*list<ws_id> ids - the numerical IDs of the workspaces of interest.
*list<ws_name> workspaces - the names of the workspaces of interest.
*
*Only one of each timestamp/epoch pair may be supplied.
*
*Optional arguments:
*type_string type - type of the objects to be listed. Here, omitting
*version information will find any objects that match the provided
*type - e.g. Foo.Bar-0 will match Foo.Bar-0.X where X is any
*existing version.
*permission perm - DEPRECATED, no longer useful. Filter on minimum permission by providing
*only workspaces with the desired permission levels in the input list(s).
*list<username> savedby - filter objects by the user that saved or
*copied the object.
*usermeta meta - filter objects by the user supplied metadata. NOTE:
*only one key/value pair is supported at this time. A full map
*is provided as input for the possibility for expansion in the
*future.
*timestamp after - only return objects that were created after this
*date.
*timestamp before - only return objects that were created before this
*date.
*epoch after_epoch - only return objects that were created after this
*date.
*epoch before_epoch - only return objects that were created before this
*date.
*string startafter - a reference-like string that determines where the
*list of objects will begin. It takes the form X/Y/Z, where X is
*the workspace ID, Y the object ID, and Z the version. The version
*may be omitted, and the object ID omitted if the version is also
*omitted. After a '/' separator either an integer or no characters
*at all, including whitespace, may occur. Whitespace strings are
*ignored. If startafter is provided, after, before,
*after_epoch, before_epoch, savedby, meta, minObjectID, and
*maxObjectID may not be provided. Only objects that are ordered
*after the reference, exclusive, will be included in the
*result, and the resulting list will be sorted by reference.
*obj_id minObjectID - only return objects with an object id greater or
*equal to this value.
*obj_id maxObjectID - only return objects with an object id less than or
*equal to this value.
*boolean showDeleted - show deleted objects in workspaces to which the
*user has write access.
*boolean showOnlyDeleted - only show deleted objects in workspaces to
*which the user has write access.
*boolean showHidden - show hidden objects.
*boolean showAllVersions - show all versions of each object that match
*the filters rather than only the most recent version.
*boolean includeMetadata - include the user provided metadata in the
*returned object_info. If false (0 or null), the default, the
*metadata will be null.
*boolean excludeGlobal - DEPRECATED, no longer useful. Filter on global workspaces by
*excluding them from the input workspace list(s).
*int limit - limit the output to X objects. Default and maximum value
*is 10000. Limit values < 1 are treated as 10000, the default.
*/
typedefstructure{
list<ws_name>workspaces;
list<ws_id>ids;
type_stringtype;
permissionperm;
list<username>savedby;
usermetameta;
timestampafter;
timestampbefore;
epochafter_epoch;
epochbefore_epoch;
stringstartafter;
obj_idminObjectID;
obj_idmaxObjectID;
booleanshowDeleted;
booleanshowOnlyDeleted;
booleanshowHidden;
booleanshowAllVersions;
booleanincludeMetadata;
booleanexcludeGlobal;
intlimit;
}
ListObjectsParams;

/*
*List objects in one or more workspaces.
*/
funcdeflist_objects(ListObjectsParamsparams)returns(list<object_info>objinfo)authenticationoptional;

/*
*Input parameters for the "get_objectmeta" function.
*
*Required arguments:
*ws_name workspace - name of the workspace containing the object for
*which metadata is to be retrieved
*obj_name id - name of the object for which metadata is to be retrieved
*
*Optional arguments:
*int instance - Version of the object for which metadata is to be
*retrieved, enabling retrieval of any previous version of an object
*string auth - the authentication token of the KBase account requesting
*access. Overrides the client provided authorization credentials if
*they exist.
*
*@deprecatedWorkspace.ObjectIdentity
*/
typedefstructure{
obj_nameid;
ws_nameworkspace;
intinstance;
stringauth;
}
get_objectmeta_params;

/*
*Retrieves the metadata for a specified object from the specified
*workspace. Provides access to metadata for all versions of the object
*via the instance parameter. Provided for backwards compatibility.
*
*@deprecatedWorkspace.get_object_info3
*/
funcdefget_objectmeta(get_objectmeta_paramsparams)returns(object_metadatametadata)authenticationoptional;

/*
*Get information about objects from the workspace.
*
*Set includeMetadata true to include the user specified metadata.
*Otherwise the metadata in the object_info will be null.
*
*This method will be replaced by the behavior of get_object_info_new
*in the future.
*
*@deprecatedWorkspace.get_object_info3
*/
funcdefget_object_info(list<ObjectIdentity>object_ids,booleanincludeMetadata)returns(list<object_info>info)authenticationoptional;

/*
*Input parameters for the "get_object_info_new" function.
*
*Required arguments:
*list<ObjectSpecification> objects - the objects for which the
*information should be fetched. Subsetting related parameters are
*ignored.
*
*Optional arguments:
*boolean includeMetadata - include the object metadata in the returned
*information. Default false.
*boolean ignoreErrors - Don't throw an exception if an object cannot
*be accessed; return null for that object's information instead.
*Default false.
*
*@deprecatedWorkspace.GetObjectInfo3Params
*/
typedefstructure{
list<ObjectSpecification>objects;
booleanincludeMetadata;
booleanignoreErrors;
}
GetObjectInfoNewParams;

/*
*Get information about objects from the workspace.
*
*@deprecatedWorkspace.get_object_info3
*/
funcdefget_object_info_new(GetObjectInfoNewParamsparams)returns(list<object_info>info)authenticationoptional;

/*
*Input parameters for the "get_object_info3" function.
*
*Required arguments:
*list<ObjectSpecification> objects - the objects for which the
*information should be fetched. Subsetting related parameters are
*ignored.
*
*Optional arguments:
*boolean infostruct - return information about the object as a structure rather than a tuple.
*Default false. If true, infos and paths will be null.
*boolean includeMetadata - include the user and admin metadata in the returned
*information. Default false.
*boolean ignoreErrors - Don't throw an exception if an object cannot
*be accessed; return null for that object's information and path instead.
*Default false.
*/
typedefstructure{
list<ObjectSpecification>objects;
booleaninfostruct;
booleanincludeMetadata;
booleanignoreErrors;
}
GetObjectInfo3Params;

/*
*Output from the get_object_info3 function.
*
*list<object_info> infos - the object_info data for each object.
*list<list<obj_ref> paths - the path to the object through the object reference graph for
*each object. All the references in the path are absolute.
*list<ObjectInfo> infostructs - the ObjectInfo data for each object.
*/
typedefstructure{
list<object_info>infos;
list<list<obj_ref>>paths;
list<ObjectInfo>infostructs;
}
GetObjectInfo3Results;

funcdefget_object_info3(GetObjectInfo3Paramsparams)returns(GetObjectInfo3Resultsresults)authenticationoptional;

/*
*Input parameters for the 'rename_workspace' function.
*
*Required arguments:
*WorkspaceIdentity wsi - the workspace to rename.
*ws_name new_name - the new name for the workspace.
*/
typedefstructure{
WorkspaceIdentitywsi;
ws_namenew_name;
}
RenameWorkspaceParams;

/*
*Rename a workspace.
*/
funcdefrename_workspace(RenameWorkspaceParamsparams)returns(workspace_inforenamed)authenticationrequired;

/*
*Input parameters for the 'rename_object' function.
*
*Required arguments:
*ObjectIdentity obj - the object to rename.
*obj_name new_name - the new name for the object.
*/
typedefstructure{
ObjectIdentityobj;
obj_namenew_name;
}
RenameObjectParams;

/*
*Rename an object. User meta data is always returned as null.
*/
funcdefrename_object(RenameObjectParamsparams)returns(object_inforenamed)authenticationrequired;

/*
*Input parameters for the 'copy_object' function.
*
*If the 'from' ObjectIdentity includes no version and the object is
*copied to a new name, the entire version history of the object is
*copied. In all other cases only the version specified, or the latest
*version if no version is specified, is copied.
*
*The version from the 'to' ObjectIdentity is always ignored.
*
*Required arguments:
*ObjectIdentity from - the object to copy.
*ObjectIdentity to - where to copy the object.
*/
typedefstructure{
ObjectIdentityfrom;
ObjectIdentityto;
}
CopyObjectParams;

/*
*Copy an object. Returns the object_info for the newest version.
*/
funcdefcopy_object(CopyObjectParamsparams)returns(object_infocopied)authenticationrequired;

/*
*Revert an object.
*
*The object specified in the ObjectIdentity is reverted to the version
*specified in the ObjectIdentity.
*/
funcdefrevert_object(ObjectIdentityobject)returns(object_inforeverted)authenticationrequired;

/*
*Input parameters for the get_names_by_prefix function.
*
*Required arguments:
*list<WorkspaceIdentity> workspaces - the workspaces to search.
*string prefix - the prefix of the object names to return.
*
*Optional arguments:
*boolean includeHidden - include names of hidden objects in the results.
*Default false.
*/
typedefstructure{
list<WorkspaceIdentity>workspaces;
stringprefix;
booleanincludeHidden;
}
GetNamesByPrefixParams;

/*
*Results object for the get_names_by_prefix function.
*
*list<list<obj_name>> names - the names matching the provided prefix,
*listed in order of the input workspaces.
*/
typedefstructure{
list<list<obj_name>>names;
}
GetNamesByPrefixResults;

/*
*Get object names matching a prefix. At most 1000 names are returned.
*No particular ordering is guaranteed, nor is which names will be
*returned if more than 1000 are found.
*
*This function is intended for use as an autocomplete helper function.
*/
funcdefget_names_by_prefix(GetNamesByPrefixParamsparams)returns(GetNamesByPrefixResultsres)authenticationoptional;

/*
*Hide objects. All versions of an object are hidden, regardless of
*the version specified in the ObjectIdentity. Hidden objects do not
*appear in the list_objects method.
*/
funcdefhide_objects(list<ObjectIdentity>object_ids)returns()authenticationrequired;

/*
*Unhide objects. All versions of an object are unhidden, regardless
*of the version specified in the ObjectIdentity.
*/
funcdefunhide_objects(list<ObjectIdentity>object_ids)returns()authenticationrequired;

/*
*Delete objects. All versions of an object are deleted, regardless of
*the version specified in the ObjectIdentity.
*/
funcdefdelete_objects(list<ObjectIdentity>object_ids)returns()authenticationrequired;

/*
*Undelete objects. All versions of an object are undeleted, regardless
*of the version specified in the ObjectIdentity. If an object is not
*deleted, no error is thrown.
*/
funcdefundelete_objects(list<ObjectIdentity>object_ids)returns()authenticationrequired;

/*
*Delete a workspace. All objects contained in the workspace are deleted.
*/
funcdefdelete_workspace(WorkspaceIdentitywsi)returns()authenticationrequired;

/*
*A type specification (typespec) file in the KBase Interface Description
*Language (KIDL).
*/
typedefstringtypespec;

/*
*A module name defined in a KIDL typespec.
*/
typedefstringmodulename;

/*
*A type definition name in a KIDL typespec.
*/
typedefstringtypename;

/*
*A version of a type.
*Specifies the version of the type in a single string in the format
*[major].[minor]:
*
*major - an integer. The major version of the type. A change in the
*major version implies the type has changed in a non-backwards
*compatible way.
*minor - an integer. The minor version of the type. A change in the
*minor version implies that the type has changed in a way that is
*backwards compatible with previous type definitions.
*/
typedefstringtypever;

/*
*A function string for referencing a funcdef.
*Specifies the function and its version in a single string in the format
*[modulename].[funcname]-[major].[minor]:
*
*modulename - a string. The name of the module containing the function.
*funcname - a string. The name of the function as assigned by the funcdef
*statement.
*major - an integer. The major version of the function. A change in the
*major version implies the function has changed in a non-backwards
*compatible way.
*minor - an integer. The minor version of the function. A change in the
*minor version implies that the function has changed in a way that is
*backwards compatible with previous function definitions.
*
*In many cases, the major and minor versions are optional, and if not
*provided the most recent version will be used.
*
*Example: MyModule.MyFunc-3.1
*/
typedefstringfunc_string;

/*
*The version of a typespec file.
*/
typedefintspec_version;

/*
*The JSON Schema (v4) representation of a type definition.
*/
typedefstringjsonschema;

/*
*Request ownership of a module name. A Workspace administrator
*must approve the request.
*/
funcdefrequest_module_ownership(modulenamemod)returns()authenticationrequired;

/*
*Parameters for the register_typespec function.
*
*Required arguments:
*One of:
*typespec spec - the new typespec to register.
*modulename mod - the module to recompile with updated options (see below).
*
*Optional arguments:
*boolean dryrun - Return, but do not save, the results of compiling the
*spec. Default true. Set to false for making permanent changes.
*list<typename> new_types - types in the spec to make available in the
*workspace service. When compiling a spec for the first time, if
*this argument is empty no types will be made available. Previously
*available types remain so upon recompilation of a spec or
*compilation of a new spec.
*list<typename> remove_types - no longer make these types available in
*the workspace service for the new version of the spec. This does
*not remove versions of types previously compiled.
*mapping<modulename, spec_version> dependencies - By default, the
*latest released versions of spec dependencies will be included when
*compiling a spec. Specific versions can be specified here.
*spec_version prev_ver - the id of the previous version of the typespec.
*An error will be thrown if this is set and prev_ver is not the
*most recent version of the typespec. This prevents overwriting of
*changes made since retrieving a spec and compiling an edited spec.
*This argument is ignored if a modulename is passed.
*/
typedefstructure{
typespecspec;
modulenamemod;
list<typename>new_types;
list<typename>remove_types;
mapping<modulename,spec_version>dependencies;
booleandryrun;
spec_versionprev_ver;
}
RegisterTypespecParams;

/*
*Register a new typespec or recompile a previously registered typespec
*with new options.
*See the documentation of RegisterTypespecParams for more details.
*Also see the release_types function.
*/
funcdefregister_typespec(RegisterTypespecParamsparams)returns(mapping<type_string,jsonschema>)authenticationrequired;

/*
*Parameters for the register_typespec_copy function.
*
*Required arguments:
*string external_workspace_url - the URL of the workspace server from
*which to copy a typespec.
*modulename mod - the name of the module in the workspace server
*
*Optional arguments:
*spec_version version - the version of the module in the workspace
*server
*/
typedefstructure{
stringexternal_workspace_url;
modulenamemod;
spec_versionversion;
}
RegisterTypespecCopyParams;

/*
*Register a copy of new typespec or refresh an existing typespec which is
*loaded from another workspace for synchronization. Method returns new
*version of module in current workspace.
*
*Also see the release_types function.
*/
funcdefregister_typespec_copy(RegisterTypespecCopyParamsparams)returns(spec_versionnew_local_version)authenticationrequired;

/*
*Release a module for general use of its types.
*
*Releases the most recent version of a module. Releasing a module does
*two things to the module's types:
*1) If a type's major version is 0, it is changed to 1. A major
*version of 0 implies that the type is in development and may have
*backwards incompatible changes from minor version to minor version.
*Once a type is released, backwards incompatible changes always
*cause a major version increment.
*2) This version of the type becomes the default version, and if a
*specific version is not supplied in a function call, this version
*will be used. This means that newer, unreleased versions of the
*type may be skipped.
*/
funcdefrelease_module(modulenamemod)returns(list<type_string>types)authenticationrequired;

/*
*Parameters for the list_modules() function.
*
*Optional arguments:
*username owner - only list modules owned by this user.
*/
typedefstructure{
usernameowner;
}
ListModulesParams;

/*
*List typespec modules.
*/
funcdeflist_modules(ListModulesParamsparams)returns(list<modulename>modules)authenticationnone;

/*
*Parameters for the list_module_versions function.
*
*Required arguments:
*One of:
*modulename mod - returns all versions of the module.
*type_string type - returns all versions of the module associated with
*the type.
*/
typedefstructure{
modulenamemod;
type_stringtype;
}
ListModuleVersionsParams;

/*
*A set of versions from a module.
*
*modulename mod - the name of the module.
*list<spec_version> - a set or subset of versions associated with the
*module.
*list<spec_version> - a set or subset of released versions associated
*with the module.
*/
typedefstructure{
modulenamemod;
list<spec_version>vers;
list<spec_version>released_vers;
}
ModuleVersions;

/*
*List typespec module versions.
*/
funcdeflist_module_versions(ListModuleVersionsParamsparams)returns(ModuleVersionsvers)authenticationoptional;

/*
*Parameters for the get_module_info function.
*
*Required arguments:
*modulename mod - the name of the module to retrieve.
*
*Optional arguments:
*spec_version ver - the version of the module to retrieve. Defaults to
*the latest version.
*/
typedefstructure{
modulenamemod;
spec_versionver;
}
GetModuleInfoParams;

/*
*Information about a module.
*
*list<username> owners - the owners of the module.
*spec_version ver - the version of the module.
*typespec spec - the typespec.
*string description - the description of the module from the typespec.
*mapping<type_string, jsonschema> types - the types associated with this
*module and their JSON schema.
*mapping<modulename, spec_version> included_spec_version - names of
*included modules associated with their versions.
*string chsum - the md5 checksum of the object.
*list<func_string> functions - list of names of functions registered in spec.
*boolean is_released - shows if this version of module was released (and
*hence can be seen by others).
*/
typedefstructure{
list<username>owners;
spec_versionver;
typespecspec;
stringdescription;
mapping<type_string,jsonschema>types;
mapping<modulename,spec_version>included_spec_version;
stringchsum;
list<func_string>functions;
booleanis_released;
}
ModuleInfo;

funcdefget_module_info(GetModuleInfoParamsparams)returns(ModuleInfoinfo)authenticationoptional;

/*
*Get JSON schema for a type.
*/
funcdefget_jsonschema(type_stringtype)returns(jsonschemaschema)authenticationoptional;

/*
*Translation from types qualified with MD5 to their semantic versions
*/
funcdeftranslate_from_MD5_types(list<type_string>md5_types)returns(mapping<type_string,list<type_string>>sem_types)authenticationnone;

/*
*Translation from types qualified with semantic versions to their MD5'ed versions
*/
funcdeftranslate_to_MD5_types(list<type_string>sem_types)returns(mapping<type_string,type_string>md5_types)authenticationoptional;

/*
*Information about a type
*
*type_string type_def - resolved type definition id.
*string description - the description of the type from spec file.
*string spec_def - reconstruction of type definition from spec file.
*jsonschema json_schema - JSON schema of this type.
*string parsing_structure - json document describing parsing structure of type
*in spec file including involved sub-types.
*list<spec_version> module_vers - versions of spec-files containing
*given type version.
*list<spec_version> released_module_vers - versions of released spec-files
*containing given type version.
*list<type_string> type_vers - all versions of type with given type name.
*list<type_string> released_type_vers - all released versions of type with
*given type name.
*list<func_string> using_func_defs - list of functions (with versions)
*referring to this type version.
*list<type_string> using_type_defs - list of types (with versions)
*referring to this type version.
*list<type_string> used_type_defs - list of types (with versions)
*referred from this type version.
*/
typedefstructure{
type_stringtype_def;
stringdescription;
stringspec_def;
jsonschemajson_schema;
stringparsing_structure;
list<spec_version>module_vers;
list<spec_version>released_module_vers;
list<type_string>type_vers;
list<type_string>released_type_vers;
list<func_string>using_func_defs;
list<type_string>using_type_defs;
list<type_string>used_type_defs;
}
TypeInfo;

funcdefget_type_info(type_stringtype)returns(TypeInfoinfo)authenticationoptional;

funcdefget_all_type_info(modulenamemod)returns(list<TypeInfo>)authenticationoptional;

/*
*DEPRECATED
*@deprecated
*/
typedefstructure{
func_stringfunc_def;
stringdescription;
stringspec_def;
stringparsing_structure;
list<spec_version>module_vers;
list<spec_version>released_module_vers;
list<func_string>func_vers;
list<func_string>released_func_vers;
list<type_string>used_type_defs;
}
FuncInfo;

/*
*@deprecated
*/
funcdefget_func_info(func_stringfunc)returns(FuncInfoinfo)authenticationoptional;

/*
*@deprecated
*/
funcdefget_all_func_info(modulenamemod)returns(list<FuncInfo>info)authenticationoptional;

/*
*Parameters for the grant_module_ownership function.
*
*Required arguments:
*modulename mod - the module to modify.
*username new_owner - the user to add to the module's list of
*owners.
*
*Optional arguments:
*boolean with_grant_option - true to allow the user to add owners
*to the module.
*/
typedefstructure{
modulenamemod;
usernamenew_owner;
booleanwith_grant_option;
}
GrantModuleOwnershipParams;

/*
*Grant ownership of a module. You must have grant ability on the
*module.
*/
funcdefgrant_module_ownership(GrantModuleOwnershipParamsparams)returns()authenticationrequired;

/*
*Parameters for the remove_module_ownership function.
*
*Required arguments:
*modulename mod - the module to modify.
*username old_owner - the user to remove from the module's list of
*owners.
*/
typedefstructure{
modulenamemod;
usernameold_owner;
}
RemoveModuleOwnershipParams;

/*
*Remove ownership from a current owner. You must have the grant ability
*on the module.
*/
funcdefremove_module_ownership(RemoveModuleOwnershipParamsparams)returns()authenticationrequired;

/*
*Parameters for list_all_types function.
*
*Optional arguments:
*boolean with_empty_modules - include empty module names, optional flag,
*default value is false.
*/
typedefstructure{
booleanwith_empty_modules;
}
ListAllTypesParams;

/*
*List all released types with released version from all modules. Return
*mapping from module name to mapping from type name to released type
*version.
*/
funcdeflist_all_types(ListAllTypesParamsparams)returns(mapping<modulename,mapping<typename,typever>>)authenticationoptional;

/*
*The results of the get_admin_role call.
*
*adminrole - the users's administration role, one of `none`, `read`, or `full`.
*/
typedefstructure{
stringadminrole;
}
GetAdminRoleResults;

/*
*Get the administrative role for the current user.
*/
funcdefget_admin_role()returns(GetAdminRoleResultsresults)authenticationrequired;

/*
*An object metadata update specification.
*
*Required arguments:
*ObjectIdentity oi - the object to be altered
*
*One or both of the following arguments are required:
*usermeta new - metadata to assign to the workspace. Duplicate keys will
*be overwritten.
*list<string> remove - these keys will be removed from the workspace
*metadata key/value pairs.
*/
typedefstructure{
ObjectIdentityoi;
usermetanew;
list<string>remove;
}
ObjectMetadataUpdate;

/*
*Input parameters for the alter_admin_object_metadata method.
*
*updates - the metadata updates to apply to the objects. If the same object is specified
*twice in the list, the update order is unspecified. At most 1000 updates are allowed
*in one call.
*/
typedefstructure{
list<ObjectMetadataUpdate>updates;
}
AlterAdminObjectMetadataParams;

/*
*Update admin metadata for an object. The user must have full workspace service
*administration privileges.
*/
funcdefalter_admin_object_metadata(AlterAdminObjectMetadataParamsparams)returns()authenticationrequired;

/*
*The administration interface.
*/
funcdefadminister(UnspecifiedObjectcommand)returns(UnspecifiedObjectresponse)authenticationrequired;
};

Function Index

administer
alter_admin_object_metadata
alter_workspace_metadata
clone_workspace
copy_object
create_workspace
delete_objects
delete_workspace
get_admin_role
get_all_func_info
get_all_type_info
get_func_info
get_jsonschema
get_module_info
get_names_by_prefix
get_object
get_object_history
get_object_info
get_object_info3
get_object_info_new
get_object_provenance
get_object_subset
get_objectmeta
get_objects
get_objects2
get_permissions
get_permissions_mass
get_referenced_objects
get_type_info
get_workspace_description
get_workspace_info
get_workspacemeta
grant_module_ownership
hide_objects
list_all_types
list_module_versions
list_modules
list_objects
list_referencing_object_counts
list_referencing_objects
list_workspace_ids
list_workspace_info
list_workspace_objects
list_workspaces
lock_workspace
register_typespec
register_typespec_copy
release_module
remove_module_ownership
rename_object
rename_workspace
request_module_ownership
revert_object
save_object
save_objects
set_global_permission
set_permissions
set_workspace_description
translate_from_MD5_types
translate_to_MD5_types
undelete_objects
unhide_objects
ver

Type Index

AlterAdminObjectMetadataParams
AlterWorkspaceMetadataParams
boolean
CloneWorkspaceParams
CopyObjectParams
CreateWorkspaceParams
epoch
ExternalDataUnit
extracted_id
func_string
FuncInfo
get_object_output
get_object_params
get_objectmeta_params
get_workspacemeta_params
GetAdminRoleResults
GetModuleInfoParams
GetNamesByPrefixParams
GetNamesByPrefixResults
GetObjectInfo3Params
GetObjectInfo3Results
GetObjectInfoNewParams
GetObjects2Params
GetObjects2Results
GetPermissionsMassParams
GrantModuleOwnershipParams
id_type
jsonschema
list_workspace_objects_params
list_workspaces_params
ListAllTypesParams
ListModulesParams
ListModuleVersionsParams
ListObjectsParams
ListWorkspaceIDsParams
ListWorkspaceIDsResults
ListWorkspaceInfoParams
lock_status
ModuleInfo
modulename
ModuleVersions
obj_id
obj_name
obj_ref
obj_ver
object_info
object_metadata
object_path
ObjectData
ObjectIdentity
ObjectInfo
ObjectMetadataUpdate
ObjectProvenanceInfo
ObjectSaveData
ObjectSpecification
permission
ProvenanceAction
ref_chain
ref_string
RegisterTypespecCopyParams
RegisterTypespecParams
RemoveModuleOwnershipParams
RenameObjectParams
RenameWorkspaceParams
save_object_params
SaveObjectsParams
SetGlobalPermissionsParams
SetPermissionsParams
SetWorkspaceDescriptionParams
spec_version
SubAction
SubObjectIdentity
timestamp
type_string
TypeInfo
typename
typespec
typever
usermeta
username
workspace_info
workspace_metadata
WorkspaceIdentity
WorkspacePermissions
ws_id
ws_name
\ No newline at end of file diff --git a/lib/Bio/KBase/workspace/Client.pm b/lib/Bio/KBase/workspace/Client.pm index 4bb973e9..133e004a 100644 --- a/lib/Bio/KBase/workspace/Client.pm +++ b/lib/Bio/KBase/workspace/Client.pm @@ -2304,6 +2304,7 @@ obj_ref is a string ObjectData is a reference to a hash where the following keys are defined: data has a value which is an UnspecifiedObject, which can hold any non-null object info has a value which is a Workspace.object_info + infostruct has a value which is a Workspace.ObjectInfo path has a value which is a reference to a list where each element is a Workspace.obj_ref provenance has a value which is a reference to a list where each element is a Workspace.ProvenanceAction creator has a value which is a Workspace.username @@ -2332,6 +2333,20 @@ type_string is a string timestamp is a string username is a string usermeta is a reference to a hash where the key is a string and the value is a string +ObjectInfo is a reference to a hash where the following keys are defined: + objid has a value which is a Workspace.obj_id + name has a value which is a Workspace.obj_name + type has a value which is a Workspace.type_string + save_date has a value which is a Workspace.timestamp + version has a value which is an int + saved_by has a value which is a Workspace.username + wsid has a value which is a Workspace.ws_id + workspace has a value which is a Workspace.ws_name + chsum has a value which is a string + size has a value which is an int + meta has a value which is a Workspace.usermeta + adminmeta has a value which is a Workspace.usermeta + path has a value which is a reference to a list where each element is a Workspace.obj_ref ProvenanceAction is a reference to a hash where the following keys are defined: time has a value which is a Workspace.timestamp epoch has a value which is a Workspace.epoch @@ -2396,6 +2411,7 @@ obj_ref is a string ObjectData is a reference to a hash where the following keys are defined: data has a value which is an UnspecifiedObject, which can hold any non-null object info has a value which is a Workspace.object_info + infostruct has a value which is a Workspace.ObjectInfo path has a value which is a reference to a list where each element is a Workspace.obj_ref provenance has a value which is a reference to a list where each element is a Workspace.ProvenanceAction creator has a value which is a Workspace.username @@ -2424,6 +2440,20 @@ type_string is a string timestamp is a string username is a string usermeta is a reference to a hash where the key is a string and the value is a string +ObjectInfo is a reference to a hash where the following keys are defined: + objid has a value which is a Workspace.obj_id + name has a value which is a Workspace.obj_name + type has a value which is a Workspace.type_string + save_date has a value which is a Workspace.timestamp + version has a value which is an int + saved_by has a value which is a Workspace.username + wsid has a value which is a Workspace.ws_id + workspace has a value which is a Workspace.ws_name + chsum has a value which is a string + size has a value which is an int + meta has a value which is a Workspace.usermeta + adminmeta has a value which is a Workspace.usermeta + path has a value which is a reference to a list where each element is a Workspace.obj_ref ProvenanceAction is a reference to a hash where the following keys are defined: time has a value which is a Workspace.timestamp epoch has a value which is a Workspace.epoch @@ -2541,6 +2571,7 @@ $results is a Workspace.GetObjects2Results GetObjects2Params is a reference to a hash where the following keys are defined: objects has a value which is a reference to a list where each element is a Workspace.ObjectSpecification ignoreErrors has a value which is a Workspace.boolean + infostruct has a value which is a Workspace.boolean no_data has a value which is a Workspace.boolean skip_external_system_updates has a value which is a Workspace.boolean batch_external_system_updates has a value which is a Workspace.boolean @@ -2581,6 +2612,7 @@ GetObjects2Results is a reference to a hash where the following keys are defined ObjectData is a reference to a hash where the following keys are defined: data has a value which is an UnspecifiedObject, which can hold any non-null object info has a value which is a Workspace.object_info + infostruct has a value which is a Workspace.ObjectInfo path has a value which is a reference to a list where each element is a Workspace.obj_ref provenance has a value which is a reference to a list where each element is a Workspace.ProvenanceAction creator has a value which is a Workspace.username @@ -2609,6 +2641,20 @@ type_string is a string timestamp is a string username is a string usermeta is a reference to a hash where the key is a string and the value is a string +ObjectInfo is a reference to a hash where the following keys are defined: + objid has a value which is a Workspace.obj_id + name has a value which is a Workspace.obj_name + type has a value which is a Workspace.type_string + save_date has a value which is a Workspace.timestamp + version has a value which is an int + saved_by has a value which is a Workspace.username + wsid has a value which is a Workspace.ws_id + workspace has a value which is a Workspace.ws_name + chsum has a value which is a string + size has a value which is an int + meta has a value which is a Workspace.usermeta + adminmeta has a value which is a Workspace.usermeta + path has a value which is a reference to a list where each element is a Workspace.obj_ref ProvenanceAction is a reference to a hash where the following keys are defined: time has a value which is a Workspace.timestamp epoch has a value which is a Workspace.epoch @@ -2658,6 +2704,7 @@ $results is a Workspace.GetObjects2Results GetObjects2Params is a reference to a hash where the following keys are defined: objects has a value which is a reference to a list where each element is a Workspace.ObjectSpecification ignoreErrors has a value which is a Workspace.boolean + infostruct has a value which is a Workspace.boolean no_data has a value which is a Workspace.boolean skip_external_system_updates has a value which is a Workspace.boolean batch_external_system_updates has a value which is a Workspace.boolean @@ -2698,6 +2745,7 @@ GetObjects2Results is a reference to a hash where the following keys are defined ObjectData is a reference to a hash where the following keys are defined: data has a value which is an UnspecifiedObject, which can hold any non-null object info has a value which is a Workspace.object_info + infostruct has a value which is a Workspace.ObjectInfo path has a value which is a reference to a list where each element is a Workspace.obj_ref provenance has a value which is a reference to a list where each element is a Workspace.ProvenanceAction creator has a value which is a Workspace.username @@ -2726,6 +2774,20 @@ type_string is a string timestamp is a string username is a string usermeta is a reference to a hash where the key is a string and the value is a string +ObjectInfo is a reference to a hash where the following keys are defined: + objid has a value which is a Workspace.obj_id + name has a value which is a Workspace.obj_name + type has a value which is a Workspace.type_string + save_date has a value which is a Workspace.timestamp + version has a value which is an int + saved_by has a value which is a Workspace.username + wsid has a value which is a Workspace.ws_id + workspace has a value which is a Workspace.ws_name + chsum has a value which is a string + size has a value which is an int + meta has a value which is a Workspace.usermeta + adminmeta has a value which is a Workspace.usermeta + path has a value which is a reference to a list where each element is a Workspace.obj_ref ProvenanceAction is a reference to a hash where the following keys are defined: time has a value which is a Workspace.timestamp epoch has a value which is a Workspace.epoch @@ -2857,6 +2919,7 @@ boolean is an int ObjectData is a reference to a hash where the following keys are defined: data has a value which is an UnspecifiedObject, which can hold any non-null object info has a value which is a Workspace.object_info + infostruct has a value which is a Workspace.ObjectInfo path has a value which is a reference to a list where each element is a Workspace.obj_ref provenance has a value which is a reference to a list where each element is a Workspace.ProvenanceAction creator has a value which is a Workspace.username @@ -2885,6 +2948,20 @@ type_string is a string timestamp is a string username is a string usermeta is a reference to a hash where the key is a string and the value is a string +ObjectInfo is a reference to a hash where the following keys are defined: + objid has a value which is a Workspace.obj_id + name has a value which is a Workspace.obj_name + type has a value which is a Workspace.type_string + save_date has a value which is a Workspace.timestamp + version has a value which is an int + saved_by has a value which is a Workspace.username + wsid has a value which is a Workspace.ws_id + workspace has a value which is a Workspace.ws_name + chsum has a value which is a string + size has a value which is an int + meta has a value which is a Workspace.usermeta + adminmeta has a value which is a Workspace.usermeta + path has a value which is a reference to a list where each element is a Workspace.obj_ref ProvenanceAction is a reference to a hash where the following keys are defined: time has a value which is a Workspace.timestamp epoch has a value which is a Workspace.epoch @@ -2953,6 +3030,7 @@ boolean is an int ObjectData is a reference to a hash where the following keys are defined: data has a value which is an UnspecifiedObject, which can hold any non-null object info has a value which is a Workspace.object_info + infostruct has a value which is a Workspace.ObjectInfo path has a value which is a reference to a list where each element is a Workspace.obj_ref provenance has a value which is a reference to a list where each element is a Workspace.ProvenanceAction creator has a value which is a Workspace.username @@ -2981,6 +3059,20 @@ type_string is a string timestamp is a string username is a string usermeta is a reference to a hash where the key is a string and the value is a string +ObjectInfo is a reference to a hash where the following keys are defined: + objid has a value which is a Workspace.obj_id + name has a value which is a Workspace.obj_name + type has a value which is a Workspace.type_string + save_date has a value which is a Workspace.timestamp + version has a value which is an int + saved_by has a value which is a Workspace.username + wsid has a value which is a Workspace.ws_id + workspace has a value which is a Workspace.ws_name + chsum has a value which is a string + size has a value which is an int + meta has a value which is a Workspace.usermeta + adminmeta has a value which is a Workspace.usermeta + path has a value which is a reference to a list where each element is a Workspace.obj_ref ProvenanceAction is a reference to a hash where the following keys are defined: time has a value which is a Workspace.timestamp epoch has a value which is a Workspace.epoch @@ -3521,6 +3613,7 @@ obj_ref is a string ObjectData is a reference to a hash where the following keys are defined: data has a value which is an UnspecifiedObject, which can hold any non-null object info has a value which is a Workspace.object_info + infostruct has a value which is a Workspace.ObjectInfo path has a value which is a reference to a list where each element is a Workspace.obj_ref provenance has a value which is a reference to a list where each element is a Workspace.ProvenanceAction creator has a value which is a Workspace.username @@ -3549,6 +3642,20 @@ type_string is a string timestamp is a string username is a string usermeta is a reference to a hash where the key is a string and the value is a string +ObjectInfo is a reference to a hash where the following keys are defined: + objid has a value which is a Workspace.obj_id + name has a value which is a Workspace.obj_name + type has a value which is a Workspace.type_string + save_date has a value which is a Workspace.timestamp + version has a value which is an int + saved_by has a value which is a Workspace.username + wsid has a value which is a Workspace.ws_id + workspace has a value which is a Workspace.ws_name + chsum has a value which is a string + size has a value which is an int + meta has a value which is a Workspace.usermeta + adminmeta has a value which is a Workspace.usermeta + path has a value which is a reference to a list where each element is a Workspace.obj_ref ProvenanceAction is a reference to a hash where the following keys are defined: time has a value which is a Workspace.timestamp epoch has a value which is a Workspace.epoch @@ -3614,6 +3721,7 @@ obj_ref is a string ObjectData is a reference to a hash where the following keys are defined: data has a value which is an UnspecifiedObject, which can hold any non-null object info has a value which is a Workspace.object_info + infostruct has a value which is a Workspace.ObjectInfo path has a value which is a reference to a list where each element is a Workspace.obj_ref provenance has a value which is a reference to a list where each element is a Workspace.ProvenanceAction creator has a value which is a Workspace.username @@ -3642,6 +3750,20 @@ type_string is a string timestamp is a string username is a string usermeta is a reference to a hash where the key is a string and the value is a string +ObjectInfo is a reference to a hash where the following keys are defined: + objid has a value which is a Workspace.obj_id + name has a value which is a Workspace.obj_name + type has a value which is a Workspace.type_string + save_date has a value which is a Workspace.timestamp + version has a value which is an int + saved_by has a value which is a Workspace.username + wsid has a value which is a Workspace.ws_id + workspace has a value which is a Workspace.ws_name + chsum has a value which is a string + size has a value which is an int + meta has a value which is a Workspace.usermeta + adminmeta has a value which is a Workspace.usermeta + path has a value which is a reference to a list where each element is a Workspace.obj_ref ProvenanceAction is a reference to a hash where the following keys are defined: time has a value which is a Workspace.timestamp epoch has a value which is a Workspace.epoch @@ -4922,6 +5044,7 @@ $params is a Workspace.GetObjectInfo3Params $results is a Workspace.GetObjectInfo3Results GetObjectInfo3Params is a reference to a hash where the following keys are defined: objects has a value which is a reference to a list where each element is a Workspace.ObjectSpecification + infostruct has a value which is a Workspace.boolean includeMetadata has a value which is a Workspace.boolean ignoreErrors has a value which is a Workspace.boolean ObjectSpecification is a reference to a hash where the following keys are defined: @@ -4959,6 +5082,7 @@ object_path is a string GetObjectInfo3Results is a reference to a hash where the following keys are defined: infos has a value which is a reference to a list where each element is a Workspace.object_info paths has a value which is a reference to a list where each element is a reference to a list where each element is a Workspace.obj_ref + infostructs has a value which is a reference to a list where each element is a Workspace.ObjectInfo object_info is a reference to a list containing 11 items: 0: (objid) a Workspace.obj_id 1: (name) a Workspace.obj_name @@ -4975,6 +5099,20 @@ type_string is a string timestamp is a string username is a string usermeta is a reference to a hash where the key is a string and the value is a string +ObjectInfo is a reference to a hash where the following keys are defined: + objid has a value which is a Workspace.obj_id + name has a value which is a Workspace.obj_name + type has a value which is a Workspace.type_string + save_date has a value which is a Workspace.timestamp + version has a value which is an int + saved_by has a value which is a Workspace.username + wsid has a value which is a Workspace.ws_id + workspace has a value which is a Workspace.ws_name + chsum has a value which is a string + size has a value which is an int + meta has a value which is a Workspace.usermeta + adminmeta has a value which is a Workspace.usermeta + path has a value which is a reference to a list where each element is a Workspace.obj_ref @@ -4986,6 +5124,7 @@ $params is a Workspace.GetObjectInfo3Params $results is a Workspace.GetObjectInfo3Results GetObjectInfo3Params is a reference to a hash where the following keys are defined: objects has a value which is a reference to a list where each element is a Workspace.ObjectSpecification + infostruct has a value which is a Workspace.boolean includeMetadata has a value which is a Workspace.boolean ignoreErrors has a value which is a Workspace.boolean ObjectSpecification is a reference to a hash where the following keys are defined: @@ -5023,6 +5162,7 @@ object_path is a string GetObjectInfo3Results is a reference to a hash where the following keys are defined: infos has a value which is a reference to a list where each element is a Workspace.object_info paths has a value which is a reference to a list where each element is a reference to a list where each element is a Workspace.obj_ref + infostructs has a value which is a reference to a list where each element is a Workspace.ObjectInfo object_info is a reference to a list containing 11 items: 0: (objid) a Workspace.obj_id 1: (name) a Workspace.obj_name @@ -5039,6 +5179,20 @@ type_string is a string timestamp is a string username is a string usermeta is a reference to a hash where the key is a string and the value is a string +ObjectInfo is a reference to a hash where the following keys are defined: + objid has a value which is a Workspace.obj_id + name has a value which is a Workspace.obj_name + type has a value which is a Workspace.type_string + save_date has a value which is a Workspace.timestamp + version has a value which is an int + saved_by has a value which is a Workspace.username + wsid has a value which is a Workspace.ws_id + workspace has a value which is a Workspace.ws_name + chsum has a value which is a string + size has a value which is an int + meta has a value which is a Workspace.usermeta + adminmeta has a value which is a Workspace.usermeta + path has a value which is a reference to a list where each element is a Workspace.obj_ref =end text @@ -8065,6 +8219,127 @@ Get the administrative role for the current user. +=head2 alter_admin_object_metadata + + $obj->alter_admin_object_metadata($params) + +=over 4 + +=item Parameter and return types + +=begin html + +
+$params is a Workspace.AlterAdminObjectMetadataParams
+AlterAdminObjectMetadataParams is a reference to a hash where the following keys are defined:
+	updates has a value which is a reference to a list where each element is a Workspace.ObjectMetadataUpdate
+ObjectMetadataUpdate is a reference to a hash where the following keys are defined:
+	oi has a value which is a Workspace.ObjectIdentity
+	new has a value which is a Workspace.usermeta
+	remove has a value which is a reference to a list where each element is a string
+ObjectIdentity is a reference to a hash where the following keys are defined:
+	workspace has a value which is a Workspace.ws_name
+	wsid has a value which is a Workspace.ws_id
+	name has a value which is a Workspace.obj_name
+	objid has a value which is a Workspace.obj_id
+	ver has a value which is a Workspace.obj_ver
+	ref has a value which is a Workspace.obj_ref
+ws_name is a string
+ws_id is an int
+obj_name is a string
+obj_id is an int
+obj_ver is an int
+obj_ref is a string
+usermeta is a reference to a hash where the key is a string and the value is a string
+
+
+ +=end html + +=begin text + +$params is a Workspace.AlterAdminObjectMetadataParams +AlterAdminObjectMetadataParams is a reference to a hash where the following keys are defined: + updates has a value which is a reference to a list where each element is a Workspace.ObjectMetadataUpdate +ObjectMetadataUpdate is a reference to a hash where the following keys are defined: + oi has a value which is a Workspace.ObjectIdentity + new has a value which is a Workspace.usermeta + remove has a value which is a reference to a list where each element is a string +ObjectIdentity is a reference to a hash where the following keys are defined: + workspace has a value which is a Workspace.ws_name + wsid has a value which is a Workspace.ws_id + name has a value which is a Workspace.obj_name + objid has a value which is a Workspace.obj_id + ver has a value which is a Workspace.obj_ver + ref has a value which is a Workspace.obj_ref +ws_name is a string +ws_id is an int +obj_name is a string +obj_id is an int +obj_ver is an int +obj_ref is a string +usermeta is a reference to a hash where the key is a string and the value is a string + + +=end text + +=item Description + +Update admin metadata for an object. The user must have full workspace service +administration privileges. + +=back + +=cut + + sub alter_admin_object_metadata +{ + my($self, @args) = @_; + +# Authentication: required + + if ((my $n = @args) != 1) + { + Bio::KBase::Exceptions::ArgumentValidationError->throw(error => + "Invalid argument count for function alter_admin_object_metadata (received $n, expecting 1)"); + } + { + my($params) = @args; + + my @_bad_arguments; + (ref($params) eq 'HASH') or push(@_bad_arguments, "Invalid type for argument 1 \"params\" (value was \"$params\")"); + if (@_bad_arguments) { + my $msg = "Invalid arguments passed to alter_admin_object_metadata:\n" . join("", map { "\t$_\n" } @_bad_arguments); + Bio::KBase::Exceptions::ArgumentValidationError->throw(error => $msg, + method_name => 'alter_admin_object_metadata'); + } + } + + my $url = $self->{url}; + my $result = $self->{client}->call($url, $self->{headers}, { + method => "Workspace.alter_admin_object_metadata", + params => \@args, + }); + if ($result) { + if ($result->is_error) { + Bio::KBase::Exceptions::JSONRPC->throw(error => $result->error_message, + code => $result->content->{error}->{code}, + method_name => 'alter_admin_object_metadata', + data => $result->content->{error}->{error} # JSON::RPC::ReturnObject only supports JSONRPC 1.1 or 1.O + ); + } else { + return; + } + } else { + Bio::KBase::Exceptions::HTTP->throw(error => "Error invoking method alter_admin_object_metadata", + status_line => $self->{client}->status_line, + method_name => 'alter_admin_object_metadata', + ); + } +} + + + =head2 administer $response = $obj->administer($command) @@ -9482,6 +9757,82 @@ a reference to a list containing 11 items: +=head2 ObjectInfo + +=over 4 + + + +=item Description + +Information about an object as a struct rather than a tuple. +This allows adding fields in a backward compatible way in the future. +Includes more fields than object_info. + +obj_id objid - the numerical id of the object. +obj_name name - the name of the object. +type_string type - the type of the object. +timestamp save_date - the save date of the object. +obj_ver ver - the version of the object. +username saved_by - the user that saved or copied the object. +ws_id wsid - the workspace containing the object. +ws_name workspace - the workspace containing the object. +string chsum - the md5 checksum of the object. +int size - the size of the object in bytes. +usermeta meta - arbitrary user-supplied metadata about the object. +usermeta adminmeta - service administrator metadata set on an object. Unlike most + other object fields, admin metadata is mutable. +list path - the path to the object. + + +=item Definition + +=begin html + +
+a reference to a hash where the following keys are defined:
+objid has a value which is a Workspace.obj_id
+name has a value which is a Workspace.obj_name
+type has a value which is a Workspace.type_string
+save_date has a value which is a Workspace.timestamp
+version has a value which is an int
+saved_by has a value which is a Workspace.username
+wsid has a value which is a Workspace.ws_id
+workspace has a value which is a Workspace.ws_name
+chsum has a value which is a string
+size has a value which is an int
+meta has a value which is a Workspace.usermeta
+adminmeta has a value which is a Workspace.usermeta
+path has a value which is a reference to a list where each element is a Workspace.obj_ref
+
+
+ +=end html + +=begin text + +a reference to a hash where the following keys are defined: +objid has a value which is a Workspace.obj_id +name has a value which is a Workspace.obj_name +type has a value which is a Workspace.type_string +save_date has a value which is a Workspace.timestamp +version has a value which is an int +saved_by has a value which is a Workspace.username +wsid has a value which is a Workspace.ws_id +workspace has a value which is a Workspace.ws_name +chsum has a value which is a string +size has a value which is an int +meta has a value which is a Workspace.usermeta +adminmeta has a value which is a Workspace.usermeta +path has a value which is a reference to a list where each element is a Workspace.obj_ref + + +=end text + +=back + + + =head2 ExternalDataUnit =over 4 @@ -10560,6 +10911,7 @@ The data and supplemental info for an object. UnspecifiedObject data - the object's data or subset data. object_info info - information about the object. + ObjectInfo infostruct - information about the object as a structure rather than a tuple. list path - the path to the object through the object reference graph. All the references in the path are absolute. list provenance - the object's provenance. @@ -10595,6 +10947,7 @@ The data and supplemental info for an object. a reference to a hash where the following keys are defined: data has a value which is an UnspecifiedObject, which can hold any non-null object info has a value which is a Workspace.object_info +infostruct has a value which is a Workspace.ObjectInfo path has a value which is a reference to a list where each element is a Workspace.obj_ref provenance has a value which is a reference to a list where each element is a Workspace.ProvenanceAction creator has a value which is a Workspace.username @@ -10617,6 +10970,7 @@ handle_stacktrace has a value which is a string a reference to a hash where the following keys are defined: data has a value which is an UnspecifiedObject, which can hold any non-null object info has a value which is a Workspace.object_info +infostruct has a value which is a Workspace.ObjectInfo path has a value which is a reference to a list where each element is a Workspace.obj_ref provenance has a value which is a reference to a list where each element is a Workspace.ProvenanceAction creator has a value which is a Workspace.username @@ -10656,6 +11010,9 @@ Input parameters for the get_objects2 function. boolean ignoreErrors - Don't throw an exception if an object cannot be accessed; return null for that object's information instead. Default false. + boolean infostruct - return the object information as a structure rather than a tuple. + Default false. If true, ObjectData.path will be null as it is provided in + the ObjectInfo data. boolean no_data - return the provenance, references, and object_info for this object without the object data. Default false. boolean skip_external_system_updates - if the objects contain any external IDs, don't @@ -10678,6 +11035,7 @@ Input parameters for the get_objects2 function. a reference to a hash where the following keys are defined: objects has a value which is a reference to a list where each element is a Workspace.ObjectSpecification ignoreErrors has a value which is a Workspace.boolean +infostruct has a value which is a Workspace.boolean no_data has a value which is a Workspace.boolean skip_external_system_updates has a value which is a Workspace.boolean batch_external_system_updates has a value which is a Workspace.boolean @@ -10691,6 +11049,7 @@ batch_external_system_updates has a value which is a Workspace.boolean a reference to a hash where the following keys are defined: objects has a value which is a reference to a list where each element is a Workspace.ObjectSpecification ignoreErrors has a value which is a Workspace.boolean +infostruct has a value which is a Workspace.boolean no_data has a value which is a Workspace.boolean skip_external_system_updates has a value which is a Workspace.boolean batch_external_system_updates has a value which is a Workspace.boolean @@ -11267,7 +11626,9 @@ Input parameters for the "get_object_info3" function. ignored. Optional arguments: - boolean includeMetadata - include the object metadata in the returned + boolean infostruct - return information about the object as a structure rather than a tuple. + Default false. If true, infos and paths will be null. + boolean includeMetadata - include the user and admin metadata in the returned information. Default false. boolean ignoreErrors - Don't throw an exception if an object cannot be accessed; return null for that object's information and path instead. @@ -11281,6 +11642,7 @@ Input parameters for the "get_object_info3" function.
 a reference to a hash where the following keys are defined:
 objects has a value which is a reference to a list where each element is a Workspace.ObjectSpecification
+infostruct has a value which is a Workspace.boolean
 includeMetadata has a value which is a Workspace.boolean
 ignoreErrors has a value which is a Workspace.boolean
 
@@ -11292,6 +11654,7 @@ ignoreErrors has a value which is a Workspace.boolean
 
 a reference to a hash where the following keys are defined:
 objects has a value which is a reference to a list where each element is a Workspace.ObjectSpecification
+infostruct has a value which is a Workspace.boolean
 includeMetadata has a value which is a Workspace.boolean
 ignoreErrors has a value which is a Workspace.boolean
 
@@ -11315,6 +11678,7 @@ Output from the get_object_info3 function.
                 list infos - the object_info data for each object.
                 list paths - the path to the object through the object reference graph for
                         each object. All the references in the path are absolute.
+                list infostructs - the ObjectInfo data for each object.
 
 
 =item Definition
@@ -11325,6 +11689,7 @@ Output from the get_object_info3 function.
 a reference to a hash where the following keys are defined:
 infos has a value which is a reference to a list where each element is a Workspace.object_info
 paths has a value which is a reference to a list where each element is a reference to a list where each element is a Workspace.obj_ref
+infostructs has a value which is a reference to a list where each element is a Workspace.ObjectInfo
 
 
@@ -11335,6 +11700,7 @@ paths has a value which is a reference to a list where each element is a referen a reference to a hash where the following keys are defined: infos has a value which is a reference to a list where each element is a Workspace.object_info paths has a value which is a reference to a list where each element is a reference to a list where each element is a Workspace.obj_ref +infostructs has a value which is a reference to a list where each element is a Workspace.ObjectInfo =end text @@ -12451,6 +12817,93 @@ adminrole has a value which is a string +=head2 ObjectMetadataUpdate + +=over 4 + + + +=item Description + +An object metadata update specification. + + Required arguments: + ObjectIdentity oi - the object to be altered + + One or both of the following arguments are required: + usermeta new - metadata to assign to the workspace. Duplicate keys will + be overwritten. + list remove - these keys will be removed from the workspace + metadata key/value pairs. + + +=item Definition + +=begin html + +
+a reference to a hash where the following keys are defined:
+oi has a value which is a Workspace.ObjectIdentity
+new has a value which is a Workspace.usermeta
+remove has a value which is a reference to a list where each element is a string
+
+
+ +=end html + +=begin text + +a reference to a hash where the following keys are defined: +oi has a value which is a Workspace.ObjectIdentity +new has a value which is a Workspace.usermeta +remove has a value which is a reference to a list where each element is a string + + +=end text + +=back + + + +=head2 AlterAdminObjectMetadataParams + +=over 4 + + + +=item Description + +Input parameters for the alter_admin_object_metadata method. + + updates - the metadata updates to apply to the objects. If the same object is specified + twice in the list, the update order is unspecified. At most 1000 updates are allowed + in one call. + + +=item Definition + +=begin html + +
+a reference to a hash where the following keys are defined:
+updates has a value which is a reference to a list where each element is a Workspace.ObjectMetadataUpdate
+
+
+ +=end html + +=begin text + +a reference to a hash where the following keys are defined: +updates has a value which is a reference to a list where each element is a Workspace.ObjectMetadataUpdate + + +=end text + +=back + + + =cut package Bio::KBase::workspace::Client::RpcClient; diff --git a/lib/biokbase/workspace/client.py b/lib/biokbase/workspace/client.py index 6c5c0ab6..c5be1a5f 100644 --- a/lib/biokbase/workspace/client.py +++ b/lib/biokbase/workspace/client.py @@ -1275,55 +1275,56 @@ def get_objects(self, object_ids, context=None): :returns: instance of list of type "ObjectData" (The data and supplemental info for an object. UnspecifiedObject data - the object's data or subset data. object_info info - information about - the object. list path - the path to the object through - the object reference graph. All the references in the path are - absolute. list provenance - the object's - provenance. username creator - the user that first saved the - object to the workspace. ws_id orig_wsid - the id of the workspace - in which this object was originally saved. Missing for objects - saved prior to version 0.4.1. timestamp created - the date the - object was first saved to the workspace. epoch epoch - the date - the object was first saved to the workspace. list refs - - the references contained within the object. obj_ref copied - the - reference of the source object if this object is a copy and the - copy source exists and is accessible. null otherwise. boolean - copy_source_inaccessible - true if the object was copied from - another object, but that object is no longer accessible to the - user. False otherwise. mapping> - extracted_ids - any ids extracted from the object. string - handle_error - if an error occurs while setting ACLs on embedded - external IDs, it will be reported here. If not for historical - reasons the parameter would be called "external_id_error". string - handle_stacktrace - the stacktrace for handle_error. As above, the - parameter should be called "external_id_stacktrace".) -> - structure: parameter "data" of unspecified object, parameter - "info" of type "object_info" (Information about an object, - including user provided metadata. obj_id objid - the numerical id - of the object. obj_name name - the name of the object. type_string - type - the type of the object. timestamp save_date - the save date - of the object. obj_ver ver - the version of the object. username - saved_by - the user that saved or copied the object. ws_id wsid - - the workspace containing the object. ws_name workspace - the - workspace containing the object. string chsum - the md5 checksum - of the object. int size - the size of the object in bytes. - usermeta meta - arbitrary user-supplied metadata about the - object.) -> tuple of size 11: parameter "objid" of type "obj_id" - (The unique, permanent numerical ID of an object.), parameter - "name" of type "obj_name" (A string used as a name for an object. - Any string consisting of alphanumeric characters and the - characters |._- that is not an integer is acceptable.), parameter - "type" of type "type_string" (A type string. Specifies the type - and its version in a single string in the format - [module].[typename]-[major].[minor]: module - a string. The module - name of the typespec containing the type. typename - a string. The - name of the type as assigned by the typedef statement. major - an - integer. The major version of the type. A change in the major - version implies the type has changed in a non-backwards compatible - way. minor - an integer. The minor version of the type. A change - in the minor version implies that the type has changed in a way - that is backwards compatible with previous type definitions. In - many cases, the major and minor versions are optional, and if not - provided the most recent version will be used. Example: + the object. ObjectInfo infostruct - information about the object + as a structure rather than a tuple. list path - the path + to the object through the object reference graph. All the + references in the path are absolute. list + provenance - the object's provenance. username creator - the user + that first saved the object to the workspace. ws_id orig_wsid - + the id of the workspace in which this object was originally saved. + Missing for objects saved prior to version 0.4.1. timestamp + created - the date the object was first saved to the workspace. + epoch epoch - the date the object was first saved to the + workspace. list refs - the references contained within + the object. obj_ref copied - the reference of the source object if + this object is a copy and the copy source exists and is + accessible. null otherwise. boolean copy_source_inaccessible - + true if the object was copied from another object, but that object + is no longer accessible to the user. False otherwise. + mapping> extracted_ids - any ids + extracted from the object. string handle_error - if an error + occurs while setting ACLs on embedded external IDs, it will be + reported here. If not for historical reasons the parameter would + be called "external_id_error". string handle_stacktrace - the + stacktrace for handle_error. As above, the parameter should be + called "external_id_stacktrace".) -> structure: parameter "data" + of unspecified object, parameter "info" of type "object_info" + (Information about an object, including user provided metadata. + obj_id objid - the numerical id of the object. obj_name name - the + name of the object. type_string type - the type of the object. + timestamp save_date - the save date of the object. obj_ver ver - + the version of the object. username saved_by - the user that saved + or copied the object. ws_id wsid - the workspace containing the + object. ws_name workspace - the workspace containing the object. + string chsum - the md5 checksum of the object. int size - the size + of the object in bytes. usermeta meta - arbitrary user-supplied + metadata about the object.) -> tuple of size 11: parameter "objid" + of type "obj_id" (The unique, permanent numerical ID of an + object.), parameter "name" of type "obj_name" (A string used as a + name for an object. Any string consisting of alphanumeric + characters and the characters |._- that is not an integer is + acceptable.), parameter "type" of type "type_string" (A type + string. Specifies the type and its version in a single string in + the format [module].[typename]-[major].[minor]: module - a string. + The module name of the typespec containing the type. typename - a + string. The name of the type as assigned by the typedef statement. + major - an integer. The major version of the type. A change in the + major version implies the type has changed in a non-backwards + compatible way. minor - an integer. The minor version of the type. + A change in the minor version implies that the type has changed in + a way that is backwards compatible with previous type definitions. + In many cases, the major and minor versions are optional, and if + not provided the most recent version will be used. Example: MyModule.MyType-3.1), parameter "save_date" of type "timestamp" (A time in the format YYYY-MM-DDThh:mm:ssZ, where Z is either the character Z (representing the UTC timezone) or the difference in @@ -1340,6 +1341,57 @@ def get_objects(self, object_ids, context=None): kbasetest:my_workspace.), parameter "chsum" of String, parameter "size" of Long, parameter "meta" of type "usermeta" (User provided metadata about an object. Arbitrary key-value pairs provided by + the user.) -> mapping from String to String, parameter + "infostruct" of type "ObjectInfo" (Information about an object as + a struct rather than a tuple. This allows adding fields in a + backward compatible way in the future. Includes more fields than + object_info. obj_id objid - the numerical id of the object. + obj_name name - the name of the object. type_string type - the + type of the object. timestamp save_date - the save date of the + object. obj_ver ver - the version of the object. username saved_by + - the user that saved or copied the object. ws_id wsid - the + workspace containing the object. ws_name workspace - the workspace + containing the object. string chsum - the md5 checksum of the + object. int size - the size of the object in bytes. usermeta meta + - arbitrary user-supplied metadata about the object. usermeta + adminmeta - service administrator metadata set on an object. + Unlike most other object fields, admin metadata is mutable. + list path - the path to the object.) -> structure: + parameter "objid" of type "obj_id" (The unique, permanent + numerical ID of an object.), parameter "name" of type "obj_name" + (A string used as a name for an object. Any string consisting of + alphanumeric characters and the characters |._- that is not an + integer is acceptable.), parameter "type" of type "type_string" (A + type string. Specifies the type and its version in a single string + in the format [module].[typename]-[major].[minor]: module - a + string. The module name of the typespec containing the type. + typename - a string. The name of the type as assigned by the + typedef statement. major - an integer. The major version of the + type. A change in the major version implies the type has changed + in a non-backwards compatible way. minor - an integer. The minor + version of the type. A change in the minor version implies that + the type has changed in a way that is backwards compatible with + previous type definitions. In many cases, the major and minor + versions are optional, and if not provided the most recent version + will be used. Example: MyModule.MyType-3.1), parameter "save_date" + of type "timestamp" (A time in the format YYYY-MM-DDThh:mm:ssZ, + where Z is either the character Z (representing the UTC timezone) + or the difference in time to UTC in the format +/-HHMM, eg: + 2012-12-17T23:24:06-0500 (EST time) 2013-04-03T08:56:32+0000 (UTC + time) 2013-04-03T08:56:32Z (UTC time)), parameter "version" of + Long, parameter "saved_by" of type "username" (Login name of a + KBase user account.), parameter "wsid" of type "ws_id" (The + unique, permanent numerical ID of a workspace.), parameter + "workspace" of type "ws_name" (A string used as a name for a + workspace. Any string consisting of alphanumeric characters and + "_", ".", or "-" that is not an integer is acceptable. The name + may optionally be prefixed with the workspace owner's user name + and a colon, e.g. kbasetest:my_workspace.), parameter "chsum" of + String, parameter "size" of Long, parameter "meta" of type + "usermeta" (User provided metadata about an object. Arbitrary + key-value pairs provided by the user.) -> mapping from String to + String, parameter "adminmeta" of type "usermeta" (User provided + metadata about an object. Arbitrary key-value pairs provided by the user.) -> mapping from String to String, parameter "path" of list of type "obj_ref" (A string that uniquely identifies an object in the workspace service. The format is [ws_name or @@ -1350,51 +1402,60 @@ def get_objects(self, object_ids, context=None): the object name Panic in workspace with id 42. Towel/1/6 would identify the 6th version of the object with id 1 in the Towel workspace.If the version number is omitted, the latest version of - the object is assumed.), parameter "provenance" of list of type - "ProvenanceAction" (A provenance action. A provenance action (PA) - is an action taken while transforming one data object to another. - There may be several PAs taken in series. A PA is typically - running a script, running an api command, etc. All of the - following fields are optional, but more information provided - equates to better data provenance. If a provenance action has no - fields defined at all, it is silently dropped from the list. - resolved_ws_objects should never be set by the user; it is set by - the workspace service when returning data. On input, only one of - the time or epoch may be supplied. Both are supplied on output. - The maximum size of the entire provenance object, including all - actions, is 1MB. timestamp time - the time the action was started - epoch epoch - the time the action was started. string caller - the - name or id of the invoker of this provenance action. In most - cases, this will be the same for all PAs. string service - the - name of the service that performed this action. string service_ver - - the version of the service that performed this action. string - method - the method of the service that performed this action. - list method_params - the parameters of the - method that performed this action. If an object in the parameters - is a workspace object, also put the object reference in the - input_ws_object list. string script - the name of the script that - performed this action. string script_ver - the version of the - script that performed this action. string script_command_line - - the command line provided to the script that performed this - action. If workspace objects were provided in the command line, - also put the object reference in the input_ws_object list. - list input_ws_objects - the workspace objects that - were used as input to this action; typically these will also be - present as parts of the method_params or the script_command_line - arguments. A reference path into the object graph may be supplied. - list resolved_ws_objects - the workspace objects ids from - input_ws_objects resolved to permanent workspace object references - by the workspace service. list intermediate_incoming - if - the previous action produced output that 1) was not stored in a - referrable way, and 2) is used as input for this action, provide - it with an arbitrary and unique ID here, in the order of the input - arguments to this action. These IDs can be used in the - method_params argument. list intermediate_outgoing - if - this action produced output that 1) was not stored in a referrable - way, and 2) is used as input for the next action, provide it with - an arbitrary and unique ID here, in the order of the output values - from this action. These IDs can be used in the - intermediate_incoming argument in the next action. + the object is assumed.), parameter "path" of list of type + "obj_ref" (A string that uniquely identifies an object in the + workspace service. The format is [ws_name or id]/[obj_name or + id]/[obj_ver]. For example, MyFirstWorkspace/MyFirstObject/3 would + identify the third version of an object called MyFirstObject in + the workspace called MyFirstWorkspace. 42/Panic/1 would identify + the first version of the object name Panic in workspace with id + 42. Towel/1/6 would identify the 6th version of the object with id + 1 in the Towel workspace.If the version number is omitted, the + latest version of the object is assumed.), parameter "provenance" + of list of type "ProvenanceAction" (A provenance action. A + provenance action (PA) is an action taken while transforming one + data object to another. There may be several PAs taken in series. + A PA is typically running a script, running an api command, etc. + All of the following fields are optional, but more information + provided equates to better data provenance. If a provenance action + has no fields defined at all, it is silently dropped from the + list. resolved_ws_objects should never be set by the user; it is + set by the workspace service when returning data. On input, only + one of the time or epoch may be supplied. Both are supplied on + output. The maximum size of the entire provenance object, + including all actions, is 1MB. timestamp time - the time the + action was started epoch epoch - the time the action was started. + string caller - the name or id of the invoker of this provenance + action. In most cases, this will be the same for all PAs. string + service - the name of the service that performed this action. + string service_ver - the version of the service that performed + this action. string method - the method of the service that + performed this action. list method_params - the + parameters of the method that performed this action. If an object + in the parameters is a workspace object, also put the object + reference in the input_ws_object list. string script - the name of + the script that performed this action. string script_ver - the + version of the script that performed this action. string + script_command_line - the command line provided to the script that + performed this action. If workspace objects were provided in the + command line, also put the object reference in the input_ws_object + list. list input_ws_objects - the workspace objects + that were used as input to this action; typically these will also + be present as parts of the method_params or the + script_command_line arguments. A reference path into the object + graph may be supplied. list resolved_ws_objects - the + workspace objects ids from input_ws_objects resolved to permanent + workspace object references by the workspace service. list + intermediate_incoming - if the previous action produced output + that 1) was not stored in a referrable way, and 2) is used as + input for this action, provide it with an arbitrary and unique ID + here, in the order of the input arguments to this action. These + IDs can be used in the method_params argument. list + intermediate_outgoing - if this action produced output that 1) was + not stored in a referrable way, and 2) is used as input for the + next action, provide it with an arbitrary and unique ID here, in + the order of the output values from this action. These IDs can be + used in the intermediate_incoming argument in the next action. list external_data - data external to the workspace that was either imported to the workspace or used to create a workspace object. list subactions - the @@ -1530,11 +1591,14 @@ def get_objects2(self, params, context=None): as a subset if specified). Optional parameters: boolean ignoreErrors - Don't throw an exception if an object cannot be accessed; return null for that object's information instead. - Default false. boolean no_data - return the provenance, - references, and object_info for this object without the object - data. Default false. boolean skip_external_system_updates - if the - objects contain any external IDs, don't contact external systems - to perform any updates for those IDs (often ACL updates, e.g. for + Default false. boolean infostruct - return the object information + as a structure rather than a tuple. Default false. If true, + ObjectData.path will be null as it is provided in the ObjectInfo + data. boolean no_data - return the provenance, references, and + object_info for this object without the object data. Default + false. boolean skip_external_system_updates - if the objects + contain any external IDs, don't contact external systems to + perform any updates for those IDs (often ACL updates, e.g. for handle / blobstore / sample IDs). In some cases this can speed up fetching the data. Default false. boolean batch_external_system_updates - if the objects contain any @@ -1729,8 +1793,9 @@ def get_objects2(self, params, context=None): of type "boolean" (A boolean. 0 = false, other = true.), parameter "strict_arrays" of type "boolean" (A boolean. 0 = false, other = true.), parameter "ignoreErrors" of type "boolean" (A boolean. 0 = - false, other = true.), parameter "no_data" of type "boolean" (A - boolean. 0 = false, other = true.), parameter + false, other = true.), parameter "infostruct" of type "boolean" (A + boolean. 0 = false, other = true.), parameter "no_data" of type + "boolean" (A boolean. 0 = false, other = true.), parameter "skip_external_system_updates" of type "boolean" (A boolean. 0 = false, other = true.), parameter "batch_external_system_updates" of type "boolean" (A boolean. 0 = false, other = true.) @@ -1739,19 +1804,20 @@ def get_objects2(self, params, context=None): objects.) -> structure: parameter "data" of list of type "ObjectData" (The data and supplemental info for an object. UnspecifiedObject data - the object's data or subset data. - object_info info - information about the object. list - path - the path to the object through the object reference graph. - All the references in the path are absolute. - list provenance - the object's provenance. - username creator - the user that first saved the object to the - workspace. ws_id orig_wsid - the id of the workspace in which this - object was originally saved. Missing for objects saved prior to - version 0.4.1. timestamp created - the date the object was first - saved to the workspace. epoch epoch - the date the object was - first saved to the workspace. list refs - the references - contained within the object. obj_ref copied - the reference of the - source object if this object is a copy and the copy source exists - and is accessible. null otherwise. boolean + object_info info - information about the object. ObjectInfo + infostruct - information about the object as a structure rather + than a tuple. list path - the path to the object through + the object reference graph. All the references in the path are + absolute. list provenance - the object's + provenance. username creator - the user that first saved the + object to the workspace. ws_id orig_wsid - the id of the workspace + in which this object was originally saved. Missing for objects + saved prior to version 0.4.1. timestamp created - the date the + object was first saved to the workspace. epoch epoch - the date + the object was first saved to the workspace. list refs - + the references contained within the object. obj_ref copied - the + reference of the source object if this object is a copy and the + copy source exists and is accessible. null otherwise. boolean copy_source_inaccessible - true if the object was copied from another object, but that object is no longer accessible to the user. False otherwise. mapping> @@ -1805,6 +1871,57 @@ def get_objects2(self, params, context=None): kbasetest:my_workspace.), parameter "chsum" of String, parameter "size" of Long, parameter "meta" of type "usermeta" (User provided metadata about an object. Arbitrary key-value pairs provided by + the user.) -> mapping from String to String, parameter + "infostruct" of type "ObjectInfo" (Information about an object as + a struct rather than a tuple. This allows adding fields in a + backward compatible way in the future. Includes more fields than + object_info. obj_id objid - the numerical id of the object. + obj_name name - the name of the object. type_string type - the + type of the object. timestamp save_date - the save date of the + object. obj_ver ver - the version of the object. username saved_by + - the user that saved or copied the object. ws_id wsid - the + workspace containing the object. ws_name workspace - the workspace + containing the object. string chsum - the md5 checksum of the + object. int size - the size of the object in bytes. usermeta meta + - arbitrary user-supplied metadata about the object. usermeta + adminmeta - service administrator metadata set on an object. + Unlike most other object fields, admin metadata is mutable. + list path - the path to the object.) -> structure: + parameter "objid" of type "obj_id" (The unique, permanent + numerical ID of an object.), parameter "name" of type "obj_name" + (A string used as a name for an object. Any string consisting of + alphanumeric characters and the characters |._- that is not an + integer is acceptable.), parameter "type" of type "type_string" (A + type string. Specifies the type and its version in a single string + in the format [module].[typename]-[major].[minor]: module - a + string. The module name of the typespec containing the type. + typename - a string. The name of the type as assigned by the + typedef statement. major - an integer. The major version of the + type. A change in the major version implies the type has changed + in a non-backwards compatible way. minor - an integer. The minor + version of the type. A change in the minor version implies that + the type has changed in a way that is backwards compatible with + previous type definitions. In many cases, the major and minor + versions are optional, and if not provided the most recent version + will be used. Example: MyModule.MyType-3.1), parameter "save_date" + of type "timestamp" (A time in the format YYYY-MM-DDThh:mm:ssZ, + where Z is either the character Z (representing the UTC timezone) + or the difference in time to UTC in the format +/-HHMM, eg: + 2012-12-17T23:24:06-0500 (EST time) 2013-04-03T08:56:32+0000 (UTC + time) 2013-04-03T08:56:32Z (UTC time)), parameter "version" of + Long, parameter "saved_by" of type "username" (Login name of a + KBase user account.), parameter "wsid" of type "ws_id" (The + unique, permanent numerical ID of a workspace.), parameter + "workspace" of type "ws_name" (A string used as a name for a + workspace. Any string consisting of alphanumeric characters and + "_", ".", or "-" that is not an integer is acceptable. The name + may optionally be prefixed with the workspace owner's user name + and a colon, e.g. kbasetest:my_workspace.), parameter "chsum" of + String, parameter "size" of Long, parameter "meta" of type + "usermeta" (User provided metadata about an object. Arbitrary + key-value pairs provided by the user.) -> mapping from String to + String, parameter "adminmeta" of type "usermeta" (User provided + metadata about an object. Arbitrary key-value pairs provided by the user.) -> mapping from String to String, parameter "path" of list of type "obj_ref" (A string that uniquely identifies an object in the workspace service. The format is [ws_name or @@ -1815,51 +1932,60 @@ def get_objects2(self, params, context=None): the object name Panic in workspace with id 42. Towel/1/6 would identify the 6th version of the object with id 1 in the Towel workspace.If the version number is omitted, the latest version of - the object is assumed.), parameter "provenance" of list of type - "ProvenanceAction" (A provenance action. A provenance action (PA) - is an action taken while transforming one data object to another. - There may be several PAs taken in series. A PA is typically - running a script, running an api command, etc. All of the - following fields are optional, but more information provided - equates to better data provenance. If a provenance action has no - fields defined at all, it is silently dropped from the list. - resolved_ws_objects should never be set by the user; it is set by - the workspace service when returning data. On input, only one of - the time or epoch may be supplied. Both are supplied on output. - The maximum size of the entire provenance object, including all - actions, is 1MB. timestamp time - the time the action was started - epoch epoch - the time the action was started. string caller - the - name or id of the invoker of this provenance action. In most - cases, this will be the same for all PAs. string service - the - name of the service that performed this action. string service_ver - - the version of the service that performed this action. string - method - the method of the service that performed this action. - list method_params - the parameters of the - method that performed this action. If an object in the parameters - is a workspace object, also put the object reference in the - input_ws_object list. string script - the name of the script that - performed this action. string script_ver - the version of the - script that performed this action. string script_command_line - - the command line provided to the script that performed this - action. If workspace objects were provided in the command line, - also put the object reference in the input_ws_object list. - list input_ws_objects - the workspace objects that - were used as input to this action; typically these will also be - present as parts of the method_params or the script_command_line - arguments. A reference path into the object graph may be supplied. - list resolved_ws_objects - the workspace objects ids from - input_ws_objects resolved to permanent workspace object references - by the workspace service. list intermediate_incoming - if - the previous action produced output that 1) was not stored in a - referrable way, and 2) is used as input for this action, provide - it with an arbitrary and unique ID here, in the order of the input - arguments to this action. These IDs can be used in the - method_params argument. list intermediate_outgoing - if - this action produced output that 1) was not stored in a referrable - way, and 2) is used as input for the next action, provide it with - an arbitrary and unique ID here, in the order of the output values - from this action. These IDs can be used in the - intermediate_incoming argument in the next action. + the object is assumed.), parameter "path" of list of type + "obj_ref" (A string that uniquely identifies an object in the + workspace service. The format is [ws_name or id]/[obj_name or + id]/[obj_ver]. For example, MyFirstWorkspace/MyFirstObject/3 would + identify the third version of an object called MyFirstObject in + the workspace called MyFirstWorkspace. 42/Panic/1 would identify + the first version of the object name Panic in workspace with id + 42. Towel/1/6 would identify the 6th version of the object with id + 1 in the Towel workspace.If the version number is omitted, the + latest version of the object is assumed.), parameter "provenance" + of list of type "ProvenanceAction" (A provenance action. A + provenance action (PA) is an action taken while transforming one + data object to another. There may be several PAs taken in series. + A PA is typically running a script, running an api command, etc. + All of the following fields are optional, but more information + provided equates to better data provenance. If a provenance action + has no fields defined at all, it is silently dropped from the + list. resolved_ws_objects should never be set by the user; it is + set by the workspace service when returning data. On input, only + one of the time or epoch may be supplied. Both are supplied on + output. The maximum size of the entire provenance object, + including all actions, is 1MB. timestamp time - the time the + action was started epoch epoch - the time the action was started. + string caller - the name or id of the invoker of this provenance + action. In most cases, this will be the same for all PAs. string + service - the name of the service that performed this action. + string service_ver - the version of the service that performed + this action. string method - the method of the service that + performed this action. list method_params - the + parameters of the method that performed this action. If an object + in the parameters is a workspace object, also put the object + reference in the input_ws_object list. string script - the name of + the script that performed this action. string script_ver - the + version of the script that performed this action. string + script_command_line - the command line provided to the script that + performed this action. If workspace objects were provided in the + command line, also put the object reference in the input_ws_object + list. list input_ws_objects - the workspace objects + that were used as input to this action; typically these will also + be present as parts of the method_params or the + script_command_line arguments. A reference path into the object + graph may be supplied. list resolved_ws_objects - the + workspace objects ids from input_ws_objects resolved to permanent + workspace object references by the workspace service. list + intermediate_incoming - if the previous action produced output + that 1) was not stored in a referrable way, and 2) is used as + input for this action, provide it with an arbitrary and unique ID + here, in the order of the input arguments to this action. These + IDs can be used in the method_params argument. list + intermediate_outgoing - if this action produced output that 1) was + not stored in a referrable way, and 2) is used as input for the + next action, provide it with an arbitrary and unique ID here, in + the order of the output values from this action. These IDs can be + used in the intermediate_incoming argument in the next action. list external_data - data external to the workspace that was either imported to the workspace or used to create a workspace object. list subactions - the @@ -2057,55 +2183,56 @@ def get_object_subset(self, sub_object_ids, context=None): :returns: instance of list of type "ObjectData" (The data and supplemental info for an object. UnspecifiedObject data - the object's data or subset data. object_info info - information about - the object. list path - the path to the object through - the object reference graph. All the references in the path are - absolute. list provenance - the object's - provenance. username creator - the user that first saved the - object to the workspace. ws_id orig_wsid - the id of the workspace - in which this object was originally saved. Missing for objects - saved prior to version 0.4.1. timestamp created - the date the - object was first saved to the workspace. epoch epoch - the date - the object was first saved to the workspace. list refs - - the references contained within the object. obj_ref copied - the - reference of the source object if this object is a copy and the - copy source exists and is accessible. null otherwise. boolean - copy_source_inaccessible - true if the object was copied from - another object, but that object is no longer accessible to the - user. False otherwise. mapping> - extracted_ids - any ids extracted from the object. string - handle_error - if an error occurs while setting ACLs on embedded - external IDs, it will be reported here. If not for historical - reasons the parameter would be called "external_id_error". string - handle_stacktrace - the stacktrace for handle_error. As above, the - parameter should be called "external_id_stacktrace".) -> - structure: parameter "data" of unspecified object, parameter - "info" of type "object_info" (Information about an object, - including user provided metadata. obj_id objid - the numerical id - of the object. obj_name name - the name of the object. type_string - type - the type of the object. timestamp save_date - the save date - of the object. obj_ver ver - the version of the object. username - saved_by - the user that saved or copied the object. ws_id wsid - - the workspace containing the object. ws_name workspace - the - workspace containing the object. string chsum - the md5 checksum - of the object. int size - the size of the object in bytes. - usermeta meta - arbitrary user-supplied metadata about the - object.) -> tuple of size 11: parameter "objid" of type "obj_id" - (The unique, permanent numerical ID of an object.), parameter - "name" of type "obj_name" (A string used as a name for an object. - Any string consisting of alphanumeric characters and the - characters |._- that is not an integer is acceptable.), parameter - "type" of type "type_string" (A type string. Specifies the type - and its version in a single string in the format - [module].[typename]-[major].[minor]: module - a string. The module - name of the typespec containing the type. typename - a string. The - name of the type as assigned by the typedef statement. major - an - integer. The major version of the type. A change in the major - version implies the type has changed in a non-backwards compatible - way. minor - an integer. The minor version of the type. A change - in the minor version implies that the type has changed in a way - that is backwards compatible with previous type definitions. In - many cases, the major and minor versions are optional, and if not - provided the most recent version will be used. Example: + the object. ObjectInfo infostruct - information about the object + as a structure rather than a tuple. list path - the path + to the object through the object reference graph. All the + references in the path are absolute. list + provenance - the object's provenance. username creator - the user + that first saved the object to the workspace. ws_id orig_wsid - + the id of the workspace in which this object was originally saved. + Missing for objects saved prior to version 0.4.1. timestamp + created - the date the object was first saved to the workspace. + epoch epoch - the date the object was first saved to the + workspace. list refs - the references contained within + the object. obj_ref copied - the reference of the source object if + this object is a copy and the copy source exists and is + accessible. null otherwise. boolean copy_source_inaccessible - + true if the object was copied from another object, but that object + is no longer accessible to the user. False otherwise. + mapping> extracted_ids - any ids + extracted from the object. string handle_error - if an error + occurs while setting ACLs on embedded external IDs, it will be + reported here. If not for historical reasons the parameter would + be called "external_id_error". string handle_stacktrace - the + stacktrace for handle_error. As above, the parameter should be + called "external_id_stacktrace".) -> structure: parameter "data" + of unspecified object, parameter "info" of type "object_info" + (Information about an object, including user provided metadata. + obj_id objid - the numerical id of the object. obj_name name - the + name of the object. type_string type - the type of the object. + timestamp save_date - the save date of the object. obj_ver ver - + the version of the object. username saved_by - the user that saved + or copied the object. ws_id wsid - the workspace containing the + object. ws_name workspace - the workspace containing the object. + string chsum - the md5 checksum of the object. int size - the size + of the object in bytes. usermeta meta - arbitrary user-supplied + metadata about the object.) -> tuple of size 11: parameter "objid" + of type "obj_id" (The unique, permanent numerical ID of an + object.), parameter "name" of type "obj_name" (A string used as a + name for an object. Any string consisting of alphanumeric + characters and the characters |._- that is not an integer is + acceptable.), parameter "type" of type "type_string" (A type + string. Specifies the type and its version in a single string in + the format [module].[typename]-[major].[minor]: module - a string. + The module name of the typespec containing the type. typename - a + string. The name of the type as assigned by the typedef statement. + major - an integer. The major version of the type. A change in the + major version implies the type has changed in a non-backwards + compatible way. minor - an integer. The minor version of the type. + A change in the minor version implies that the type has changed in + a way that is backwards compatible with previous type definitions. + In many cases, the major and minor versions are optional, and if + not provided the most recent version will be used. Example: MyModule.MyType-3.1), parameter "save_date" of type "timestamp" (A time in the format YYYY-MM-DDThh:mm:ssZ, where Z is either the character Z (representing the UTC timezone) or the difference in @@ -2122,6 +2249,57 @@ def get_object_subset(self, sub_object_ids, context=None): kbasetest:my_workspace.), parameter "chsum" of String, parameter "size" of Long, parameter "meta" of type "usermeta" (User provided metadata about an object. Arbitrary key-value pairs provided by + the user.) -> mapping from String to String, parameter + "infostruct" of type "ObjectInfo" (Information about an object as + a struct rather than a tuple. This allows adding fields in a + backward compatible way in the future. Includes more fields than + object_info. obj_id objid - the numerical id of the object. + obj_name name - the name of the object. type_string type - the + type of the object. timestamp save_date - the save date of the + object. obj_ver ver - the version of the object. username saved_by + - the user that saved or copied the object. ws_id wsid - the + workspace containing the object. ws_name workspace - the workspace + containing the object. string chsum - the md5 checksum of the + object. int size - the size of the object in bytes. usermeta meta + - arbitrary user-supplied metadata about the object. usermeta + adminmeta - service administrator metadata set on an object. + Unlike most other object fields, admin metadata is mutable. + list path - the path to the object.) -> structure: + parameter "objid" of type "obj_id" (The unique, permanent + numerical ID of an object.), parameter "name" of type "obj_name" + (A string used as a name for an object. Any string consisting of + alphanumeric characters and the characters |._- that is not an + integer is acceptable.), parameter "type" of type "type_string" (A + type string. Specifies the type and its version in a single string + in the format [module].[typename]-[major].[minor]: module - a + string. The module name of the typespec containing the type. + typename - a string. The name of the type as assigned by the + typedef statement. major - an integer. The major version of the + type. A change in the major version implies the type has changed + in a non-backwards compatible way. minor - an integer. The minor + version of the type. A change in the minor version implies that + the type has changed in a way that is backwards compatible with + previous type definitions. In many cases, the major and minor + versions are optional, and if not provided the most recent version + will be used. Example: MyModule.MyType-3.1), parameter "save_date" + of type "timestamp" (A time in the format YYYY-MM-DDThh:mm:ssZ, + where Z is either the character Z (representing the UTC timezone) + or the difference in time to UTC in the format +/-HHMM, eg: + 2012-12-17T23:24:06-0500 (EST time) 2013-04-03T08:56:32+0000 (UTC + time) 2013-04-03T08:56:32Z (UTC time)), parameter "version" of + Long, parameter "saved_by" of type "username" (Login name of a + KBase user account.), parameter "wsid" of type "ws_id" (The + unique, permanent numerical ID of a workspace.), parameter + "workspace" of type "ws_name" (A string used as a name for a + workspace. Any string consisting of alphanumeric characters and + "_", ".", or "-" that is not an integer is acceptable. The name + may optionally be prefixed with the workspace owner's user name + and a colon, e.g. kbasetest:my_workspace.), parameter "chsum" of + String, parameter "size" of Long, parameter "meta" of type + "usermeta" (User provided metadata about an object. Arbitrary + key-value pairs provided by the user.) -> mapping from String to + String, parameter "adminmeta" of type "usermeta" (User provided + metadata about an object. Arbitrary key-value pairs provided by the user.) -> mapping from String to String, parameter "path" of list of type "obj_ref" (A string that uniquely identifies an object in the workspace service. The format is [ws_name or @@ -2132,51 +2310,60 @@ def get_object_subset(self, sub_object_ids, context=None): the object name Panic in workspace with id 42. Towel/1/6 would identify the 6th version of the object with id 1 in the Towel workspace.If the version number is omitted, the latest version of - the object is assumed.), parameter "provenance" of list of type - "ProvenanceAction" (A provenance action. A provenance action (PA) - is an action taken while transforming one data object to another. - There may be several PAs taken in series. A PA is typically - running a script, running an api command, etc. All of the - following fields are optional, but more information provided - equates to better data provenance. If a provenance action has no - fields defined at all, it is silently dropped from the list. - resolved_ws_objects should never be set by the user; it is set by - the workspace service when returning data. On input, only one of - the time or epoch may be supplied. Both are supplied on output. - The maximum size of the entire provenance object, including all - actions, is 1MB. timestamp time - the time the action was started - epoch epoch - the time the action was started. string caller - the - name or id of the invoker of this provenance action. In most - cases, this will be the same for all PAs. string service - the - name of the service that performed this action. string service_ver - - the version of the service that performed this action. string - method - the method of the service that performed this action. - list method_params - the parameters of the - method that performed this action. If an object in the parameters - is a workspace object, also put the object reference in the - input_ws_object list. string script - the name of the script that - performed this action. string script_ver - the version of the - script that performed this action. string script_command_line - - the command line provided to the script that performed this - action. If workspace objects were provided in the command line, - also put the object reference in the input_ws_object list. - list input_ws_objects - the workspace objects that - were used as input to this action; typically these will also be - present as parts of the method_params or the script_command_line - arguments. A reference path into the object graph may be supplied. - list resolved_ws_objects - the workspace objects ids from - input_ws_objects resolved to permanent workspace object references - by the workspace service. list intermediate_incoming - if - the previous action produced output that 1) was not stored in a - referrable way, and 2) is used as input for this action, provide - it with an arbitrary and unique ID here, in the order of the input - arguments to this action. These IDs can be used in the - method_params argument. list intermediate_outgoing - if - this action produced output that 1) was not stored in a referrable - way, and 2) is used as input for the next action, provide it with - an arbitrary and unique ID here, in the order of the output values - from this action. These IDs can be used in the - intermediate_incoming argument in the next action. + the object is assumed.), parameter "path" of list of type + "obj_ref" (A string that uniquely identifies an object in the + workspace service. The format is [ws_name or id]/[obj_name or + id]/[obj_ver]. For example, MyFirstWorkspace/MyFirstObject/3 would + identify the third version of an object called MyFirstObject in + the workspace called MyFirstWorkspace. 42/Panic/1 would identify + the first version of the object name Panic in workspace with id + 42. Towel/1/6 would identify the 6th version of the object with id + 1 in the Towel workspace.If the version number is omitted, the + latest version of the object is assumed.), parameter "provenance" + of list of type "ProvenanceAction" (A provenance action. A + provenance action (PA) is an action taken while transforming one + data object to another. There may be several PAs taken in series. + A PA is typically running a script, running an api command, etc. + All of the following fields are optional, but more information + provided equates to better data provenance. If a provenance action + has no fields defined at all, it is silently dropped from the + list. resolved_ws_objects should never be set by the user; it is + set by the workspace service when returning data. On input, only + one of the time or epoch may be supplied. Both are supplied on + output. The maximum size of the entire provenance object, + including all actions, is 1MB. timestamp time - the time the + action was started epoch epoch - the time the action was started. + string caller - the name or id of the invoker of this provenance + action. In most cases, this will be the same for all PAs. string + service - the name of the service that performed this action. + string service_ver - the version of the service that performed + this action. string method - the method of the service that + performed this action. list method_params - the + parameters of the method that performed this action. If an object + in the parameters is a workspace object, also put the object + reference in the input_ws_object list. string script - the name of + the script that performed this action. string script_ver - the + version of the script that performed this action. string + script_command_line - the command line provided to the script that + performed this action. If workspace objects were provided in the + command line, also put the object reference in the input_ws_object + list. list input_ws_objects - the workspace objects + that were used as input to this action; typically these will also + be present as parts of the method_params or the + script_command_line arguments. A reference path into the object + graph may be supplied. list resolved_ws_objects - the + workspace objects ids from input_ws_objects resolved to permanent + workspace object references by the workspace service. list + intermediate_incoming - if the previous action produced output + that 1) was not stored in a referrable way, and 2) is used as + input for this action, provide it with an arbitrary and unique ID + here, in the order of the input arguments to this action. These + IDs can be used in the method_params argument. list + intermediate_outgoing - if this action produced output that 1) was + not stored in a referrable way, and 2) is used as input for the + next action, provide it with an arbitrary and unique ID here, in + the order of the output values from this action. These IDs can be + used in the intermediate_incoming argument in the next action. list external_data - data external to the workspace that was either imported to the workspace or used to create a workspace object. list subactions - the @@ -2561,55 +2748,56 @@ def get_referenced_objects(self, ref_chains, context=None): :returns: instance of list of type "ObjectData" (The data and supplemental info for an object. UnspecifiedObject data - the object's data or subset data. object_info info - information about - the object. list path - the path to the object through - the object reference graph. All the references in the path are - absolute. list provenance - the object's - provenance. username creator - the user that first saved the - object to the workspace. ws_id orig_wsid - the id of the workspace - in which this object was originally saved. Missing for objects - saved prior to version 0.4.1. timestamp created - the date the - object was first saved to the workspace. epoch epoch - the date - the object was first saved to the workspace. list refs - - the references contained within the object. obj_ref copied - the - reference of the source object if this object is a copy and the - copy source exists and is accessible. null otherwise. boolean - copy_source_inaccessible - true if the object was copied from - another object, but that object is no longer accessible to the - user. False otherwise. mapping> - extracted_ids - any ids extracted from the object. string - handle_error - if an error occurs while setting ACLs on embedded - external IDs, it will be reported here. If not for historical - reasons the parameter would be called "external_id_error". string - handle_stacktrace - the stacktrace for handle_error. As above, the - parameter should be called "external_id_stacktrace".) -> - structure: parameter "data" of unspecified object, parameter - "info" of type "object_info" (Information about an object, - including user provided metadata. obj_id objid - the numerical id - of the object. obj_name name - the name of the object. type_string - type - the type of the object. timestamp save_date - the save date - of the object. obj_ver ver - the version of the object. username - saved_by - the user that saved or copied the object. ws_id wsid - - the workspace containing the object. ws_name workspace - the - workspace containing the object. string chsum - the md5 checksum - of the object. int size - the size of the object in bytes. - usermeta meta - arbitrary user-supplied metadata about the - object.) -> tuple of size 11: parameter "objid" of type "obj_id" - (The unique, permanent numerical ID of an object.), parameter - "name" of type "obj_name" (A string used as a name for an object. - Any string consisting of alphanumeric characters and the - characters |._- that is not an integer is acceptable.), parameter - "type" of type "type_string" (A type string. Specifies the type - and its version in a single string in the format - [module].[typename]-[major].[minor]: module - a string. The module - name of the typespec containing the type. typename - a string. The - name of the type as assigned by the typedef statement. major - an - integer. The major version of the type. A change in the major - version implies the type has changed in a non-backwards compatible - way. minor - an integer. The minor version of the type. A change - in the minor version implies that the type has changed in a way - that is backwards compatible with previous type definitions. In - many cases, the major and minor versions are optional, and if not - provided the most recent version will be used. Example: + the object. ObjectInfo infostruct - information about the object + as a structure rather than a tuple. list path - the path + to the object through the object reference graph. All the + references in the path are absolute. list + provenance - the object's provenance. username creator - the user + that first saved the object to the workspace. ws_id orig_wsid - + the id of the workspace in which this object was originally saved. + Missing for objects saved prior to version 0.4.1. timestamp + created - the date the object was first saved to the workspace. + epoch epoch - the date the object was first saved to the + workspace. list refs - the references contained within + the object. obj_ref copied - the reference of the source object if + this object is a copy and the copy source exists and is + accessible. null otherwise. boolean copy_source_inaccessible - + true if the object was copied from another object, but that object + is no longer accessible to the user. False otherwise. + mapping> extracted_ids - any ids + extracted from the object. string handle_error - if an error + occurs while setting ACLs on embedded external IDs, it will be + reported here. If not for historical reasons the parameter would + be called "external_id_error". string handle_stacktrace - the + stacktrace for handle_error. As above, the parameter should be + called "external_id_stacktrace".) -> structure: parameter "data" + of unspecified object, parameter "info" of type "object_info" + (Information about an object, including user provided metadata. + obj_id objid - the numerical id of the object. obj_name name - the + name of the object. type_string type - the type of the object. + timestamp save_date - the save date of the object. obj_ver ver - + the version of the object. username saved_by - the user that saved + or copied the object. ws_id wsid - the workspace containing the + object. ws_name workspace - the workspace containing the object. + string chsum - the md5 checksum of the object. int size - the size + of the object in bytes. usermeta meta - arbitrary user-supplied + metadata about the object.) -> tuple of size 11: parameter "objid" + of type "obj_id" (The unique, permanent numerical ID of an + object.), parameter "name" of type "obj_name" (A string used as a + name for an object. Any string consisting of alphanumeric + characters and the characters |._- that is not an integer is + acceptable.), parameter "type" of type "type_string" (A type + string. Specifies the type and its version in a single string in + the format [module].[typename]-[major].[minor]: module - a string. + The module name of the typespec containing the type. typename - a + string. The name of the type as assigned by the typedef statement. + major - an integer. The major version of the type. A change in the + major version implies the type has changed in a non-backwards + compatible way. minor - an integer. The minor version of the type. + A change in the minor version implies that the type has changed in + a way that is backwards compatible with previous type definitions. + In many cases, the major and minor versions are optional, and if + not provided the most recent version will be used. Example: MyModule.MyType-3.1), parameter "save_date" of type "timestamp" (A time in the format YYYY-MM-DDThh:mm:ssZ, where Z is either the character Z (representing the UTC timezone) or the difference in @@ -2626,6 +2814,57 @@ def get_referenced_objects(self, ref_chains, context=None): kbasetest:my_workspace.), parameter "chsum" of String, parameter "size" of Long, parameter "meta" of type "usermeta" (User provided metadata about an object. Arbitrary key-value pairs provided by + the user.) -> mapping from String to String, parameter + "infostruct" of type "ObjectInfo" (Information about an object as + a struct rather than a tuple. This allows adding fields in a + backward compatible way in the future. Includes more fields than + object_info. obj_id objid - the numerical id of the object. + obj_name name - the name of the object. type_string type - the + type of the object. timestamp save_date - the save date of the + object. obj_ver ver - the version of the object. username saved_by + - the user that saved or copied the object. ws_id wsid - the + workspace containing the object. ws_name workspace - the workspace + containing the object. string chsum - the md5 checksum of the + object. int size - the size of the object in bytes. usermeta meta + - arbitrary user-supplied metadata about the object. usermeta + adminmeta - service administrator metadata set on an object. + Unlike most other object fields, admin metadata is mutable. + list path - the path to the object.) -> structure: + parameter "objid" of type "obj_id" (The unique, permanent + numerical ID of an object.), parameter "name" of type "obj_name" + (A string used as a name for an object. Any string consisting of + alphanumeric characters and the characters |._- that is not an + integer is acceptable.), parameter "type" of type "type_string" (A + type string. Specifies the type and its version in a single string + in the format [module].[typename]-[major].[minor]: module - a + string. The module name of the typespec containing the type. + typename - a string. The name of the type as assigned by the + typedef statement. major - an integer. The major version of the + type. A change in the major version implies the type has changed + in a non-backwards compatible way. minor - an integer. The minor + version of the type. A change in the minor version implies that + the type has changed in a way that is backwards compatible with + previous type definitions. In many cases, the major and minor + versions are optional, and if not provided the most recent version + will be used. Example: MyModule.MyType-3.1), parameter "save_date" + of type "timestamp" (A time in the format YYYY-MM-DDThh:mm:ssZ, + where Z is either the character Z (representing the UTC timezone) + or the difference in time to UTC in the format +/-HHMM, eg: + 2012-12-17T23:24:06-0500 (EST time) 2013-04-03T08:56:32+0000 (UTC + time) 2013-04-03T08:56:32Z (UTC time)), parameter "version" of + Long, parameter "saved_by" of type "username" (Login name of a + KBase user account.), parameter "wsid" of type "ws_id" (The + unique, permanent numerical ID of a workspace.), parameter + "workspace" of type "ws_name" (A string used as a name for a + workspace. Any string consisting of alphanumeric characters and + "_", ".", or "-" that is not an integer is acceptable. The name + may optionally be prefixed with the workspace owner's user name + and a colon, e.g. kbasetest:my_workspace.), parameter "chsum" of + String, parameter "size" of Long, parameter "meta" of type + "usermeta" (User provided metadata about an object. Arbitrary + key-value pairs provided by the user.) -> mapping from String to + String, parameter "adminmeta" of type "usermeta" (User provided + metadata about an object. Arbitrary key-value pairs provided by the user.) -> mapping from String to String, parameter "path" of list of type "obj_ref" (A string that uniquely identifies an object in the workspace service. The format is [ws_name or @@ -2636,51 +2875,60 @@ def get_referenced_objects(self, ref_chains, context=None): the object name Panic in workspace with id 42. Towel/1/6 would identify the 6th version of the object with id 1 in the Towel workspace.If the version number is omitted, the latest version of - the object is assumed.), parameter "provenance" of list of type - "ProvenanceAction" (A provenance action. A provenance action (PA) - is an action taken while transforming one data object to another. - There may be several PAs taken in series. A PA is typically - running a script, running an api command, etc. All of the - following fields are optional, but more information provided - equates to better data provenance. If a provenance action has no - fields defined at all, it is silently dropped from the list. - resolved_ws_objects should never be set by the user; it is set by - the workspace service when returning data. On input, only one of - the time or epoch may be supplied. Both are supplied on output. - The maximum size of the entire provenance object, including all - actions, is 1MB. timestamp time - the time the action was started - epoch epoch - the time the action was started. string caller - the - name or id of the invoker of this provenance action. In most - cases, this will be the same for all PAs. string service - the - name of the service that performed this action. string service_ver - - the version of the service that performed this action. string - method - the method of the service that performed this action. - list method_params - the parameters of the - method that performed this action. If an object in the parameters - is a workspace object, also put the object reference in the - input_ws_object list. string script - the name of the script that - performed this action. string script_ver - the version of the - script that performed this action. string script_command_line - - the command line provided to the script that performed this - action. If workspace objects were provided in the command line, - also put the object reference in the input_ws_object list. - list input_ws_objects - the workspace objects that - were used as input to this action; typically these will also be - present as parts of the method_params or the script_command_line - arguments. A reference path into the object graph may be supplied. - list resolved_ws_objects - the workspace objects ids from - input_ws_objects resolved to permanent workspace object references - by the workspace service. list intermediate_incoming - if - the previous action produced output that 1) was not stored in a - referrable way, and 2) is used as input for this action, provide - it with an arbitrary and unique ID here, in the order of the input - arguments to this action. These IDs can be used in the - method_params argument. list intermediate_outgoing - if - this action produced output that 1) was not stored in a referrable - way, and 2) is used as input for the next action, provide it with - an arbitrary and unique ID here, in the order of the output values - from this action. These IDs can be used in the - intermediate_incoming argument in the next action. + the object is assumed.), parameter "path" of list of type + "obj_ref" (A string that uniquely identifies an object in the + workspace service. The format is [ws_name or id]/[obj_name or + id]/[obj_ver]. For example, MyFirstWorkspace/MyFirstObject/3 would + identify the third version of an object called MyFirstObject in + the workspace called MyFirstWorkspace. 42/Panic/1 would identify + the first version of the object name Panic in workspace with id + 42. Towel/1/6 would identify the 6th version of the object with id + 1 in the Towel workspace.If the version number is omitted, the + latest version of the object is assumed.), parameter "provenance" + of list of type "ProvenanceAction" (A provenance action. A + provenance action (PA) is an action taken while transforming one + data object to another. There may be several PAs taken in series. + A PA is typically running a script, running an api command, etc. + All of the following fields are optional, but more information + provided equates to better data provenance. If a provenance action + has no fields defined at all, it is silently dropped from the + list. resolved_ws_objects should never be set by the user; it is + set by the workspace service when returning data. On input, only + one of the time or epoch may be supplied. Both are supplied on + output. The maximum size of the entire provenance object, + including all actions, is 1MB. timestamp time - the time the + action was started epoch epoch - the time the action was started. + string caller - the name or id of the invoker of this provenance + action. In most cases, this will be the same for all PAs. string + service - the name of the service that performed this action. + string service_ver - the version of the service that performed + this action. string method - the method of the service that + performed this action. list method_params - the + parameters of the method that performed this action. If an object + in the parameters is a workspace object, also put the object + reference in the input_ws_object list. string script - the name of + the script that performed this action. string script_ver - the + version of the script that performed this action. string + script_command_line - the command line provided to the script that + performed this action. If workspace objects were provided in the + command line, also put the object reference in the input_ws_object + list. list input_ws_objects - the workspace objects + that were used as input to this action; typically these will also + be present as parts of the method_params or the + script_command_line arguments. A reference path into the object + graph may be supplied. list resolved_ws_objects - the + workspace objects ids from input_ws_objects resolved to permanent + workspace object references by the workspace service. list + intermediate_incoming - if the previous action produced output + that 1) was not stored in a referrable way, and 2) is used as + input for this action, provide it with an arbitrary and unique ID + here, in the order of the input arguments to this action. These + IDs can be used in the method_params argument. list + intermediate_outgoing - if this action produced output that 1) was + not stored in a referrable way, and 2) is used as input for the + next action, provide it with an arbitrary and unique ID here, in + the order of the output values from this action. These IDs can be + used in the intermediate_incoming argument in the next action. list external_data - data external to the workspace that was either imported to the workspace or used to create a workspace object. list subactions - the @@ -3635,12 +3883,14 @@ def get_object_info3(self, params, context=None): parameters for the "get_object_info3" function. Required arguments: list objects - the objects for which the information should be fetched. Subsetting related - parameters are ignored. Optional arguments: boolean - includeMetadata - include the object metadata in the returned - information. Default false. boolean ignoreErrors - Don't throw an - exception if an object cannot be accessed; return null for that - object's information and path instead. Default false.) -> - structure: parameter "objects" of list of type + parameters are ignored. Optional arguments: boolean infostruct - + return information about the object as a structure rather than a + tuple. Default false. If true, infos and paths will be null. + boolean includeMetadata - include the user and admin metadata in + the returned information. Default false. boolean ignoreErrors - + Don't throw an exception if an object cannot be accessed; return + null for that object's information and path instead. Default + false.) -> structure: parameter "objects" of list of type "ObjectSpecification" (An Object Specification (OS). Inherits from ObjectIdentity (OI). Specifies which object, and which parts of that object, to retrieve from the Workspace Service. The fields @@ -3824,60 +4074,124 @@ def get_object_info3(self, params, context=None): here: http://tools.ietf.org/html/rfc6901), parameter "strict_maps" of type "boolean" (A boolean. 0 = false, other = true.), parameter "strict_arrays" of type "boolean" (A boolean. 0 = false, other = - true.), parameter "includeMetadata" of type "boolean" (A boolean. - 0 = false, other = true.), parameter "ignoreErrors" of type - "boolean" (A boolean. 0 = false, other = true.) + true.), parameter "infostruct" of type "boolean" (A boolean. 0 = + false, other = true.), parameter "includeMetadata" of type + "boolean" (A boolean. 0 = false, other = true.), parameter + "ignoreErrors" of type "boolean" (A boolean. 0 = false, other = + true.) :returns: instance of type "GetObjectInfo3Results" (Output from the get_object_info3 function. list infos - the object_info data for each object. list paths - the path to the object through the object reference graph for each - object. All the references in the path are absolute.) -> - structure: parameter "infos" of list of type "object_info" - (Information about an object, including user provided metadata. - obj_id objid - the numerical id of the object. obj_name name - the - name of the object. type_string type - the type of the object. - timestamp save_date - the save date of the object. obj_ver ver - - the version of the object. username saved_by - the user that saved - or copied the object. ws_id wsid - the workspace containing the - object. ws_name workspace - the workspace containing the object. - string chsum - the md5 checksum of the object. int size - the size - of the object in bytes. usermeta meta - arbitrary user-supplied - metadata about the object.) -> tuple of size 11: parameter "objid" - of type "obj_id" (The unique, permanent numerical ID of an - object.), parameter "name" of type "obj_name" (A string used as a - name for an object. Any string consisting of alphanumeric - characters and the characters |._- that is not an integer is - acceptable.), parameter "type" of type "type_string" (A type - string. Specifies the type and its version in a single string in - the format [module].[typename]-[major].[minor]: module - a string. - The module name of the typespec containing the type. typename - a - string. The name of the type as assigned by the typedef statement. - major - an integer. The major version of the type. A change in the - major version implies the type has changed in a non-backwards - compatible way. minor - an integer. The minor version of the type. - A change in the minor version implies that the type has changed in - a way that is backwards compatible with previous type definitions. - In many cases, the major and minor versions are optional, and if - not provided the most recent version will be used. Example: - MyModule.MyType-3.1), parameter "save_date" of type "timestamp" (A - time in the format YYYY-MM-DDThh:mm:ssZ, where Z is either the - character Z (representing the UTC timezone) or the difference in - time to UTC in the format +/-HHMM, eg: 2012-12-17T23:24:06-0500 - (EST time) 2013-04-03T08:56:32+0000 (UTC time) - 2013-04-03T08:56:32Z (UTC time)), parameter "version" of Long, - parameter "saved_by" of type "username" (Login name of a KBase - user account.), parameter "wsid" of type "ws_id" (The unique, - permanent numerical ID of a workspace.), parameter "workspace" of - type "ws_name" (A string used as a name for a workspace. Any - string consisting of alphanumeric characters and "_", ".", or "-" - that is not an integer is acceptable. The name may optionally be - prefixed with the workspace owner's user name and a colon, e.g. - kbasetest:my_workspace.), parameter "chsum" of String, parameter - "size" of Long, parameter "meta" of type "usermeta" (User provided + object. All the references in the path are absolute. + list infostructs - the ObjectInfo data for each + object.) -> structure: parameter "infos" of list of type + "object_info" (Information about an object, including user + provided metadata. obj_id objid - the numerical id of the object. + obj_name name - the name of the object. type_string type - the + type of the object. timestamp save_date - the save date of the + object. obj_ver ver - the version of the object. username saved_by + - the user that saved or copied the object. ws_id wsid - the + workspace containing the object. ws_name workspace - the workspace + containing the object. string chsum - the md5 checksum of the + object. int size - the size of the object in bytes. usermeta meta + - arbitrary user-supplied metadata about the object.) -> tuple of + size 11: parameter "objid" of type "obj_id" (The unique, permanent + numerical ID of an object.), parameter "name" of type "obj_name" + (A string used as a name for an object. Any string consisting of + alphanumeric characters and the characters |._- that is not an + integer is acceptable.), parameter "type" of type "type_string" (A + type string. Specifies the type and its version in a single string + in the format [module].[typename]-[major].[minor]: module - a + string. The module name of the typespec containing the type. + typename - a string. The name of the type as assigned by the + typedef statement. major - an integer. The major version of the + type. A change in the major version implies the type has changed + in a non-backwards compatible way. minor - an integer. The minor + version of the type. A change in the minor version implies that + the type has changed in a way that is backwards compatible with + previous type definitions. In many cases, the major and minor + versions are optional, and if not provided the most recent version + will be used. Example: MyModule.MyType-3.1), parameter "save_date" + of type "timestamp" (A time in the format YYYY-MM-DDThh:mm:ssZ, + where Z is either the character Z (representing the UTC timezone) + or the difference in time to UTC in the format +/-HHMM, eg: + 2012-12-17T23:24:06-0500 (EST time) 2013-04-03T08:56:32+0000 (UTC + time) 2013-04-03T08:56:32Z (UTC time)), parameter "version" of + Long, parameter "saved_by" of type "username" (Login name of a + KBase user account.), parameter "wsid" of type "ws_id" (The + unique, permanent numerical ID of a workspace.), parameter + "workspace" of type "ws_name" (A string used as a name for a + workspace. Any string consisting of alphanumeric characters and + "_", ".", or "-" that is not an integer is acceptable. The name + may optionally be prefixed with the workspace owner's user name + and a colon, e.g. kbasetest:my_workspace.), parameter "chsum" of + String, parameter "size" of Long, parameter "meta" of type + "usermeta" (User provided metadata about an object. Arbitrary + key-value pairs provided by the user.) -> mapping from String to + String, parameter "paths" of list of list of type "obj_ref" (A + string that uniquely identifies an object in the workspace + service. The format is [ws_name or id]/[obj_name or id]/[obj_ver]. + For example, MyFirstWorkspace/MyFirstObject/3 would identify the + third version of an object called MyFirstObject in the workspace + called MyFirstWorkspace. 42/Panic/1 would identify the first + version of the object name Panic in workspace with id 42. + Towel/1/6 would identify the 6th version of the object with id 1 + in the Towel workspace.If the version number is omitted, the + latest version of the object is assumed.), parameter "infostructs" + of list of type "ObjectInfo" (Information about an object as a + struct rather than a tuple. This allows adding fields in a + backward compatible way in the future. Includes more fields than + object_info. obj_id objid - the numerical id of the object. + obj_name name - the name of the object. type_string type - the + type of the object. timestamp save_date - the save date of the + object. obj_ver ver - the version of the object. username saved_by + - the user that saved or copied the object. ws_id wsid - the + workspace containing the object. ws_name workspace - the workspace + containing the object. string chsum - the md5 checksum of the + object. int size - the size of the object in bytes. usermeta meta + - arbitrary user-supplied metadata about the object. usermeta + adminmeta - service administrator metadata set on an object. + Unlike most other object fields, admin metadata is mutable. + list path - the path to the object.) -> structure: + parameter "objid" of type "obj_id" (The unique, permanent + numerical ID of an object.), parameter "name" of type "obj_name" + (A string used as a name for an object. Any string consisting of + alphanumeric characters and the characters |._- that is not an + integer is acceptable.), parameter "type" of type "type_string" (A + type string. Specifies the type and its version in a single string + in the format [module].[typename]-[major].[minor]: module - a + string. The module name of the typespec containing the type. + typename - a string. The name of the type as assigned by the + typedef statement. major - an integer. The major version of the + type. A change in the major version implies the type has changed + in a non-backwards compatible way. minor - an integer. The minor + version of the type. A change in the minor version implies that + the type has changed in a way that is backwards compatible with + previous type definitions. In many cases, the major and minor + versions are optional, and if not provided the most recent version + will be used. Example: MyModule.MyType-3.1), parameter "save_date" + of type "timestamp" (A time in the format YYYY-MM-DDThh:mm:ssZ, + where Z is either the character Z (representing the UTC timezone) + or the difference in time to UTC in the format +/-HHMM, eg: + 2012-12-17T23:24:06-0500 (EST time) 2013-04-03T08:56:32+0000 (UTC + time) 2013-04-03T08:56:32Z (UTC time)), parameter "version" of + Long, parameter "saved_by" of type "username" (Login name of a + KBase user account.), parameter "wsid" of type "ws_id" (The + unique, permanent numerical ID of a workspace.), parameter + "workspace" of type "ws_name" (A string used as a name for a + workspace. Any string consisting of alphanumeric characters and + "_", ".", or "-" that is not an integer is acceptable. The name + may optionally be prefixed with the workspace owner's user name + and a colon, e.g. kbasetest:my_workspace.), parameter "chsum" of + String, parameter "size" of Long, parameter "meta" of type + "usermeta" (User provided metadata about an object. Arbitrary + key-value pairs provided by the user.) -> mapping from String to + String, parameter "adminmeta" of type "usermeta" (User provided metadata about an object. Arbitrary key-value pairs provided by - the user.) -> mapping from String to String, parameter "paths" of - list of list of type "obj_ref" (A string that uniquely identifies - an object in the workspace service. The format is [ws_name or + the user.) -> mapping from String to String, parameter "path" of + list of type "obj_ref" (A string that uniquely identifies an + object in the workspace service. The format is [ws_name or id]/[obj_name or id]/[obj_ver]. For example, MyFirstWorkspace/MyFirstObject/3 would identify the third version of an object called MyFirstObject in the workspace called @@ -5248,6 +5562,59 @@ def get_admin_role(self, context=None): return self._client.call_method('Workspace.get_admin_role', [], self._service_ver, context) + def alter_admin_object_metadata(self, params, context=None): + """ + Update admin metadata for an object. The user must have full workspace service + administration privileges. + :param params: instance of type "AlterAdminObjectMetadataParams" + (Input parameters for the alter_admin_object_metadata method. + updates - the metadata updates to apply to the objects. If the + same object is specified twice in the list, the update order is + unspecified. At most 1000 updates are allowed in one call.) -> + structure: parameter "updates" of list of type + "ObjectMetadataUpdate" (An object metadata update specification. + Required arguments: ObjectIdentity oi - the object to be altered + One or both of the following arguments are required: usermeta new + - metadata to assign to the workspace. Duplicate keys will be + overwritten. list remove - these keys will be removed from + the workspace metadata key/value pairs.) -> structure: parameter + "oi" of type "ObjectIdentity" (An object identifier. Select an + object by either: One, and only one, of the numerical id or name + of the workspace. ws_id wsid - the numerical ID of the workspace. + ws_name workspace - the name of the workspace. AND One, and only + one, of the numerical id or name of the object. obj_id objid- the + numerical ID of the object. obj_name name - name of the object. + OPTIONALLY obj_ver ver - the version of the object. OR an object + reference string: obj_ref ref - an object reference string.) -> + structure: parameter "workspace" of type "ws_name" (A string used + as a name for a workspace. Any string consisting of alphanumeric + characters and "_", ".", or "-" that is not an integer is + acceptable. The name may optionally be prefixed with the workspace + owner's user name and a colon, e.g. kbasetest:my_workspace.), + parameter "wsid" of type "ws_id" (The unique, permanent numerical + ID of a workspace.), parameter "name" of type "obj_name" (A string + used as a name for an object. Any string consisting of + alphanumeric characters and the characters |._- that is not an + integer is acceptable.), parameter "objid" of type "obj_id" (The + unique, permanent numerical ID of an object.), parameter "ver" of + type "obj_ver" (An object version. The version of the object, + starting at 1.), parameter "ref" of type "obj_ref" (A string that + uniquely identifies an object in the workspace service. The format + is [ws_name or id]/[obj_name or id]/[obj_ver]. For example, + MyFirstWorkspace/MyFirstObject/3 would identify the third version + of an object called MyFirstObject in the workspace called + MyFirstWorkspace. 42/Panic/1 would identify the first version of + the object name Panic in workspace with id 42. Towel/1/6 would + identify the 6th version of the object with id 1 in the Towel + workspace.If the version number is omitted, the latest version of + the object is assumed.), parameter "new" of type "usermeta" (User + provided metadata about an object. Arbitrary key-value pairs + provided by the user.) -> mapping from String to String, parameter + "remove" of list of String + """ + return self._client.call_method('Workspace.alter_admin_object_metadata', + [params], self._service_ver, context) + def administer(self, command, context=None): """ The administration interface. diff --git a/lib/javascript/workspace/Client.js b/lib/javascript/workspace/Client.js index 426be2e9..aab26a3a 100644 --- a/lib/javascript/workspace/Client.js +++ b/lib/javascript/workspace/Client.js @@ -813,6 +813,19 @@ function Workspace(url, auth, auth_cb, timeout, async_job_check_time_ms, service [], 1, _callback, _errorCallback); }; + this.alter_admin_object_metadata = function (params, _callback, _errorCallback) { + if (typeof params === 'function') + throw 'Argument params can not be a function'; + if (_callback && typeof _callback !== 'function') + throw 'Argument _callback must be a function if defined'; + if (_errorCallback && typeof _errorCallback !== 'function') + throw 'Argument _errorCallback must be a function if defined'; + if (typeof arguments === 'function' && arguments.length > 1+2) + throw 'Too many arguments ('+arguments.length+' instead of '+(1+2)+')'; + return json_call_ajax(_url, "Workspace.alter_admin_object_metadata", + [params], 0, _callback, _errorCallback); + }; + this.administer = function (command, _callback, _errorCallback) { if (typeof command === 'function') throw 'Argument command can not be a function'; diff --git a/src/us/kbase/workspace/AlterAdminObjectMetadataParams.java b/src/us/kbase/workspace/AlterAdminObjectMetadataParams.java index 2b248559..62c056ca 100644 --- a/src/us/kbase/workspace/AlterAdminObjectMetadataParams.java +++ b/src/us/kbase/workspace/AlterAdminObjectMetadataParams.java @@ -17,7 +17,8 @@ *
  * Input parameters for the alter_admin_object_metadata method.
  *         updates - the metadata updates to apply to the objects. If the same object is specified
- *                 twice in the list, the update order is unspecified.
+ *                 twice in the list, the update order is unspecified. At most 1000 updates are allowed
+ *                 in one call.
  * 
* */ diff --git a/src/us/kbase/workspace/GetObjectInfo3Params.java b/src/us/kbase/workspace/GetObjectInfo3Params.java index e0065c83..e1704a5d 100644 --- a/src/us/kbase/workspace/GetObjectInfo3Params.java +++ b/src/us/kbase/workspace/GetObjectInfo3Params.java @@ -21,7 +21,9 @@ * information should be fetched. Subsetting related parameters are * ignored. * Optional arguments: - * boolean includeMetadata - include the object metadata in the returned + * boolean infostruct - return information about the object as a structure rather than a tuple. + * Default false. If true, infos and paths will be null. + * boolean includeMetadata - include the user and admin metadata in the returned * information. Default false. * boolean ignoreErrors - Don't throw an exception if an object cannot * be accessed; return null for that object's information and path instead. @@ -33,6 +35,7 @@ @Generated("com.googlecode.jsonschema2pojo") @JsonPropertyOrder({ "objects", + "infostruct", "includeMetadata", "ignoreErrors" }) @@ -40,6 +43,8 @@ public class GetObjectInfo3Params { @JsonProperty("objects") private List objects; + @JsonProperty("infostruct") + private Long infostruct; @JsonProperty("includeMetadata") private Long includeMetadata; @JsonProperty("ignoreErrors") @@ -61,6 +66,21 @@ public GetObjectInfo3Params withObjects(List objects) { return this; } + @JsonProperty("infostruct") + public Long getInfostruct() { + return infostruct; + } + + @JsonProperty("infostruct") + public void setInfostruct(Long infostruct) { + this.infostruct = infostruct; + } + + public GetObjectInfo3Params withInfostruct(Long infostruct) { + this.infostruct = infostruct; + return this; + } + @JsonProperty("includeMetadata") public Long getIncludeMetadata() { return includeMetadata; @@ -103,7 +123,7 @@ public void setAdditionalProperties(String name, Object value) { @Override public String toString() { - return ((((((((("GetObjectInfo3Params"+" [objects=")+ objects)+", includeMetadata=")+ includeMetadata)+", ignoreErrors=")+ ignoreErrors)+", additionalProperties=")+ additionalProperties)+"]"); + return ((((((((((("GetObjectInfo3Params"+" [objects=")+ objects)+", infostruct=")+ infostruct)+", includeMetadata=")+ includeMetadata)+", ignoreErrors=")+ ignoreErrors)+", additionalProperties=")+ additionalProperties)+"]"); } } diff --git a/src/us/kbase/workspace/GetObjectInfo3Results.java b/src/us/kbase/workspace/GetObjectInfo3Results.java index 783e7daa..2e652ecb 100644 --- a/src/us/kbase/workspace/GetObjectInfo3Results.java +++ b/src/us/kbase/workspace/GetObjectInfo3Results.java @@ -20,6 +20,7 @@ * list infos - the object_info data for each object. * list paths - the path to the object through the object reference graph for * each object. All the references in the path are absolute. + * list infostructs - the ObjectInfo data for each object. * * */ @@ -27,7 +28,8 @@ @Generated("com.googlecode.jsonschema2pojo") @JsonPropertyOrder({ "infos", - "paths" + "paths", + "infostructs" }) public class GetObjectInfo3Results { @@ -35,6 +37,8 @@ public class GetObjectInfo3Results { private List>> infos; @JsonProperty("paths") private List> paths; + @JsonProperty("infostructs") + private List infostructs; private Map additionalProperties = new HashMap(); @JsonProperty("infos") @@ -67,6 +71,21 @@ public GetObjectInfo3Results withPaths(List> paths) { return this; } + @JsonProperty("infostructs") + public List getInfostructs() { + return infostructs; + } + + @JsonProperty("infostructs") + public void setInfostructs(List infostructs) { + this.infostructs = infostructs; + } + + public GetObjectInfo3Results withInfostructs(List infostructs) { + this.infostructs = infostructs; + return this; + } + @JsonAnyGetter public Map getAdditionalProperties() { return this.additionalProperties; @@ -79,7 +98,7 @@ public void setAdditionalProperties(java.lang.String name, Object value) { @Override public java.lang.String toString() { - return ((((((("GetObjectInfo3Results"+" [infos=")+ infos)+", paths=")+ paths)+", additionalProperties=")+ additionalProperties)+"]"); + return ((((((((("GetObjectInfo3Results"+" [infos=")+ infos)+", paths=")+ paths)+", infostructs=")+ infostructs)+", additionalProperties=")+ additionalProperties)+"]"); } } diff --git a/src/us/kbase/workspace/GetObjects2Params.java b/src/us/kbase/workspace/GetObjects2Params.java index 50e5c8c9..2084f8f2 100644 --- a/src/us/kbase/workspace/GetObjects2Params.java +++ b/src/us/kbase/workspace/GetObjects2Params.java @@ -24,6 +24,9 @@ * boolean ignoreErrors - Don't throw an exception if an object cannot * be accessed; return null for that object's information instead. * Default false. + * boolean infostruct - return the object information as a structure rather than a tuple. + * Default false. If true, ObjectData.path will be null as it is provided in + * the ObjectInfo data. * boolean no_data - return the provenance, references, and * object_info for this object without the object data. Default false. * boolean skip_external_system_updates - if the objects contain any external IDs, don't @@ -44,6 +47,7 @@ @JsonPropertyOrder({ "objects", "ignoreErrors", + "infostruct", "no_data", "skip_external_system_updates", "batch_external_system_updates" @@ -54,6 +58,8 @@ public class GetObjects2Params { private List objects; @JsonProperty("ignoreErrors") private Long ignoreErrors; + @JsonProperty("infostruct") + private Long infostruct; @JsonProperty("no_data") private Long noData; @JsonProperty("skip_external_system_updates") @@ -92,6 +98,21 @@ public GetObjects2Params withIgnoreErrors(Long ignoreErrors) { return this; } + @JsonProperty("infostruct") + public Long getInfostruct() { + return infostruct; + } + + @JsonProperty("infostruct") + public void setInfostruct(Long infostruct) { + this.infostruct = infostruct; + } + + public GetObjects2Params withInfostruct(Long infostruct) { + this.infostruct = infostruct; + return this; + } + @JsonProperty("no_data") public Long getNoData() { return noData; @@ -149,7 +170,7 @@ public void setAdditionalProperties(String name, Object value) { @Override public String toString() { - return ((((((((((((("GetObjects2Params"+" [objects=")+ objects)+", ignoreErrors=")+ ignoreErrors)+", noData=")+ noData)+", skipExternalSystemUpdates=")+ skipExternalSystemUpdates)+", batchExternalSystemUpdates=")+ batchExternalSystemUpdates)+", additionalProperties=")+ additionalProperties)+"]"); + return ((((((((((((((("GetObjects2Params"+" [objects=")+ objects)+", ignoreErrors=")+ ignoreErrors)+", infostruct=")+ infostruct)+", noData=")+ noData)+", skipExternalSystemUpdates=")+ skipExternalSystemUpdates)+", batchExternalSystemUpdates=")+ batchExternalSystemUpdates)+", additionalProperties=")+ additionalProperties)+"]"); } } diff --git a/src/us/kbase/workspace/ObjectData.java b/src/us/kbase/workspace/ObjectData.java index 9abe31d3..ea40dc17 100644 --- a/src/us/kbase/workspace/ObjectData.java +++ b/src/us/kbase/workspace/ObjectData.java @@ -20,6 +20,7 @@ * The data and supplemental info for an object. * UnspecifiedObject data - the object's data or subset data. * object_info info - information about the object. + * ObjectInfo infostruct - information about the object as a structure rather than a tuple. * list path - the path to the object through the object reference graph. All the * references in the path are absolute. * list provenance - the object's provenance. @@ -53,6 +54,7 @@ @JsonPropertyOrder({ "data", "info", + "infostruct", "path", "provenance", "creator", @@ -72,6 +74,31 @@ public class ObjectData { private UObject data; @JsonProperty("info") private Tuple11 > info; + /** + *

Original spec-file type: ObjectInfo

+ *
+     * Information about an object as a struct rather than a tuple.
+     * This allows adding fields in a backward compatible way in the future.
+     * Includes more fields than object_info.
+     * obj_id objid - the numerical id of the object.
+     * obj_name name - the name of the object.
+     * type_string type - the type of the object.
+     * timestamp save_date - the save date of the object.
+     * obj_ver ver - the version of the object.
+     * username saved_by - the user that saved or copied the object.
+     * ws_id wsid - the workspace containing the object.
+     * ws_name workspace - the workspace containing the object.
+     * string chsum - the md5 checksum of the object.
+     * int size - the size of the object in bytes.
+     * usermeta meta - arbitrary user-supplied metadata about the object.
+     * usermeta adminmeta - service administrator metadata set on an object. Unlike most
+     *         other object fields, admin metadata is mutable.
+     * list path - the path to the object.
+     * 
+ * + */ + @JsonProperty("infostruct") + private ObjectInfo infostruct; @JsonProperty("path") private List path; @JsonProperty("provenance") @@ -128,6 +155,67 @@ public ObjectData withInfo(Tuple11 Original spec-file type: ObjectInfo

+ *
+     * Information about an object as a struct rather than a tuple.
+     * This allows adding fields in a backward compatible way in the future.
+     * Includes more fields than object_info.
+     * obj_id objid - the numerical id of the object.
+     * obj_name name - the name of the object.
+     * type_string type - the type of the object.
+     * timestamp save_date - the save date of the object.
+     * obj_ver ver - the version of the object.
+     * username saved_by - the user that saved or copied the object.
+     * ws_id wsid - the workspace containing the object.
+     * ws_name workspace - the workspace containing the object.
+     * string chsum - the md5 checksum of the object.
+     * int size - the size of the object in bytes.
+     * usermeta meta - arbitrary user-supplied metadata about the object.
+     * usermeta adminmeta - service administrator metadata set on an object. Unlike most
+     *         other object fields, admin metadata is mutable.
+     * list path - the path to the object.
+     * 
+ * + */ + @JsonProperty("infostruct") + public ObjectInfo getInfostruct() { + return infostruct; + } + + /** + *

Original spec-file type: ObjectInfo

+ *
+     * Information about an object as a struct rather than a tuple.
+     * This allows adding fields in a backward compatible way in the future.
+     * Includes more fields than object_info.
+     * obj_id objid - the numerical id of the object.
+     * obj_name name - the name of the object.
+     * type_string type - the type of the object.
+     * timestamp save_date - the save date of the object.
+     * obj_ver ver - the version of the object.
+     * username saved_by - the user that saved or copied the object.
+     * ws_id wsid - the workspace containing the object.
+     * ws_name workspace - the workspace containing the object.
+     * string chsum - the md5 checksum of the object.
+     * int size - the size of the object in bytes.
+     * usermeta meta - arbitrary user-supplied metadata about the object.
+     * usermeta adminmeta - service administrator metadata set on an object. Unlike most
+     *         other object fields, admin metadata is mutable.
+     * list path - the path to the object.
+     * 
+ * + */ + @JsonProperty("infostruct") + public void setInfostruct(ObjectInfo infostruct) { + this.infostruct = infostruct; + } + + public ObjectData withInfostruct(ObjectInfo infostruct) { + this.infostruct = infostruct; + return this; + } + @JsonProperty("path") public List getPath() { return path; @@ -320,7 +408,7 @@ public void setAdditionalProperties(java.lang.String name, Object value) { @Override public java.lang.String toString() { - return ((((((((((((((((((((((((((((((("ObjectData"+" [data=")+ data)+", info=")+ info)+", path=")+ path)+", provenance=")+ provenance)+", creator=")+ creator)+", origWsid=")+ origWsid)+", created=")+ created)+", epoch=")+ epoch)+", refs=")+ refs)+", copied=")+ copied)+", copySourceInaccessible=")+ copySourceInaccessible)+", extractedIds=")+ extractedIds)+", handleError=")+ handleError)+", handleStacktrace=")+ handleStacktrace)+", additionalProperties=")+ additionalProperties)+"]"); + return ((((((((((((((((((((((((((((((((("ObjectData"+" [data=")+ data)+", info=")+ info)+", infostruct=")+ infostruct)+", path=")+ path)+", provenance=")+ provenance)+", creator=")+ creator)+", origWsid=")+ origWsid)+", created=")+ created)+", epoch=")+ epoch)+", refs=")+ refs)+", copied=")+ copied)+", copySourceInaccessible=")+ copySourceInaccessible)+", extractedIds=")+ extractedIds)+", handleError=")+ handleError)+", handleStacktrace=")+ handleStacktrace)+", additionalProperties=")+ additionalProperties)+"]"); } } diff --git a/src/us/kbase/workspace/ObjectInfo.java b/src/us/kbase/workspace/ObjectInfo.java new file mode 100644 index 00000000..18d45a79 --- /dev/null +++ b/src/us/kbase/workspace/ObjectInfo.java @@ -0,0 +1,295 @@ + +package us.kbase.workspace; + +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import javax.annotation.Generated; +import com.fasterxml.jackson.annotation.JsonAnyGetter; +import com.fasterxml.jackson.annotation.JsonAnySetter; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonPropertyOrder; + + +/** + *

Original spec-file type: ObjectInfo

+ *
+ * Information about an object as a struct rather than a tuple.
+ * This allows adding fields in a backward compatible way in the future.
+ * Includes more fields than object_info.
+ * obj_id objid - the numerical id of the object.
+ * obj_name name - the name of the object.
+ * type_string type - the type of the object.
+ * timestamp save_date - the save date of the object.
+ * obj_ver ver - the version of the object.
+ * username saved_by - the user that saved or copied the object.
+ * ws_id wsid - the workspace containing the object.
+ * ws_name workspace - the workspace containing the object.
+ * string chsum - the md5 checksum of the object.
+ * int size - the size of the object in bytes.
+ * usermeta meta - arbitrary user-supplied metadata about the object.
+ * usermeta adminmeta - service administrator metadata set on an object. Unlike most
+ *         other object fields, admin metadata is mutable.
+ * list path - the path to the object.
+ * 
+ * + */ +@JsonInclude(JsonInclude.Include.NON_NULL) +@Generated("com.googlecode.jsonschema2pojo") +@JsonPropertyOrder({ + "objid", + "name", + "type", + "save_date", + "version", + "saved_by", + "wsid", + "workspace", + "chsum", + "size", + "meta", + "adminmeta", + "path" +}) +public class ObjectInfo { + + @JsonProperty("objid") + private Long objid; + @JsonProperty("name") + private java.lang.String name; + @JsonProperty("type") + private java.lang.String type; + @JsonProperty("save_date") + private java.lang.String saveDate; + @JsonProperty("version") + private Long version; + @JsonProperty("saved_by") + private java.lang.String savedBy; + @JsonProperty("wsid") + private Long wsid; + @JsonProperty("workspace") + private java.lang.String workspace; + @JsonProperty("chsum") + private java.lang.String chsum; + @JsonProperty("size") + private Long size; + @JsonProperty("meta") + private Map meta; + @JsonProperty("adminmeta") + private Map adminmeta; + @JsonProperty("path") + private List path; + private Map additionalProperties = new HashMap(); + + @JsonProperty("objid") + public Long getObjid() { + return objid; + } + + @JsonProperty("objid") + public void setObjid(Long objid) { + this.objid = objid; + } + + public ObjectInfo withObjid(Long objid) { + this.objid = objid; + return this; + } + + @JsonProperty("name") + public java.lang.String getName() { + return name; + } + + @JsonProperty("name") + public void setName(java.lang.String name) { + this.name = name; + } + + public ObjectInfo withName(java.lang.String name) { + this.name = name; + return this; + } + + @JsonProperty("type") + public java.lang.String getType() { + return type; + } + + @JsonProperty("type") + public void setType(java.lang.String type) { + this.type = type; + } + + public ObjectInfo withType(java.lang.String type) { + this.type = type; + return this; + } + + @JsonProperty("save_date") + public java.lang.String getSaveDate() { + return saveDate; + } + + @JsonProperty("save_date") + public void setSaveDate(java.lang.String saveDate) { + this.saveDate = saveDate; + } + + public ObjectInfo withSaveDate(java.lang.String saveDate) { + this.saveDate = saveDate; + return this; + } + + @JsonProperty("version") + public Long getVersion() { + return version; + } + + @JsonProperty("version") + public void setVersion(Long version) { + this.version = version; + } + + public ObjectInfo withVersion(Long version) { + this.version = version; + return this; + } + + @JsonProperty("saved_by") + public java.lang.String getSavedBy() { + return savedBy; + } + + @JsonProperty("saved_by") + public void setSavedBy(java.lang.String savedBy) { + this.savedBy = savedBy; + } + + public ObjectInfo withSavedBy(java.lang.String savedBy) { + this.savedBy = savedBy; + return this; + } + + @JsonProperty("wsid") + public Long getWsid() { + return wsid; + } + + @JsonProperty("wsid") + public void setWsid(Long wsid) { + this.wsid = wsid; + } + + public ObjectInfo withWsid(Long wsid) { + this.wsid = wsid; + return this; + } + + @JsonProperty("workspace") + public java.lang.String getWorkspace() { + return workspace; + } + + @JsonProperty("workspace") + public void setWorkspace(java.lang.String workspace) { + this.workspace = workspace; + } + + public ObjectInfo withWorkspace(java.lang.String workspace) { + this.workspace = workspace; + return this; + } + + @JsonProperty("chsum") + public java.lang.String getChsum() { + return chsum; + } + + @JsonProperty("chsum") + public void setChsum(java.lang.String chsum) { + this.chsum = chsum; + } + + public ObjectInfo withChsum(java.lang.String chsum) { + this.chsum = chsum; + return this; + } + + @JsonProperty("size") + public Long getSize() { + return size; + } + + @JsonProperty("size") + public void setSize(Long size) { + this.size = size; + } + + public ObjectInfo withSize(Long size) { + this.size = size; + return this; + } + + @JsonProperty("meta") + public Map getMeta() { + return meta; + } + + @JsonProperty("meta") + public void setMeta(Map meta) { + this.meta = meta; + } + + public ObjectInfo withMeta(Map meta) { + this.meta = meta; + return this; + } + + @JsonProperty("adminmeta") + public Map getAdminmeta() { + return adminmeta; + } + + @JsonProperty("adminmeta") + public void setAdminmeta(Map adminmeta) { + this.adminmeta = adminmeta; + } + + public ObjectInfo withAdminmeta(Map adminmeta) { + this.adminmeta = adminmeta; + return this; + } + + @JsonProperty("path") + public List getPath() { + return path; + } + + @JsonProperty("path") + public void setPath(List path) { + this.path = path; + } + + public ObjectInfo withPath(List path) { + this.path = path; + return this; + } + + @JsonAnyGetter + public Map getAdditionalProperties() { + return this.additionalProperties; + } + + @JsonAnySetter + public void setAdditionalProperties(java.lang.String name, Object value) { + this.additionalProperties.put(name, value); + } + + @Override + public java.lang.String toString() { + return ((((((((((((((((((((((((((((("ObjectInfo"+" [objid=")+ objid)+", name=")+ name)+", type=")+ type)+", saveDate=")+ saveDate)+", version=")+ version)+", savedBy=")+ savedBy)+", wsid=")+ wsid)+", workspace=")+ workspace)+", chsum=")+ chsum)+", size=")+ size)+", meta=")+ meta)+", adminmeta=")+ adminmeta)+", path=")+ path)+", additionalProperties=")+ additionalProperties)+"]"); + } + +} diff --git a/src/us/kbase/workspace/WorkspaceClient.java b/src/us/kbase/workspace/WorkspaceClient.java index 5dd35f47..dfb672bc 100644 --- a/src/us/kbase/workspace/WorkspaceClient.java +++ b/src/us/kbase/workspace/WorkspaceClient.java @@ -1382,6 +1382,23 @@ public GetAdminRoleResults getAdminRole(RpcContext... jsonRpcContext) throws IOE return res.get(0); } + /** + *

Original spec-file function name: alter_admin_object_metadata

+ *
+     * Update admin metadata for an object. The user must have full workspace service
+     * administration privileges.
+     * 
+ * @param params instance of type {@link us.kbase.workspace.AlterAdminObjectMetadataParams AlterAdminObjectMetadataParams} + * @throws IOException if an IO exception occurs + * @throws JsonClientException if a JSON RPC exception occurs + */ + public void alterAdminObjectMetadata(AlterAdminObjectMetadataParams params, RpcContext... jsonRpcContext) throws IOException, JsonClientException { + List args = new ArrayList(); + args.add(params); + TypeReference retType = new TypeReference() {}; + caller.jsonrpcCall("Workspace.alter_admin_object_metadata", args, retType, false, true, jsonRpcContext, this.serviceVersion); + } + /** *

Original spec-file function name: administer

*
diff --git a/src/us/kbase/workspace/WorkspaceServer.java b/src/us/kbase/workspace/WorkspaceServer.java
index e55edbbe..317a8a8b 100644
--- a/src/us/kbase/workspace/WorkspaceServer.java
+++ b/src/us/kbase/workspace/WorkspaceServer.java
@@ -102,7 +102,7 @@ public class WorkspaceServer extends JsonServerServlet {
     private static final long serialVersionUID = 1L;
     private static final String version = "0.0.1";
     private static final String gitUrl = "https://github.com/mrcreosote/workspace_deluxe";
-    private static final String gitCommitHash = "f896c7f497c8780a470487cec1f3434d2fcfed80";
+    private static final String gitCommitHash = "5154d57474407fb8e21e5bcd238c6db20666fca8";
 
     //BEGIN_CLASS_HEADER
 	//TODO JAVADOC really low priority, sorry
@@ -797,7 +797,7 @@ public List getObjects(List objectIds, AuthToken aut
 		final List objects =
 				ws.getObjects(wsmeth.getUser(authPart), loi, false, false, false);
 		resourcesToDelete.set(objects);
-		returnVal = wsmeth.translateObjectData(objects, wsmeth.getUser(authPart), true);
+		returnVal = wsmeth.translateObjectData(objects, wsmeth.getUser(authPart));
         //END get_objects
         return returnVal;
     }
@@ -849,7 +849,7 @@ public List getObjectSubset(List subObjectIds, Au
 		final List objects =
 				ws.getObjects(wsmeth.getUser(authPart), loi, false, false, false);
 		resourcesToDelete.set(objects);
-		returnVal = wsmeth.translateObjectData(objects, wsmeth.getUser(authPart), true);
+		returnVal = wsmeth.translateObjectData(objects, wsmeth.getUser(authPart));
         //END get_object_subset
         return returnVal;
     }
@@ -972,7 +972,7 @@ public List getReferencedObjects(List> refChain
 		final List objects = ws.getObjects(
 				wsmeth.getUser(authPart), chains, false, false, false);
 		resourcesToDelete.set(objects);
-		returnVal = wsmeth.translateObjectData(objects, wsmeth.getUser(authPart), true);
+		returnVal = wsmeth.translateObjectData(objects, wsmeth.getUser(authPart));
         //END get_referenced_objects
         return returnVal;
     }
@@ -1703,6 +1703,26 @@ public GetAdminRoleResults getAdminRole(AuthToken authPart, RpcContext jsonRpcCo
         return returnVal;
     }
 
+    /**
+     * 

Original spec-file function name: alter_admin_object_metadata

+ *
+     * Update admin metadata for an object. The user must have full workspace service
+     * administration privileges.
+     * 
+ * @param params instance of type {@link us.kbase.workspace.AlterAdminObjectMetadataParams AlterAdminObjectMetadataParams} + */ + @JsonServerMethod(rpc = "Workspace.alter_admin_object_metadata", async=true) + public void alterAdminObjectMetadata(AlterAdminObjectMetadataParams params, AuthToken authPart, RpcContext jsonRpcContext) throws Exception { + //BEGIN alter_admin_object_metadata + wsadmin.ensureAdminRole( + authPart, + AdminRole.ADMIN, + "Full workspace serivce administrator permissions are required to alter " + + "object metadata"); + wsmeth.setAdminObjectMetadata(params); + //END alter_admin_object_metadata + } + /** *

Original spec-file function name: administer

*
diff --git a/src/us/kbase/workspace/database/Workspace.java b/src/us/kbase/workspace/database/Workspace.java
index 2fff2c39..a0b843f2 100644
--- a/src/us/kbase/workspace/database/Workspace.java
+++ b/src/us/kbase/workspace/database/Workspace.java
@@ -1649,6 +1649,9 @@ public Map setAdminObjectMetadata(
 		if (update.isEmpty()) {
 			return Collections.emptyMap();
 		}
+		if (update.size() > 1000) {
+			throw new IllegalArgumentException("No more than 1000 updates can be applied at once");
+		}
 		for (final ObjectIdentifier oi: update.keySet()) {
 			if (oi.isLookupRequired() || oi.hasRefPath()) {
 				throw new IllegalArgumentException(
diff --git a/src/us/kbase/workspace/database/mongo/MongoWorkspaceDB.java b/src/us/kbase/workspace/database/mongo/MongoWorkspaceDB.java
index 62327574..9aba5ad0 100644
--- a/src/us/kbase/workspace/database/mongo/MongoWorkspaceDB.java
+++ b/src/us/kbase/workspace/database/mongo/MongoWorkspaceDB.java
@@ -722,8 +722,6 @@ public Optional setWorkspaceMeta(
 			throw new RuntimeException("You divided by zero, didn't you, you absolute muppet", e);
 		}
 	}
-
-	
 	
 	@Override
 	public Map setAdminObjectMeta(
diff --git a/src/us/kbase/workspace/kbase/ArgUtils.java b/src/us/kbase/workspace/kbase/ArgUtils.java
index ef71ccaf..040c3748 100644
--- a/src/us/kbase/workspace/kbase/ArgUtils.java
+++ b/src/us/kbase/workspace/kbase/ArgUtils.java
@@ -1,5 +1,6 @@
 package us.kbase.workspace.kbase;
 
+import static java.util.Objects.requireNonNull;
 import static us.kbase.common.utils.ServiceUtils.checkAddlArgs;
 import static us.kbase.workspace.kbase.KBasePermissions.PERM_NONE;
 import static us.kbase.workspace.kbase.KBasePermissions.PERM_READ;
@@ -39,6 +40,7 @@
 import us.kbase.typedobj.idref.IdReferenceType;
 import us.kbase.workspace.ExternalDataUnit;
 import us.kbase.workspace.ObjectData;
+import us.kbase.workspace.ObjectInfo;
 import us.kbase.workspace.database.ObjectInformation;
 import us.kbase.workspace.database.Permission;
 import us.kbase.workspace.database.Reference;
@@ -350,7 +352,41 @@ public static List> w
 		}
 		return ret;
 	}
-
+	
+	private static ObjectInfo objInfoToClass(
+			final ObjectInformation oi,
+			final boolean nullForEmptyMeta) {
+		requireNonNull(oi, "oi");
+		getLogger().info("Object {}/{}/{} {}", oi.getWorkspaceId(),
+				oi.getObjectId(), oi.getVersion(),
+				oi.getTypeString());
+		return new ObjectInfo()
+				.withObjid(oi.getObjectId())
+				.withName(oi.getObjectName())
+				.withType(oi.getTypeString())
+				.withSaveDate(formatDate(oi.getSavedDate()))
+				.withVersion(Long.valueOf(oi.getVersion()))
+				.withSavedBy(oi.getSavedBy().getUser())
+				.withWsid(oi.getWorkspaceId())
+				.withWorkspace(oi.getWorkspaceName())
+				.withChsum(oi.getCheckSum())
+				.withSize(oi.getSize())
+				.withMeta(oi.getUserMetaDataMap(nullForEmptyMeta))
+				.withAdminmeta(oi.getAdminUserMetaDataMap(nullForEmptyMeta))
+				.withPath(toObjectPath(oi.getReferencePath()));
+	}
+
+	/** Translate a list of object information internal class instances to their KB-SDK equivalent.
+	 * @param ois the object informations.
+	 * @param nullForEmptyMeta if meta data is missing, return null rather than an empty map.
+	 * @return the translated object informations.
+	 */
+	public static List objInfoToClass(
+			final List ois,
+			final boolean nullForEmptyMeta) {
+		return ois.stream().map(o -> objInfoToClass(o, nullForEmptyMeta))
+				.collect(Collectors.toList());
+	}
 
 	public static Tuple12, Long>
@@ -407,14 +443,14 @@ public static List> w
 	 * speed up the updates, but the drawback is that if the external update fails for any object,
 	 * all the objects that required updates for that system will be marked as having a failed
 	 * update. Has no effect if the permissions handler is not present.
-	 * @param logObjects if true, log the object ref and type.
+	 * @param objectInfoAsClass return the object information as a Class rather than a Tuple.
 	 * @return the translated objects.
 	 */
 	public static List translateObjectData(
 			final List objects,
 			final Optional permHandler,
 			final boolean batchExternalUpdates,
-			final boolean logObjects) {
+			final boolean objectInfoAsClass) {
 		final List ret = new ArrayList();
 		Map errs = null;
 		if (batchExternalUpdates) {
@@ -436,10 +472,8 @@ public static List translateObjectData(
 				throw new RuntimeException(
 						"An unexpected error occurred: " + e.getLocalizedMessage(), e);
 			}
-			ret.add(new ObjectData()
+			final ObjectData od = new ObjectData()
 					.withData(data)
-					.withInfo(objInfoToTuple(o.getObjectInfo(), logObjects, false))
-					.withPath(toObjectPath(o.getObjectInfo().getReferencePath()))
 					.withProvenance(translateProvenanceActions(o.getProvenance().getActions()))
 					.withCreator(o.getProvenance().getUser().getUser())
 					.withOrigWsid(o.getProvenance().getWorkspaceID().orElse(null))
@@ -451,7 +485,14 @@ public static List translateObjectData(
 					.withCopySourceInaccessible(o.isCopySourceInaccessible() ? 1L: 0L)
 					.withExtractedIds(toRawExternalIDs(o.getExtractedIds()))
 					.withHandleError(errs.get(o).error)
-					.withHandleStacktrace(errs.get(o).stackTrace));
+					.withHandleStacktrace(errs.get(o).stackTrace);
+			if (objectInfoAsClass) {
+				od.withInfostruct(objInfoToClass(o.getObjectInfo(), false));
+			} else {
+				od.withInfo(objInfoToTuple(o.getObjectInfo(), true, false))
+						.withPath(toObjectPath(o.getObjectInfo().getReferencePath()));
+			}
+			ret.add(od);
 		}
 		return ret;
 	}
diff --git a/src/us/kbase/workspace/kbase/WorkspaceServerMethods.java b/src/us/kbase/workspace/kbase/WorkspaceServerMethods.java
index 581522d4..52d7d31a 100644
--- a/src/us/kbase/workspace/kbase/WorkspaceServerMethods.java
+++ b/src/us/kbase/workspace/kbase/WorkspaceServerMethods.java
@@ -11,6 +11,7 @@
 import static us.kbase.workspace.kbase.ArgUtils.longToBoolean;
 import static us.kbase.workspace.kbase.ArgUtils.longToInt;
 import static us.kbase.workspace.kbase.ArgUtils.objInfoToTuple;
+import static us.kbase.workspace.kbase.ArgUtils.objInfoToClass;
 import static us.kbase.workspace.kbase.IdentifierUtils.processObjectIdentifier;
 import static us.kbase.workspace.kbase.IdentifierUtils.processObjectSpecifications;
 import static us.kbase.workspace.kbase.IdentifierUtils.processWorkspaceIdentifier;
@@ -432,8 +433,14 @@ public GetObjectInfo3Results getObjectInformation(
 				includeMeta,
 				longToBoolean(params.getIgnoreErrors()),
 				asAdmin);
-		return new GetObjectInfo3Results().withInfos(objInfoToTuple(infos, true, !includeMeta))
-				.withPaths(toObjectPaths(infos));
+		if (longToBoolean(params.getInfostruct(), false)) {
+			return new GetObjectInfo3Results()
+					.withInfostructs(objInfoToClass(infos, !includeMeta));
+		} else {
+			return new GetObjectInfo3Results().withInfos(
+					objInfoToTuple(infos, true, !includeMeta))
+					.withPaths(toObjectPaths(infos));
+		}
 	}
 	
 	/** Get objects.
@@ -477,7 +484,7 @@ public GetObjects2Results getObjects(
 				user,
 				longToBoolean(params.getSkipExternalSystemUpdates(), false),
 				longToBoolean(params.getBatchExternalSystemUpdates(), false),
-				true)); // log objects
+				longToBoolean(params.getInfostruct(), false)));
 	}
 
 	private IdReferencePermissionHandlerSet getPermissionsHandler(final WorkspaceUser user) {
@@ -492,9 +499,8 @@ private IdReferencePermissionHandlerSet getPermissionsHandler(final WorkspaceUse
 	
 	public List translateObjectData(
 			final List objects, 
-			final WorkspaceUser user,
-			final boolean logObjects) {
-		return translateObjectData(objects, user, false, false, logObjects);
+			final WorkspaceUser user) {
+		return translateObjectData(objects, user, false, false, false);
 	}
 	
 	private List translateObjectData(
@@ -502,11 +508,11 @@ private List translateObjectData(
 			final WorkspaceUser user,
 			final boolean skipExternalSystemUpdates,
 			final boolean batchExternalSystemUpdates,
-			final boolean logObjects) {
+			final boolean objectInfoAsClass) {
 		final Optional handlers = skipExternalSystemUpdates ? 
 				Optional.empty() : Optional.of(getPermissionsHandler(user));
 		return ArgUtils.translateObjectData(
-				objects, handlers, batchExternalSystemUpdates, logObjects);
+				objects, handlers, batchExternalSystemUpdates, objectInfoAsClass);
 	}
 	
 	@SuppressWarnings("deprecation")
@@ -673,6 +679,7 @@ public void setAdminObjectMetadata(final AlterAdminObjectMetadataParams params)
 			throw new IllegalArgumentException("updates list cannot be empty");
 		}
 		final Map update = new HashMap<>();
+		final Map oimap = new HashMap<>(); 
 		final ListIterator iter = params.getUpdates().listIterator();
 		while (iter.hasNext()) {
 			try {
@@ -684,7 +691,9 @@ public void setAdminObjectMetadata(final AlterAdminObjectMetadataParams params)
 				if (!mu.hasUpdate()) {
 					throw new IllegalArgumentException("A metadata update is required");
 				}
-				update.put(processObjectIdentifier(u.getOi()), mu);
+				final ObjectIdentifier oi = processObjectIdentifier(u.getOi());
+				oimap.put(u.getOi(), oi);
+				update.put(oi, mu);
 			} catch (NullPointerException | IllegalArgumentException | MetadataException e) {
 				// TODO CODE user caused exceptions should be checked & have custom classes
 				//           in preparation for adding error codes. Will need to do this if
@@ -696,7 +705,8 @@ public void setAdminObjectMetadata(final AlterAdminObjectMetadataParams params)
 			}
 		}
 		final Map objs = ws.setAdminObjectMetadata(update);
-		for (final ResolvedObjectID r: objs.values()) {
+		for (final ObjectMetadataUpdate u: params.getUpdates()) {
+			final ResolvedObjectID r = objs.get(oimap.get(u.getOi()));
 			getLogger().info("Object {}/{}/{}",
 					r.getWorkspaceIdentifier().getID(),
 					r.getId(),
diff --git a/src/us/kbase/workspace/test/kbase/JSONRPCLayerTest.java b/src/us/kbase/workspace/test/kbase/JSONRPCLayerTest.java
index 3ae526ac..656411f1 100644
--- a/src/us/kbase/workspace/test/kbase/JSONRPCLayerTest.java
+++ b/src/us/kbase/workspace/test/kbase/JSONRPCLayerTest.java
@@ -42,6 +42,7 @@
 import us.kbase.common.service.Tuple9;
 import us.kbase.common.service.UObject;
 import us.kbase.common.service.UnauthorizedException;
+import us.kbase.workspace.AlterAdminObjectMetadataParams;
 import us.kbase.workspace.AlterWorkspaceMetadataParams;
 import us.kbase.workspace.CloneWorkspaceParams;
 import us.kbase.workspace.CopyObjectParams;
@@ -65,6 +66,7 @@
 import us.kbase.workspace.ModuleVersions;
 import us.kbase.workspace.ObjectData;
 import us.kbase.workspace.ObjectIdentity;
+import us.kbase.workspace.ObjectMetadataUpdate;
 import us.kbase.workspace.ObjectSaveData;
 import us.kbase.workspace.ObjectSpecification;
 import us.kbase.workspace.ProvenanceAction;
@@ -962,18 +964,15 @@ public void saveAndGetObjects() throws Exception {
 				new WorkspaceIdentity().withWorkspace("saveget")).getE1();
 
 		//save some objects to get
-		Map data = new HashMap();
-		Map data2 = new HashMap();
-		Map meta = new HashMap();
-		Map moredata = new HashMap();
-		moredata.put("foo", "bar");
-		data.put("fubar", moredata);
-		data2.put("fubar2", moredata);
-		meta.put("metastuff", "meta");
-		Map meta2 = new HashMap();
-		meta2.put("meta2", "my hovercraft is full of eels");
-		List objects = new ArrayList();
-		SaveObjectsParams soc = new SaveObjectsParams().withWorkspace("saveget")
+		final Map moredata = ImmutableMap.of("foo", "bar");
+		final Map data = ImmutableMap.of("fubar", moredata);
+		final Map data2 = ImmutableMap.of("fubar2", moredata);
+		final Map meta = ImmutableMap.of("metastuff", "meta");
+		final Map meta2 = ImmutableMap.of("meta2", "my hovercraft is full of eels");
+		final Map mtmeta = Collections.emptyMap();
+
+		final List objects = new ArrayList();
+		final SaveObjectsParams soc = new SaveObjectsParams().withWorkspace("saveget")
 				.withObjects(objects);
 
 		try {
@@ -1043,7 +1042,7 @@ public void saveAndGetObjects() throws Exception {
 		loi.add(new ObjectIdentity().withWsid(wsid).withName("auto2").withVer(1L));
 		loi.add(new ObjectIdentity().withWsid(wsid).withObjid(2L).withVer(1L));
 		checkSavedObjects(loi, 2, "auto2", SAFE_TYPE, 1, USER1,
-				wsid, "saveget", "36c4f68f2c98971b9736839232eb08f4", 23, meta, data);
+				wsid, "saveget", "36c4f68f2c98971b9736839232eb08f4", 23, meta, mtmeta, data);
 		loi.clear();
 		// w/o versions
 		loi.add(new ObjectIdentity().withRef("saveget/2"));
@@ -1061,7 +1060,7 @@ public void saveAndGetObjects() throws Exception {
 		loi.add(new ObjectIdentity().withWsid(wsid).withObjid(2L).withVer(2L));
 
 		checkSavedObjects(loi, 2, "auto2", SAFE_TYPE, 2, USER1,
-				wsid, "saveget", "3c59f762140806c36ab48a152f28e840", 24, meta2, data2);
+				wsid, "saveget", "3c59f762140806c36ab48a152f28e840", 24, meta2, mtmeta, data2);
 
 		failGetObjects(new ArrayList(), "No object identifiers provided");
 
@@ -4276,6 +4275,137 @@ public void adminGetWorkspaceDescription() throws Exception {
 				is("my desc"));
 	}
 
+	@Test
+	public void alterAdminObjectMetadata() throws Exception {
+		final Map data = ImmutableMap.of("foo", "bar");
+		final UObject udata = new UObject(data); 
+		CLIENT1.createWorkspace(new CreateWorkspaceParams()
+				.withWorkspace("objadminmeta"));
+		
+		final ImmutableMap meta1 = ImmutableMap.of("1", "2");
+		final ImmutableMap meta2 = ImmutableMap.of("3", "4");
+		final ImmutableMap meta3 = ImmutableMap.of("5", "6");
+		final ImmutableMap meta4 = ImmutableMap.of("7", "8");
+		CLIENT1.saveObjects(new SaveObjectsParams()
+				.withId(1L)
+				.withObjects(Arrays.asList(
+						new ObjectSaveData().withType(SAFE_TYPE).withName("one").withData(udata)
+								.withMeta(meta1),
+						new ObjectSaveData().withType(SAFE_TYPE).withName("two").withData(udata)
+								.withMeta(meta2),
+						new ObjectSaveData().withType(SAFE_TYPE).withName("two").withData(udata)
+								.withMeta(meta3),
+						new ObjectSaveData().withType(SAFE_TYPE).withName("three").withData(udata)
+								.withMeta(meta4)
+				))
+		);
+		final ObjectIdentity oi1 = new ObjectIdentity().withRef("1/1/1");
+		final ObjectIdentity oi2_1 = new ObjectIdentity().withRef("1/2/1");
+		final ObjectIdentity oi2_2 = new ObjectIdentity().withRef("1/2/2");
+		final ObjectIdentity oi3 = new ObjectIdentity().withRef("1/3/1");
+		
+		CLIENT2.alterAdminObjectMetadata(new AlterAdminObjectMetadataParams()
+				.withUpdates(Arrays.asList(
+						new ObjectMetadataUpdate()
+								.withOi(new ObjectIdentity().withRef("1/1"))
+								.withNew(ImmutableMap.of("a", "b", "c", "d")),
+						new ObjectMetadataUpdate()
+								.withOi(new ObjectIdentity()
+										.withWorkspace("objadminmeta")
+										.withName("two")
+										.withVer(1L)
+								)
+								.withNew(ImmutableMap.of("e", "f", "h", "pointed stick")),
+						new ObjectMetadataUpdate()
+								.withOi(new ObjectIdentity().withWsid(1L).withObjid(2L))
+								.withNew(ImmutableMap.of("i", "j", "k", "iter var"))
+				))
+		);
+		checkSavedObjects(list(oi1), 1L, "one", SAFE_TYPE, 1, USER1, 1L, "objadminmeta",
+				"9bb58f26192e4ba00f01e2e7b136bbd8", 13L, meta1,
+				ImmutableMap.of("a", "b", "c", "d"), data);
+		checkSavedObjects(list(oi2_1), 2L, "two", SAFE_TYPE, 1, USER1, 1L, "objadminmeta",
+				"9bb58f26192e4ba00f01e2e7b136bbd8", 13L, meta2,
+				ImmutableMap.of("e", "f", "h", "pointed stick"), data);
+		checkSavedObjects(list(oi2_2), 2L, "two", SAFE_TYPE, 2, USER1, 1L, "objadminmeta",
+				"9bb58f26192e4ba00f01e2e7b136bbd8", 13L, meta3,
+				ImmutableMap.of("i", "j", "k", "iter var"), data);
+		checkSavedObjects(list(oi3), 3L, "three", SAFE_TYPE, 1, USER1, 1L, "objadminmeta",
+				"9bb58f26192e4ba00f01e2e7b136bbd8", 13L, meta4, MT_META, data);
+		
+		// test remove
+		CLIENT2.alterAdminObjectMetadata(new AlterAdminObjectMetadataParams()
+				.withUpdates(Arrays.asList(
+						new ObjectMetadataUpdate()
+								.withOi(new ObjectIdentity().withRef("1/1"))
+								.withNew(ImmutableMap.of("x", "y"))
+								.withRemove(Arrays.asList("c")),
+						new ObjectMetadataUpdate()
+								.withOi(new ObjectIdentity()
+										.withWorkspace("objadminmeta")
+										.withName("two")
+										.withVer(1L)
+								)
+								.withNew(ImmutableMap.of("e", "fresh fruit")),
+						new ObjectMetadataUpdate()
+								.withOi(new ObjectIdentity().withWsid(1L).withObjid(2L))
+								.withRemove(Arrays.asList("i", "k"))
+				))
+		);
+		checkSavedObjects(list(oi1), 1L, "one", SAFE_TYPE, 1, USER1, 1L, "objadminmeta",
+				"9bb58f26192e4ba00f01e2e7b136bbd8", 13L, meta1,
+				ImmutableMap.of("a", "b", "x", "y"), data);
+		checkSavedObjects(list(oi2_1), 2L, "two", SAFE_TYPE, 1, USER1, 1L, "objadminmeta",
+				"9bb58f26192e4ba00f01e2e7b136bbd8", 13L, meta2,
+				ImmutableMap.of("e", "fresh fruit", "h", "pointed stick"), data);
+		checkSavedObjects(list(oi2_2), 2L, "two", SAFE_TYPE, 2, USER1, 1L, "objadminmeta",
+				"9bb58f26192e4ba00f01e2e7b136bbd8", 13L, meta3, MT_META, data);
+		checkSavedObjects(list(oi3), 3L, "three", SAFE_TYPE, 1, USER1, 1L, "objadminmeta",
+				"9bb58f26192e4ba00f01e2e7b136bbd8", 13L, meta4, MT_META, data);
+	}
+	
+	
+	@Test
+	public void alterAdminObjectMetaFailPerms() throws Exception {
+		final String err = "Full workspace serivce administrator permissions are required to "
+				+ "alter object metadata";
+		// standard admin handler
+		alterAdminObjectMetaFail(CLIENT1, new AlterAdminObjectMetadataParams(),
+				new ServerException(err, 1, "name"));
+		// auth service admin handler
+		alterAdminObjectMetaFail(CLIENT_AA_ADMIN_NONE, new AlterAdminObjectMetadataParams(),
+				new ServerException(err, 1, "name"));
+		alterAdminObjectMetaFail(CLIENT_AA_ADMIN_READ, new AlterAdminObjectMetadataParams(),
+				new ServerException(err, 1, "name"));
+	}
+	
+	@Test
+	public void alterAdminObjectMetaFail() throws Exception {
+		// test a couple examples of failing calls; unit tests cover everything so no need to get
+		// too thorough
+		final AlterAdminObjectMetadataParams params = new AlterAdminObjectMetadataParams()
+				.withUpdates(Arrays.asList(new ObjectMetadataUpdate()
+						.withOi(new ObjectIdentity().withRef("3/1"))
+				));
+		alterAdminObjectMetaFail( CLIENT2, params, new ServerException(
+				"Error processing update index 0: A metadata update is required", 1, "name"));
+		
+		params.getUpdates().get(0).withRemove(Arrays.asList("foo"));
+		alterAdminObjectMetaFail(CLIENT2, params, new ServerException(
+				"Object 1 cannot be accessed: No workspace with id 3 exists", 1, "name"));
+	}
+	
+	private void alterAdminObjectMetaFail(
+			final WorkspaceClient client,
+			final AlterAdminObjectMetadataParams update,
+			final Exception expected) {
+		try {
+			client.alterAdminObjectMetadata(update);
+			fail("expected exception");
+		} catch (Exception got) {
+			assertExceptionCorrect(got, expected);
+		}
+	}
 
 	@Test
 	public void getAllWorkspaceOwners() throws Exception {
diff --git a/src/us/kbase/workspace/test/kbase/JSONRPCLayerTester.java b/src/us/kbase/workspace/test/kbase/JSONRPCLayerTester.java
index 58451e23..53bab68a 100644
--- a/src/us/kbase/workspace/test/kbase/JSONRPCLayerTester.java
+++ b/src/us/kbase/workspace/test/kbase/JSONRPCLayerTester.java
@@ -2,6 +2,7 @@
 
 import static org.hamcrest.CoreMatchers.is;
 import static org.hamcrest.CoreMatchers.containsString;
+import static org.hamcrest.CoreMatchers.nullValue;
 import static org.junit.Assert.assertNull;
 import static org.junit.Assert.assertThat;
 import static org.junit.Assert.assertTrue;
@@ -60,6 +61,7 @@
 import us.kbase.workspace.ListWorkspaceInfoParams;
 import us.kbase.workspace.ObjectData;
 import us.kbase.workspace.ObjectIdentity;
+import us.kbase.workspace.ObjectInfo;
 import us.kbase.workspace.ObjectSpecification;
 import us.kbase.workspace.ProvenanceAction;
 import us.kbase.workspace.RegisterTypespecParams;
@@ -1006,10 +1008,22 @@ protected void failGetObjects(List loi, String exception)
 		}
 	}
 
+	// expects all the object identities to point to the same object
 	@SuppressWarnings("deprecation")
-	protected void checkSavedObjects(List loi, long id, String name,
-			String type, int ver, String user, long wsid, String wsname, String chksum, long size,
-			Map meta, Map data) throws Exception {
+	protected void checkSavedObjects(
+			final List loi,
+			final long id,
+			final String name,
+			final String type,
+			final int ver,
+			final String user,
+			final long wsid,
+			final String wsname,
+			final String chksum,
+			final long size,
+			final Map meta,
+			final Map data)
+			throws Exception {
 
 		List retdata = CLIENT1.getObjects2(new GetObjects2Params()
 				.withObjects(toObjSpec(loi))).getData();
@@ -1031,7 +1045,7 @@ protected void checkSavedObjects(List loi, long id, String name,
 					chksum, size, meta, data);
 		}
 
-		List prov2 = CLIENT1.getObjects2(new GetObjects2Params()
+		final List prov2 = CLIENT1.getObjects2(new GetObjects2Params()
 			.withNoData(1L)
 			.withObjects(toObjSpec(loi))).getData();
 			assertThat("num data correct", prov2.size(), is(loi.size()));
@@ -1041,7 +1055,7 @@ protected void checkSavedObjects(List loi, long id, String name,
 			assertNull("got unrequested data", p.getData());
 		}
 
-		List prov =
+		final List prov =
 				CLIENT1.getObjectProvenance(loi);
 		assertThat("num prov correct", prov.size(), is(loi.size()));
 		for (us.kbase.workspace.ObjectProvenanceInfo p: prov) {
@@ -1053,6 +1067,7 @@ protected void checkSavedObjects(List loi, long id, String name,
 		GetObjectInfo3Results info3 = CLIENT1.getObjectInfo3(new GetObjectInfo3Params()
 				.withObjects(toObjSpec(loi)).withIncludeMetadata(1L)
 				.withIgnoreErrors(0L));
+		assertThat("incorrect infostruct", info3.getInfostructs(), is(nullValue()));
 		List>> retusermeta = info3.getInfos();
 
@@ -1091,6 +1106,7 @@ protected void checkSavedObjects(List loi, long id, String name,
 		info3 = CLIENT1.getObjectInfo3(new us.kbase.workspace.GetObjectInfo3Params()
 				.withObjects(toObjSpec(loi)));
 		retusermeta = info3.getInfos();
+		assertThat("incorrect infostruct", info3.getInfostructs(), is(nullValue()));
 
 		assertThat("num usermeta correct", retusermeta.size(), is(loi.size()));
 		for (int i = 0; i < retusermeta.size(); i ++) {
@@ -1122,6 +1138,63 @@ protected void checkSavedObjects(List loi, long id, String name,
 					chksum, size, null);
 		}
 	}
+	
+	// expects all the object identities to point to the same object
+	// tests struct based object meta
+	protected void checkSavedObjects(
+			final List loi,
+			final long id,
+			final String name,
+			final String type,
+			final int ver,
+			final String user,
+			final long wsid,
+			final String wsname,
+			final String chksum,
+			final long size,
+			final Map meta,
+			final Map adminmeta,
+			final Map data)
+			throws Exception {
+		final List retdata = CLIENT1.getObjects2(new GetObjects2Params()
+				.withObjects(toObjSpec(loi)).withInfostruct(1L)).getData();
+		assertThat("num data correct", retdata.size(), is(loi.size()));
+		for (ObjectData o: retdata) {
+			assertThat("object data incorrect", o.getData().asClassInstance(Object.class),
+					is((Object) data));
+			assertThat("incorrect object path", o.getPath(), is(nullValue()));
+			assertThat("incorrect info", o.getInfo(), is(nullValue()));
+			checkInfo(o.getInfostruct(), id, name, type, ver, user, wsid, wsname,
+					chksum, size, meta, adminmeta);
+		}
+		
+		//obj info 3 with metadata
+		final GetObjectInfo3Results info3 = CLIENT1.getObjectInfo3(new GetObjectInfo3Params()
+				.withObjects(toObjSpec(loi)).withIncludeMetadata(1L).withInfostruct(1L)
+				.withIgnoreErrors(0L));
+		assertThat("incorrect infos", info3.getInfos(), is(nullValue()));
+		assertThat("incorrect paths", info3.getPaths(), is(nullValue()));
+		assertThat("num data correct", info3.getInfostructs().size(), is(loi.size()));
+		for (final ObjectInfo oi: info3.getInfostructs()) {
+			checkInfo(oi, id, name, type, ver, user, wsid, wsname,
+					chksum, size, meta, adminmeta);
+		}
+		
+		// obj info 3 without metadata
+		final GetObjectInfo3Results info32 = CLIENT1.getObjectInfo3(new GetObjectInfo3Params()
+				.withObjects(toObjSpec(loi)).withInfostruct(1L));
+		assertThat("incorrect infos", info32.getInfos(), is(nullValue()));
+		assertThat("incorrect paths", info32.getPaths(), is(nullValue()));
+		assertThat("num data correct", info32.getInfostructs().size(), is(loi.size()));
+		for (final ObjectInfo oi: info32.getInfostructs()) {
+			checkInfo(oi, id, name, type, ver, user, wsid, wsname,
+					chksum, size, null, null);
+		}
+		
+		// now do all the deprecated methods & tuple infos stuff
+		checkSavedObjects(
+				loi, id, name, type, ver, user, wsid, wsname, chksum, size, meta, data);
+	}
 
 	@SuppressWarnings("deprecation")
 	protected List objIDToSubObjID(
@@ -1146,11 +1219,11 @@ protected void compareData(List expected, List got)
 			throws Exception {
 
 		assertThat("same number of ObjectData", got.size(), is(expected.size()));
-		Iterator eIter = expected.iterator();
-		Iterator gIter = got.iterator();
+		final Iterator eIter = expected.iterator();
+		final Iterator gIter = got.iterator();
 		while (eIter.hasNext()) {
-			ObjectData exp = eIter.next();
-			ObjectData gt = gIter.next();
+			final ObjectData exp = eIter.next();
+			final ObjectData gt = gIter.next();
 
 			compareObjectInfo(gt.getInfo(), exp.getInfo());
 			assertThat("object data is correct", gt.getData().asClassInstance(Object.class),
@@ -1168,35 +1241,55 @@ protected void compareInfo(
 			List exp) throws Exception {
 
 		assertThat("not same number of ObjectInfos", info.size(), is(exp.size()));
-		Iterator eIter = exp.iterator();
-		Iterator eIter = exp.iterator();
+		final Iterator>> gIter = info.iterator();
 		while (eIter.hasNext()) {
-			ObjectData e = eIter.next();
-			Tuple11> gt = gIter.next();
 			compareObjectInfo(gt, e.getInfo());
 		}
 	}
 
-	protected void checkData(ObjectData retdata, long id, String name,
-			String typeString, int ver, String user, long wsid, String wsname,
-			String chksum, long size, Map meta, Map data)
+	protected void checkData(
+			final ObjectData retdata,
+			final long id,
+			final String name,
+			final String typeString,
+			final int ver,
+			final String user,
+			final long wsid,
+			final String wsname,
+			final String chksum,
+			final long size,
+			final Map meta,
+			final Map data)
 			throws Exception {
 
 		assertThat("object data incorrect", retdata.getData().asClassInstance(Object.class),
 				is((Object) data));
 		assertThat("incorrect object path", retdata.getPath(),
 				is(Arrays.asList(wsid + "/" + id + "/" + ver)));
+		assertThat("incorrect infostruct", retdata.getInfostruct(), is(nullValue()));
 
 		checkInfo(retdata.getInfo(), id, name, typeString, ver, user,
 				wsid, wsname, chksum, size, meta);
 	}
 
 	protected void checkInfo(
-			Tuple11> infousermeta,
-			long id, String name, String typeString, int ver, String user,
-			long wsid, String wsname, String chksum, long size, Map meta)
+			final Tuple11> infousermeta,
+			final long id,
+			final String name,
+			final String typeString,
+			final int ver,
+			final String user,
+			final long wsid,
+			final String wsname,
+			final String chksum,
+			final long size,
+			final Map meta)
 			throws Exception {
 
 		assertThat("id is correct", infousermeta.getE1(), is(id));
@@ -1211,6 +1304,37 @@ protected void checkInfo(
 		assertThat("size is correct", infousermeta.getE10(), is(size));
 		assertThat("meta is correct", infousermeta.getE11(), is(meta));
 	}
+	
+	protected void checkInfo(
+			final ObjectInfo info,
+			final long id,
+			final String name,
+			final String typeString,
+			final int ver,
+			final String user,
+			final long wsid,
+			final String wsname,
+			final String chksum,
+			final long size,
+			final Map meta,
+			final Map adminmeta)
+			throws Exception {
+
+		assertThat("incorrect id", info.getObjid(), is(id));
+		assertThat("incorrect name", info.getName(), is(name));
+		assertThat("incorrect type", info.getType(), is(typeString));
+		DATE_FORMAT.parse(info.getSaveDate()); //should throw error if bad format
+		assertThat("incorrect version", (int) info.getVersion().longValue(), is(ver));
+		assertThat("incorrect user", info.getSavedBy(), is(user));
+		assertThat("incorrect wsid", info.getWsid(), is(wsid));
+		assertThat("incorrect ws name", info.getWorkspace(), is(wsname));
+		assertThat("incorrect chksum", info.getChsum(), is(chksum));
+		assertThat("incorrect size", info.getSize(), is(size));
+		assertThat("incorrect meta", info.getMeta(), is(meta));
+		assertThat("incorrect adminmeta", info.getAdminmeta(), is(adminmeta));
+		assertThat("incorrect incorrect object path", info.getPath(),
+				is(Arrays.asList(wsid + "/" + id + "/" + ver)));
+	}
 
 	protected static Thread watchForMem(final String header, final boolean[] threadStopWrapper) {
 		Thread ret = new Thread(new Runnable() {
diff --git a/src/us/kbase/workspace/test/kbase/LoggingTest.java b/src/us/kbase/workspace/test/kbase/LoggingTest.java
index 1f9f978b..2ef05335 100644
--- a/src/us/kbase/workspace/test/kbase/LoggingTest.java
+++ b/src/us/kbase/workspace/test/kbase/LoggingTest.java
@@ -29,19 +29,19 @@
 import us.kbase.common.service.JsonClientException;
 import us.kbase.common.service.JsonServerSyslog;
 import us.kbase.common.service.UObject;
-import us.kbase.common.service.UnauthorizedException;
 import us.kbase.common.service.JsonServerSyslog.SyslogOutput;
 import us.kbase.common.service.Tuple11;
 import us.kbase.common.test.TestCommon;
-import us.kbase.common.test.TestException;
 import us.kbase.common.test.controllers.mongo.MongoController;
 import us.kbase.test.auth2.authcontroller.AuthController;
+import us.kbase.workspace.AlterAdminObjectMetadataParams;
 import us.kbase.workspace.CopyObjectParams;
 import us.kbase.workspace.CreateWorkspaceParams;
 import us.kbase.workspace.GetObjectInfo3Params;
 import us.kbase.workspace.GetObjects2Params;
 import us.kbase.workspace.ObjectData;
 import us.kbase.workspace.ObjectIdentity;
+import us.kbase.workspace.ObjectMetadataUpdate;
 import us.kbase.workspace.ObjectSaveData;
 import us.kbase.workspace.ObjectSpecification;
 import us.kbase.workspace.RegisterTypespecParams;
@@ -66,6 +66,7 @@ public class LoggingTest {
 
 	private static final String ARGUTILS = "us.kbase.workspace.kbase.ArgUtils";
 	private static final String SERV = "us.kbase.workspace.WorkspaceServer";
+	private static final String WSMETH = "us.kbase.workspace.kbase.WorkspaceServerMethods";
 
 	private static final String DB_WS_NAME = "LoggingTest";
 	private static final String DB_TYPE_NAME = "LoggingTest_Types";
@@ -118,20 +119,8 @@ public static void setUpClass() throws Exception {
 		SERVER.changeSyslogOutput(logout);
 		int port = SERVER.getServerPort();
 		System.out.println("Started test server 1 on port " + port);
-		try {
-			CLIENT1 = new WorkspaceClient(new URL("http://localhost:" + port),
-					t1);
-		} catch (UnauthorizedException ue) {
-			throw new TestException("Unable to login with test.user1: " + USER1 +
-					"\nPlease check the credentials in the test configuration.", ue);
-		}
-		try {
-			CLIENT2 = new WorkspaceClient(new URL("http://localhost:" + port),
-					t2);
-		} catch (UnauthorizedException ue) {
-			throw new TestException("Unable to login with test.user2: " + USER2 +
-					"\nPlease check the credentials in the test configuration.", ue);
-		}
+		CLIENT1 = new WorkspaceClient(new URL("http://localhost:" + port), t1);
+		CLIENT2 = new WorkspaceClient(new URL("http://localhost:" + port), t2);
 
 		CLIENT1.setIsInsecureHttpConnectionAllowed(true);
 		CLIENT2.setIsInsecureHttpConnectionAllowed(true);
@@ -287,8 +276,11 @@ private static class ExpectedLog {
 		public String user;
 		public String caller;
 
-		public ExpectedLog(int level, String method, String message,
-				String user, String caller) {
+		public ExpectedLog(final int level,
+				final String method,
+				final String message,
+				final String user,
+				final String caller) {
 			this.level = level;
 			this.method = method;
 			this.message = message;
@@ -299,9 +291,17 @@ public ExpectedLog(int level, String method, String message,
 
 	private static class LogObjExp extends ExpectedLog {
 
-		public LogObjExp(String method, String message, String caller) {
+		public LogObjExp(final String method, final String message, final String caller) {
 			super(INFO, method, message, USER1, caller);
 		}
+		
+		public LogObjExp(
+				final String method,
+				final String message,
+				final String caller,
+				final String user) {
+			super(INFO, method, message, user, caller);
+		}
 	}
 
 	private void checkLogging(List expected) throws Exception {
@@ -378,15 +378,30 @@ public void logObjects() throws Exception {
 				.withObjects(d));
 		checkLogging(convertLogObjExp(Arrays.asList(
 				new LogObjExp("save_objects", "start method", SERV),
-				new LogObjExp("save_objects",
-						"Object 1/1/1 SomeModule.AType-1.0", ARGUTILS),
-				new LogObjExp("save_objects",
-						"Object 1/2/1 SomeModule.BType-1.0", ARGUTILS),
-				new LogObjExp("save_objects",
-						"Object 1/3/1 SomeModule.AType-1.0", ARGUTILS),
+				new LogObjExp("save_objects", "Object 1/1/1 SomeModule.AType-1.0", ARGUTILS),
+				new LogObjExp("save_objects", "Object 1/2/1 SomeModule.BType-1.0", ARGUTILS),
+				new LogObjExp("save_objects", "Object 1/3/1 SomeModule.AType-1.0", ARGUTILS),
 				new LogObjExp("save_objects", "end method", SERV))));
 		logout.reset();
-
+		
+		// alter admin meta
+		CLIENT2.alterAdminObjectMetadata(new AlterAdminObjectMetadataParams()
+				.withUpdates(Arrays.asList(
+						new ObjectMetadataUpdate()
+								.withOi(new ObjectIdentity().withRef("myws/foo"))
+								.withRemove(Arrays.asList("a")),
+						new ObjectMetadataUpdate()
+								.withOi(new ObjectIdentity().withRef("1/3/1"))
+								.withRemove(Arrays.asList("a"))
+				))
+		);
+		checkLogging(convertLogObjExp(Arrays.asList(
+				new LogObjExp("alter_admin_object_metadata", "start method", SERV, USER2),
+				new LogObjExp("alter_admin_object_metadata", "Object 1/1/1", WSMETH, USER2),
+				new LogObjExp("alter_admin_object_metadata", "Object 1/3/1", WSMETH, USER2),
+				new LogObjExp("alter_admin_object_metadata", "end method", SERV, USER2))));
+		logout.reset();
+				
 		// rename
 		CLIENT1.renameObject(new RenameObjectParams()
 				.withNewName("bak")
diff --git a/src/us/kbase/workspace/test/workspace/WorkspaceUnitTest.java b/src/us/kbase/workspace/test/workspace/WorkspaceUnitTest.java
index 6af120d8..e6cae328 100644
--- a/src/us/kbase/workspace/test/workspace/WorkspaceUnitTest.java
+++ b/src/us/kbase/workspace/test/workspace/WorkspaceUnitTest.java
@@ -27,6 +27,7 @@
 import java.util.Collections;
 import java.util.Optional;
 import java.util.stream.Collectors;
+import java.util.stream.IntStream;
 import java.util.stream.LongStream;
 
 import org.junit.Test;
@@ -813,6 +814,14 @@ public void setAdminObjectMetadataFailBadInput() throws Exception {
 		
 		setAdminObjectMetadataFail(mocks.ws, null, new NullPointerException("update"));
 		
+		final Map huge = IntStream.range(1, 1002)
+				.mapToObj(i -> Integer.valueOf(i))
+				.collect(Collectors.toMap(
+						i -> ObjectIdentifier.getBuilderFromRefPath("1/" + i).build(),
+						i -> new MetadataUpdate(null, Arrays.asList("f"))));
+		setAdminObjectMetadataFail(mocks.ws, huge, new IllegalArgumentException(
+				"No more than 1000 updates can be applied at once"));
+		
 		final Map nulls = new HashMap<>();
 		nulls.put(null, new MetadataUpdate(null, null));
 		setAdminObjectMetadataFail(mocks.ws, nulls, new NullPointerException(
diff --git a/workspace.spec b/workspace.spec
index 68f7cf85..bb2a5d44 100644
--- a/workspace.spec
+++ b/workspace.spec
@@ -420,6 +420,42 @@ module Workspace {
 		timestamp save_date, int version, username saved_by,
 		ws_id wsid, ws_name workspace, string chsum, int size, usermeta meta>
 		object_info;
+		
+	/* Information about an object as a struct rather than a tuple.
+		This allows adding fields in a backward compatible way in the future.
+		Includes more fields than object_info.
+
+		obj_id objid - the numerical id of the object.
+		obj_name name - the name of the object.
+		type_string type - the type of the object.
+		timestamp save_date - the save date of the object.
+		obj_ver ver - the version of the object.
+		username saved_by - the user that saved or copied the object.
+		ws_id wsid - the workspace containing the object.
+		ws_name workspace - the workspace containing the object.
+		string chsum - the md5 checksum of the object.
+		int size - the size of the object in bytes.
+		usermeta meta - arbitrary user-supplied metadata about the object.
+		usermeta adminmeta - service administrator metadata set on an object. Unlike most
+			other object fields, admin metadata is mutable.
+		list path - the path to the object.
+
+	*/
+	typedef structure {
+		obj_id objid;
+		obj_name name;
+		type_string type;
+		timestamp save_date;
+		int version;
+		username saved_by;
+		ws_id wsid;
+		ws_name workspace;
+		string chsum;
+		int size;
+		usermeta meta;
+		usermeta adminmeta;
+		list path;
+	} ObjectInfo;
 
 	/* An external data unit. A piece of data from a source outside the
 		Workspace.
@@ -1020,6 +1056,7 @@ module Workspace {
 
 		UnspecifiedObject data - the object's data or subset data.
 		object_info info - information about the object.
+		ObjectInfo infostruct - information about the object as a structure rather than a tuple.
 		list path - the path to the object through the object reference graph. All the
 			references in the path are absolute.
 		list provenance - the object's provenance.
@@ -1050,6 +1087,7 @@ module Workspace {
 	typedef structure {
 		UnspecifiedObject data;
 		object_info info;
+		ObjectInfo infostruct;
 		list path;
 		list provenance;
 		username creator;
@@ -1082,6 +1120,9 @@ module Workspace {
 		boolean ignoreErrors - Don't throw an exception if an object cannot
 			be accessed; return null for that object's information instead.
 			Default false.
+		boolean infostruct - return the object information as a structure rather than a tuple.
+			Default false. If true, ObjectData.path will be null as it is provided in
+			the ObjectInfo data.
 		boolean no_data - return the provenance, references, and
 			object_info for this object without the object data. Default false.
 		boolean skip_external_system_updates - if the objects contain any external IDs, don't
@@ -1098,6 +1139,7 @@ module Workspace {
 	typedef structure {
 		list objects;
 		boolean ignoreErrors;
+		boolean infostruct;
 		boolean no_data;
 		boolean skip_external_system_updates;
 		boolean batch_external_system_updates;
@@ -1512,7 +1554,9 @@ module Workspace {
 			ignored.
 
 		Optional arguments:
-		boolean includeMetadata - include the object metadata in the returned
+		boolean infostruct - return information about the object as a structure rather than a tuple.
+			Default false. If true, infos and paths will be null.
+		boolean includeMetadata - include the user and admin metadata in the returned
 			information. Default false.
 		boolean ignoreErrors - Don't throw an exception if an object cannot
 			be accessed; return null for that object's information and path instead.
@@ -1520,6 +1564,7 @@ module Workspace {
 	*/
 	typedef structure {
 		list objects;
+		boolean infostruct;
 		boolean includeMetadata;
 		boolean ignoreErrors;
 	} GetObjectInfo3Params;
@@ -1529,10 +1574,12 @@ module Workspace {
 		list infos - the object_info data for each object.
 		list paths - the path to the object through the object reference graph for
 			each object. All the references in the path are absolute.
+		list infostructs - the ObjectInfo data for each object.
 	*/
 	typedef structure {
 		list infos;
 		list> paths;
+		list infostructs;
 	} GetObjectInfo3Results;
 
 	funcdef get_object_info3(GetObjectInfo3Params params)
@@ -2065,6 +2112,39 @@ module Workspace {
 	/* Get the administrative role for the current user. */
 	funcdef get_admin_role() returns (GetAdminRoleResults results) authentication required;
 	
+	/* An object metadata update specification.
+
+		Required arguments:
+		ObjectIdentity oi - the object to be altered
+
+		One or both of the following arguments are required:
+		usermeta new - metadata to assign to the workspace. Duplicate keys will
+			be overwritten.
+		list remove - these keys will be removed from the workspace
+			metadata key/value pairs.
+	*/
+	typedef structure {
+		ObjectIdentity oi;
+		usermeta new;
+		list remove;
+	} ObjectMetadataUpdate;
+	
+	/* Input parameters for the alter_admin_object_metadata method.
+	
+		updates - the metadata updates to apply to the objects. If the same object is specified
+			twice in the list, the update order is unspecified. At most 1000 updates are allowed
+			in one call.
+	*/
+	typedef structure {
+		list updates;
+	} AlterAdminObjectMetadataParams;
+	
+	/* Update admin metadata for an object. The user must have full workspace service
+		administration privileges.
+	*/
+	funcdef alter_admin_object_metadata(AlterAdminObjectMetadataParams params) returns()
+		authentication required;
+	
 	/* The administration interface. */
 	funcdef administer(UnspecifiedObject command)
 		returns(UnspecifiedObject response) authentication required;