+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN""http://www.w3.org/TR/html4/loose.dtd">
+<HTML
+><HEAD
+><TITLE
+>PlanetLab Central API Documentation</TITLE
+><META
+NAME="GENERATOR"
+CONTENT="Modular DocBook HTML Stylesheet Version 1.79"></HEAD
+><BODY
+CLASS="book"
+BGCOLOR="#FFFFFF"
+TEXT="#000000"
+LINK="#0000FF"
+VLINK="#840084"
+ALINK="#0000FF"
+><DIV
+CLASS="BOOK"
+><A
+NAME="AEN1"
+></A
+><DIV
+CLASS="TITLEPAGE"
+><H1
+CLASS="title"
+><A
+NAME="AEN2"
+>PlanetLab Central API Documentation</A
+></H1
+><HR></DIV
+><DIV
+CLASS="TOC"
+><DL
+><DT
+><B
+>Table of Contents</B
+></DT
+><DT
+>1. <A
+HREF="#Introduction"
+>Introduction</A
+></DT
+><DD
+><DL
+><DT
+>1.1. <A
+HREF="#Authentication"
+>Authentication</A
+></DT
+><DT
+>1.2. <A
+HREF="#Roles"
+>Roles</A
+></DT
+><DT
+>1.3. <A
+HREF="#Filters"
+>Filters</A
+></DT
+><DT
+>1.4. <A
+HREF="#AEN91"
+>PlanetLab shell</A
+></DT
+></DL
+></DD
+><DT
+>2. <A
+HREF="#Methods"
+>PlanetLab API Methods</A
+></DT
+><DD
+><DL
+><DT
+>2.1. <A
+HREF="#AddAddressType"
+>AddAddressType</A
+></DT
+><DT
+>2.2. <A
+HREF="#AddAddressTypeToAddress"
+>AddAddressTypeToAddress</A
+></DT
+><DT
+>2.3. <A
+HREF="#AddBootState"
+>AddBootState</A
+></DT
+><DT
+>2.4. <A
+HREF="#AddConfFile"
+>AddConfFile</A
+></DT
+><DT
+>2.5. <A
+HREF="#AddConfFileToNodeGroup"
+>AddConfFileToNodeGroup</A
+></DT
+><DT
+>2.6. <A
+HREF="#AddConfFileToNode"
+>AddConfFileToNode</A
+></DT
+><DT
+>2.7. <A
+HREF="#AddKeyType"
+>AddKeyType</A
+></DT
+><DT
+>2.8. <A
+HREF="#AddMessage"
+>AddMessage</A
+></DT
+><DT
+>2.9. <A
+HREF="#AddNetworkMethod"
+>AddNetworkMethod</A
+></DT
+><DT
+>2.10. <A
+HREF="#AddNetworkType"
+>AddNetworkType</A
+></DT
+><DT
+>2.11. <A
+HREF="#AddNodeGroup"
+>AddNodeGroup</A
+></DT
+><DT
+>2.12. <A
+HREF="#AddNodeNetwork"
+>AddNodeNetwork</A
+></DT
+><DT
+>2.13. <A
+HREF="#AddNode"
+>AddNode</A
+></DT
+><DT
+>2.14. <A
+HREF="#AddNodeToNodeGroup"
+>AddNodeToNodeGroup</A
+></DT
+><DT
+>2.15. <A
+HREF="#AddNodeToPCU"
+>AddNodeToPCU</A
+></DT
+><DT
+>2.16. <A
+HREF="#AddPCU"
+>AddPCU</A
+></DT
+><DT
+>2.17. <A
+HREF="#AddPeer"
+>AddPeer</A
+></DT
+><DT
+>2.18. <A
+HREF="#AddPersonKey"
+>AddPersonKey</A
+></DT
+><DT
+>2.19. <A
+HREF="#AddPerson"
+>AddPerson</A
+></DT
+><DT
+>2.20. <A
+HREF="#AddPersonToSite"
+>AddPersonToSite</A
+></DT
+><DT
+>2.21. <A
+HREF="#AddPersonToSlice"
+>AddPersonToSlice</A
+></DT
+><DT
+>2.22. <A
+HREF="#AddRole"
+>AddRole</A
+></DT
+><DT
+>2.23. <A
+HREF="#AddRoleToPerson"
+>AddRoleToPerson</A
+></DT
+><DT
+>2.24. <A
+HREF="#AddSiteAddress"
+>AddSiteAddress</A
+></DT
+><DT
+>2.25. <A
+HREF="#AddSite"
+>AddSite</A
+></DT
+><DT
+>2.26. <A
+HREF="#AddSliceAttribute"
+>AddSliceAttribute</A
+></DT
+><DT
+>2.27. <A
+HREF="#AddSliceAttributeType"
+>AddSliceAttributeType</A
+></DT
+><DT
+>2.28. <A
+HREF="#AddSliceInstantiation"
+>AddSliceInstantiation</A
+></DT
+><DT
+>2.29. <A
+HREF="#AddSlice"
+>AddSlice</A
+></DT
+><DT
+>2.30. <A
+HREF="#AddSliceToNodes"
+>AddSliceToNodes</A
+></DT
+><DT
+>2.31. <A
+HREF="#AuthCheck"
+>AuthCheck</A
+></DT
+><DT
+>2.32. <A
+HREF="#BlacklistKey"
+>BlacklistKey</A
+></DT
+><DT
+>2.33. <A
+HREF="#BootGetNodeDetails"
+>BootGetNodeDetails</A
+></DT
+><DT
+>2.34. <A
+HREF="#BootNotifyOwners"
+>BootNotifyOwners</A
+></DT
+><DT
+>2.35. <A
+HREF="#BootUpdateNode"
+>BootUpdateNode</A
+></DT
+><DT
+>2.36. <A
+HREF="#DeleteAddress"
+>DeleteAddress</A
+></DT
+><DT
+>2.37. <A
+HREF="#DeleteAddressTypeFromAddress"
+>DeleteAddressTypeFromAddress</A
+></DT
+><DT
+>2.38. <A
+HREF="#DeleteAddressType"
+>DeleteAddressType</A
+></DT
+><DT
+>2.39. <A
+HREF="#DeleteBootState"
+>DeleteBootState</A
+></DT
+><DT
+>2.40. <A
+HREF="#DeleteConfFileFromNodeGroup"
+>DeleteConfFileFromNodeGroup</A
+></DT
+><DT
+>2.41. <A
+HREF="#DeleteConfFileFromNode"
+>DeleteConfFileFromNode</A
+></DT
+><DT
+>2.42. <A
+HREF="#DeleteConfFile"
+>DeleteConfFile</A
+></DT
+><DT
+>2.43. <A
+HREF="#DeleteKey"
+>DeleteKey</A
+></DT
+><DT
+>2.44. <A
+HREF="#DeleteKeyType"
+>DeleteKeyType</A
+></DT
+><DT
+>2.45. <A
+HREF="#DeleteMessage"
+>DeleteMessage</A
+></DT
+><DT
+>2.46. <A
+HREF="#DeleteNetworkMethod"
+>DeleteNetworkMethod</A
+></DT
+><DT
+>2.47. <A
+HREF="#DeleteNetworkType"
+>DeleteNetworkType</A
+></DT
+><DT
+>2.48. <A
+HREF="#DeleteNodeFromNodeGroup"
+>DeleteNodeFromNodeGroup</A
+></DT
+><DT
+>2.49. <A
+HREF="#DeleteNodeFromPCU"
+>DeleteNodeFromPCU</A
+></DT
+><DT
+>2.50. <A
+HREF="#DeleteNodeGroup"
+>DeleteNodeGroup</A
+></DT
+><DT
+>2.51. <A
+HREF="#DeleteNodeNetwork"
+>DeleteNodeNetwork</A
+></DT
+><DT
+>2.52. <A
+HREF="#DeleteNode"
+>DeleteNode</A
+></DT
+><DT
+>2.53. <A
+HREF="#DeletePCU"
+>DeletePCU</A
+></DT
+><DT
+>2.54. <A
+HREF="#DeletePeer"
+>DeletePeer</A
+></DT
+><DT
+>2.55. <A
+HREF="#DeletePersonFromSite"
+>DeletePersonFromSite</A
+></DT
+><DT
+>2.56. <A
+HREF="#DeletePersonFromSlice"
+>DeletePersonFromSlice</A
+></DT
+><DT
+>2.57. <A
+HREF="#DeletePerson"
+>DeletePerson</A
+></DT
+><DT
+>2.58. <A
+HREF="#DeleteRoleFromPerson"
+>DeleteRoleFromPerson</A
+></DT
+><DT
+>2.59. <A
+HREF="#DeleteRole"
+>DeleteRole</A
+></DT
+><DT
+>2.60. <A
+HREF="#DeleteSession"
+>DeleteSession</A
+></DT
+><DT
+>2.61. <A
+HREF="#DeleteSite"
+>DeleteSite</A
+></DT
+><DT
+>2.62. <A
+HREF="#DeleteSliceAttribute"
+>DeleteSliceAttribute</A
+></DT
+><DT
+>2.63. <A
+HREF="#DeleteSliceAttributeType"
+>DeleteSliceAttributeType</A
+></DT
+><DT
+>2.64. <A
+HREF="#DeleteSliceFromNodes"
+>DeleteSliceFromNodes</A
+></DT
+><DT
+>2.65. <A
+HREF="#DeleteSliceInstantiation"
+>DeleteSliceInstantiation</A
+></DT
+><DT
+>2.66. <A
+HREF="#DeleteSlice"
+>DeleteSlice</A
+></DT
+><DT
+>2.67. <A
+HREF="#GetAddresses"
+>GetAddresses</A
+></DT
+><DT
+>2.68. <A
+HREF="#GetAddressTypes"
+>GetAddressTypes</A
+></DT
+><DT
+>2.69. <A
+HREF="#GetBootStates"
+>GetBootStates</A
+></DT
+><DT
+>2.70. <A
+HREF="#GetConfFiles"
+>GetConfFiles</A
+></DT
+><DT
+>2.71. <A
+HREF="#GetEvents"
+>GetEvents</A
+></DT
+><DT
+>2.72. <A
+HREF="#GetKeys"
+>GetKeys</A
+></DT
+><DT
+>2.73. <A
+HREF="#GetKeyTypes"
+>GetKeyTypes</A
+></DT
+><DT
+>2.74. <A
+HREF="#GetMessages"
+>GetMessages</A
+></DT
+><DT
+>2.75. <A
+HREF="#GetNetworkMethods"
+>GetNetworkMethods</A
+></DT
+><DT
+>2.76. <A
+HREF="#GetNetworkTypes"
+>GetNetworkTypes</A
+></DT
+><DT
+>2.77. <A
+HREF="#GetNodeGroups"
+>GetNodeGroups</A
+></DT
+><DT
+>2.78. <A
+HREF="#GetNodeNetworks"
+>GetNodeNetworks</A
+></DT
+><DT
+>2.79. <A
+HREF="#GetNodes"
+>GetNodes</A
+></DT
+><DT
+>2.80. <A
+HREF="#GetPCUs"
+>GetPCUs</A
+></DT
+><DT
+>2.81. <A
+HREF="#GetPeerData"
+>GetPeerData</A
+></DT
+><DT
+>2.82. <A
+HREF="#GetPeerName"
+>GetPeerName</A
+></DT
+><DT
+>2.83. <A
+HREF="#GetPeers"
+>GetPeers</A
+></DT
+><DT
+>2.84. <A
+HREF="#GetPersons"
+>GetPersons</A
+></DT
+><DT
+>2.85. <A
+HREF="#GetRoles"
+>GetRoles</A
+></DT
+><DT
+>2.86. <A
+HREF="#GetSession"
+>GetSession</A
+></DT
+><DT
+>2.87. <A
+HREF="#GetSites"
+>GetSites</A
+></DT
+><DT
+>2.88. <A
+HREF="#GetSliceAttributes"
+>GetSliceAttributes</A
+></DT
+><DT
+>2.89. <A
+HREF="#GetSliceAttributeTypes"
+>GetSliceAttributeTypes</A
+></DT
+><DT
+>2.90. <A
+HREF="#GetSliceInstantiations"
+>GetSliceInstantiations</A
+></DT
+><DT
+>2.91. <A
+HREF="#GetSlices"
+>GetSlices</A
+></DT
+><DT
+>2.92. <A
+HREF="#GetSliceTicket"
+>GetSliceTicket</A
+></DT
+><DT
+>2.93. <A
+HREF="#GetSlivers"
+>GetSlivers</A
+></DT
+><DT
+>2.94. <A
+HREF="#NotifyPersons"
+>NotifyPersons</A
+></DT
+><DT
+>2.95. <A
+HREF="#RebootNode"
+>RebootNode</A
+></DT
+><DT
+>2.96. <A
+HREF="#RefreshPeer"
+>RefreshPeer</A
+></DT
+><DT
+>2.97. <A
+HREF="#ResetPassword"
+>ResetPassword</A
+></DT
+><DT
+>2.98. <A
+HREF="#SetPersonPrimarySite"
+>SetPersonPrimarySite</A
+></DT
+><DT
+>2.99. <A
+HREF="#UpdateAddress"
+>UpdateAddress</A
+></DT
+><DT
+>2.100. <A
+HREF="#UpdateAddressType"
+>UpdateAddressType</A
+></DT
+><DT
+>2.101. <A
+HREF="#UpdateConfFile"
+>UpdateConfFile</A
+></DT
+><DT
+>2.102. <A
+HREF="#UpdateKey"
+>UpdateKey</A
+></DT
+><DT
+>2.103. <A
+HREF="#UpdateMessage"
+>UpdateMessage</A
+></DT
+><DT
+>2.104. <A
+HREF="#UpdateNodeGroup"
+>UpdateNodeGroup</A
+></DT
+><DT
+>2.105. <A
+HREF="#UpdateNodeNetwork"
+>UpdateNodeNetwork</A
+></DT
+><DT
+>2.106. <A
+HREF="#UpdateNode"
+>UpdateNode</A
+></DT
+><DT
+>2.107. <A
+HREF="#UpdatePCU"
+>UpdatePCU</A
+></DT
+><DT
+>2.108. <A
+HREF="#UpdatePeer"
+>UpdatePeer</A
+></DT
+><DT
+>2.109. <A
+HREF="#UpdatePerson"
+>UpdatePerson</A
+></DT
+><DT
+>2.110. <A
+HREF="#UpdateSite"
+>UpdateSite</A
+></DT
+><DT
+>2.111. <A
+HREF="#UpdateSliceAttribute"
+>UpdateSliceAttribute</A
+></DT
+><DT
+>2.112. <A
+HREF="#UpdateSliceAttributeType"
+>UpdateSliceAttributeType</A
+></DT
+><DT
+>2.113. <A
+HREF="#UpdateSlice"
+>UpdateSlice</A
+></DT
+><DT
+>2.114. <A
+HREF="#VerifyPerson"
+>VerifyPerson</A
+></DT
+><DT
+>2.115. <A
+HREF="#system.listMethods"
+>system.listMethods</A
+></DT
+><DT
+>2.116. <A
+HREF="#system.methodHelp"
+>system.methodHelp</A
+></DT
+><DT
+>2.117. <A
+HREF="#system.methodSignature"
+>system.methodSignature</A
+></DT
+><DT
+>2.118. <A
+HREF="#system.multicall"
+>system.multicall</A
+></DT
+></DL
+></DD
+></DL
+></DIV
+><DIV
+CLASS="chapter"
+><HR><H1
+><A
+NAME="Introduction"
+></A
+>Chapter 1. Introduction</H1
+><P
+>The PlanetLab Central API (PLCAPI) is the interface through
+ which the PlanetLab Central database should be accessed and
+ maintained. The API is used by the website, by nodes, by automated
+ scripts, and by users to access and update information about
+ users, nodes, sites, slices, and other entities maintained by the
+ database.</P
+><DIV
+CLASS="section"
+><HR><H2
+CLASS="section"
+><A
+NAME="Authentication"
+>1.1. Authentication</A
+></H2
+><P
+>The API should be accessed via XML-RPC over HTTPS. The API
+ supports the standard introspection calls <A
+HREF="#system.listMethods"
+>system.listMethods</A
+>, <A
+HREF="#system.methodSignature"
+>system.methodSignature</A
+>,
+ and <A
+HREF="#system.methodHelp"
+>system.methodHelp</A
+>,
+ and the standard batching call <A
+HREF="#system.multicall"
+>system.multicall</A
+>. With the
+ exception of these calls, all PLCAPI calls take an
+ authentication structure as their first argument. All
+ authentication structures require the specification of
+ <CODE
+CLASS="parameter"
+>AuthMethod</CODE
+>. If the documentation for a
+ call does not further specify the authentication structure, then
+ any of (but only) the following authentication structures may be
+ used:</P
+><P
+></P
+><UL
+><LI
+><P
+>Session authentication. User sessions are typically
+ valid for 24 hours. Node sessions are valid until the next
+ reboot. Obtain a session key with <A
+HREF="#GetSession"
+>GetSession</A
+> using another form of
+ authentication, such as password or GnuPG
+ authentication.</P
+><DIV
+CLASS="informaltable"
+><P
+></P
+><A
+NAME="AEN19"
+></A
+><TABLE
+BORDER="0"
+FRAME="void"
+CLASS="CALSTABLE"
+><COL><COL><COL><TBODY
+><TR
+><TD
+>AuthMethod</TD
+><TD
+><TT
+CLASS="literal"
+>session</TT
+></TD
+><TD
+> </TD
+></TR
+><TR
+><TD
+>session</TD
+><TD
+>Session key</TD
+><TD
+> </TD
+></TR
+></TBODY
+></TABLE
+><P
+></P
+></DIV
+></LI
+><LI
+><P
+>Password authentication.</P
+><DIV
+CLASS="informaltable"
+><P
+></P
+><A
+NAME="AEN31"
+></A
+><TABLE
+BORDER="0"
+FRAME="void"
+CLASS="CALSTABLE"
+><COL><COL><COL><TBODY
+><TR
+><TD
+>AuthMethod</TD
+><TD
+><TT
+CLASS="literal"
+>password</TT
+></TD
+><TD
+> </TD
+></TR
+><TR
+><TD
+>Username</TD
+><TD
+>Username, typically an e-mail address</TD
+><TD
+> </TD
+></TR
+><TR
+><TD
+>AuthString</TD
+><TD
+>Authentication string, typically a password</TD
+><TD
+> </TD
+></TR
+></TBODY
+></TABLE
+><P
+></P
+></DIV
+></LI
+><LI
+><P
+>GnuPG authentication. Users may upload a GPG public key
+ using <A
+HREF="#AddPersonKey"
+>AddPersonKey</A
+>. Peer
+ GPG keys should be added with <A
+HREF="#AddPeer"
+>AddPeer</A
+> or <A
+HREF="#UpdatePeer"
+>UpdatePeer</A
+>.
+ </P
+><DIV
+CLASS="informaltable"
+><P
+></P
+><A
+NAME="AEN49"
+></A
+><TABLE
+BORDER="0"
+FRAME="void"
+CLASS="CALSTABLE"
+><COL><COL><COL><TBODY
+><TR
+><TD
+>AuthMethod</TD
+><TD
+><TT
+CLASS="literal"
+>gpg</TT
+></TD
+><TD
+> </TD
+></TR
+><TR
+><TD
+>name</TD
+><TD
+>Peer or user name</TD
+><TD
+> </TD
+></TR
+><TR
+><TD
+>signature</TD
+><TD
+>GnuPG signature of
+ the <A
+HREF="http://www.w3.org/TR/xml-c14n"
+TARGET="_top"
+>canonicalized</A
+>
+ <A
+HREF="http://www.xmlrpc.com/spec"
+TARGET="_top"
+>XML-RPC</A
+>
+ representation of the rest of the arguments to the
+ call.</TD
+><TD
+> </TD
+></TR
+></TBODY
+></TABLE
+><P
+></P
+></DIV
+></LI
+><LI
+><P
+>Anonymous authentication.</P
+><DIV
+CLASS="informaltable"
+><P
+></P
+><A
+NAME="AEN66"
+></A
+><TABLE
+BORDER="0"
+FRAME="void"
+CLASS="CALSTABLE"
+><COL><COL><COL><TBODY
+><TR
+><TD
+>AuthMethod</TD
+><TD
+><TT
+CLASS="literal"
+>anonymous</TT
+></TD
+><TD
+> </TD
+></TR
+></TBODY
+></TABLE
+><P
+></P
+></DIV
+></LI
+></UL
+></DIV
+><DIV
+CLASS="section"
+><HR><H2
+CLASS="section"
+><A
+NAME="Roles"
+>1.2. Roles</A
+></H2
+><P
+>Some functions may only be called by users with certain
+ roles (see <A
+HREF="#GetRoles"
+>GetRoles</A
+>), and others
+ may return different information to different callers depending
+ on the role(s) of the caller.</P
+><P
+>The <TT
+CLASS="literal"
+>node</TT
+> and
+ <TT
+CLASS="literal"
+>anonymous</TT
+> roles are pseudo-roles. A function
+ that allows the <TT
+CLASS="literal"
+>node</TT
+> role may be called by
+ automated scripts running on a node, such as the Boot and Node
+ Managers. A function that allows the
+ <TT
+CLASS="literal"
+>anonymous</TT
+> role may be called by anyone; an
+ API authentication structure must still be specified (see <A
+HREF="#Authentication"
+>Section 1.1</A
+>).</P
+></DIV
+><DIV
+CLASS="section"
+><HR><H2
+CLASS="section"
+><A
+NAME="Filters"
+>1.3. Filters</A
+></H2
+><P
+>Most of the <CODE
+CLASS="function"
+>Get</CODE
+> functions take a
+ filter argument. Filters may be arrays of integer (and sometimes
+ string) identifiers, or a struct representing a filter on the
+ attributes of the entities being queried. For example,</P
+><PRE
+CLASS="programlisting"
+> # plcsh code fragment (see below)
+GetNodes([1,2,3])
+GetNodes({'node_id': [1,2,3]})
+GetNodes({'node_id': 1}) + GetNodes({'node_id': 2}) + GetNodes({'node_id': 3})
+</PRE
+><P
+>Would all be equivalent queries. Attributes that are
+ themselves arrays (such as <TT
+CLASS="literal"
+>nodenetwork_ids</TT
+>
+ and <TT
+CLASS="literal"
+>slice_ids</TT
+> for nodes) cannot be used in
+ filters.</P
+></DIV
+><DIV
+CLASS="section"
+><HR><H2
+CLASS="section"
+><A
+NAME="AEN91"
+>1.4. PlanetLab shell</A
+></H2
+><P
+>A command-line program called <B
+CLASS="command"
+>plcsh</B
+>
+ simplifies authentication structure handling, and is useful for
+ scripting. This program is distributed as a Linux RPM called
+ PLCAPI and requires Python ≥2.4.</P
+><PRE
+CLASS="programlisting"
+> usage: plcsh [options]
+
+options:
+ -f CONFIG, --config=CONFIG
+ PLC configuration file
+ -h URL, --url=URL API URL
+ -c CACERT, --cacert=CACERT
+ API SSL certificate
+ -k INSECURE, --insecure=INSECURE
+ Do not check SSL certificate
+ -m METHOD, --method=METHOD
+ API authentication method
+ -s SESSION, --session=SESSION
+ API session key
+ -u USER, --user=USER API user name
+ -p PASSWORD, --password=PASSWORD
+ API password
+ -r ROLE, --role=ROLE API role
+ -x, --xmlrpc Use XML-RPC interface
+ --help show this help message and exit
+ </PRE
+><P
+>Specify at least the API URL and your user name:</P
+><PRE
+CLASS="programlisting"
+> plcsh --url https://www.planet-lab.org/PLCAPI/ -u user@site.edu
+ </PRE
+><P
+>You will be presented with a prompt. From here, you can
+ invoke API calls and omit the authentication structure, as it will
+ be filled in automatically.</P
+><PRE
+CLASS="programlisting"
+> user@site.edu connected using password authentication
+Type "system.listMethods()" or "help(method)" for more information.
+[user@site.edu]>>> AuthCheck()
+1
+[user@site.edu]>>> GetNodes([121], ['node_id', 'hostname'])
+[{'node_id': 121, 'hostname': 'planetlab-1.cs.princeton.edu'}]
+ </PRE
+><P
+>As this program is actually a Python interpreter, you may
+ create variables, execute for loops, import other packages, etc.,
+ directly on the command line as you would using the regular Python
+ shell.</P
+><P
+>To use <B
+CLASS="command"
+>plcsh</B
+> programmatically, import
+ the <CODE
+CLASS="function"
+>PLC.Shell</CODE
+> module:</P
+><PRE
+CLASS="programlisting"
+> #!/usr/bin/python
+
+import sys
+
+# Default location that the PLCAPI RPM installs the PLC class
+sys.path.append('/usr/share/plc_api')
+
+# Initialize shell environment. Shell() will define all PLCAPI methods
+# in the specified namespace (specifying globals() will define them
+# globally).
+from PLC.Shell import Shell
+plc = Shell(globals(),
+ url = "https://www.planet-lab.org/PLCAPI/",
+ user = "user@site.edu",
+ password = "password")
+
+# Both are equivalent
+nodes = GetNodes([121], ['node_id', 'hostname'])
+nodes = plc.GetNodes([121], ['node_id', 'hostname'])
+ </PRE
+></DIV
+></DIV
+><DIV
+CLASS="chapter"
+><HR><H1
+><A
+NAME="Methods"
+></A
+>Chapter 2. PlanetLab API Methods</H1
+><P
+></P
+><DIV
+CLASS="section"
+><HR><H2
+CLASS="section"
+><A
+NAME="AddAddressType"
+>2.1. AddAddressType</A
+></H2
+><P
+>Prototype:<A
+NAME="AEN111"
+></A
+><BLOCKQUOTE
+CLASS="BLOCKQUOTE"
+><P
+>AddAddressType (auth, address_type_fields)</P
+></BLOCKQUOTE
+></P
+><P
+>Description:<A
+NAME="AEN114"
+></A
+><BLOCKQUOTE
+CLASS="BLOCKQUOTE"
+><P
+>Adds a new address type. Fields specified in address_type_fields
+are used.</P
+><P
+>Returns the new address_type_id (> 0) if successful, faults otherwise.</P
+></BLOCKQUOTE
+></P
+><P
+>Allowed Roles:<A
+NAME="AEN118"
+></A
+><BLOCKQUOTE
+CLASS="BLOCKQUOTE"
+><P
+>admin</P
+></BLOCKQUOTE
+></P
+><P
+>Parameters:</P
+><P
+></P
+><UL
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>auth</CODE
+>
+: struct, API authentication structure </P
+><P
+></P
+><UL
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>AuthMethod</CODE
+>
+: string, Authentication method to use </P
+></LI
+></UL
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>address_type_fields</CODE
+>
+: struct </P
+><P
+></P
+><UL
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>name</CODE
+>
+: string, Address type </P
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>description</CODE
+>
+: string, Address type description </P
+></LI
+></UL
+></LI
+></UL
+><P
+>Returns:</P
+><P
+></P
+><UL
+><LI
+><P
+> int, New address_type_id (> 0) if successful </P
+></LI
+></UL
+></DIV
+><DIV
+CLASS="section"
+><HR><H2
+CLASS="section"
+><A
+NAME="AddAddressTypeToAddress"
+>2.2. AddAddressTypeToAddress</A
+></H2
+><P
+>Prototype:<A
+NAME="AEN146"
+></A
+><BLOCKQUOTE
+CLASS="BLOCKQUOTE"
+><P
+>AddAddressTypeToAddress (auth, address_type_id_or_name, address_id)</P
+></BLOCKQUOTE
+></P
+><P
+>Description:<A
+NAME="AEN149"
+></A
+><BLOCKQUOTE
+CLASS="BLOCKQUOTE"
+><P
+>Adds an address type to the specified address.</P
+><P
+>PIs may only update addresses of their own sites.</P
+><P
+>Returns 1 if successful, faults otherwise.</P
+></BLOCKQUOTE
+></P
+><P
+>Allowed Roles:<A
+NAME="AEN154"
+></A
+><BLOCKQUOTE
+CLASS="BLOCKQUOTE"
+><P
+>admin, pi</P
+></BLOCKQUOTE
+></P
+><P
+>Parameters:</P
+><P
+></P
+><UL
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>auth</CODE
+>
+: struct, API authentication structure </P
+><P
+></P
+><UL
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>AuthMethod</CODE
+>
+: string, Authentication method to use </P
+></LI
+></UL
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>address_type_id_or_name</CODE
+>
+: int or string </P
+><P
+></P
+><UL
+><LI
+><P
+> int, Address type identifier </P
+></LI
+><LI
+><P
+> string, Address type </P
+></LI
+></UL
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>address_id</CODE
+>
+: int, Address identifier </P
+></LI
+></UL
+><P
+>Returns:</P
+><P
+></P
+><UL
+><LI
+><P
+> int, 1 if successful </P
+></LI
+></UL
+></DIV
+><DIV
+CLASS="section"
+><HR><H2
+CLASS="section"
+><A
+NAME="AddBootState"
+>2.3. AddBootState</A
+></H2
+><P
+>Prototype:<A
+NAME="AEN183"
+></A
+><BLOCKQUOTE
+CLASS="BLOCKQUOTE"
+><P
+>AddBootState (auth, name)</P
+></BLOCKQUOTE
+></P
+><P
+>Description:<A
+NAME="AEN186"
+></A
+><BLOCKQUOTE
+CLASS="BLOCKQUOTE"
+><P
+>Adds a new node boot state.</P
+><P
+>Returns 1 if successful, faults otherwise.</P
+></BLOCKQUOTE
+></P
+><P
+>Allowed Roles:<A
+NAME="AEN190"
+></A
+><BLOCKQUOTE
+CLASS="BLOCKQUOTE"
+><P
+>admin</P
+></BLOCKQUOTE
+></P
+><P
+>Parameters:</P
+><P
+></P
+><UL
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>auth</CODE
+>
+: struct, API authentication structure </P
+><P
+></P
+><UL
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>AuthMethod</CODE
+>
+: string, Authentication method to use </P
+></LI
+></UL
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>name</CODE
+>
+: string, Boot state </P
+></LI
+></UL
+><P
+>Returns:</P
+><P
+></P
+><UL
+><LI
+><P
+> int, 1 if successful </P
+></LI
+></UL
+></DIV
+><DIV
+CLASS="section"
+><HR><H2
+CLASS="section"
+><A
+NAME="AddConfFile"
+>2.4. AddConfFile</A
+></H2
+><P
+>Prototype:<A
+NAME="AEN211"
+></A
+><BLOCKQUOTE
+CLASS="BLOCKQUOTE"
+><P
+>AddConfFile (auth, conf_file_fields)</P
+></BLOCKQUOTE
+></P
+><P
+>Description:<A
+NAME="AEN214"
+></A
+><BLOCKQUOTE
+CLASS="BLOCKQUOTE"
+><P
+>Adds a new node configuration file. Any fields specified in
+conf_file_fields are used, otherwise defaults are used.</P
+><P
+>Returns the new conf_file_id (> 0) if successful, faults otherwise.</P
+></BLOCKQUOTE
+></P
+><P
+>Allowed Roles:<A
+NAME="AEN218"
+></A
+><BLOCKQUOTE
+CLASS="BLOCKQUOTE"
+><P
+>admin</P
+></BLOCKQUOTE
+></P
+><P
+>Parameters:</P
+><P
+></P
+><UL
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>auth</CODE
+>
+: struct, API authentication structure </P
+><P
+></P
+><UL
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>AuthMethod</CODE
+>
+: string, Authentication method to use </P
+></LI
+></UL
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>conf_file_fields</CODE
+>
+: struct </P
+><P
+></P
+><UL
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>file_owner</CODE
+>
+: string, chown(1) owner </P
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>postinstall_cmd</CODE
+>
+: string, Shell command to execute after installing </P
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>error_cmd</CODE
+>
+: string, Shell command to execute if any error occurs </P
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>preinstall_cmd</CODE
+>
+: string, Shell command to execute prior to installing </P
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>dest</CODE
+>
+: string, Absolute path where file should be installed </P
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>ignore_cmd_errors</CODE
+>
+: boolean, Install file anyway even if an error occurs </P
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>enabled</CODE
+>
+: boolean, Configuration file is active </P
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>file_permissions</CODE
+>
+: string, chmod(1) permissions </P
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>source</CODE
+>
+: string, Relative path on the boot server where file can be downloaded </P
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>always_update</CODE
+>
+: boolean, Always attempt to install file even if unchanged </P
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>file_group</CODE
+>
+: string, chgrp(1) owner </P
+></LI
+></UL
+></LI
+></UL
+><P
+>Returns:</P
+><P
+></P
+><UL
+><LI
+><P
+> int, New conf_file_id (> 0) if successful </P
+></LI
+></UL
+></DIV
+><DIV
+CLASS="section"
+><HR><H2
+CLASS="section"
+><A
+NAME="AddConfFileToNodeGroup"
+>2.5. AddConfFileToNodeGroup</A
+></H2
+><P
+>Prototype:<A
+NAME="AEN273"
+></A
+><BLOCKQUOTE
+CLASS="BLOCKQUOTE"
+><P
+>AddConfFileToNodeGroup (auth, conf_file_id, nodegroup_id_or_name)</P
+></BLOCKQUOTE
+></P
+><P
+>Description:<A
+NAME="AEN276"
+></A
+><BLOCKQUOTE
+CLASS="BLOCKQUOTE"
+><P
+>Adds a configuration file to the specified node group. If the node
+group is already linked to the configuration file, no errors are
+returned.</P
+><P
+>Returns 1 if successful, faults otherwise.</P
+></BLOCKQUOTE
+></P
+><P
+>Allowed Roles:<A
+NAME="AEN280"
+></A
+><BLOCKQUOTE
+CLASS="BLOCKQUOTE"
+><P
+>admin</P
+></BLOCKQUOTE
+></P
+><P
+>Parameters:</P
+><P
+></P
+><UL
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>auth</CODE
+>
+: struct, API authentication structure </P
+><P
+></P
+><UL
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>AuthMethod</CODE
+>
+: string, Authentication method to use </P
+></LI
+></UL
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>conf_file_id</CODE
+>
+: int, Configuration file identifier </P
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>nodegroup_id_or_name</CODE
+>
+: int or string </P
+><P
+></P
+><UL
+><LI
+><P
+> int, Node group identifier </P
+></LI
+><LI
+><P
+> string, Node group name </P
+></LI
+></UL
+></LI
+></UL
+><P
+>Returns:</P
+><P
+></P
+><UL
+><LI
+><P
+> int, 1 if successful </P
+></LI
+></UL
+></DIV
+><DIV
+CLASS="section"
+><HR><H2
+CLASS="section"
+><A
+NAME="AddConfFileToNode"
+>2.6. AddConfFileToNode</A
+></H2
+><P
+>Prototype:<A
+NAME="AEN309"
+></A
+><BLOCKQUOTE
+CLASS="BLOCKQUOTE"
+><P
+>AddConfFileToNode (auth, conf_file_id, node_id_or_hostname)</P
+></BLOCKQUOTE
+></P
+><P
+>Description:<A
+NAME="AEN312"
+></A
+><BLOCKQUOTE
+CLASS="BLOCKQUOTE"
+><P
+>Adds a configuration file to the specified node. If the node is
+already linked to the configuration file, no errors are returned.</P
+><P
+>Returns 1 if successful, faults otherwise.</P
+></BLOCKQUOTE
+></P
+><P
+>Allowed Roles:<A
+NAME="AEN316"
+></A
+><BLOCKQUOTE
+CLASS="BLOCKQUOTE"
+><P
+>admin</P
+></BLOCKQUOTE
+></P
+><P
+>Parameters:</P
+><P
+></P
+><UL
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>auth</CODE
+>
+: struct, API authentication structure </P
+><P
+></P
+><UL
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>AuthMethod</CODE
+>
+: string, Authentication method to use </P
+></LI
+></UL
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>conf_file_id</CODE
+>
+: int, Configuration file identifier </P
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>node_id_or_hostname</CODE
+>
+: int or string </P
+><P
+></P
+><UL
+><LI
+><P
+> int, Node identifier </P
+></LI
+><LI
+><P
+> string, Fully qualified hostname </P
+></LI
+></UL
+></LI
+></UL
+><P
+>Returns:</P
+><P
+></P
+><UL
+><LI
+><P
+> int, 1 if successful </P
+></LI
+></UL
+></DIV
+><DIV
+CLASS="section"
+><HR><H2
+CLASS="section"
+><A
+NAME="AddKeyType"
+>2.7. AddKeyType</A
+></H2
+><P
+>Prototype:<A
+NAME="AEN345"
+></A
+><BLOCKQUOTE
+CLASS="BLOCKQUOTE"
+><P
+>AddKeyType (auth, name)</P
+></BLOCKQUOTE
+></P
+><P
+>Description:<A
+NAME="AEN348"
+></A
+><BLOCKQUOTE
+CLASS="BLOCKQUOTE"
+><P
+>Adds a new key type.</P
+><P
+>Returns 1 if successful, faults otherwise.</P
+></BLOCKQUOTE
+></P
+><P
+>Allowed Roles:<A
+NAME="AEN352"
+></A
+><BLOCKQUOTE
+CLASS="BLOCKQUOTE"
+><P
+>admin</P
+></BLOCKQUOTE
+></P
+><P
+>Parameters:</P
+><P
+></P
+><UL
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>auth</CODE
+>
+: struct, API authentication structure </P
+><P
+></P
+><UL
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>AuthMethod</CODE
+>
+: string, Authentication method to use </P
+></LI
+></UL
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>name</CODE
+>
+: string, Key type </P
+></LI
+></UL
+><P
+>Returns:</P
+><P
+></P
+><UL
+><LI
+><P
+> int, 1 if successful </P
+></LI
+></UL
+></DIV
+><DIV
+CLASS="section"
+><HR><H2
+CLASS="section"
+><A
+NAME="AddMessage"
+>2.8. AddMessage</A
+></H2
+><P
+>Prototype:<A
+NAME="AEN373"
+></A
+><BLOCKQUOTE
+CLASS="BLOCKQUOTE"
+><P
+>AddMessage (auth, message_fields)</P
+></BLOCKQUOTE
+></P
+><P
+>Description:<A
+NAME="AEN376"
+></A
+><BLOCKQUOTE
+CLASS="BLOCKQUOTE"
+><P
+>Adds a new message template. Any values specified in
+message_fields are used, otherwise defaults are used.</P
+><P
+>Returns 1 if successful, faults otherwise.</P
+></BLOCKQUOTE
+></P
+><P
+>Allowed Roles:<A
+NAME="AEN380"
+></A
+><BLOCKQUOTE
+CLASS="BLOCKQUOTE"
+><P
+>admin</P
+></BLOCKQUOTE
+></P
+><P
+>Parameters:</P
+><P
+></P
+><UL
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>auth</CODE
+>
+: struct, API authentication structure </P
+><P
+></P
+><UL
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>AuthMethod</CODE
+>
+: string, Authentication method to use </P
+></LI
+></UL
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>message_fields</CODE
+>
+: struct </P
+><P
+></P
+><UL
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>enabled</CODE
+>
+: boolean, Message is enabled </P
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>message_id</CODE
+>
+: string, Message identifier </P
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>template</CODE
+>
+: string, Message template </P
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>subject</CODE
+>
+: string, Message summary </P
+></LI
+></UL
+></LI
+></UL
+><P
+>Returns:</P
+><P
+></P
+><UL
+><LI
+><P
+> int, 1 if successful </P
+></LI
+></UL
+></DIV
+><DIV
+CLASS="section"
+><HR><H2
+CLASS="section"
+><A
+NAME="AddNetworkMethod"
+>2.9. AddNetworkMethod</A
+></H2
+><P
+>Prototype:<A
+NAME="AEN414"
+></A
+><BLOCKQUOTE
+CLASS="BLOCKQUOTE"
+><P
+>AddNetworkMethod (auth, name)</P
+></BLOCKQUOTE
+></P
+><P
+>Description:<A
+NAME="AEN417"
+></A
+><BLOCKQUOTE
+CLASS="BLOCKQUOTE"
+><P
+>Adds a new network method.</P
+><P
+>Returns 1 if successful, faults otherwise.</P
+></BLOCKQUOTE
+></P
+><P
+>Allowed Roles:<A
+NAME="AEN421"
+></A
+><BLOCKQUOTE
+CLASS="BLOCKQUOTE"
+><P
+>admin</P
+></BLOCKQUOTE
+></P
+><P
+>Parameters:</P
+><P
+></P
+><UL
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>auth</CODE
+>
+: struct, API authentication structure </P
+><P
+></P
+><UL
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>AuthMethod</CODE
+>
+: string, Authentication method to use </P
+></LI
+></UL
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>name</CODE
+>
+: string, Network method </P
+></LI
+></UL
+><P
+>Returns:</P
+><P
+></P
+><UL
+><LI
+><P
+> int, 1 if successful </P
+></LI
+></UL
+></DIV
+><DIV
+CLASS="section"
+><HR><H2
+CLASS="section"
+><A
+NAME="AddNetworkType"
+>2.10. AddNetworkType</A
+></H2
+><P
+>Prototype:<A
+NAME="AEN442"
+></A
+><BLOCKQUOTE
+CLASS="BLOCKQUOTE"
+><P
+>AddNetworkType (auth, name)</P
+></BLOCKQUOTE
+></P
+><P
+>Description:<A
+NAME="AEN445"
+></A
+><BLOCKQUOTE
+CLASS="BLOCKQUOTE"
+><P
+>Adds a new network type.</P
+><P
+>Returns 1 if successful, faults otherwise.</P
+></BLOCKQUOTE
+></P
+><P
+>Allowed Roles:<A
+NAME="AEN449"
+></A
+><BLOCKQUOTE
+CLASS="BLOCKQUOTE"
+><P
+>admin</P
+></BLOCKQUOTE
+></P
+><P
+>Parameters:</P
+><P
+></P
+><UL
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>auth</CODE
+>
+: struct, API authentication structure </P
+><P
+></P
+><UL
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>AuthMethod</CODE
+>
+: string, Authentication method to use </P
+></LI
+></UL
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>name</CODE
+>
+: string, Network type </P
+></LI
+></UL
+><P
+>Returns:</P
+><P
+></P
+><UL
+><LI
+><P
+> int, 1 if successful </P
+></LI
+></UL
+></DIV
+><DIV
+CLASS="section"
+><HR><H2
+CLASS="section"
+><A
+NAME="AddNodeGroup"
+>2.11. AddNodeGroup</A
+></H2
+><P
+>Prototype:<A
+NAME="AEN470"
+></A
+><BLOCKQUOTE
+CLASS="BLOCKQUOTE"
+><P
+>AddNodeGroup (auth, nodegroup_fields)</P
+></BLOCKQUOTE
+></P
+><P
+>Description:<A
+NAME="AEN473"
+></A
+><BLOCKQUOTE
+CLASS="BLOCKQUOTE"
+><P
+>Adds a new node group. Any values specified in nodegroup_fields
+are used, otherwise defaults are used.</P
+><P
+>Returns the new nodegroup_id (> 0) if successful, faults otherwise.</P
+></BLOCKQUOTE
+></P
+><P
+>Allowed Roles:<A
+NAME="AEN477"
+></A
+><BLOCKQUOTE
+CLASS="BLOCKQUOTE"
+><P
+>admin</P
+></BLOCKQUOTE
+></P
+><P
+>Parameters:</P
+><P
+></P
+><UL
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>auth</CODE
+>
+: struct, API authentication structure </P
+><P
+></P
+><UL
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>AuthMethod</CODE
+>
+: string, Authentication method to use </P
+></LI
+></UL
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>nodegroup_fields</CODE
+>
+: struct </P
+><P
+></P
+><UL
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>name</CODE
+>
+: string, Node group name </P
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>description</CODE
+>
+: string, Node group description </P
+></LI
+></UL
+></LI
+></UL
+><P
+>Returns:</P
+><P
+></P
+><UL
+><LI
+><P
+> int, New nodegroup_id (> 0) if successful </P
+></LI
+></UL
+></DIV
+><DIV
+CLASS="section"
+><HR><H2
+CLASS="section"
+><A
+NAME="AddNodeNetwork"
+>2.12. AddNodeNetwork</A
+></H2
+><P
+>Prototype:<A
+NAME="AEN505"
+></A
+><BLOCKQUOTE
+CLASS="BLOCKQUOTE"
+><P
+>AddNodeNetwork (auth, node_id_or_hostname, nodenetwork_fields)</P
+></BLOCKQUOTE
+></P
+><P
+>Description:<A
+NAME="AEN508"
+></A
+><BLOCKQUOTE
+CLASS="BLOCKQUOTE"
+><P
+>Adds a new network for a node. Any values specified in
+nodenetwork_fields are used, otherwise defaults are
+used. Acceptable values for method may be retrieved via
+GetNetworkMethods. Acceptable values for type may be retrieved via
+GetNetworkTypes.</P
+><P
+>If type is static, ip, gateway, network, broadcast, netmask, and
+dns1 must all be specified in nodenetwork_fields. If type is dhcp,
+these parameters, even if specified, are ignored.</P
+><P
+>PIs and techs may only add networks to their own nodes. Admins may
+add networks to any node.</P
+><P
+>Returns the new nodenetwork_id (> 0) if successful, faults otherwise.</P
+></BLOCKQUOTE
+></P
+><P
+>Allowed Roles:<A
+NAME="AEN514"
+></A
+><BLOCKQUOTE
+CLASS="BLOCKQUOTE"
+><P
+>admin, pi, tech</P
+></BLOCKQUOTE
+></P
+><P
+>Parameters:</P
+><P
+></P
+><UL
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>auth</CODE
+>
+: struct, API authentication structure </P
+><P
+></P
+><UL
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>AuthMethod</CODE
+>
+: string, Authentication method to use </P
+></LI
+></UL
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>node_id_or_hostname</CODE
+>
+: int or string </P
+><P
+></P
+><UL
+><LI
+><P
+> int, Node identifier </P
+></LI
+><LI
+><P
+> string, Fully qualified hostname </P
+></LI
+></UL
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>nodenetwork_fields</CODE
+>
+: struct </P
+><P
+></P
+><UL
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>network</CODE
+>
+: string, Subnet address </P
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>is_primary</CODE
+>
+: boolean, Is the primary interface for this node </P
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>dns1</CODE
+>
+: string, IP address of primary DNS server </P
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>hostname</CODE
+>
+: string, (Optional) Hostname </P
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>mac</CODE
+>
+: string, MAC address </P
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>bwlimit</CODE
+>
+: int, Bandwidth limit </P
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>broadcast</CODE
+>
+: string, Network broadcast address </P
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>method</CODE
+>
+: string, Addressing method (e.g., 'static' or 'dhcp') </P
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>netmask</CODE
+>
+: string, Subnet mask </P
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>dns2</CODE
+>
+: string, IP address of secondary DNS server </P
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>ip</CODE
+>
+: string, IP address </P
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>type</CODE
+>
+: string, Address type (e.g., 'ipv4') </P
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>gateway</CODE
+>
+: string, IP address of primary gateway </P
+></LI
+></UL
+></LI
+></UL
+><P
+>Returns:</P
+><P
+></P
+><UL
+><LI
+><P
+> int, New nodenetwork_id (> 0) if successful </P
+></LI
+></UL
+></DIV
+><DIV
+CLASS="section"
+><HR><H2
+CLASS="section"
+><A
+NAME="AddNode"
+>2.13. AddNode</A
+></H2
+><P
+>Prototype:<A
+NAME="AEN583"
+></A
+><BLOCKQUOTE
+CLASS="BLOCKQUOTE"
+><P
+>AddNode (auth, site_id_or_login_base, node_fields)</P
+></BLOCKQUOTE
+></P
+><P
+>Description:<A
+NAME="AEN586"
+></A
+><BLOCKQUOTE
+CLASS="BLOCKQUOTE"
+><P
+>Adds a new node. Any values specified in node_fields are used,
+otherwise defaults are used.</P
+><P
+>PIs and techs may only add nodes to their own sites. Admins may
+add nodes to any site.</P
+><P
+>Returns the new node_id (> 0) if successful, faults otherwise.</P
+></BLOCKQUOTE
+></P
+><P
+>Allowed Roles:<A
+NAME="AEN591"
+></A
+><BLOCKQUOTE
+CLASS="BLOCKQUOTE"
+><P
+>admin, pi, tech</P
+></BLOCKQUOTE
+></P
+><P
+>Parameters:</P
+><P
+></P
+><UL
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>auth</CODE
+>
+: struct, API authentication structure </P
+><P
+></P
+><UL
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>AuthMethod</CODE
+>
+: string, Authentication method to use </P
+></LI
+></UL
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>site_id_or_login_base</CODE
+>
+: int or string </P
+><P
+></P
+><UL
+><LI
+><P
+> int, Site identifier </P
+></LI
+><LI
+><P
+> string, Site slice prefix </P
+></LI
+></UL
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>node_fields</CODE
+>
+: struct </P
+><P
+></P
+><UL
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>boot_state</CODE
+>
+: string, Boot state </P
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>model</CODE
+>
+: string, Make and model of the actual machine </P
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>version</CODE
+>
+: string, Apparent Boot CD version </P
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>hostname</CODE
+>
+: string, Fully qualified hostname </P
+></LI
+></UL
+></LI
+></UL
+><P
+>Returns:</P
+><P
+></P
+><UL
+><LI
+><P
+> int, New node_id (> 0) if successful </P
+></LI
+></UL
+></DIV
+><DIV
+CLASS="section"
+><HR><H2
+CLASS="section"
+><A
+NAME="AddNodeToNodeGroup"
+>2.14. AddNodeToNodeGroup</A
+></H2
+><P
+>Prototype:<A
+NAME="AEN633"
+></A
+><BLOCKQUOTE
+CLASS="BLOCKQUOTE"
+><P
+>AddNodeToNodeGroup (auth, node_id_or_hostname, nodegroup_id_or_name)</P
+></BLOCKQUOTE
+></P
+><P
+>Description:<A
+NAME="AEN636"
+></A
+><BLOCKQUOTE
+CLASS="BLOCKQUOTE"
+><P
+>Add a node to the specified node group. If the node is
+already a member of the nodegroup, no errors are returned.</P
+><P
+>Returns 1 if successful, faults otherwise.</P
+></BLOCKQUOTE
+></P
+><P
+>Allowed Roles:<A
+NAME="AEN640"
+></A
+><BLOCKQUOTE
+CLASS="BLOCKQUOTE"
+><P
+>admin</P
+></BLOCKQUOTE
+></P
+><P
+>Parameters:</P
+><P
+></P
+><UL
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>auth</CODE
+>
+: struct, API authentication structure </P
+><P
+></P
+><UL
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>AuthMethod</CODE
+>
+: string, Authentication method to use </P
+></LI
+></UL
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>node_id_or_hostname</CODE
+>
+: int or string </P
+><P
+></P
+><UL
+><LI
+><P
+> int, Node identifier </P
+></LI
+><LI
+><P
+> string, Fully qualified hostname </P
+></LI
+></UL
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>nodegroup_id_or_name</CODE
+>
+: int or string </P
+><P
+></P
+><UL
+><LI
+><P
+> int, Node group identifier </P
+></LI
+><LI
+><P
+> string, Node group name </P
+></LI
+></UL
+></LI
+></UL
+><P
+>Returns:</P
+><P
+></P
+><UL
+><LI
+><P
+> int, 1 if successful </P
+></LI
+></UL
+></DIV
+><DIV
+CLASS="section"
+><HR><H2
+CLASS="section"
+><A
+NAME="AddNodeToPCU"
+>2.15. AddNodeToPCU</A
+></H2
+><P
+>Prototype:<A
+NAME="AEN674"
+></A
+><BLOCKQUOTE
+CLASS="BLOCKQUOTE"
+><P
+>AddNodeToPCU (auth, node_id_or_hostname, pcu_id, port)</P
+></BLOCKQUOTE
+></P
+><P
+>Description:<A
+NAME="AEN677"
+></A
+><BLOCKQUOTE
+CLASS="BLOCKQUOTE"
+><P
+>Adds a node to a port on a PCU. Faults if the node has already
+been added to the PCU or if the port is already in use.</P
+><P
+>Non-admins may only update PCUs at their sites.</P
+><P
+>Returns 1 if successful, faults otherwise.</P
+></BLOCKQUOTE
+></P
+><P
+>Allowed Roles:<A
+NAME="AEN682"
+></A
+><BLOCKQUOTE
+CLASS="BLOCKQUOTE"
+><P
+>admin, pi, tech</P
+></BLOCKQUOTE
+></P
+><P
+>Parameters:</P
+><P
+></P
+><UL
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>auth</CODE
+>
+: struct, API authentication structure </P
+><P
+></P
+><UL
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>AuthMethod</CODE
+>
+: string, Authentication method to use </P
+></LI
+></UL
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>node_id_or_hostname</CODE
+>
+: int or string </P
+><P
+></P
+><UL
+><LI
+><P
+> int, Node identifier </P
+></LI
+><LI
+><P
+> string, Fully qualified hostname </P
+></LI
+></UL
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>pcu_id</CODE
+>
+: int, PCU identifier </P
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>port</CODE
+>
+: int, PCU port number </P
+></LI
+></UL
+><P
+>Returns:</P
+><P
+></P
+><UL
+><LI
+><P
+> int, 1 if successful </P
+></LI
+></UL
+></DIV
+><DIV
+CLASS="section"
+><HR><H2
+CLASS="section"
+><A
+NAME="AddPCU"
+>2.16. AddPCU</A
+></H2
+><P
+>Prototype:<A
+NAME="AEN714"
+></A
+><BLOCKQUOTE
+CLASS="BLOCKQUOTE"
+><P
+>AddPCU (auth, site_id_or_login_base, pcu_fields)</P
+></BLOCKQUOTE
+></P
+><P
+>Description:<A
+NAME="AEN717"
+></A
+><BLOCKQUOTE
+CLASS="BLOCKQUOTE"
+><P
+>Adds a new power control unit (PCU) to the specified site. Any
+fields specified in pcu_fields are used, otherwise defaults are
+used.</P
+><P
+>PIs and technical contacts may only add PCUs to their own sites.</P
+><P
+>Returns the new pcu_id (> 0) if successful, faults otherwise.</P
+></BLOCKQUOTE
+></P
+><P
+>Allowed Roles:<A
+NAME="AEN722"
+></A
+><BLOCKQUOTE
+CLASS="BLOCKQUOTE"
+><P
+>admin, pi, tech</P
+></BLOCKQUOTE
+></P
+><P
+>Parameters:</P
+><P
+></P
+><UL
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>auth</CODE
+>
+: struct, API authentication structure </P
+><P
+></P
+><UL
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>AuthMethod</CODE
+>
+: string, Authentication method to use </P
+></LI
+></UL
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>site_id_or_login_base</CODE
+>
+: int or string </P
+><P
+></P
+><UL
+><LI
+><P
+> int, Site identifier </P
+></LI
+><LI
+><P
+> string, Site slice prefix </P
+></LI
+></UL
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>pcu_fields</CODE
+>
+: struct </P
+><P
+></P
+><UL
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>username</CODE
+>
+: string, PCU username </P
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>protocol</CODE
+>
+: string, PCU protocol, e.g. ssh, https, telnet </P
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>ip</CODE
+>
+: string, PCU IP address </P
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>notes</CODE
+>
+: string, Miscellaneous notes </P
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>hostname</CODE
+>
+: string, PCU hostname </P
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>model</CODE
+>
+: string, PCU model string </P
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>password</CODE
+>
+: string, PCU username </P
+></LI
+></UL
+></LI
+></UL
+><P
+>Returns:</P
+><P
+></P
+><UL
+><LI
+><P
+> int, New pcu_id (> 0) if successful </P
+></LI
+></UL
+></DIV
+><DIV
+CLASS="section"
+><HR><H2
+CLASS="section"
+><A
+NAME="AddPeer"
+>2.17. AddPeer</A
+></H2
+><P
+>Prototype:<A
+NAME="AEN773"
+></A
+><BLOCKQUOTE
+CLASS="BLOCKQUOTE"
+><P
+>AddPeer (auth, peer_fields)</P
+></BLOCKQUOTE
+></P
+><P
+>Description:<A
+NAME="AEN776"
+></A
+><BLOCKQUOTE
+CLASS="BLOCKQUOTE"
+><P
+>Adds a new peer.</P
+><P
+>Returns the new peer_id (> 0) if successful, faults otherwise.</P
+></BLOCKQUOTE
+></P
+><P
+>Allowed Roles:<A
+NAME="AEN780"
+></A
+><BLOCKQUOTE
+CLASS="BLOCKQUOTE"
+><P
+>admin</P
+></BLOCKQUOTE
+></P
+><P
+>Parameters:</P
+><P
+></P
+><UL
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>auth</CODE
+>
+: struct, API authentication structure </P
+><P
+></P
+><UL
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>AuthMethod</CODE
+>
+: string, Authentication method to use </P
+></LI
+></UL
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>peer_fields</CODE
+>
+: struct </P
+><P
+></P
+><UL
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>key</CODE
+>
+: string, Peer GPG public key </P
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>cacert</CODE
+>
+: string, Peer SSL public certificate </P
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>peername</CODE
+>
+: string, Peer name </P
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>peer_url</CODE
+>
+: string, Peer API URL </P
+></LI
+></UL
+></LI
+></UL
+><P
+>Returns:</P
+><P
+></P
+><UL
+><LI
+><P
+> int, New peer_id (> 0) if successful </P
+></LI
+></UL
+></DIV
+><DIV
+CLASS="section"
+><HR><H2
+CLASS="section"
+><A
+NAME="AddPersonKey"
+>2.18. AddPersonKey</A
+></H2
+><P
+>Prototype:<A
+NAME="AEN814"
+></A
+><BLOCKQUOTE
+CLASS="BLOCKQUOTE"
+><P
+>AddPersonKey (auth, person_id_or_email, key_fields)</P
+></BLOCKQUOTE
+></P
+><P
+>Description:<A
+NAME="AEN817"
+></A
+><BLOCKQUOTE
+CLASS="BLOCKQUOTE"
+><P
+>Adds a new key to the specified account.</P
+><P
+>Non-admins can only modify their own keys.</P
+><P
+>Returns the new key_id (> 0) if successful, faults otherwise.</P
+></BLOCKQUOTE
+></P
+><P
+>Allowed Roles:<A
+NAME="AEN822"
+></A
+><BLOCKQUOTE
+CLASS="BLOCKQUOTE"
+><P
+>admin, pi, tech, user</P
+></BLOCKQUOTE
+></P
+><P
+>Parameters:</P
+><P
+></P
+><UL
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>auth</CODE
+>
+: struct, API authentication structure </P
+><P
+></P
+><UL
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>AuthMethod</CODE
+>
+: string, Authentication method to use </P
+></LI
+></UL
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>person_id_or_email</CODE
+>
+: int or string </P
+><P
+></P
+><UL
+><LI
+><P
+> int, User identifier </P
+></LI
+><LI
+><P
+> string, Primary e-mail address </P
+></LI
+></UL
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>key_fields</CODE
+>
+: struct </P
+><P
+></P
+><UL
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>key_type</CODE
+>
+: string, Key type </P
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>key</CODE
+>
+: string, Key value </P
+></LI
+></UL
+></LI
+></UL
+><P
+>Returns:</P
+><P
+></P
+><UL
+><LI
+><P
+> int, New key_id (> 0) if successful </P
+></LI
+></UL
+></DIV
+><DIV
+CLASS="section"
+><HR><H2
+CLASS="section"
+><A
+NAME="AddPerson"
+>2.19. AddPerson</A
+></H2
+><P
+>Prototype:<A
+NAME="AEN858"
+></A
+><BLOCKQUOTE
+CLASS="BLOCKQUOTE"
+><P
+>AddPerson (auth, person_fields)</P
+></BLOCKQUOTE
+></P
+><P
+>Description:<A
+NAME="AEN861"
+></A
+><BLOCKQUOTE
+CLASS="BLOCKQUOTE"
+><P
+>Adds a new account. Any fields specified in person_fields are
+used, otherwise defaults are used.</P
+><P
+>Accounts are disabled by default. To enable an account, use
+UpdatePerson().</P
+><P
+>Returns the new person_id (> 0) if successful, faults otherwise.</P
+></BLOCKQUOTE
+></P
+><P
+>Allowed Roles:<A
+NAME="AEN866"
+></A
+><BLOCKQUOTE
+CLASS="BLOCKQUOTE"
+><P
+>admin, pi</P
+></BLOCKQUOTE
+></P
+><P
+>Parameters:</P
+><P
+></P
+><UL
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>auth</CODE
+>
+: struct, API authentication structure </P
+><P
+></P
+><UL
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>AuthMethod</CODE
+>
+: string, Authentication method to use </P
+></LI
+></UL
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>person_fields</CODE
+>
+: struct </P
+><P
+></P
+><UL
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>bio</CODE
+>
+: string, Biography </P
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>first_name</CODE
+>
+: string, Given name </P
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>last_name</CODE
+>
+: string, Surname </P
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>title</CODE
+>
+: string, Title </P
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>url</CODE
+>
+: string, Home page </P
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>phone</CODE
+>
+: string, Telephone number </P
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>password</CODE
+>
+: string, Account password in crypt() form </P
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>email</CODE
+>
+: string, Primary e-mail address </P
+></LI
+></UL
+></LI
+></UL
+><P
+>Returns:</P
+><P
+></P
+><UL
+><LI
+><P
+> int, New person_id (> 0) if successful </P
+></LI
+></UL
+></DIV
+><DIV
+CLASS="section"
+><HR><H2
+CLASS="section"
+><A
+NAME="AddPersonToSite"
+>2.20. AddPersonToSite</A
+></H2
+><P
+>Prototype:<A
+NAME="AEN912"
+></A
+><BLOCKQUOTE
+CLASS="BLOCKQUOTE"
+><P
+>AddPersonToSite (auth, person_id_or_email, site_id_or_login_base)</P
+></BLOCKQUOTE
+></P
+><P
+>Description:<A
+NAME="AEN915"
+></A
+><BLOCKQUOTE
+CLASS="BLOCKQUOTE"
+><P
+>Adds the specified person to the specified site. If the person is
+already a member of the site, no errors are returned. Does not
+change the person's primary site.</P
+><P
+>Returns 1 if successful, faults otherwise.</P
+></BLOCKQUOTE
+></P
+><P
+>Allowed Roles:<A
+NAME="AEN919"
+></A
+><BLOCKQUOTE
+CLASS="BLOCKQUOTE"
+><P
+>admin</P
+></BLOCKQUOTE
+></P
+><P
+>Parameters:</P
+><P
+></P
+><UL
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>auth</CODE
+>
+: struct, API authentication structure </P
+><P
+></P
+><UL
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>AuthMethod</CODE
+>
+: string, Authentication method to use </P
+></LI
+></UL
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>person_id_or_email</CODE
+>
+: int or string </P
+><P
+></P
+><UL
+><LI
+><P
+> int, User identifier </P
+></LI
+><LI
+><P
+> string, Primary e-mail address </P
+></LI
+></UL
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>site_id_or_login_base</CODE
+>
+: int or string </P
+><P
+></P
+><UL
+><LI
+><P
+> int, Site identifier </P
+></LI
+><LI
+><P
+> string, Site slice prefix </P
+></LI
+></UL
+></LI
+></UL
+><P
+>Returns:</P
+><P
+></P
+><UL
+><LI
+><P
+> int, 1 if successful </P
+></LI
+></UL
+></DIV
+><DIV
+CLASS="section"
+><HR><H2
+CLASS="section"
+><A
+NAME="AddPersonToSlice"
+>2.21. AddPersonToSlice</A
+></H2
+><P
+>Prototype:<A
+NAME="AEN953"
+></A
+><BLOCKQUOTE
+CLASS="BLOCKQUOTE"
+><P
+>AddPersonToSlice (auth, person_id_or_email, slice_id_or_name)</P
+></BLOCKQUOTE
+></P
+><P
+>Description:<A
+NAME="AEN956"
+></A
+><BLOCKQUOTE
+CLASS="BLOCKQUOTE"
+><P
+>Adds the specified person to the specified slice. If the person is
+already a member of the slice, no errors are returned.</P
+><P
+>Returns 1 if successful, faults otherwise.</P
+></BLOCKQUOTE
+></P
+><P
+>Allowed Roles:<A
+NAME="AEN960"
+></A
+><BLOCKQUOTE
+CLASS="BLOCKQUOTE"
+><P
+>admin, pi</P
+></BLOCKQUOTE
+></P
+><P
+>Parameters:</P
+><P
+></P
+><UL
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>auth</CODE
+>
+: struct, API authentication structure </P
+><P
+></P
+><UL
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>AuthMethod</CODE
+>
+: string, Authentication method to use </P
+></LI
+></UL
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>person_id_or_email</CODE
+>
+: int or string </P
+><P
+></P
+><UL
+><LI
+><P
+> int, User identifier </P
+></LI
+><LI
+><P
+> string, Primary e-mail address </P
+></LI
+></UL
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>slice_id_or_name</CODE
+>
+: int or string </P
+><P
+></P
+><UL
+><LI
+><P
+> int, Slice identifier </P
+></LI
+><LI
+><P
+> string, Slice name </P
+></LI
+></UL
+></LI
+></UL
+><P
+>Returns:</P
+><P
+></P
+><UL
+><LI
+><P
+> int, 1 if successful </P
+></LI
+></UL
+></DIV
+><DIV
+CLASS="section"
+><HR><H2
+CLASS="section"
+><A
+NAME="AddRole"
+>2.22. AddRole</A
+></H2
+><P
+>Prototype:<A
+NAME="AEN994"
+></A
+><BLOCKQUOTE
+CLASS="BLOCKQUOTE"
+><P
+>AddRole (auth, role_id, name)</P
+></BLOCKQUOTE
+></P
+><P
+>Description:<A
+NAME="AEN997"
+></A
+><BLOCKQUOTE
+CLASS="BLOCKQUOTE"
+><P
+>Adds a new role.</P
+><P
+>Returns 1 if successful, faults otherwise.</P
+></BLOCKQUOTE
+></P
+><P
+>Allowed Roles:<A
+NAME="AEN1001"
+></A
+><BLOCKQUOTE
+CLASS="BLOCKQUOTE"
+><P
+>admin</P
+></BLOCKQUOTE
+></P
+><P
+>Parameters:</P
+><P
+></P
+><UL
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>auth</CODE
+>
+: struct, API authentication structure </P
+><P
+></P
+><UL
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>AuthMethod</CODE
+>
+: string, Authentication method to use </P
+></LI
+></UL
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>role_id</CODE
+>
+: int, Role identifier </P
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>name</CODE
+>
+: string, Role </P
+></LI
+></UL
+><P
+>Returns:</P
+><P
+></P
+><UL
+><LI
+><P
+> int, 1 if successful </P
+></LI
+></UL
+></DIV
+><DIV
+CLASS="section"
+><HR><H2
+CLASS="section"
+><A
+NAME="AddRoleToPerson"
+>2.23. AddRoleToPerson</A
+></H2
+><P
+>Prototype:<A
+NAME="AEN1025"
+></A
+><BLOCKQUOTE
+CLASS="BLOCKQUOTE"
+><P
+>AddRoleToPerson (auth, role_id_or_name, person_id_or_email)</P
+></BLOCKQUOTE
+></P
+><P
+>Description:<A
+NAME="AEN1028"
+></A
+><BLOCKQUOTE
+CLASS="BLOCKQUOTE"
+><P
+>Grants the specified role to the person.</P
+><P
+>PIs can only grant the tech and user roles to users and techs at
+their sites. Admins can grant any role to any user.</P
+><P
+>Returns 1 if successful, faults otherwise.</P
+></BLOCKQUOTE
+></P
+><P
+>Allowed Roles:<A
+NAME="AEN1033"
+></A
+><BLOCKQUOTE
+CLASS="BLOCKQUOTE"
+><P
+>admin, pi</P
+></BLOCKQUOTE
+></P
+><P
+>Parameters:</P
+><P
+></P
+><UL
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>auth</CODE
+>
+: struct, API authentication structure </P
+><P
+></P
+><UL
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>AuthMethod</CODE
+>
+: string, Authentication method to use </P
+></LI
+></UL
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>role_id_or_name</CODE
+>
+: int or string </P
+><P
+></P
+><UL
+><LI
+><P
+> int, Role identifier </P
+></LI
+><LI
+><P
+> string, Role </P
+></LI
+></UL
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>person_id_or_email</CODE
+>
+: int or string </P
+><P
+></P
+><UL
+><LI
+><P
+> int, User identifier </P
+></LI
+><LI
+><P
+> string, Primary e-mail address </P
+></LI
+></UL
+></LI
+></UL
+><P
+>Returns:</P
+><P
+></P
+><UL
+><LI
+><P
+> int, 1 if successful </P
+></LI
+></UL
+></DIV
+><DIV
+CLASS="section"
+><HR><H2
+CLASS="section"
+><A
+NAME="AddSiteAddress"
+>2.24. AddSiteAddress</A
+></H2
+><P
+>Prototype:<A
+NAME="AEN1067"
+></A
+><BLOCKQUOTE
+CLASS="BLOCKQUOTE"
+><P
+>AddSiteAddress (auth, site_id_or_login_base, address_fields)</P
+></BLOCKQUOTE
+></P
+><P
+>Description:<A
+NAME="AEN1070"
+></A
+><BLOCKQUOTE
+CLASS="BLOCKQUOTE"
+><P
+>Adds a new address to a site. Fields specified in
+address_fields are used; some are not optional.</P
+><P
+>PIs may only add addresses to their own sites.</P
+><P
+>Returns the new address_id (> 0) if successful, faults otherwise.</P
+></BLOCKQUOTE
+></P
+><P
+>Allowed Roles:<A
+NAME="AEN1075"
+></A
+><BLOCKQUOTE
+CLASS="BLOCKQUOTE"
+><P
+>admin, pi</P
+></BLOCKQUOTE
+></P
+><P
+>Parameters:</P
+><P
+></P
+><UL
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>auth</CODE
+>
+: struct, API authentication structure </P
+><P
+></P
+><UL
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>AuthMethod</CODE
+>
+: string, Authentication method to use </P
+></LI
+></UL
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>site_id_or_login_base</CODE
+>
+: int or string </P
+><P
+></P
+><UL
+><LI
+><P
+> int, Site identifier </P
+></LI
+><LI
+><P
+> string, Site slice prefix </P
+></LI
+></UL
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>address_fields</CODE
+>
+: struct </P
+><P
+></P
+><UL
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>city</CODE
+>
+: string, City </P
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>country</CODE
+>
+: string, Country </P
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>line3</CODE
+>
+: string, Address line 3 </P
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>line2</CODE
+>
+: string, Address line 2 </P
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>line1</CODE
+>
+: string, Address line 1 </P
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>state</CODE
+>
+: string, State or province </P
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>postalcode</CODE
+>
+: string, Postal code </P
+></LI
+></UL
+></LI
+></UL
+><P
+>Returns:</P
+><P
+></P
+><UL
+><LI
+><P
+> int, New address_id (> 0) if successful </P
+></LI
+></UL
+></DIV
+><DIV
+CLASS="section"
+><HR><H2
+CLASS="section"
+><A
+NAME="AddSite"
+>2.25. AddSite</A
+></H2
+><P
+>Prototype:<A
+NAME="AEN1126"
+></A
+><BLOCKQUOTE
+CLASS="BLOCKQUOTE"
+><P
+>AddSite (auth, site_fields)</P
+></BLOCKQUOTE
+></P
+><P
+>Description:<A
+NAME="AEN1129"
+></A
+><BLOCKQUOTE
+CLASS="BLOCKQUOTE"
+><P
+>Adds a new site, and creates a node group for that site. Any
+fields specified in site_fields are used, otherwise defaults are
+used.</P
+><P
+>Returns the new site_id (> 0) if successful, faults otherwise.</P
+></BLOCKQUOTE
+></P
+><P
+>Allowed Roles:<A
+NAME="AEN1133"
+></A
+><BLOCKQUOTE
+CLASS="BLOCKQUOTE"
+><P
+>admin</P
+></BLOCKQUOTE
+></P
+><P
+>Parameters:</P
+><P
+></P
+><UL
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>auth</CODE
+>
+: struct, API authentication structure </P
+><P
+></P
+><UL
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>AuthMethod</CODE
+>
+: string, Authentication method to use </P
+></LI
+></UL
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>site_fields</CODE
+>
+: struct </P
+><P
+></P
+><UL
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>name</CODE
+>
+: string, Full site name </P
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>url</CODE
+>
+: string, URL of a page that describes the site </P
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>enabled</CODE
+>
+: boolean, Has been enabled </P
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>longitude</CODE
+>
+: double, Decimal longitude of the site </P
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>latitude</CODE
+>
+: double, Decimal latitude of the site </P
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>max_slices</CODE
+>
+: int, Maximum number of slices that the site is able to create </P
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>login_base</CODE
+>
+: string, Site slice prefix </P
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>max_slivers</CODE
+>
+: int, Maximum number of slivers that the site is able to create </P
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>is_public</CODE
+>
+: boolean, Publicly viewable site </P
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>abbreviated_name</CODE
+>
+: string, Abbreviated site name </P
+></LI
+></UL
+></LI
+></UL
+><P
+>Returns:</P
+><P
+></P
+><UL
+><LI
+><P
+> int, New site_id (> 0) if successful </P
+></LI
+></UL
+></DIV
+><DIV
+CLASS="section"
+><HR><H2
+CLASS="section"
+><A
+NAME="AddSliceAttribute"
+>2.26. AddSliceAttribute</A
+></H2
+><P
+>Prototype:<A
+NAME="AEN1185"
+></A
+><BLOCKQUOTE
+CLASS="BLOCKQUOTE"
+><P
+>AddSliceAttribute (auth, slice_id_or_name, attribute_type_id_or_name, value, node_id_or_hostname)</P
+></BLOCKQUOTE
+></P
+><P
+>Description:<A
+NAME="AEN1188"
+></A
+><BLOCKQUOTE
+CLASS="BLOCKQUOTE"
+><P
+>Sets the specified attribute of the slice (or sliver, if
+node_id_or_hostname is specified) to the specified value.</P
+><P
+>Attributes may require the caller to have a particular role in
+order to be set or changed. Users may only set attributes of
+slices or slivers of which they are members. PIs may only set
+attributes of slices or slivers at their sites, or of which they
+are members. Admins may set attributes of any slice or sliver.</P
+><P
+>Returns the new slice_attribute_id (> 0) if successful, faults
+otherwise.</P
+></BLOCKQUOTE
+></P
+><P
+>Allowed Roles:<A
+NAME="AEN1193"
+></A
+><BLOCKQUOTE
+CLASS="BLOCKQUOTE"
+><P
+>admin, pi, user</P
+></BLOCKQUOTE
+></P
+><P
+>Parameters:</P
+><P
+></P
+><UL
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>auth</CODE
+>
+: struct, API authentication structure </P
+><P
+></P
+><UL
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>AuthMethod</CODE
+>
+: string, Authentication method to use </P
+></LI
+></UL
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>slice_id_or_name</CODE
+>
+: int or string </P
+><P
+></P
+><UL
+><LI
+><P
+> int, Slice identifier </P
+></LI
+><LI
+><P
+> string, Slice attribute type name </P
+></LI
+></UL
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>attribute_type_id_or_name</CODE
+>
+: int or string </P
+><P
+></P
+><UL
+><LI
+><P
+> int, Slice attribute type identifier </P
+></LI
+><LI
+><P
+> string, Slice attribute type name </P
+></LI
+></UL
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>value</CODE
+>
+: string, Slice attribute value </P
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>node_id_or_hostname</CODE
+>
+: int or string </P
+><P
+></P
+><UL
+><LI
+><P
+> int, Node identifier </P
+></LI
+><LI
+><P
+> string, Fully qualified hostname </P
+></LI
+></UL
+></LI
+></UL
+><P
+>Returns:</P
+><P
+></P
+><UL
+><LI
+><P
+> int, New slice_attribute_id (> 0) if successful </P
+></LI
+></UL
+></DIV
+><DIV
+CLASS="section"
+><HR><H2
+CLASS="section"
+><A
+NAME="AddSliceAttributeType"
+>2.27. AddSliceAttributeType</A
+></H2
+><P
+>Prototype:<A
+NAME="AEN1238"
+></A
+><BLOCKQUOTE
+CLASS="BLOCKQUOTE"
+><P
+>AddSliceAttributeType (auth, attribute_type_fields)</P
+></BLOCKQUOTE
+></P
+><P
+>Description:<A
+NAME="AEN1241"
+></A
+><BLOCKQUOTE
+CLASS="BLOCKQUOTE"
+><P
+>Adds a new type of slice attribute. Any fields specified in
+attribute_type_fields are used, otherwise defaults are used.</P
+><P
+>Returns the new attribute_type_id (> 0) if successful, faults
+otherwise.</P
+></BLOCKQUOTE
+></P
+><P
+>Allowed Roles:<A
+NAME="AEN1245"
+></A
+><BLOCKQUOTE
+CLASS="BLOCKQUOTE"
+><P
+>admin</P
+></BLOCKQUOTE
+></P
+><P
+>Parameters:</P
+><P
+></P
+><UL
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>auth</CODE
+>
+: struct, API authentication structure </P
+><P
+></P
+><UL
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>AuthMethod</CODE
+>
+: string, Authentication method to use </P
+></LI
+></UL
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>attribute_type_fields</CODE
+>
+: struct </P
+><P
+></P
+><UL
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>min_role_id</CODE
+>
+: int, Minimum (least powerful) role that can set or change this attribute </P
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>name</CODE
+>
+: string, Slice attribute type name </P
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>description</CODE
+>
+: string, Slice attribute type description </P
+></LI
+></UL
+></LI
+></UL
+><P
+>Returns:</P
+><P
+></P
+><UL
+><LI
+><P
+> int, New attribute_id (> 0) if successful </P
+></LI
+></UL
+></DIV
+><DIV
+CLASS="section"
+><HR><H2
+CLASS="section"
+><A
+NAME="AddSliceInstantiation"
+>2.28. AddSliceInstantiation</A
+></H2
+><P
+>Prototype:<A
+NAME="AEN1276"
+></A
+><BLOCKQUOTE
+CLASS="BLOCKQUOTE"
+><P
+>AddSliceInstantiation (auth, name)</P
+></BLOCKQUOTE
+></P
+><P
+>Description:<A
+NAME="AEN1279"
+></A
+><BLOCKQUOTE
+CLASS="BLOCKQUOTE"
+><P
+>Adds a new slice instantiation state.</P
+><P
+>Returns 1 if successful, faults otherwise.</P
+></BLOCKQUOTE
+></P
+><P
+>Allowed Roles:<A
+NAME="AEN1283"
+></A
+><BLOCKQUOTE
+CLASS="BLOCKQUOTE"
+><P
+>admin</P
+></BLOCKQUOTE
+></P
+><P
+>Parameters:</P
+><P
+></P
+><UL
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>auth</CODE
+>
+: struct, API authentication structure </P
+><P
+></P
+><UL
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>AuthMethod</CODE
+>
+: string, Authentication method to use </P
+></LI
+></UL
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>name</CODE
+>
+: string, Slice instantiation state </P
+></LI
+></UL
+><P
+>Returns:</P
+><P
+></P
+><UL
+><LI
+><P
+> int, 1 if successful </P
+></LI
+></UL
+></DIV
+><DIV
+CLASS="section"
+><HR><H2
+CLASS="section"
+><A
+NAME="AddSlice"
+>2.29. AddSlice</A
+></H2
+><P
+>Prototype:<A
+NAME="AEN1304"
+></A
+><BLOCKQUOTE
+CLASS="BLOCKQUOTE"
+><P
+>AddSlice (auth, slice_fields)</P
+></BLOCKQUOTE
+></P
+><P
+>Description:<A
+NAME="AEN1307"
+></A
+><BLOCKQUOTE
+CLASS="BLOCKQUOTE"
+><P
+>Adds a new slice. Any fields specified in slice_fields are used,
+otherwise defaults are used.</P
+><P
+>Valid slice names are lowercase and begin with the login_base
+(slice prefix) of a valid site, followed by a single
+underscore. Thereafter, only letters, numbers, or additional
+underscores may be used.</P
+><P
+>PIs may only add slices associated with their own sites (i.e.,
+slice prefixes must always be the login_base of one of their
+sites).</P
+><P
+>Returns the new slice_id (> 0) if successful, faults otherwise.</P
+></BLOCKQUOTE
+></P
+><P
+>Allowed Roles:<A
+NAME="AEN1313"
+></A
+><BLOCKQUOTE
+CLASS="BLOCKQUOTE"
+><P
+>admin, pi</P
+></BLOCKQUOTE
+></P
+><P
+>Parameters:</P
+><P
+></P
+><UL
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>auth</CODE
+>
+: struct, API authentication structure </P
+><P
+></P
+><UL
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>AuthMethod</CODE
+>
+: string, Authentication method to use </P
+></LI
+></UL
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>slice_fields</CODE
+>
+: struct </P
+><P
+></P
+><UL
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>url</CODE
+>
+: string, URL further describing this slice </P
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>max_nodes</CODE
+>
+: int, Maximum number of nodes that can be assigned to this slice </P
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>instantiation</CODE
+>
+: string, Slice instantiation state </P
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>name</CODE
+>
+: string, Slice name </P
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>description</CODE
+>
+: string, Slice description </P
+></LI
+></UL
+></LI
+></UL
+><P
+>Returns:</P
+><P
+></P
+><UL
+><LI
+><P
+> int, New slice_id (> 0) if successful </P
+></LI
+></UL
+></DIV
+><DIV
+CLASS="section"
+><HR><H2
+CLASS="section"
+><A
+NAME="AddSliceToNodes"
+>2.30. AddSliceToNodes</A
+></H2
+><P
+>Prototype:<A
+NAME="AEN1350"
+></A
+><BLOCKQUOTE
+CLASS="BLOCKQUOTE"
+><P
+>AddSliceToNodes (auth, slice_id_or_name, node_id_or_hostname_list)</P
+></BLOCKQUOTE
+></P
+><P
+>Description:<A
+NAME="AEN1353"
+></A
+><BLOCKQUOTE
+CLASS="BLOCKQUOTE"
+><P
+>Adds the specified slice to the specified nodes. Nodes may be
+either local or foreign nodes.</P
+><P
+>If the slice is already associated with a node, no errors are
+returned.</P
+><P
+>Returns 1 if successful, faults otherwise.</P
+></BLOCKQUOTE
+></P
+><P
+>Allowed Roles:<A
+NAME="AEN1358"
+></A
+><BLOCKQUOTE
+CLASS="BLOCKQUOTE"
+><P
+>admin, pi, user</P
+></BLOCKQUOTE
+></P
+><P
+>Parameters:</P
+><P
+></P
+><UL
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>auth</CODE
+>
+: struct, API authentication structure </P
+><P
+></P
+><UL
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>AuthMethod</CODE
+>
+: string, Authentication method to use </P
+></LI
+></UL
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>slice_id_or_name</CODE
+>
+: int or string </P
+><P
+></P
+><UL
+><LI
+><P
+> int, Slice identifier </P
+></LI
+><LI
+><P
+> string, Slice name </P
+></LI
+></UL
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>node_id_or_hostname_list</CODE
+>
+: array of int or string </P
+><P
+></P
+><UL
+><LI
+><P
+> int, Node identifier </P
+></LI
+><LI
+><P
+> string, Fully qualified hostname </P
+></LI
+></UL
+></LI
+></UL
+><P
+>Returns:</P
+><P
+></P
+><UL
+><LI
+><P
+> int, 1 if successful </P
+></LI
+></UL
+></DIV
+><DIV
+CLASS="section"
+><HR><H2
+CLASS="section"
+><A
+NAME="AuthCheck"
+>2.31. AuthCheck</A
+></H2
+><P
+>Prototype:<A
+NAME="AEN1392"
+></A
+><BLOCKQUOTE
+CLASS="BLOCKQUOTE"
+><P
+>AuthCheck (auth)</P
+></BLOCKQUOTE
+></P
+><P
+>Description:<A
+NAME="AEN1395"
+></A
+><BLOCKQUOTE
+CLASS="BLOCKQUOTE"
+><P
+>Returns 1 if the user or node authenticated successfully, faults
+otherwise.</P
+></BLOCKQUOTE
+></P
+><P
+>Allowed Roles:<A
+NAME="AEN1398"
+></A
+><BLOCKQUOTE
+CLASS="BLOCKQUOTE"
+><P
+>admin, pi, user, tech, node</P
+></BLOCKQUOTE
+></P
+><P
+>Parameters:</P
+><P
+></P
+><UL
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>auth</CODE
+>
+: struct, API authentication structure </P
+><P
+></P
+><UL
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>AuthMethod</CODE
+>
+: string, Authentication method to use </P
+></LI
+></UL
+></LI
+></UL
+><P
+>Returns:</P
+><P
+></P
+><UL
+><LI
+><P
+> int, 1 if successful </P
+></LI
+></UL
+></DIV
+><DIV
+CLASS="section"
+><HR><H2
+CLASS="section"
+><A
+NAME="BlacklistKey"
+>2.32. BlacklistKey</A
+></H2
+><P
+>Prototype:<A
+NAME="AEN1416"
+></A
+><BLOCKQUOTE
+CLASS="BLOCKQUOTE"
+><P
+>BlacklistKey (auth, key_id)</P
+></BLOCKQUOTE
+></P
+><P
+>Description:<A
+NAME="AEN1419"
+></A
+><BLOCKQUOTE
+CLASS="BLOCKQUOTE"
+><P
+>Blacklists a key, disassociating it and all others identical to it
+from all accounts and preventing it from ever being added again.</P
+><P
+>WARNING: Identical keys associated with other accounts with also
+be blacklisted.</P
+><P
+>Returns 1 if successful, faults otherwise.</P
+></BLOCKQUOTE
+></P
+><P
+>Allowed Roles:<A
+NAME="AEN1424"
+></A
+><BLOCKQUOTE
+CLASS="BLOCKQUOTE"
+><P
+>admin</P
+></BLOCKQUOTE
+></P
+><P
+>Parameters:</P
+><P
+></P
+><UL
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>auth</CODE
+>
+: struct, API authentication structure </P
+><P
+></P
+><UL
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>AuthMethod</CODE
+>
+: string, Authentication method to use </P
+></LI
+></UL
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>key_id</CODE
+>
+: int, Key identifier </P
+></LI
+></UL
+><P
+>Returns:</P
+><P
+></P
+><UL
+><LI
+><P
+> int, 1 if successful </P
+></LI
+></UL
+></DIV
+><DIV
+CLASS="section"
+><HR><H2
+CLASS="section"
+><A
+NAME="BootGetNodeDetails"
+>2.33. BootGetNodeDetails</A
+></H2
+><P
+>Prototype:<A
+NAME="AEN1445"
+></A
+><BLOCKQUOTE
+CLASS="BLOCKQUOTE"
+><P
+>BootGetNodeDetails (auth)</P
+></BLOCKQUOTE
+></P
+><P
+>Description:<A
+NAME="AEN1448"
+></A
+><BLOCKQUOTE
+CLASS="BLOCKQUOTE"
+><P
+>Returns a set of details about the calling node, including a new
+node session value.</P
+></BLOCKQUOTE
+></P
+><P
+>Allowed Roles:<A
+NAME="AEN1451"
+></A
+><BLOCKQUOTE
+CLASS="BLOCKQUOTE"
+><P
+>node</P
+></BLOCKQUOTE
+></P
+><P
+>Parameters:</P
+><P
+></P
+><UL
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>auth</CODE
+>
+: struct, API authentication structure </P
+><P
+></P
+><UL
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>AuthMethod</CODE
+>
+: string, Authentication method to use, always 'hmac' </P
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>value</CODE
+>
+: string, HMAC of node key and method call </P
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>node_id</CODE
+>
+: int, Node identifier </P
+></LI
+></UL
+></LI
+></UL
+><P
+>Returns:</P
+><P
+></P
+><UL
+><LI
+><P
+> struct </P
+><P
+></P
+><UL
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>boot_state</CODE
+>
+: string, Boot state </P
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>model</CODE
+>
+: string, Make and model of the actual machine </P
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>hostname</CODE
+>
+: string, Fully qualified hostname </P
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>networks</CODE
+>
+: array of struct </P
+><P
+></P
+><UL
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>broadcast</CODE
+>
+: string, Network broadcast address </P
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>is_primary</CODE
+>
+: boolean, Is the primary interface for this node </P
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>network</CODE
+>
+: string, Subnet address </P
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>ip</CODE
+>
+: string, IP address </P
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>dns1</CODE
+>
+: string, IP address of primary DNS server </P
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>hostname</CODE
+>
+: string, (Optional) Hostname </P
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>netmask</CODE
+>
+: string, Subnet mask </P
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>gateway</CODE
+>
+: string, IP address of primary gateway </P
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>nodenetwork_id</CODE
+>
+: int, Node interface identifier </P
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>mac</CODE
+>
+: string, MAC address </P
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>node_id</CODE
+>
+: int, Node associated with this interface </P
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>dns2</CODE
+>
+: string, IP address of secondary DNS server </P
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>bwlimit</CODE
+>
+: int, Bandwidth limit </P
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>type</CODE
+>
+: string, Address type (e.g., 'ipv4') </P
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>method</CODE
+>
+: string, Addressing method (e.g., 'static' or 'dhcp') </P
+></LI
+></UL
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>session</CODE
+>
+: string, Session key </P
+></LI
+></UL
+></LI
+></UL
+></DIV
+><DIV
+CLASS="section"
+><HR><H2
+CLASS="section"
+><A
+NAME="BootNotifyOwners"
+>2.34. BootNotifyOwners</A
+></H2
+><P
+>Prototype:<A
+NAME="AEN1537"
+></A
+><BLOCKQUOTE
+CLASS="BLOCKQUOTE"
+><P
+>BootNotifyOwners (auth, message_id, include_pis, include_techs, include_support)</P
+></BLOCKQUOTE
+></P
+><P
+>Description:<A
+NAME="AEN1540"
+></A
+><BLOCKQUOTE
+CLASS="BLOCKQUOTE"
+><P
+>Notify the owners of the node, and/or support about an event that
+happened on the machine.</P
+><P
+>Returns 1 if successful.</P
+></BLOCKQUOTE
+></P
+><P
+>Allowed Roles:<A
+NAME="AEN1544"
+></A
+><BLOCKQUOTE
+CLASS="BLOCKQUOTE"
+><P
+>node</P
+></BLOCKQUOTE
+></P
+><P
+>Parameters:</P
+><P
+></P
+><UL
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>auth</CODE
+>
+: struct, API authentication structure </P
+><P
+></P
+><UL
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>AuthMethod</CODE
+>
+: string, Authentication method to use, always 'hmac' </P
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>value</CODE
+>
+: string, HMAC of node key and method call </P
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>node_id</CODE
+>
+: int, Node identifier </P
+></LI
+></UL
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>message_id</CODE
+>
+: string, Message identifier </P
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>include_pis</CODE
+>
+: int, Notify PIs </P
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>include_techs</CODE
+>
+: int, Notify technical contacts </P
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>include_support</CODE
+>
+: int, Notify support </P
+></LI
+></UL
+><P
+>Returns:</P
+><P
+></P
+><UL
+><LI
+><P
+> int, 1 if successful </P
+></LI
+></UL
+></DIV
+><DIV
+CLASS="section"
+><HR><H2
+CLASS="section"
+><A
+NAME="BootUpdateNode"
+>2.35. BootUpdateNode</A
+></H2
+><P
+>Prototype:<A
+NAME="AEN1580"
+></A
+><BLOCKQUOTE
+CLASS="BLOCKQUOTE"
+><P
+>BootUpdateNode (auth, node_fields)</P
+></BLOCKQUOTE
+></P
+><P
+>Description:<A
+NAME="AEN1583"
+></A
+><BLOCKQUOTE
+CLASS="BLOCKQUOTE"
+><P
+>Allows the calling node to update its own record. Only the primary
+network can be updated, and the node IP cannot be changed.</P
+><P
+>Returns 1 if updated successfully.</P
+></BLOCKQUOTE
+></P
+><P
+>Allowed Roles:<A
+NAME="AEN1587"
+></A
+><BLOCKQUOTE
+CLASS="BLOCKQUOTE"
+><P
+>node</P
+></BLOCKQUOTE
+></P
+><P
+>Parameters:</P
+><P
+></P
+><UL
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>auth</CODE
+>
+: struct, API authentication structure </P
+><P
+></P
+><UL
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>AuthMethod</CODE
+>
+: string, Authentication method to use, always 'hmac' </P
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>value</CODE
+>
+: string, HMAC of node key and method call </P
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>node_id</CODE
+>
+: int, Node identifier </P
+></LI
+></UL
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>node_fields</CODE
+>
+: struct </P
+><P
+></P
+><UL
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>boot_state</CODE
+>
+: string, Boot state </P
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>primary_network</CODE
+>
+: struct </P
+><P
+></P
+><UL
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>network</CODE
+>
+: string, Subnet address </P
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>dns2</CODE
+>
+: string, IP address of secondary DNS server </P
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>dns1</CODE
+>
+: string, IP address of primary DNS server </P
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>netmask</CODE
+>
+: string, Subnet mask </P
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>method</CODE
+>
+: string, Addressing method (e.g., 'static' or 'dhcp') </P
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>broadcast</CODE
+>
+: string, Network broadcast address </P
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>mac</CODE
+>
+: string, MAC address </P
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>gateway</CODE
+>
+: string, IP address of primary gateway </P
+></LI
+></UL
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>ssh_host_key</CODE
+>
+: string, Last known SSH host key </P
+></LI
+></UL
+></LI
+></UL
+><P
+>Returns:</P
+><P
+></P
+><UL
+><LI
+><P
+> int, 1 if successful </P
+></LI
+></UL
+></DIV
+><DIV
+CLASS="section"
+><HR><H2
+CLASS="section"
+><A
+NAME="DeleteAddress"
+>2.36. DeleteAddress</A
+></H2
+><P
+>Prototype:<A
+NAME="AEN1649"
+></A
+><BLOCKQUOTE
+CLASS="BLOCKQUOTE"
+><P
+>DeleteAddress (auth, address_id)</P
+></BLOCKQUOTE
+></P
+><P
+>Description:<A
+NAME="AEN1652"
+></A
+><BLOCKQUOTE
+CLASS="BLOCKQUOTE"
+><P
+>Deletes an address.</P
+><P
+>PIs may only delete addresses from their own sites.</P
+><P
+>Returns 1 if successful, faults otherwise.</P
+></BLOCKQUOTE
+></P
+><P
+>Allowed Roles:<A
+NAME="AEN1657"
+></A
+><BLOCKQUOTE
+CLASS="BLOCKQUOTE"
+><P
+>admin, pi</P
+></BLOCKQUOTE
+></P
+><P
+>Parameters:</P
+><P
+></P
+><UL
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>auth</CODE
+>
+: struct, API authentication structure </P
+><P
+></P
+><UL
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>AuthMethod</CODE
+>
+: string, Authentication method to use </P
+></LI
+></UL
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>address_id</CODE
+>
+: int, Address identifier </P
+></LI
+></UL
+><P
+>Returns:</P
+><P
+></P
+><UL
+><LI
+><P
+> int, 1 if successful </P
+></LI
+></UL
+></DIV
+><DIV
+CLASS="section"
+><HR><H2
+CLASS="section"
+><A
+NAME="DeleteAddressTypeFromAddress"
+>2.37. DeleteAddressTypeFromAddress</A
+></H2
+><P
+>Prototype:<A
+NAME="AEN1678"
+></A
+><BLOCKQUOTE
+CLASS="BLOCKQUOTE"
+><P
+>DeleteAddressTypeFromAddress (auth, address_type_id_or_name, address_id)</P
+></BLOCKQUOTE
+></P
+><P
+>Description:<A
+NAME="AEN1681"
+></A
+><BLOCKQUOTE
+CLASS="BLOCKQUOTE"
+><P
+>Deletes an address type from the specified address.</P
+><P
+>PIs may only update addresses of their own sites.</P
+><P
+>Returns 1 if successful, faults otherwise.</P
+></BLOCKQUOTE
+></P
+><P
+>Allowed Roles:<A
+NAME="AEN1686"
+></A
+><BLOCKQUOTE
+CLASS="BLOCKQUOTE"
+><P
+>admin, pi</P
+></BLOCKQUOTE
+></P
+><P
+>Parameters:</P
+><P
+></P
+><UL
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>auth</CODE
+>
+: struct, API authentication structure </P
+><P
+></P
+><UL
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>AuthMethod</CODE
+>
+: string, Authentication method to use </P
+></LI
+></UL
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>address_type_id_or_name</CODE
+>
+: int or string </P
+><P
+></P
+><UL
+><LI
+><P
+> int, Address type identifier </P
+></LI
+><LI
+><P
+> string, Address type </P
+></LI
+></UL
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>address_id</CODE
+>
+: int, Address identifier </P
+></LI
+></UL
+><P
+>Returns:</P
+><P
+></P
+><UL
+><LI
+><P
+> int, 1 if successful </P
+></LI
+></UL
+></DIV
+><DIV
+CLASS="section"
+><HR><H2
+CLASS="section"
+><A
+NAME="DeleteAddressType"
+>2.38. DeleteAddressType</A
+></H2
+><P
+>Prototype:<A
+NAME="AEN1715"
+></A
+><BLOCKQUOTE
+CLASS="BLOCKQUOTE"
+><P
+>DeleteAddressType (auth, address_type_id_or_name)</P
+></BLOCKQUOTE
+></P
+><P
+>Description:<A
+NAME="AEN1718"
+></A
+><BLOCKQUOTE
+CLASS="BLOCKQUOTE"
+><P
+>Deletes an address type.</P
+><P
+>Returns 1 if successful, faults otherwise.</P
+></BLOCKQUOTE
+></P
+><P
+>Allowed Roles:<A
+NAME="AEN1722"
+></A
+><BLOCKQUOTE
+CLASS="BLOCKQUOTE"
+><P
+>admin</P
+></BLOCKQUOTE
+></P
+><P
+>Parameters:</P
+><P
+></P
+><UL
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>auth</CODE
+>
+: struct, API authentication structure </P
+><P
+></P
+><UL
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>AuthMethod</CODE
+>
+: string, Authentication method to use </P
+></LI
+></UL
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>address_type_id_or_name</CODE
+>
+: int or string </P
+><P
+></P
+><UL
+><LI
+><P
+> int, Address type identifier </P
+></LI
+><LI
+><P
+> string, Address type </P
+></LI
+></UL
+></LI
+></UL
+><P
+>Returns:</P
+><P
+></P
+><UL
+><LI
+><P
+> int, 1 if successful </P
+></LI
+></UL
+></DIV
+><DIV
+CLASS="section"
+><HR><H2
+CLASS="section"
+><A
+NAME="DeleteBootState"
+>2.39. DeleteBootState</A
+></H2
+><P
+>Prototype:<A
+NAME="AEN1748"
+></A
+><BLOCKQUOTE
+CLASS="BLOCKQUOTE"
+><P
+>DeleteBootState (auth, name)</P
+></BLOCKQUOTE
+></P
+><P
+>Description:<A
+NAME="AEN1751"
+></A
+><BLOCKQUOTE
+CLASS="BLOCKQUOTE"
+><P
+>Deletes a node boot state.</P
+><P
+>WARNING: This will cause the deletion of all nodes in this boot
+state.</P
+><P
+>Returns 1 if successful, faults otherwise.</P
+></BLOCKQUOTE
+></P
+><P
+>Allowed Roles:<A
+NAME="AEN1756"
+></A
+><BLOCKQUOTE
+CLASS="BLOCKQUOTE"
+><P
+>admin</P
+></BLOCKQUOTE
+></P
+><P
+>Parameters:</P
+><P
+></P
+><UL
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>auth</CODE
+>
+: struct, API authentication structure </P
+><P
+></P
+><UL
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>AuthMethod</CODE
+>
+: string, Authentication method to use </P
+></LI
+></UL
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>name</CODE
+>
+: string, Boot state </P
+></LI
+></UL
+><P
+>Returns:</P
+><P
+></P
+><UL
+><LI
+><P
+> int, 1 if successful </P
+></LI
+></UL
+></DIV
+><DIV
+CLASS="section"
+><HR><H2
+CLASS="section"
+><A
+NAME="DeleteConfFileFromNodeGroup"
+>2.40. DeleteConfFileFromNodeGroup</A
+></H2
+><P
+>Prototype:<A
+NAME="AEN1777"
+></A
+><BLOCKQUOTE
+CLASS="BLOCKQUOTE"
+><P
+>DeleteConfFileFromNodeGroup (auth, conf_file_id, nodegroup_id_or_name)</P
+></BLOCKQUOTE
+></P
+><P
+>Description:<A
+NAME="AEN1780"
+></A
+><BLOCKQUOTE
+CLASS="BLOCKQUOTE"
+><P
+>Deletes a configuration file from the specified nodegroup. If the nodegroup
+is not linked to the configuration file, no errors are returned.</P
+><P
+>Returns 1 if successful, faults otherwise.</P
+></BLOCKQUOTE
+></P
+><P
+>Allowed Roles:<A
+NAME="AEN1784"
+></A
+><BLOCKQUOTE
+CLASS="BLOCKQUOTE"
+><P
+>admin</P
+></BLOCKQUOTE
+></P
+><P
+>Parameters:</P
+><P
+></P
+><UL
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>auth</CODE
+>
+: struct, API authentication structure </P
+><P
+></P
+><UL
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>AuthMethod</CODE
+>
+: string, Authentication method to use </P
+></LI
+></UL
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>conf_file_id</CODE
+>
+: int, Configuration file identifier </P
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>nodegroup_id_or_name</CODE
+>
+: int or string </P
+><P
+></P
+><UL
+><LI
+><P
+> int, Node group identifier </P
+></LI
+><LI
+><P
+> string, Node group name </P
+></LI
+></UL
+></LI
+></UL
+><P
+>Returns:</P
+><P
+></P
+><UL
+><LI
+><P
+> int, 1 if successful </P
+></LI
+></UL
+></DIV
+><DIV
+CLASS="section"
+><HR><H2
+CLASS="section"
+><A
+NAME="DeleteConfFileFromNode"
+>2.41. DeleteConfFileFromNode</A
+></H2
+><P
+>Prototype:<A
+NAME="AEN1813"
+></A
+><BLOCKQUOTE
+CLASS="BLOCKQUOTE"
+><P
+>DeleteConfFileFromNode (auth, conf_file_id, node_id_or_hostname)</P
+></BLOCKQUOTE
+></P
+><P
+>Description:<A
+NAME="AEN1816"
+></A
+><BLOCKQUOTE
+CLASS="BLOCKQUOTE"
+><P
+>Deletes a configuration file from the specified node. If the node
+is not linked to the configuration file, no errors are returned.</P
+><P
+>Returns 1 if successful, faults otherwise.</P
+></BLOCKQUOTE
+></P
+><P
+>Allowed Roles:<A
+NAME="AEN1820"
+></A
+><BLOCKQUOTE
+CLASS="BLOCKQUOTE"
+><P
+>admin</P
+></BLOCKQUOTE
+></P
+><P
+>Parameters:</P
+><P
+></P
+><UL
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>auth</CODE
+>
+: struct, API authentication structure </P
+><P
+></P
+><UL
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>AuthMethod</CODE
+>
+: string, Authentication method to use </P
+></LI
+></UL
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>conf_file_id</CODE
+>
+: int, Configuration file identifier </P
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>node_id_or_hostname</CODE
+>
+: int or string </P
+><P
+></P
+><UL
+><LI
+><P
+> int, Node identifier </P
+></LI
+><LI
+><P
+> string, Fully qualified hostname </P
+></LI
+></UL
+></LI
+></UL
+><P
+>Returns:</P
+><P
+></P
+><UL
+><LI
+><P
+> int, 1 if successful </P
+></LI
+></UL
+></DIV
+><DIV
+CLASS="section"
+><HR><H2
+CLASS="section"
+><A
+NAME="DeleteConfFile"
+>2.42. DeleteConfFile</A
+></H2
+><P
+>Prototype:<A
+NAME="AEN1849"
+></A
+><BLOCKQUOTE
+CLASS="BLOCKQUOTE"
+><P
+>DeleteConfFile (auth, conf_file_id)</P
+></BLOCKQUOTE
+></P
+><P
+>Description:<A
+NAME="AEN1852"
+></A
+><BLOCKQUOTE
+CLASS="BLOCKQUOTE"
+><P
+>Returns an array of structs containing details about node
+configuration files. If conf_file_ids is specified, only the
+specified configuration files will be queried.</P
+></BLOCKQUOTE
+></P
+><P
+>Allowed Roles:<A
+NAME="AEN1855"
+></A
+><BLOCKQUOTE
+CLASS="BLOCKQUOTE"
+><P
+>admin</P
+></BLOCKQUOTE
+></P
+><P
+>Parameters:</P
+><P
+></P
+><UL
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>auth</CODE
+>
+: struct, API authentication structure </P
+><P
+></P
+><UL
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>AuthMethod</CODE
+>
+: string, Authentication method to use </P
+></LI
+></UL
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>conf_file_id</CODE
+>
+: int, Configuration file identifier </P
+></LI
+></UL
+><P
+>Returns:</P
+><P
+></P
+><UL
+><LI
+><P
+> int, 1 if successful </P
+></LI
+></UL
+></DIV
+><DIV
+CLASS="section"
+><HR><H2
+CLASS="section"
+><A
+NAME="DeleteKey"
+>2.43. DeleteKey</A
+></H2
+><P
+>Prototype:<A
+NAME="AEN1876"
+></A
+><BLOCKQUOTE
+CLASS="BLOCKQUOTE"
+><P
+>DeleteKey (auth, key_id)</P
+></BLOCKQUOTE
+></P
+><P
+>Description:<A
+NAME="AEN1879"
+></A
+><BLOCKQUOTE
+CLASS="BLOCKQUOTE"
+><P
+>Deletes a key.</P
+><P
+>Non-admins may only delete their own keys.</P
+><P
+>Returns 1 if successful, faults otherwise.</P
+></BLOCKQUOTE
+></P
+><P
+>Allowed Roles:<A
+NAME="AEN1884"
+></A
+><BLOCKQUOTE
+CLASS="BLOCKQUOTE"
+><P
+>admin, pi, tech, user</P
+></BLOCKQUOTE
+></P
+><P
+>Parameters:</P
+><P
+></P
+><UL
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>auth</CODE
+>
+: struct, API authentication structure </P
+><P
+></P
+><UL
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>AuthMethod</CODE
+>
+: string, Authentication method to use </P
+></LI
+></UL
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>key_id</CODE
+>
+: int, Key identifier </P
+></LI
+></UL
+><P
+>Returns:</P
+><P
+></P
+><UL
+><LI
+><P
+> int, 1 if successful </P
+></LI
+></UL
+></DIV
+><DIV
+CLASS="section"
+><HR><H2
+CLASS="section"
+><A
+NAME="DeleteKeyType"
+>2.44. DeleteKeyType</A
+></H2
+><P
+>Prototype:<A
+NAME="AEN1905"
+></A
+><BLOCKQUOTE
+CLASS="BLOCKQUOTE"
+><P
+>DeleteKeyType (auth, name)</P
+></BLOCKQUOTE
+></P
+><P
+>Description:<A
+NAME="AEN1908"
+></A
+><BLOCKQUOTE
+CLASS="BLOCKQUOTE"
+><P
+>Deletes a key type.</P
+><P
+>WARNING: This will cause the deletion of all keys of this type.</P
+><P
+>Returns 1 if successful, faults otherwise.</P
+></BLOCKQUOTE
+></P
+><P
+>Allowed Roles:<A
+NAME="AEN1913"
+></A
+><BLOCKQUOTE
+CLASS="BLOCKQUOTE"
+><P
+>admin</P
+></BLOCKQUOTE
+></P
+><P
+>Parameters:</P
+><P
+></P
+><UL
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>auth</CODE
+>
+: struct, API authentication structure </P
+><P
+></P
+><UL
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>AuthMethod</CODE
+>
+: string, Authentication method to use </P
+></LI
+></UL
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>name</CODE
+>
+: string, Key type </P
+></LI
+></UL
+><P
+>Returns:</P
+><P
+></P
+><UL
+><LI
+><P
+> int, 1 if successful </P
+></LI
+></UL
+></DIV
+><DIV
+CLASS="section"
+><HR><H2
+CLASS="section"
+><A
+NAME="DeleteMessage"
+>2.45. DeleteMessage</A
+></H2
+><P
+>Prototype:<A
+NAME="AEN1934"
+></A
+><BLOCKQUOTE
+CLASS="BLOCKQUOTE"
+><P
+>DeleteMessage (auth, message_id)</P
+></BLOCKQUOTE
+></P
+><P
+>Description:<A
+NAME="AEN1937"
+></A
+><BLOCKQUOTE
+CLASS="BLOCKQUOTE"
+><P
+>Deletes a message template.</P
+><P
+>Returns 1 if successful, faults otherwise.</P
+></BLOCKQUOTE
+></P
+><P
+>Allowed Roles:<A
+NAME="AEN1941"
+></A
+><BLOCKQUOTE
+CLASS="BLOCKQUOTE"
+><P
+>admin</P
+></BLOCKQUOTE
+></P
+><P
+>Parameters:</P
+><P
+></P
+><UL
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>auth</CODE
+>
+: struct, API authentication structure </P
+><P
+></P
+><UL
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>AuthMethod</CODE
+>
+: string, Authentication method to use </P
+></LI
+></UL
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>message_id</CODE
+>
+: string, Message identifier </P
+></LI
+></UL
+><P
+>Returns:</P
+><P
+></P
+><UL
+><LI
+><P
+> int, 1 if successful </P
+></LI
+></UL
+></DIV
+><DIV
+CLASS="section"
+><HR><H2
+CLASS="section"
+><A
+NAME="DeleteNetworkMethod"
+>2.46. DeleteNetworkMethod</A
+></H2
+><P
+>Prototype:<A
+NAME="AEN1962"
+></A
+><BLOCKQUOTE
+CLASS="BLOCKQUOTE"
+><P
+>DeleteNetworkMethod (auth, name)</P
+></BLOCKQUOTE
+></P
+><P
+>Description:<A
+NAME="AEN1965"
+></A
+><BLOCKQUOTE
+CLASS="BLOCKQUOTE"
+><P
+>Deletes a network method.</P
+><P
+>WARNING: This will cause the deletion of all network interfaces
+that use this method.</P
+><P
+>Returns 1 if successful, faults otherwise.</P
+></BLOCKQUOTE
+></P
+><P
+>Allowed Roles:<A
+NAME="AEN1970"
+></A
+><BLOCKQUOTE
+CLASS="BLOCKQUOTE"
+><P
+>admin</P
+></BLOCKQUOTE
+></P
+><P
+>Parameters:</P
+><P
+></P
+><UL
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>auth</CODE
+>
+: struct, API authentication structure </P
+><P
+></P
+><UL
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>AuthMethod</CODE
+>
+: string, Authentication method to use </P
+></LI
+></UL
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>name</CODE
+>
+: string, Network method </P
+></LI
+></UL
+><P
+>Returns:</P
+><P
+></P
+><UL
+><LI
+><P
+> int, 1 if successful </P
+></LI
+></UL
+></DIV
+><DIV
+CLASS="section"
+><HR><H2
+CLASS="section"
+><A
+NAME="DeleteNetworkType"
+>2.47. DeleteNetworkType</A
+></H2
+><P
+>Prototype:<A
+NAME="AEN1991"
+></A
+><BLOCKQUOTE
+CLASS="BLOCKQUOTE"
+><P
+>DeleteNetworkType (auth, name)</P
+></BLOCKQUOTE
+></P
+><P
+>Description:<A
+NAME="AEN1994"
+></A
+><BLOCKQUOTE
+CLASS="BLOCKQUOTE"
+><P
+>Deletes a network type.</P
+><P
+>WARNING: This will cause the deletion of all network interfaces
+that use this type.</P
+><P
+>Returns 1 if successful, faults otherwise.</P
+></BLOCKQUOTE
+></P
+><P
+>Allowed Roles:<A
+NAME="AEN1999"
+></A
+><BLOCKQUOTE
+CLASS="BLOCKQUOTE"
+><P
+>admin</P
+></BLOCKQUOTE
+></P
+><P
+>Parameters:</P
+><P
+></P
+><UL
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>auth</CODE
+>
+: struct, API authentication structure </P
+><P
+></P
+><UL
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>AuthMethod</CODE
+>
+: string, Authentication method to use </P
+></LI
+></UL
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>name</CODE
+>
+: string, Network type </P
+></LI
+></UL
+><P
+>Returns:</P
+><P
+></P
+><UL
+><LI
+><P
+> int, 1 if successful </P
+></LI
+></UL
+></DIV
+><DIV
+CLASS="section"
+><HR><H2
+CLASS="section"
+><A
+NAME="DeleteNodeFromNodeGroup"
+>2.48. DeleteNodeFromNodeGroup</A
+></H2
+><P
+>Prototype:<A
+NAME="AEN2020"
+></A
+><BLOCKQUOTE
+CLASS="BLOCKQUOTE"
+><P
+>DeleteNodeFromNodeGroup (auth, node_id_or_hostname, nodegroup_id_or_name)</P
+></BLOCKQUOTE
+></P
+><P
+>Description:<A
+NAME="AEN2023"
+></A
+><BLOCKQUOTE
+CLASS="BLOCKQUOTE"
+><P
+>Removes a node from the specified node group.</P
+><P
+>Returns 1 if successful, faults otherwise.</P
+></BLOCKQUOTE
+></P
+><P
+>Allowed Roles:<A
+NAME="AEN2027"
+></A
+><BLOCKQUOTE
+CLASS="BLOCKQUOTE"
+><P
+>admin</P
+></BLOCKQUOTE
+></P
+><P
+>Parameters:</P
+><P
+></P
+><UL
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>auth</CODE
+>
+: struct, API authentication structure </P
+><P
+></P
+><UL
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>AuthMethod</CODE
+>
+: string, Authentication method to use </P
+></LI
+></UL
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>node_id_or_hostname</CODE
+>
+: int or string </P
+><P
+></P
+><UL
+><LI
+><P
+> int, Node identifier </P
+></LI
+><LI
+><P
+> string, Fully qualified hostname </P
+></LI
+></UL
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>nodegroup_id_or_name</CODE
+>
+: int or string </P
+><P
+></P
+><UL
+><LI
+><P
+> int, Node group identifier </P
+></LI
+><LI
+><P
+> string, Node group name </P
+></LI
+></UL
+></LI
+></UL
+><P
+>Returns:</P
+><P
+></P
+><UL
+><LI
+><P
+> int, 1 if successful </P
+></LI
+></UL
+></DIV
+><DIV
+CLASS="section"
+><HR><H2
+CLASS="section"
+><A
+NAME="DeleteNodeFromPCU"
+>2.49. DeleteNodeFromPCU</A
+></H2
+><P
+>Prototype:<A
+NAME="AEN2061"
+></A
+><BLOCKQUOTE
+CLASS="BLOCKQUOTE"
+><P
+>DeleteNodeFromPCU (auth, node_id_or_hostname, pcu_id)</P
+></BLOCKQUOTE
+></P
+><P
+>Description:<A
+NAME="AEN2064"
+></A
+><BLOCKQUOTE
+CLASS="BLOCKQUOTE"
+><P
+>Deletes a node from a PCU.</P
+><P
+>Non-admins may only update PCUs at their sites.</P
+><P
+>Returns 1 if successful, faults otherwise.</P
+></BLOCKQUOTE
+></P
+><P
+>Allowed Roles:<A
+NAME="AEN2069"
+></A
+><BLOCKQUOTE
+CLASS="BLOCKQUOTE"
+><P
+>admin, pi, tech</P
+></BLOCKQUOTE
+></P
+><P
+>Parameters:</P
+><P
+></P
+><UL
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>auth</CODE
+>
+: struct, API authentication structure </P
+><P
+></P
+><UL
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>AuthMethod</CODE
+>
+: string, Authentication method to use </P
+></LI
+></UL
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>node_id_or_hostname</CODE
+>
+: int or string </P
+><P
+></P
+><UL
+><LI
+><P
+> int, Node identifier </P
+></LI
+><LI
+><P
+> string, Fully qualified hostname </P
+></LI
+></UL
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>pcu_id</CODE
+>
+: int, PCU identifier </P
+></LI
+></UL
+><P
+>Returns:</P
+><P
+></P
+><UL
+><LI
+><P
+> int, 1 if successful </P
+></LI
+></UL
+></DIV
+><DIV
+CLASS="section"
+><HR><H2
+CLASS="section"
+><A
+NAME="DeleteNodeGroup"
+>2.50. DeleteNodeGroup</A
+></H2
+><P
+>Prototype:<A
+NAME="AEN2098"
+></A
+><BLOCKQUOTE
+CLASS="BLOCKQUOTE"
+><P
+>DeleteNodeGroup (auth, node_group_id_or_name)</P
+></BLOCKQUOTE
+></P
+><P
+>Description:<A
+NAME="AEN2101"
+></A
+><BLOCKQUOTE
+CLASS="BLOCKQUOTE"
+><P
+>Delete an existing Node Group.</P
+><P
+>ins may delete any node group</P
+><P
+>Returns 1 if successful, faults otherwise.</P
+></BLOCKQUOTE
+></P
+><P
+>Allowed Roles:<A
+NAME="AEN2106"
+></A
+><BLOCKQUOTE
+CLASS="BLOCKQUOTE"
+><P
+>admin</P
+></BLOCKQUOTE
+></P
+><P
+>Parameters:</P
+><P
+></P
+><UL
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>auth</CODE
+>
+: struct, API authentication structure </P
+><P
+></P
+><UL
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>AuthMethod</CODE
+>
+: string, Authentication method to use </P
+></LI
+></UL
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>node_group_id_or_name</CODE
+>
+: int or string </P
+><P
+></P
+><UL
+><LI
+><P
+> int, Node group identifier </P
+></LI
+><LI
+><P
+> string, Node group name </P
+></LI
+></UL
+></LI
+></UL
+><P
+>Returns:</P
+><P
+></P
+><UL
+><LI
+><P
+> int, 1 if successful </P
+></LI
+></UL
+></DIV
+><DIV
+CLASS="section"
+><HR><H2
+CLASS="section"
+><A
+NAME="DeleteNodeNetwork"
+>2.51. DeleteNodeNetwork</A
+></H2
+><P
+>Prototype:<A
+NAME="AEN2132"
+></A
+><BLOCKQUOTE
+CLASS="BLOCKQUOTE"
+><P
+>DeleteNodeNetwork (auth, nodenetwork_id)</P
+></BLOCKQUOTE
+></P
+><P
+>Description:<A
+NAME="AEN2135"
+></A
+><BLOCKQUOTE
+CLASS="BLOCKQUOTE"
+><P
+>Deletes an existing node network interface.</P
+><P
+>Admins may delete any node network. PIs and techs may only delete
+node network interfaces associated with nodes at their sites.</P
+><P
+>Returns 1 if successful, faults otherwise.</P
+></BLOCKQUOTE
+></P
+><P
+>Allowed Roles:<A
+NAME="AEN2140"
+></A
+><BLOCKQUOTE
+CLASS="BLOCKQUOTE"
+><P
+>admin, pi, tech</P
+></BLOCKQUOTE
+></P
+><P
+>Parameters:</P
+><P
+></P
+><UL
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>auth</CODE
+>
+: struct, API authentication structure </P
+><P
+></P
+><UL
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>AuthMethod</CODE
+>
+: string, Authentication method to use </P
+></LI
+></UL
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>nodenetwork_id</CODE
+>
+: int, Node interface identifier </P
+></LI
+></UL
+><P
+>Returns:</P
+><P
+></P
+><UL
+><LI
+><P
+> int, 1 if successful </P
+></LI
+></UL
+></DIV
+><DIV
+CLASS="section"
+><HR><H2
+CLASS="section"
+><A
+NAME="DeleteNode"
+>2.52. DeleteNode</A
+></H2
+><P
+>Prototype:<A
+NAME="AEN2161"
+></A
+><BLOCKQUOTE
+CLASS="BLOCKQUOTE"
+><P
+>DeleteNode (auth, node_id_or_hostname)</P
+></BLOCKQUOTE
+></P
+><P
+>Description:<A
+NAME="AEN2164"
+></A
+><BLOCKQUOTE
+CLASS="BLOCKQUOTE"
+><P
+>Mark an existing node as deleted.</P
+><P
+>PIs and techs may only delete nodes at their own sites. ins may
+delete nodes at any site.</P
+><P
+>Returns 1 if successful, faults otherwise.</P
+></BLOCKQUOTE
+></P
+><P
+>Allowed Roles:<A
+NAME="AEN2169"
+></A
+><BLOCKQUOTE
+CLASS="BLOCKQUOTE"
+><P
+>admin, pi, tech</P
+></BLOCKQUOTE
+></P
+><P
+>Parameters:</P
+><P
+></P
+><UL
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>auth</CODE
+>
+: struct, API authentication structure </P
+><P
+></P
+><UL
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>AuthMethod</CODE
+>
+: string, Authentication method to use </P
+></LI
+></UL
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>node_id_or_hostname</CODE
+>
+: int or string </P
+><P
+></P
+><UL
+><LI
+><P
+> int, Node identifier </P
+></LI
+><LI
+><P
+> string, Fully qualified hostname </P
+></LI
+></UL
+></LI
+></UL
+><P
+>Returns:</P
+><P
+></P
+><UL
+><LI
+><P
+> int, 1 if successful </P
+></LI
+></UL
+></DIV
+><DIV
+CLASS="section"
+><HR><H2
+CLASS="section"
+><A
+NAME="DeletePCU"
+>2.53. DeletePCU</A
+></H2
+><P
+>Prototype:<A
+NAME="AEN2195"
+></A
+><BLOCKQUOTE
+CLASS="BLOCKQUOTE"
+><P
+>DeletePCU (auth, pcu_id)</P
+></BLOCKQUOTE
+></P
+><P
+>Description:<A
+NAME="AEN2198"
+></A
+><BLOCKQUOTE
+CLASS="BLOCKQUOTE"
+><P
+>Deletes a PCU.</P
+><P
+>Non-admins may only delete PCUs at their sites.</P
+><P
+>Returns 1 if successful, faults otherwise.</P
+></BLOCKQUOTE
+></P
+><P
+>Allowed Roles:<A
+NAME="AEN2203"
+></A
+><BLOCKQUOTE
+CLASS="BLOCKQUOTE"
+><P
+>admin, pi, tech</P
+></BLOCKQUOTE
+></P
+><P
+>Parameters:</P
+><P
+></P
+><UL
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>auth</CODE
+>
+: struct, API authentication structure </P
+><P
+></P
+><UL
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>AuthMethod</CODE
+>
+: string, Authentication method to use </P
+></LI
+></UL
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>pcu_id</CODE
+>
+: int, PCU identifier </P
+></LI
+></UL
+><P
+>Returns:</P
+><P
+></P
+><UL
+><LI
+><P
+> int, 1 if successful </P
+></LI
+></UL
+></DIV
+><DIV
+CLASS="section"
+><HR><H2
+CLASS="section"
+><A
+NAME="DeletePeer"
+>2.54. DeletePeer</A
+></H2
+><P
+>Prototype:<A
+NAME="AEN2224"
+></A
+><BLOCKQUOTE
+CLASS="BLOCKQUOTE"
+><P
+>DeletePeer (auth, peer_id_or_name)</P
+></BLOCKQUOTE
+></P
+><P
+>Description:<A
+NAME="AEN2227"
+></A
+><BLOCKQUOTE
+CLASS="BLOCKQUOTE"
+><P
+>Mark an existing peer as deleted. All entities (e.g., slices,
+keys, nodes, etc.) for which this peer is authoritative will also
+be deleted or marked as deleted.</P
+><P
+>Returns 1 if successful, faults otherwise.</P
+></BLOCKQUOTE
+></P
+><P
+>Allowed Roles:<A
+NAME="AEN2231"
+></A
+><BLOCKQUOTE
+CLASS="BLOCKQUOTE"
+><P
+>admin</P
+></BLOCKQUOTE
+></P
+><P
+>Parameters:</P
+><P
+></P
+><UL
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>auth</CODE
+>
+: struct, API authentication structure </P
+><P
+></P
+><UL
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>AuthMethod</CODE
+>
+: string, Authentication method to use </P
+></LI
+></UL
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>peer_id_or_name</CODE
+>
+: int or string </P
+><P
+></P
+><UL
+><LI
+><P
+> int, Peer identifier </P
+></LI
+><LI
+><P
+> string, Peer name </P
+></LI
+></UL
+></LI
+></UL
+><P
+>Returns:</P
+><P
+></P
+><UL
+><LI
+><P
+> int, 1 if successful </P
+></LI
+></UL
+></DIV
+><DIV
+CLASS="section"
+><HR><H2
+CLASS="section"
+><A
+NAME="DeletePersonFromSite"
+>2.55. DeletePersonFromSite</A
+></H2
+><P
+>Prototype:<A
+NAME="AEN2257"
+></A
+><BLOCKQUOTE
+CLASS="BLOCKQUOTE"
+><P
+>DeletePersonFromSite (auth, person_id_or_email, site_id_or_login_base)</P
+></BLOCKQUOTE
+></P
+><P
+>Description:<A
+NAME="AEN2260"
+></A
+><BLOCKQUOTE
+CLASS="BLOCKQUOTE"
+><P
+>Removes the specified person from the specified site. If the
+person is not a member of the specified site, no error is
+returned.</P
+><P
+>Returns 1 if successful, faults otherwise.</P
+></BLOCKQUOTE
+></P
+><P
+>Allowed Roles:<A
+NAME="AEN2264"
+></A
+><BLOCKQUOTE
+CLASS="BLOCKQUOTE"
+><P
+>admin</P
+></BLOCKQUOTE
+></P
+><P
+>Parameters:</P
+><P
+></P
+><UL
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>auth</CODE
+>
+: struct, API authentication structure </P
+><P
+></P
+><UL
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>AuthMethod</CODE
+>
+: string, Authentication method to use </P
+></LI
+></UL
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>person_id_or_email</CODE
+>
+: int or string </P
+><P
+></P
+><UL
+><LI
+><P
+> int, User identifier </P
+></LI
+><LI
+><P
+> string, Primary e-mail address </P
+></LI
+></UL
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>site_id_or_login_base</CODE
+>
+: int or string </P
+><P
+></P
+><UL
+><LI
+><P
+> int, Site identifier </P
+></LI
+><LI
+><P
+> string, Site slice prefix </P
+></LI
+></UL
+></LI
+></UL
+><P
+>Returns:</P
+><P
+></P
+><UL
+><LI
+><P
+> int, 1 if successful </P
+></LI
+></UL
+></DIV
+><DIV
+CLASS="section"
+><HR><H2
+CLASS="section"
+><A
+NAME="DeletePersonFromSlice"
+>2.56. DeletePersonFromSlice</A
+></H2
+><P
+>Prototype:<A
+NAME="AEN2298"
+></A
+><BLOCKQUOTE
+CLASS="BLOCKQUOTE"
+><P
+>DeletePersonFromSlice (auth, person_id_or_email, slice_id_or_name)</P
+></BLOCKQUOTE
+></P
+><P
+>Description:<A
+NAME="AEN2301"
+></A
+><BLOCKQUOTE
+CLASS="BLOCKQUOTE"
+><P
+>Deletes the specified person from the specified slice. If the person is
+not a member of the slice, no errors are returned.</P
+><P
+>Returns 1 if successful, faults otherwise.</P
+></BLOCKQUOTE
+></P
+><P
+>Allowed Roles:<A
+NAME="AEN2305"
+></A
+><BLOCKQUOTE
+CLASS="BLOCKQUOTE"
+><P
+>admin, pi</P
+></BLOCKQUOTE
+></P
+><P
+>Parameters:</P
+><P
+></P
+><UL
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>auth</CODE
+>
+: struct, API authentication structure </P
+><P
+></P
+><UL
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>AuthMethod</CODE
+>
+: string, Authentication method to use </P
+></LI
+></UL
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>person_id_or_email</CODE
+>
+: int or string </P
+><P
+></P
+><UL
+><LI
+><P
+> int, User identifier </P
+></LI
+><LI
+><P
+> string, Primary e-mail address </P
+></LI
+></UL
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>slice_id_or_name</CODE
+>
+: int or string </P
+><P
+></P
+><UL
+><LI
+><P
+> int, Slice identifier </P
+></LI
+><LI
+><P
+> string, Slice name </P
+></LI
+></UL
+></LI
+></UL
+><P
+>Returns:</P
+><P
+></P
+><UL
+><LI
+><P
+> int, 1 if successful </P
+></LI
+></UL
+></DIV
+><DIV
+CLASS="section"
+><HR><H2
+CLASS="section"
+><A
+NAME="DeletePerson"
+>2.57. DeletePerson</A
+></H2
+><P
+>Prototype:<A
+NAME="AEN2339"
+></A
+><BLOCKQUOTE
+CLASS="BLOCKQUOTE"
+><P
+>DeletePerson (auth, person_id_or_email)</P
+></BLOCKQUOTE
+></P
+><P
+>Description:<A
+NAME="AEN2342"
+></A
+><BLOCKQUOTE
+CLASS="BLOCKQUOTE"
+><P
+>Mark an existing account as deleted.</P
+><P
+>Users and techs can only delete themselves. PIs can only delete
+themselves and other non-PIs at their sites. ins can delete
+anyone.</P
+><P
+>Returns 1 if successful, faults otherwise.</P
+></BLOCKQUOTE
+></P
+><P
+>Allowed Roles:<A
+NAME="AEN2347"
+></A
+><BLOCKQUOTE
+CLASS="BLOCKQUOTE"
+><P
+>admin, pi, user, tech</P
+></BLOCKQUOTE
+></P
+><P
+>Parameters:</P
+><P
+></P
+><UL
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>auth</CODE
+>
+: struct, API authentication structure </P
+><P
+></P
+><UL
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>AuthMethod</CODE
+>
+: string, Authentication method to use </P
+></LI
+></UL
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>person_id_or_email</CODE
+>
+: int or string </P
+><P
+></P
+><UL
+><LI
+><P
+> int, User identifier </P
+></LI
+><LI
+><P
+> string, Primary e-mail address </P
+></LI
+></UL
+></LI
+></UL
+><P
+>Returns:</P
+><P
+></P
+><UL
+><LI
+><P
+> int, 1 if successful </P
+></LI
+></UL
+></DIV
+><DIV
+CLASS="section"
+><HR><H2
+CLASS="section"
+><A
+NAME="DeleteRoleFromPerson"
+>2.58. DeleteRoleFromPerson</A
+></H2
+><P
+>Prototype:<A
+NAME="AEN2373"
+></A
+><BLOCKQUOTE
+CLASS="BLOCKQUOTE"
+><P
+>DeleteRoleFromPerson (auth, role_id_or_name, person_id_or_email)</P
+></BLOCKQUOTE
+></P
+><P
+>Description:<A
+NAME="AEN2376"
+></A
+><BLOCKQUOTE
+CLASS="BLOCKQUOTE"
+><P
+>Deletes the specified role from the person.</P
+><P
+>PIs can only revoke the tech and user roles from users and techs
+at their sites. ins can revoke any role from any user.</P
+><P
+>Returns 1 if successful, faults otherwise.</P
+></BLOCKQUOTE
+></P
+><P
+>Allowed Roles:<A
+NAME="AEN2381"
+></A
+><BLOCKQUOTE
+CLASS="BLOCKQUOTE"
+><P
+>admin, pi</P
+></BLOCKQUOTE
+></P
+><P
+>Parameters:</P
+><P
+></P
+><UL
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>auth</CODE
+>
+: struct, API authentication structure </P
+><P
+></P
+><UL
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>AuthMethod</CODE
+>
+: string, Authentication method to use </P
+></LI
+></UL
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>role_id_or_name</CODE
+>
+: int or string </P
+><P
+></P
+><UL
+><LI
+><P
+> int, Role identifier </P
+></LI
+><LI
+><P
+> string, Role </P
+></LI
+></UL
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>person_id_or_email</CODE
+>
+: int or string </P
+><P
+></P
+><UL
+><LI
+><P
+> int, User identifier </P
+></LI
+><LI
+><P
+> string, Primary e-mail address </P
+></LI
+></UL
+></LI
+></UL
+><P
+>Returns:</P
+><P
+></P
+><UL
+><LI
+><P
+> int, 1 if successful </P
+></LI
+></UL
+></DIV
+><DIV
+CLASS="section"
+><HR><H2
+CLASS="section"
+><A
+NAME="DeleteRole"
+>2.59. DeleteRole</A
+></H2
+><P
+>Prototype:<A
+NAME="AEN2415"
+></A
+><BLOCKQUOTE
+CLASS="BLOCKQUOTE"
+><P
+>DeleteRole (auth, role_id_or_name)</P
+></BLOCKQUOTE
+></P
+><P
+>Description:<A
+NAME="AEN2418"
+></A
+><BLOCKQUOTE
+CLASS="BLOCKQUOTE"
+><P
+>Deletes a role.</P
+><P
+>WARNING: This will remove the specified role from all accounts
+that possess it, and from all node and slice attributes that refer
+to it.</P
+><P
+>Returns 1 if successful, faults otherwise.</P
+></BLOCKQUOTE
+></P
+><P
+>Allowed Roles:<A
+NAME="AEN2423"
+></A
+><BLOCKQUOTE
+CLASS="BLOCKQUOTE"
+><P
+>admin</P
+></BLOCKQUOTE
+></P
+><P
+>Parameters:</P
+><P
+></P
+><UL
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>auth</CODE
+>
+: struct, API authentication structure </P
+><P
+></P
+><UL
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>AuthMethod</CODE
+>
+: string, Authentication method to use </P
+></LI
+></UL
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>role_id_or_name</CODE
+>
+: int or string </P
+><P
+></P
+><UL
+><LI
+><P
+> int, Role identifier </P
+></LI
+><LI
+><P
+> string, Role </P
+></LI
+></UL
+></LI
+></UL
+><P
+>Returns:</P
+><P
+></P
+><UL
+><LI
+><P
+> int, 1 if successful </P
+></LI
+></UL
+></DIV
+><DIV
+CLASS="section"
+><HR><H2
+CLASS="section"
+><A
+NAME="DeleteSession"
+>2.60. DeleteSession</A
+></H2
+><P
+>Prototype:<A
+NAME="AEN2449"
+></A
+><BLOCKQUOTE
+CLASS="BLOCKQUOTE"
+><P
+>DeleteSession (auth)</P
+></BLOCKQUOTE
+></P
+><P
+>Description:<A
+NAME="AEN2452"
+></A
+><BLOCKQUOTE
+CLASS="BLOCKQUOTE"
+><P
+>Invalidates the current session.</P
+><P
+>Returns 1 if successful.</P
+></BLOCKQUOTE
+></P
+><P
+>Allowed Roles:<A
+NAME="AEN2456"
+></A
+><BLOCKQUOTE
+CLASS="BLOCKQUOTE"
+><P
+>admin, pi, user, tech, node</P
+></BLOCKQUOTE
+></P
+><P
+>Parameters:</P
+><P
+></P
+><UL
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>auth</CODE
+>
+: struct, API authentication structure </P
+><P
+></P
+><UL
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>session</CODE
+>
+: string, Session key </P
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>AuthMethod</CODE
+>
+: string, Authentication method to use, always 'session' </P
+></LI
+></UL
+></LI
+></UL
+><P
+>Returns:</P
+><P
+></P
+><UL
+><LI
+><P
+> int, 1 if successful </P
+></LI
+></UL
+></DIV
+><DIV
+CLASS="section"
+><HR><H2
+CLASS="section"
+><A
+NAME="DeleteSite"
+>2.61. DeleteSite</A
+></H2
+><P
+>Prototype:<A
+NAME="AEN2477"
+></A
+><BLOCKQUOTE
+CLASS="BLOCKQUOTE"
+><P
+>DeleteSite (auth, site_id_or_login_base)</P
+></BLOCKQUOTE
+></P
+><P
+>Description:<A
+NAME="AEN2480"
+></A
+><BLOCKQUOTE
+CLASS="BLOCKQUOTE"
+><P
+>Mark an existing site as deleted. The accounts of people who are
+not members of at least one other non-deleted site will also be
+marked as deleted. Nodes, PCUs, and slices associated with the
+site will be deleted.</P
+><P
+>Returns 1 if successful, faults otherwise.</P
+></BLOCKQUOTE
+></P
+><P
+>Allowed Roles:<A
+NAME="AEN2484"
+></A
+><BLOCKQUOTE
+CLASS="BLOCKQUOTE"
+><P
+>admin</P
+></BLOCKQUOTE
+></P
+><P
+>Parameters:</P
+><P
+></P
+><UL
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>auth</CODE
+>
+: struct, API authentication structure </P
+><P
+></P
+><UL
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>AuthMethod</CODE
+>
+: string, Authentication method to use </P
+></LI
+></UL
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>site_id_or_login_base</CODE
+>
+: int or string </P
+><P
+></P
+><UL
+><LI
+><P
+> int, Site identifier </P
+></LI
+><LI
+><P
+> string, Site slice prefix </P
+></LI
+></UL
+></LI
+></UL
+><P
+>Returns:</P
+><P
+></P
+><UL
+><LI
+><P
+> int, 1 if successful </P
+></LI
+></UL
+></DIV
+><DIV
+CLASS="section"
+><HR><H2
+CLASS="section"
+><A
+NAME="DeleteSliceAttribute"
+>2.62. DeleteSliceAttribute</A
+></H2
+><P
+>Prototype:<A
+NAME="AEN2510"
+></A
+><BLOCKQUOTE
+CLASS="BLOCKQUOTE"
+><P
+>DeleteSliceAttribute (auth, slice_attribute_id)</P
+></BLOCKQUOTE
+></P
+><P
+>Description:<A
+NAME="AEN2513"
+></A
+><BLOCKQUOTE
+CLASS="BLOCKQUOTE"
+><P
+>Deletes the specified slice or sliver attribute.</P
+><P
+>Attributes may require the caller to have a particular role in
+order to be deleted. Users may only delete attributes of
+slices or slivers of which they are members. PIs may only delete
+attributes of slices or slivers at their sites, or of which they
+are members. Admins may delete attributes of any slice or sliver.</P
+><P
+>Returns 1 if successful, faults otherwise.</P
+></BLOCKQUOTE
+></P
+><P
+>Allowed Roles:<A
+NAME="AEN2518"
+></A
+><BLOCKQUOTE
+CLASS="BLOCKQUOTE"
+><P
+>admin, pi, user</P
+></BLOCKQUOTE
+></P
+><P
+>Parameters:</P
+><P
+></P
+><UL
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>auth</CODE
+>
+: struct, API authentication structure </P
+><P
+></P
+><UL
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>AuthMethod</CODE
+>
+: string, Authentication method to use </P
+></LI
+></UL
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>slice_attribute_id</CODE
+>
+: int, Slice attribute identifier </P
+></LI
+></UL
+><P
+>Returns:</P
+><P
+></P
+><UL
+><LI
+><P
+> int, 1 if successful </P
+></LI
+></UL
+></DIV
+><DIV
+CLASS="section"
+><HR><H2
+CLASS="section"
+><A
+NAME="DeleteSliceAttributeType"
+>2.63. DeleteSliceAttributeType</A
+></H2
+><P
+>Prototype:<A
+NAME="AEN2539"
+></A
+><BLOCKQUOTE
+CLASS="BLOCKQUOTE"
+><P
+>DeleteSliceAttributeType (auth, attribute_type_id_or_name)</P
+></BLOCKQUOTE
+></P
+><P
+>Description:<A
+NAME="AEN2542"
+></A
+><BLOCKQUOTE
+CLASS="BLOCKQUOTE"
+><P
+>Deletes the specified slice attribute.</P
+><P
+>Returns 1 if successful, faults otherwise.</P
+></BLOCKQUOTE
+></P
+><P
+>Allowed Roles:<A
+NAME="AEN2546"
+></A
+><BLOCKQUOTE
+CLASS="BLOCKQUOTE"
+><P
+>admin</P
+></BLOCKQUOTE
+></P
+><P
+>Parameters:</P
+><P
+></P
+><UL
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>auth</CODE
+>
+: struct, API authentication structure </P
+><P
+></P
+><UL
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>AuthMethod</CODE
+>
+: string, Authentication method to use </P
+></LI
+></UL
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>attribute_type_id_or_name</CODE
+>
+: int or string </P
+><P
+></P
+><UL
+><LI
+><P
+> int, Slice attribute type identifier </P
+></LI
+><LI
+><P
+> string, Slice attribute type name </P
+></LI
+></UL
+></LI
+></UL
+><P
+>Returns:</P
+><P
+></P
+><UL
+><LI
+><P
+> int, 1 if successful </P
+></LI
+></UL
+></DIV
+><DIV
+CLASS="section"
+><HR><H2
+CLASS="section"
+><A
+NAME="DeleteSliceFromNodes"
+>2.64. DeleteSliceFromNodes</A
+></H2
+><P
+>Prototype:<A
+NAME="AEN2572"
+></A
+><BLOCKQUOTE
+CLASS="BLOCKQUOTE"
+><P
+>DeleteSliceFromNodes (auth, slice_id_or_name, node_id_or_hostname_list)</P
+></BLOCKQUOTE
+></P
+><P
+>Description:<A
+NAME="AEN2575"
+></A
+><BLOCKQUOTE
+CLASS="BLOCKQUOTE"
+><P
+>Deletes the specified slice from the specified nodes. If the slice is
+not associated with a node, no errors are returned.</P
+><P
+>Returns 1 if successful, faults otherwise.</P
+></BLOCKQUOTE
+></P
+><P
+>Allowed Roles:<A
+NAME="AEN2579"
+></A
+><BLOCKQUOTE
+CLASS="BLOCKQUOTE"
+><P
+>admin, pi, user</P
+></BLOCKQUOTE
+></P
+><P
+>Parameters:</P
+><P
+></P
+><UL
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>auth</CODE
+>
+: struct, API authentication structure </P
+><P
+></P
+><UL
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>AuthMethod</CODE
+>
+: string, Authentication method to use </P
+></LI
+></UL
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>slice_id_or_name</CODE
+>
+: int or string </P
+><P
+></P
+><UL
+><LI
+><P
+> int, Slice identifier </P
+></LI
+><LI
+><P
+> string, Slice name </P
+></LI
+></UL
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>node_id_or_hostname_list</CODE
+>
+: array of int or string </P
+><P
+></P
+><UL
+><LI
+><P
+> int, Node identifier </P
+></LI
+><LI
+><P
+> string, Fully qualified hostname </P
+></LI
+></UL
+></LI
+></UL
+><P
+>Returns:</P
+><P
+></P
+><UL
+><LI
+><P
+> int, 1 if successful </P
+></LI
+></UL
+></DIV
+><DIV
+CLASS="section"
+><HR><H2
+CLASS="section"
+><A
+NAME="DeleteSliceInstantiation"
+>2.65. DeleteSliceInstantiation</A
+></H2
+><P
+>Prototype:<A
+NAME="AEN2613"
+></A
+><BLOCKQUOTE
+CLASS="BLOCKQUOTE"
+><P
+>DeleteSliceInstantiation (auth, instantiation)</P
+></BLOCKQUOTE
+></P
+><P
+>Description:<A
+NAME="AEN2616"
+></A
+><BLOCKQUOTE
+CLASS="BLOCKQUOTE"
+><P
+>Deletes a slice instantiation state.</P
+><P
+>WARNING: This will cause the deletion of all slices of this instantiation.</P
+><P
+>Returns 1 if successful, faults otherwise.</P
+></BLOCKQUOTE
+></P
+><P
+>Allowed Roles:<A
+NAME="AEN2621"
+></A
+><BLOCKQUOTE
+CLASS="BLOCKQUOTE"
+><P
+>admin</P
+></BLOCKQUOTE
+></P
+><P
+>Parameters:</P
+><P
+></P
+><UL
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>auth</CODE
+>
+: struct, API authentication structure </P
+><P
+></P
+><UL
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>AuthMethod</CODE
+>
+: string, Authentication method to use </P
+></LI
+></UL
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>instantiation</CODE
+>
+: string, Slice instantiation state </P
+></LI
+></UL
+><P
+>Returns:</P
+><P
+></P
+><UL
+><LI
+><P
+> int, 1 if successful </P
+></LI
+></UL
+></DIV
+><DIV
+CLASS="section"
+><HR><H2
+CLASS="section"
+><A
+NAME="DeleteSlice"
+>2.66. DeleteSlice</A
+></H2
+><P
+>Prototype:<A
+NAME="AEN2642"
+></A
+><BLOCKQUOTE
+CLASS="BLOCKQUOTE"
+><P
+>DeleteSlice (auth, slice_id_or_name)</P
+></BLOCKQUOTE
+></P
+><P
+>Description:<A
+NAME="AEN2645"
+></A
+><BLOCKQUOTE
+CLASS="BLOCKQUOTE"
+><P
+>Deletes the specified slice.</P
+><P
+>Users may only delete slices of which they are members. PIs may
+delete any of the slices at their sites, or any slices of which
+they are members. Admins may delete any slice.</P
+><P
+>Returns 1 if successful, faults otherwise.</P
+></BLOCKQUOTE
+></P
+><P
+>Allowed Roles:<A
+NAME="AEN2650"
+></A
+><BLOCKQUOTE
+CLASS="BLOCKQUOTE"
+><P
+>admin, pi, user</P
+></BLOCKQUOTE
+></P
+><P
+>Parameters:</P
+><P
+></P
+><UL
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>auth</CODE
+>
+: struct, API authentication structure </P
+><P
+></P
+><UL
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>AuthMethod</CODE
+>
+: string, Authentication method to use </P
+></LI
+></UL
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>slice_id_or_name</CODE
+>
+: int or string </P
+><P
+></P
+><UL
+><LI
+><P
+> int, Slice identifier </P
+></LI
+><LI
+><P
+> string, Slice name </P
+></LI
+></UL
+></LI
+></UL
+><P
+>Returns:</P
+><P
+></P
+><UL
+><LI
+><P
+> int, 1 if successful </P
+></LI
+></UL
+></DIV
+><DIV
+CLASS="section"
+><HR><H2
+CLASS="section"
+><A
+NAME="GetAddresses"
+>2.67. GetAddresses</A
+></H2
+><P
+>Prototype:<A
+NAME="AEN2676"
+></A
+><BLOCKQUOTE
+CLASS="BLOCKQUOTE"
+><P
+>GetAddresses (auth, address_filter, return_fields)</P
+></BLOCKQUOTE
+></P
+><P
+>Description:<A
+NAME="AEN2679"
+></A
+><BLOCKQUOTE
+CLASS="BLOCKQUOTE"
+><P
+>Returns an array of structs containing details about addresses. If
+address_filter is specified and is an array of address
+identifiers, or a struct of address attributes, only addresses
+matching the filter will be returned. If return_fields is
+specified, only the specified details will be returned.</P
+></BLOCKQUOTE
+></P
+><P
+>Allowed Roles:<A
+NAME="AEN2682"
+></A
+><BLOCKQUOTE
+CLASS="BLOCKQUOTE"
+><P
+>admin, pi, user, tech, node</P
+></BLOCKQUOTE
+></P
+><P
+>Parameters:</P
+><P
+></P
+><UL
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>auth</CODE
+>
+: struct, API authentication structure </P
+><P
+></P
+><UL
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>AuthMethod</CODE
+>
+: string, Authentication method to use </P
+></LI
+></UL
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>address_filter</CODE
+>
+: array of int or struct </P
+><P
+></P
+><UL
+><LI
+><P
+> array of int, Address identifier </P
+></LI
+><LI
+><P
+> struct, Attribute filter </P
+><P
+></P
+><UL
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>city</CODE
+>
+: string or array of string </P
+><P
+></P
+><UL
+><LI
+><P
+> string, City </P
+></LI
+><LI
+><P
+> array of string, City </P
+></LI
+></UL
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>address_id</CODE
+>
+: int or array of int </P
+><P
+></P
+><UL
+><LI
+><P
+> int, Address identifier </P
+></LI
+><LI
+><P
+> array of int, Address identifier </P
+></LI
+></UL
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>country</CODE
+>
+: string or array of string </P
+><P
+></P
+><UL
+><LI
+><P
+> string, Country </P
+></LI
+><LI
+><P
+> array of string, Country </P
+></LI
+></UL
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>line3</CODE
+>
+: string or array of string </P
+><P
+></P
+><UL
+><LI
+><P
+> string, Address line 3 </P
+></LI
+><LI
+><P
+> array of string, Address line 3 </P
+></LI
+></UL
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>line2</CODE
+>
+: string or array of string </P
+><P
+></P
+><UL
+><LI
+><P
+> string, Address line 2 </P
+></LI
+><LI
+><P
+> array of string, Address line 2 </P
+></LI
+></UL
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>line1</CODE
+>
+: string or array of string </P
+><P
+></P
+><UL
+><LI
+><P
+> string, Address line 1 </P
+></LI
+><LI
+><P
+> array of string, Address line 1 </P
+></LI
+></UL
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>state</CODE
+>
+: string or array of string </P
+><P
+></P
+><UL
+><LI
+><P
+> string, State or province </P
+></LI
+><LI
+><P
+> array of string, State or province </P
+></LI
+></UL
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>postalcode</CODE
+>
+: string or array of string </P
+><P
+></P
+><UL
+><LI
+><P
+> string, Postal code </P
+></LI
+><LI
+><P
+> array of string, Postal code </P
+></LI
+></UL
+></LI
+></UL
+></LI
+></UL
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>return_fields</CODE
+>
+: array, List of fields to return </P
+><P
+></P
+><UL
+><LI
+><P
+> string </P
+></LI
+></UL
+></LI
+></UL
+><P
+>Returns:</P
+><P
+></P
+><UL
+><LI
+><P
+> array of struct </P
+><P
+></P
+><UL
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>city</CODE
+>
+: string, City </P
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>address_id</CODE
+>
+: int, Address identifier </P
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>country</CODE
+>
+: string, Country </P
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>line3</CODE
+>
+: string, Address line 3 </P
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>line2</CODE
+>
+: string, Address line 2 </P
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>line1</CODE
+>
+: string, Address line 1 </P
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>address_type_ids</CODE
+>
+: array, Address type identifiers </P
+><P
+></P
+><UL
+><LI
+><P
+> int </P
+></LI
+></UL
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>state</CODE
+>
+: string, State or province </P
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>postalcode</CODE
+>
+: string, Postal code </P
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>address_types</CODE
+>
+: array, Address types </P
+><P
+></P
+><UL
+><LI
+><P
+> string </P
+></LI
+></UL
+></LI
+></UL
+></LI
+></UL
+></DIV
+><DIV
+CLASS="section"
+><HR><H2
+CLASS="section"
+><A
+NAME="GetAddressTypes"
+>2.68. GetAddressTypes</A
+></H2
+><P
+>Prototype:<A
+NAME="AEN2816"
+></A
+><BLOCKQUOTE
+CLASS="BLOCKQUOTE"
+><P
+>GetAddressTypes (auth, address_type_filter, return_fields)</P
+></BLOCKQUOTE
+></P
+><P
+>Description:<A
+NAME="AEN2819"
+></A
+><BLOCKQUOTE
+CLASS="BLOCKQUOTE"
+><P
+>Returns an array of structs containing details about address
+types. If address_type_filter is specified and is an array of
+address type identifiers, or a struct of address type attributes,
+only address types matching the filter will be returned. If
+return_fields is specified, only the specified details will be
+returned.</P
+></BLOCKQUOTE
+></P
+><P
+>Allowed Roles:<A
+NAME="AEN2822"
+></A
+><BLOCKQUOTE
+CLASS="BLOCKQUOTE"
+><P
+>admin, pi, user, tech, node</P
+></BLOCKQUOTE
+></P
+><P
+>Parameters:</P
+><P
+></P
+><UL
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>auth</CODE
+>
+: struct, API authentication structure </P
+><P
+></P
+><UL
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>AuthMethod</CODE
+>
+: string, Authentication method to use </P
+></LI
+></UL
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>address_type_filter</CODE
+>
+: array of int or string or struct </P
+><P
+></P
+><UL
+><LI
+><P
+> array of int or string </P
+><P
+></P
+><UL
+><LI
+><P
+> int, Address type identifier </P
+></LI
+><LI
+><P
+> string, Address type </P
+></LI
+></UL
+></LI
+><LI
+><P
+> struct, Attribute filter </P
+><P
+></P
+><UL
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>name</CODE
+>
+: string or array of string </P
+><P
+></P
+><UL
+><LI
+><P
+> string, Address type </P
+></LI
+><LI
+><P
+> array of string, Address type </P
+></LI
+></UL
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>address_type_id</CODE
+>
+: int or array of int </P
+><P
+></P
+><UL
+><LI
+><P
+> int, Address type identifier </P
+></LI
+><LI
+><P
+> array of int, Address type identifier </P
+></LI
+></UL
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>description</CODE
+>
+: string or array of string </P
+><P
+></P
+><UL
+><LI
+><P
+> string, Address type description </P
+></LI
+><LI
+><P
+> array of string, Address type description </P
+></LI
+></UL
+></LI
+></UL
+></LI
+></UL
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>return_fields</CODE
+>
+: array, List of fields to return </P
+><P
+></P
+><UL
+><LI
+><P
+> string </P
+></LI
+></UL
+></LI
+></UL
+><P
+>Returns:</P
+><P
+></P
+><UL
+><LI
+><P
+> array of struct </P
+><P
+></P
+><UL
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>name</CODE
+>
+: string, Address type </P
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>address_type_id</CODE
+>
+: int, Address type identifier </P
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>description</CODE
+>
+: string, Address type description </P
+></LI
+></UL
+></LI
+></UL
+></DIV
+><DIV
+CLASS="section"
+><HR><H2
+CLASS="section"
+><A
+NAME="GetBootStates"
+>2.69. GetBootStates</A
+></H2
+><P
+>Prototype:<A
+NAME="AEN2894"
+></A
+><BLOCKQUOTE
+CLASS="BLOCKQUOTE"
+><P
+>GetBootStates (auth)</P
+></BLOCKQUOTE
+></P
+><P
+>Description:<A
+NAME="AEN2897"
+></A
+><BLOCKQUOTE
+CLASS="BLOCKQUOTE"
+><P
+>Returns an array of all valid node boot states.</P
+></BLOCKQUOTE
+></P
+><P
+>Allowed Roles:<A
+NAME="AEN2900"
+></A
+><BLOCKQUOTE
+CLASS="BLOCKQUOTE"
+><P
+>admin, pi, user, tech, node</P
+></BLOCKQUOTE
+></P
+><P
+>Parameters:</P
+><P
+></P
+><UL
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>auth</CODE
+>
+: struct, API authentication structure </P
+><P
+></P
+><UL
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>AuthMethod</CODE
+>
+: string, Authentication method to use </P
+></LI
+></UL
+></LI
+></UL
+><P
+>Returns:</P
+><P
+></P
+><UL
+><LI
+><P
+> array of string, Boot state </P
+></LI
+></UL
+></DIV
+><DIV
+CLASS="section"
+><HR><H2
+CLASS="section"
+><A
+NAME="GetConfFiles"
+>2.70. GetConfFiles</A
+></H2
+><P
+>Prototype:<A
+NAME="AEN2918"
+></A
+><BLOCKQUOTE
+CLASS="BLOCKQUOTE"
+><P
+>GetConfFiles (auth, conf_file_filter, return_fields)</P
+></BLOCKQUOTE
+></P
+><P
+>Description:<A
+NAME="AEN2921"
+></A
+><BLOCKQUOTE
+CLASS="BLOCKQUOTE"
+><P
+>Returns an array of structs containing details about configuration
+files. If conf_file_filter is specified and is an array of
+configuration file identifiers, or a struct of configuration file
+attributes, only configuration files matching the filter will be
+returned. If return_fields is specified, only the specified
+details will be returned.</P
+></BLOCKQUOTE
+></P
+><P
+>Allowed Roles:<A
+NAME="AEN2924"
+></A
+><BLOCKQUOTE
+CLASS="BLOCKQUOTE"
+><P
+>admin, node</P
+></BLOCKQUOTE
+></P
+><P
+>Parameters:</P
+><P
+></P
+><UL
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>auth</CODE
+>
+: struct, API authentication structure </P
+><P
+></P
+><UL
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>AuthMethod</CODE
+>
+: string, Authentication method to use </P
+></LI
+></UL
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>conf_file_filter</CODE
+>
+: array of int or struct </P
+><P
+></P
+><UL
+><LI
+><P
+> array of int, Configuration file identifier </P
+></LI
+><LI
+><P
+> struct, Attribute filter </P
+><P
+></P
+><UL
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>file_owner</CODE
+>
+: string or array of string </P
+><P
+></P
+><UL
+><LI
+><P
+> string, chown(1) owner </P
+></LI
+><LI
+><P
+> array of string, chown(1) owner </P
+></LI
+></UL
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>postinstall_cmd</CODE
+>
+: string or array of string </P
+><P
+></P
+><UL
+><LI
+><P
+> string, Shell command to execute after installing </P
+></LI
+><LI
+><P
+> array of string, Shell command to execute after installing </P
+></LI
+></UL
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>error_cmd</CODE
+>
+: string or array of string </P
+><P
+></P
+><UL
+><LI
+><P
+> string, Shell command to execute if any error occurs </P
+></LI
+><LI
+><P
+> array of string, Shell command to execute if any error occurs </P
+></LI
+></UL
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>preinstall_cmd</CODE
+>
+: string or array of string </P
+><P
+></P
+><UL
+><LI
+><P
+> string, Shell command to execute prior to installing </P
+></LI
+><LI
+><P
+> array of string, Shell command to execute prior to installing </P
+></LI
+></UL
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>node_ids</CODE
+>
+: int or array of int </P
+><P
+></P
+><UL
+><LI
+><P
+> int, List of nodes linked to this file </P
+></LI
+><LI
+><P
+> array of int, List of nodes linked to this file </P
+></LI
+></UL
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>dest</CODE
+>
+: string or array of string </P
+><P
+></P
+><UL
+><LI
+><P
+> string, Absolute path where file should be installed </P
+></LI
+><LI
+><P
+> array of string, Absolute path where file should be installed </P
+></LI
+></UL
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>ignore_cmd_errors</CODE
+>
+: boolean or array of boolean </P
+><P
+></P
+><UL
+><LI
+><P
+> boolean, Install file anyway even if an error occurs </P
+></LI
+><LI
+><P
+> array of boolean, Install file anyway even if an error occurs </P
+></LI
+></UL
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>enabled</CODE
+>
+: boolean or array of boolean </P
+><P
+></P
+><UL
+><LI
+><P
+> boolean, Configuration file is active </P
+></LI
+><LI
+><P
+> array of boolean, Configuration file is active </P
+></LI
+></UL
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>conf_file_id</CODE
+>
+: int or array of int </P
+><P
+></P
+><UL
+><LI
+><P
+> int, Configuration file identifier </P
+></LI
+><LI
+><P
+> array of int, Configuration file identifier </P
+></LI
+></UL
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>file_permissions</CODE
+>
+: string or array of string </P
+><P
+></P
+><UL
+><LI
+><P
+> string, chmod(1) permissions </P
+></LI
+><LI
+><P
+> array of string, chmod(1) permissions </P
+></LI
+></UL
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>source</CODE
+>
+: string or array of string </P
+><P
+></P
+><UL
+><LI
+><P
+> string, Relative path on the boot server where file can be downloaded </P
+></LI
+><LI
+><P
+> array of string, Relative path on the boot server where file can be downloaded </P
+></LI
+></UL
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>nodegroup_ids</CODE
+>
+: int or array of int </P
+><P
+></P
+><UL
+><LI
+><P
+> int, List of node groups linked to this file </P
+></LI
+><LI
+><P
+> array of int, List of node groups linked to this file </P
+></LI
+></UL
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>always_update</CODE
+>
+: boolean or array of boolean </P
+><P
+></P
+><UL
+><LI
+><P
+> boolean, Always attempt to install file even if unchanged </P
+></LI
+><LI
+><P
+> array of boolean, Always attempt to install file even if unchanged </P
+></LI
+></UL
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>file_group</CODE
+>
+: string or array of string </P
+><P
+></P
+><UL
+><LI
+><P
+> string, chgrp(1) owner </P
+></LI
+><LI
+><P
+> array of string, chgrp(1) owner </P
+></LI
+></UL
+></LI
+></UL
+></LI
+></UL
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>return_fields</CODE
+>
+: array, List of fields to return </P
+><P
+></P
+><UL
+><LI
+><P
+> string </P
+></LI
+></UL
+></LI
+></UL
+><P
+>Returns:</P
+><P
+></P
+><UL
+><LI
+><P
+> array of struct </P
+><P
+></P
+><UL
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>file_owner</CODE
+>
+: string, chown(1) owner </P
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>postinstall_cmd</CODE
+>
+: string, Shell command to execute after installing </P
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>error_cmd</CODE
+>
+: string, Shell command to execute if any error occurs </P
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>preinstall_cmd</CODE
+>
+: string, Shell command to execute prior to installing </P
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>node_ids</CODE
+>
+: int, List of nodes linked to this file </P
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>dest</CODE
+>
+: string, Absolute path where file should be installed </P
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>ignore_cmd_errors</CODE
+>
+: boolean, Install file anyway even if an error occurs </P
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>enabled</CODE
+>
+: boolean, Configuration file is active </P
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>conf_file_id</CODE
+>
+: int, Configuration file identifier </P
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>file_permissions</CODE
+>
+: string, chmod(1) permissions </P
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>source</CODE
+>
+: string, Relative path on the boot server where file can be downloaded </P
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>nodegroup_ids</CODE
+>
+: int, List of node groups linked to this file </P
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>always_update</CODE
+>
+: boolean, Always attempt to install file even if unchanged </P
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>file_group</CODE
+>
+: string, chgrp(1) owner </P
+></LI
+></UL
+></LI
+></UL
+></DIV
+><DIV
+CLASS="section"
+><HR><H2
+CLASS="section"
+><A
+NAME="GetEvents"
+>2.71. GetEvents</A
+></H2
+><P
+>Prototype:<A
+NAME="AEN3112"
+></A
+><BLOCKQUOTE
+CLASS="BLOCKQUOTE"
+><P
+>GetEvents (auth, event_filter, return_fields)</P
+></BLOCKQUOTE
+></P
+><P
+>Description:<A
+NAME="AEN3115"
+></A
+><BLOCKQUOTE
+CLASS="BLOCKQUOTE"
+><P
+>Returns an array of structs containing details about events and
+faults. If event_filter is specified and is an array of event
+identifiers, or a struct of event attributes, only events matching
+the filter will be returned. If return_fields is specified, only the
+specified details will be returned.</P
+></BLOCKQUOTE
+></P
+><P
+>Allowed Roles:<A
+NAME="AEN3118"
+></A
+><BLOCKQUOTE
+CLASS="BLOCKQUOTE"
+><P
+>admin</P
+></BLOCKQUOTE
+></P
+><P
+>Parameters:</P
+><P
+></P
+><UL
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>auth</CODE
+>
+: struct, API authentication structure </P
+><P
+></P
+><UL
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>AuthMethod</CODE
+>
+: string, Authentication method to use </P
+></LI
+></UL
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>event_filter</CODE
+>
+: array of int or struct </P
+><P
+></P
+><UL
+><LI
+><P
+> array of int, Event identifier </P
+></LI
+><LI
+><P
+> struct, Attribute filter </P
+><P
+></P
+><UL
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>fault_code</CODE
+>
+: int or array of int </P
+><P
+></P
+><UL
+><LI
+><P
+> int, Event fault code </P
+></LI
+><LI
+><P
+> array of int, Event fault code </P
+></LI
+></UL
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>event_id</CODE
+>
+: int or array of int </P
+><P
+></P
+><UL
+><LI
+><P
+> int, Event identifier </P
+></LI
+><LI
+><P
+> array of int, Event identifier </P
+></LI
+></UL
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>object_type</CODE
+>
+: string or array of string </P
+><P
+></P
+><UL
+><LI
+><P
+> string, What type of object is this event affecting </P
+></LI
+><LI
+><P
+> array of string, What type of object is this event affecting </P
+></LI
+></UL
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>node_id</CODE
+>
+: int or array of int </P
+><P
+></P
+><UL
+><LI
+><P
+> int, Identifier of node responsible for event, if any </P
+></LI
+><LI
+><P
+> array of int, Identifier of node responsible for event, if any </P
+></LI
+></UL
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>call</CODE
+>
+: string or array of string </P
+><P
+></P
+><UL
+><LI
+><P
+> string, Call responsible for this event, including paramters </P
+></LI
+><LI
+><P
+> array of string, Call responsible for this event, including paramters </P
+></LI
+></UL
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>time</CODE
+>
+: int or array of int </P
+><P
+></P
+><UL
+><LI
+><P
+> int, Date and time that the event took place, in seconds since UNIX epoch </P
+></LI
+><LI
+><P
+> array of int, Date and time that the event took place, in seconds since UNIX epoch </P
+></LI
+></UL
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>person_id</CODE
+>
+: int or array of int </P
+><P
+></P
+><UL
+><LI
+><P
+> int, Identifier of person responsible for event, if any </P
+></LI
+><LI
+><P
+> array of int, Identifier of person responsible for event, if any </P
+></LI
+></UL
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>message</CODE
+>
+: string or array of string </P
+><P
+></P
+><UL
+><LI
+><P
+> string, High level description of this event </P
+></LI
+><LI
+><P
+> array of string, High level description of this event </P
+></LI
+></UL
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>runtime</CODE
+>
+: double or array of double </P
+><P
+></P
+><UL
+><LI
+><P
+> double, Runtime of event </P
+></LI
+><LI
+><P
+> array of double, Runtime of event </P
+></LI
+></UL
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>call_name</CODE
+>
+: string or array of string </P
+><P
+></P
+><UL
+><LI
+><P
+> string, Call responsible for this event </P
+></LI
+><LI
+><P
+> array of string, Call responsible for this event </P
+></LI
+></UL
+></LI
+></UL
+></LI
+></UL
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>return_fields</CODE
+>
+: array, List of fields to return </P
+><P
+></P
+><UL
+><LI
+><P
+> string </P
+></LI
+></UL
+></LI
+></UL
+><P
+>Returns:</P
+><P
+></P
+><UL
+><LI
+><P
+> array of struct </P
+><P
+></P
+><UL
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>fault_code</CODE
+>
+: int, Event fault code </P
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>event_id</CODE
+>
+: int, Event identifier </P
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>object_type</CODE
+>
+: string, What type of object is this event affecting </P
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>object_ids</CODE
+>
+: array, IDs of objects affected by this event </P
+><P
+></P
+><UL
+><LI
+><P
+> int </P
+></LI
+></UL
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>node_id</CODE
+>
+: int, Identifier of node responsible for event, if any </P
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>call</CODE
+>
+: string, Call responsible for this event, including paramters </P
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>time</CODE
+>
+: int, Date and time that the event took place, in seconds since UNIX epoch </P
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>person_id</CODE
+>
+: int, Identifier of person responsible for event, if any </P
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>message</CODE
+>
+: string, High level description of this event </P
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>runtime</CODE
+>
+: double, Runtime of event </P
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>call_name</CODE
+>
+: string, Call responsible for this event </P
+></LI
+></UL
+></LI
+></UL
+></DIV
+><DIV
+CLASS="section"
+><HR><H2
+CLASS="section"
+><A
+NAME="GetKeys"
+>2.72. GetKeys</A
+></H2
+><P
+>Prototype:<A
+NAME="AEN3268"
+></A
+><BLOCKQUOTE
+CLASS="BLOCKQUOTE"
+><P
+>GetKeys (auth, key_filter, return_fields)</P
+></BLOCKQUOTE
+></P
+><P
+>Description:<A
+NAME="AEN3271"
+></A
+><BLOCKQUOTE
+CLASS="BLOCKQUOTE"
+><P
+>Returns an array of structs containing details about keys. If
+key_filter is specified and is an array of key identifiers, or a
+struct of key attributes, only keys matching the filter will be
+returned. If return_fields is specified, only the specified
+details will be returned.</P
+><P
+>Admin may query all keys. Non-admins may only query their own
+keys.</P
+></BLOCKQUOTE
+></P
+><P
+>Allowed Roles:<A
+NAME="AEN3275"
+></A
+><BLOCKQUOTE
+CLASS="BLOCKQUOTE"
+><P
+>admin, pi, user, tech, node</P
+></BLOCKQUOTE
+></P
+><P
+>Parameters:</P
+><P
+></P
+><UL
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>auth</CODE
+>
+: struct, API authentication structure </P
+><P
+></P
+><UL
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>AuthMethod</CODE
+>
+: string, Authentication method to use </P
+></LI
+></UL
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>key_filter</CODE
+>
+: array of int or struct </P
+><P
+></P
+><UL
+><LI
+><P
+> array of int </P
+><P
+></P
+><UL
+><LI
+><P
+> int, Key identifier </P
+></LI
+></UL
+></LI
+><LI
+><P
+> struct, Attribute filter </P
+><P
+></P
+><UL
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>peer_key_id</CODE
+>
+: int or array of int </P
+><P
+></P
+><UL
+><LI
+><P
+> int, Foreign key identifier at peer </P
+></LI
+><LI
+><P
+> array of int, Foreign key identifier at peer </P
+></LI
+></UL
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>key_type</CODE
+>
+: string or array of string </P
+><P
+></P
+><UL
+><LI
+><P
+> string, Key type </P
+></LI
+><LI
+><P
+> array of string, Key type </P
+></LI
+></UL
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>key</CODE
+>
+: string or array of string </P
+><P
+></P
+><UL
+><LI
+><P
+> string, Key value </P
+></LI
+><LI
+><P
+> array of string, Key value </P
+></LI
+></UL
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>person_id</CODE
+>
+: int or array of int </P
+><P
+></P
+><UL
+><LI
+><P
+> int, User to which this key belongs </P
+></LI
+><LI
+><P
+> array of int, User to which this key belongs </P
+></LI
+></UL
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>key_id</CODE
+>
+: int or array of int </P
+><P
+></P
+><UL
+><LI
+><P
+> int, Key identifier </P
+></LI
+><LI
+><P
+> array of int, Key identifier </P
+></LI
+></UL
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>peer_id</CODE
+>
+: int or array of int </P
+><P
+></P
+><UL
+><LI
+><P
+> int, Peer to which this key belongs </P
+></LI
+><LI
+><P
+> array of int, Peer to which this key belongs </P
+></LI
+></UL
+></LI
+></UL
+></LI
+></UL
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>return_fields</CODE
+>
+: array, List of fields to return </P
+><P
+></P
+><UL
+><LI
+><P
+> string </P
+></LI
+></UL
+></LI
+></UL
+><P
+>Returns:</P
+><P
+></P
+><UL
+><LI
+><P
+> array of struct </P
+><P
+></P
+><UL
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>peer_id</CODE
+>
+: int, Peer to which this key belongs </P
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>key_type</CODE
+>
+: string, Key type </P
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>key</CODE
+>
+: string, Key value </P
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>person_id</CODE
+>
+: int, User to which this key belongs </P
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>key_id</CODE
+>
+: int, Key identifier </P
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>peer_key_id</CODE
+>
+: int, Foreign key identifier at peer </P
+></LI
+></UL
+></LI
+></UL
+></DIV
+><DIV
+CLASS="section"
+><HR><H2
+CLASS="section"
+><A
+NAME="GetKeyTypes"
+>2.73. GetKeyTypes</A
+></H2
+><P
+>Prototype:<A
+NAME="AEN3378"
+></A
+><BLOCKQUOTE
+CLASS="BLOCKQUOTE"
+><P
+>GetKeyTypes (auth)</P
+></BLOCKQUOTE
+></P
+><P
+>Description:<A
+NAME="AEN3381"
+></A
+><BLOCKQUOTE
+CLASS="BLOCKQUOTE"
+><P
+>Returns an array of all valid key types.</P
+></BLOCKQUOTE
+></P
+><P
+>Allowed Roles:<A
+NAME="AEN3384"
+></A
+><BLOCKQUOTE
+CLASS="BLOCKQUOTE"
+><P
+>admin, pi, user, tech, node</P
+></BLOCKQUOTE
+></P
+><P
+>Parameters:</P
+><P
+></P
+><UL
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>auth</CODE
+>
+: struct, API authentication structure </P
+><P
+></P
+><UL
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>AuthMethod</CODE
+>
+: string, Authentication method to use </P
+></LI
+></UL
+></LI
+></UL
+><P
+>Returns:</P
+><P
+></P
+><UL
+><LI
+><P
+> array of string, Key type </P
+></LI
+></UL
+></DIV
+><DIV
+CLASS="section"
+><HR><H2
+CLASS="section"
+><A
+NAME="GetMessages"
+>2.74. GetMessages</A
+></H2
+><P
+>Prototype:<A
+NAME="AEN3402"
+></A
+><BLOCKQUOTE
+CLASS="BLOCKQUOTE"
+><P
+>GetMessages (auth, message_filter, return_fields)</P
+></BLOCKQUOTE
+></P
+><P
+>Description:<A
+NAME="AEN3405"
+></A
+><BLOCKQUOTE
+CLASS="BLOCKQUOTE"
+><P
+>Returns an array of structs containing details about message
+templates. If message template_filter is specified and is an array
+of message template identifiers, or a struct of message template
+attributes, only message templates matching the filter will be
+returned. If return_fields is specified, only the specified
+details will be returned.</P
+></BLOCKQUOTE
+></P
+><P
+>Allowed Roles:<A
+NAME="AEN3408"
+></A
+><BLOCKQUOTE
+CLASS="BLOCKQUOTE"
+><P
+>admin, node</P
+></BLOCKQUOTE
+></P
+><P
+>Parameters:</P
+><P
+></P
+><UL
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>auth</CODE
+>
+: struct, API authentication structure </P
+><P
+></P
+><UL
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>AuthMethod</CODE
+>
+: string, Authentication method to use </P
+></LI
+></UL
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>message_filter</CODE
+>
+: array of string or struct </P
+><P
+></P
+><UL
+><LI
+><P
+> array of string, Message identifier </P
+></LI
+><LI
+><P
+> struct, Attribute filter </P
+><P
+></P
+><UL
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>enabled</CODE
+>
+: boolean or array of boolean </P
+><P
+></P
+><UL
+><LI
+><P
+> boolean, Message is enabled </P
+></LI
+><LI
+><P
+> array of boolean, Message is enabled </P
+></LI
+></UL
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>message_id</CODE
+>
+: string or array of string </P
+><P
+></P
+><UL
+><LI
+><P
+> string, Message identifier </P
+></LI
+><LI
+><P
+> array of string, Message identifier </P
+></LI
+></UL
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>template</CODE
+>
+: string or array of string </P
+><P
+></P
+><UL
+><LI
+><P
+> string, Message template </P
+></LI
+><LI
+><P
+> array of string, Message template </P
+></LI
+></UL
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>subject</CODE
+>
+: string or array of string </P
+><P
+></P
+><UL
+><LI
+><P
+> string, Message summary </P
+></LI
+><LI
+><P
+> array of string, Message summary </P
+></LI
+></UL
+></LI
+></UL
+></LI
+></UL
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>return_fields</CODE
+>
+: array, List of fields to return </P
+><P
+></P
+><UL
+><LI
+><P
+> string </P
+></LI
+></UL
+></LI
+></UL
+><P
+>Returns:</P
+><P
+></P
+><UL
+><LI
+><P
+> array of struct </P
+><P
+></P
+><UL
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>enabled</CODE
+>
+: boolean, Message is enabled </P
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>message_id</CODE
+>
+: string, Message identifier </P
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>template</CODE
+>
+: string, Message template </P
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>subject</CODE
+>
+: string, Message summary </P
+></LI
+></UL
+></LI
+></UL
+></DIV
+><DIV
+CLASS="section"
+><HR><H2
+CLASS="section"
+><A
+NAME="GetNetworkMethods"
+>2.75. GetNetworkMethods</A
+></H2
+><P
+>Prototype:<A
+NAME="AEN3486"
+></A
+><BLOCKQUOTE
+CLASS="BLOCKQUOTE"
+><P
+>GetNetworkMethods (auth)</P
+></BLOCKQUOTE
+></P
+><P
+>Description:<A
+NAME="AEN3489"
+></A
+><BLOCKQUOTE
+CLASS="BLOCKQUOTE"
+><P
+>Returns a list of all valid network methods.</P
+></BLOCKQUOTE
+></P
+><P
+>Allowed Roles:<A
+NAME="AEN3492"
+></A
+><BLOCKQUOTE
+CLASS="BLOCKQUOTE"
+><P
+>admin, pi, user, tech, node</P
+></BLOCKQUOTE
+></P
+><P
+>Parameters:</P
+><P
+></P
+><UL
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>auth</CODE
+>
+: struct, API authentication structure </P
+><P
+></P
+><UL
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>AuthMethod</CODE
+>
+: string, Authentication method to use </P
+></LI
+></UL
+></LI
+></UL
+><P
+>Returns:</P
+><P
+></P
+><UL
+><LI
+><P
+> array of string, Network method </P
+></LI
+></UL
+></DIV
+><DIV
+CLASS="section"
+><HR><H2
+CLASS="section"
+><A
+NAME="GetNetworkTypes"
+>2.76. GetNetworkTypes</A
+></H2
+><P
+>Prototype:<A
+NAME="AEN3510"
+></A
+><BLOCKQUOTE
+CLASS="BLOCKQUOTE"
+><P
+>GetNetworkTypes (auth)</P
+></BLOCKQUOTE
+></P
+><P
+>Description:<A
+NAME="AEN3513"
+></A
+><BLOCKQUOTE
+CLASS="BLOCKQUOTE"
+><P
+>Returns a list of all valid network types.</P
+></BLOCKQUOTE
+></P
+><P
+>Allowed Roles:<A
+NAME="AEN3516"
+></A
+><BLOCKQUOTE
+CLASS="BLOCKQUOTE"
+><P
+>admin, pi, user, tech, node</P
+></BLOCKQUOTE
+></P
+><P
+>Parameters:</P
+><P
+></P
+><UL
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>auth</CODE
+>
+: struct, API authentication structure </P
+><P
+></P
+><UL
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>AuthMethod</CODE
+>
+: string, Authentication method to use </P
+></LI
+></UL
+></LI
+></UL
+><P
+>Returns:</P
+><P
+></P
+><UL
+><LI
+><P
+> array of string, Network type </P
+></LI
+></UL
+></DIV
+><DIV
+CLASS="section"
+><HR><H2
+CLASS="section"
+><A
+NAME="GetNodeGroups"
+>2.77. GetNodeGroups</A
+></H2
+><P
+>Prototype:<A
+NAME="AEN3534"
+></A
+><BLOCKQUOTE
+CLASS="BLOCKQUOTE"
+><P
+>GetNodeGroups (auth, nodegroup_filter, return_fields)</P
+></BLOCKQUOTE
+></P
+><P
+>Description:<A
+NAME="AEN3537"
+></A
+><BLOCKQUOTE
+CLASS="BLOCKQUOTE"
+><P
+>Returns an array of structs containing details about node groups.
+If nodegroup_filter is specified and is an array of node group
+identifiers or names, or a struct of node group attributes, only
+node groups matching the filter will be returned. If return_fields
+is specified, only the specified details will be returned.</P
+></BLOCKQUOTE
+></P
+><P
+>Allowed Roles:<A
+NAME="AEN3540"
+></A
+><BLOCKQUOTE
+CLASS="BLOCKQUOTE"
+><P
+>admin, pi, user, tech, node, anonymous</P
+></BLOCKQUOTE
+></P
+><P
+>Parameters:</P
+><P
+></P
+><UL
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>auth</CODE
+>
+: struct, API authentication structure </P
+><P
+></P
+><UL
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>AuthMethod</CODE
+>
+: string, Authentication method to use </P
+></LI
+></UL
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>nodegroup_filter</CODE
+>
+: array of int or string or struct </P
+><P
+></P
+><UL
+><LI
+><P
+> array of int or string </P
+><P
+></P
+><UL
+><LI
+><P
+> int, Node group identifier </P
+></LI
+><LI
+><P
+> string, Node group name </P
+></LI
+></UL
+></LI
+><LI
+><P
+> struct, Attribute filter </P
+><P
+></P
+><UL
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>nodegroup_id</CODE
+>
+: int or array of int </P
+><P
+></P
+><UL
+><LI
+><P
+> int, Node group identifier </P
+></LI
+><LI
+><P
+> array of int, Node group identifier </P
+></LI
+></UL
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>name</CODE
+>
+: string or array of string </P
+><P
+></P
+><UL
+><LI
+><P
+> string, Node group name </P
+></LI
+><LI
+><P
+> array of string, Node group name </P
+></LI
+></UL
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>description</CODE
+>
+: string or array of string </P
+><P
+></P
+><UL
+><LI
+><P
+> string, Node group description </P
+></LI
+><LI
+><P
+> array of string, Node group description </P
+></LI
+></UL
+></LI
+></UL
+></LI
+></UL
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>return_fields</CODE
+>
+: array, List of fields to return </P
+><P
+></P
+><UL
+><LI
+><P
+> string </P
+></LI
+></UL
+></LI
+></UL
+><P
+>Returns:</P
+><P
+></P
+><UL
+><LI
+><P
+> array of struct </P
+><P
+></P
+><UL
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>node_ids</CODE
+>
+: array, List of nodes in this node group </P
+><P
+></P
+><UL
+><LI
+><P
+> int </P
+></LI
+></UL
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>nodegroup_id</CODE
+>
+: int, Node group identifier </P
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>name</CODE
+>
+: string, Node group name </P
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>conf_file_ids</CODE
+>
+: array, List of configuration files specific to this node group </P
+><P
+></P
+><UL
+><LI
+><P
+> int </P
+></LI
+></UL
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>description</CODE
+>
+: string, Node group description </P
+></LI
+></UL
+></LI
+></UL
+></DIV
+><DIV
+CLASS="section"
+><HR><H2
+CLASS="section"
+><A
+NAME="GetNodeNetworks"
+>2.78. GetNodeNetworks</A
+></H2
+><P
+>Prototype:<A
+NAME="AEN3624"
+></A
+><BLOCKQUOTE
+CLASS="BLOCKQUOTE"
+><P
+>GetNodeNetworks (auth, nodenetwork_filter, return_fields)</P
+></BLOCKQUOTE
+></P
+><P
+>Description:<A
+NAME="AEN3627"
+></A
+><BLOCKQUOTE
+CLASS="BLOCKQUOTE"
+><P
+>Returns an array of structs containing details about node network
+interfacess. If nodenetworks_filter is specified and is an array
+of node network identifiers, or a struct of node network
+attributes, only node network interfaces matching the filter will
+be returned. If return_fields is specified, only the
+specified details will be returned.</P
+></BLOCKQUOTE
+></P
+><P
+>Allowed Roles:<A
+NAME="AEN3630"
+></A
+><BLOCKQUOTE
+CLASS="BLOCKQUOTE"
+><P
+>admin, pi, user, tech, node, anonymous</P
+></BLOCKQUOTE
+></P
+><P
+>Parameters:</P
+><P
+></P
+><UL
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>auth</CODE
+>
+: struct, API authentication structure </P
+><P
+></P
+><UL
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>AuthMethod</CODE
+>
+: string, Authentication method to use </P
+></LI
+></UL
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>nodenetwork_filter</CODE
+>
+: array of int or struct </P
+><P
+></P
+><UL
+><LI
+><P
+> array of int, Node interface identifier </P
+></LI
+><LI
+><P
+> struct, Attribute filter </P
+><P
+></P
+><UL
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>nodenetwork_id</CODE
+>
+: int or array of int </P
+><P
+></P
+><UL
+><LI
+><P
+> int, Node interface identifier </P
+></LI
+><LI
+><P
+> array of int, Node interface identifier </P
+></LI
+></UL
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>network</CODE
+>
+: string or array of string </P
+><P
+></P
+><UL
+><LI
+><P
+> string, Subnet address </P
+></LI
+><LI
+><P
+> array of string, Subnet address </P
+></LI
+></UL
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>is_primary</CODE
+>
+: boolean or array of boolean </P
+><P
+></P
+><UL
+><LI
+><P
+> boolean, Is the primary interface for this node </P
+></LI
+><LI
+><P
+> array of boolean, Is the primary interface for this node </P
+></LI
+></UL
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>dns1</CODE
+>
+: string or array of string </P
+><P
+></P
+><UL
+><LI
+><P
+> string, IP address of primary DNS server </P
+></LI
+><LI
+><P
+> array of string, IP address of primary DNS server </P
+></LI
+></UL
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>hostname</CODE
+>
+: string or array of string </P
+><P
+></P
+><UL
+><LI
+><P
+> string, (Optional) Hostname </P
+></LI
+><LI
+><P
+> array of string, (Optional) Hostname </P
+></LI
+></UL
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>mac</CODE
+>
+: string or array of string </P
+><P
+></P
+><UL
+><LI
+><P
+> string, MAC address </P
+></LI
+><LI
+><P
+> array of string, MAC address </P
+></LI
+></UL
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>bwlimit</CODE
+>
+: int or array of int </P
+><P
+></P
+><UL
+><LI
+><P
+> int, Bandwidth limit </P
+></LI
+><LI
+><P
+> array of int, Bandwidth limit </P
+></LI
+></UL
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>broadcast</CODE
+>
+: string or array of string </P
+><P
+></P
+><UL
+><LI
+><P
+> string, Network broadcast address </P
+></LI
+><LI
+><P
+> array of string, Network broadcast address </P
+></LI
+></UL
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>method</CODE
+>
+: string or array of string </P
+><P
+></P
+><UL
+><LI
+><P
+> string, Addressing method (e.g., 'static' or 'dhcp') </P
+></LI
+><LI
+><P
+> array of string, Addressing method (e.g., 'static' or 'dhcp') </P
+></LI
+></UL
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>netmask</CODE
+>
+: string or array of string </P
+><P
+></P
+><UL
+><LI
+><P
+> string, Subnet mask </P
+></LI
+><LI
+><P
+> array of string, Subnet mask </P
+></LI
+></UL
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>node_id</CODE
+>
+: int or array of int </P
+><P
+></P
+><UL
+><LI
+><P
+> int, Node associated with this interface </P
+></LI
+><LI
+><P
+> array of int, Node associated with this interface </P
+></LI
+></UL
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>dns2</CODE
+>
+: string or array of string </P
+><P
+></P
+><UL
+><LI
+><P
+> string, IP address of secondary DNS server </P
+></LI
+><LI
+><P
+> array of string, IP address of secondary DNS server </P
+></LI
+></UL
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>ip</CODE
+>
+: string or array of string </P
+><P
+></P
+><UL
+><LI
+><P
+> string, IP address </P
+></LI
+><LI
+><P
+> array of string, IP address </P
+></LI
+></UL
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>type</CODE
+>
+: string or array of string </P
+><P
+></P
+><UL
+><LI
+><P
+> string, Address type (e.g., 'ipv4') </P
+></LI
+><LI
+><P
+> array of string, Address type (e.g., 'ipv4') </P
+></LI
+></UL
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>gateway</CODE
+>
+: string or array of string </P
+><P
+></P
+><UL
+><LI
+><P
+> string, IP address of primary gateway </P
+></LI
+><LI
+><P
+> array of string, IP address of primary gateway </P
+></LI
+></UL
+></LI
+></UL
+></LI
+></UL
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>return_fields</CODE
+>
+: array, List of fields to return </P
+><P
+></P
+><UL
+><LI
+><P
+> string </P
+></LI
+></UL
+></LI
+></UL
+><P
+>Returns:</P
+><P
+></P
+><UL
+><LI
+><P
+> array of struct </P
+><P
+></P
+><UL
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>broadcast</CODE
+>
+: string, Network broadcast address </P
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>is_primary</CODE
+>
+: boolean, Is the primary interface for this node </P
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>network</CODE
+>
+: string, Subnet address </P
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>ip</CODE
+>
+: string, IP address </P
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>dns1</CODE
+>
+: string, IP address of primary DNS server </P
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>hostname</CODE
+>
+: string, (Optional) Hostname </P
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>netmask</CODE
+>
+: string, Subnet mask </P
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>gateway</CODE
+>
+: string, IP address of primary gateway </P
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>nodenetwork_id</CODE
+>
+: int, Node interface identifier </P
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>mac</CODE
+>
+: string, MAC address </P
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>node_id</CODE
+>
+: int, Node associated with this interface </P
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>dns2</CODE
+>
+: string, IP address of secondary DNS server </P
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>bwlimit</CODE
+>
+: int, Bandwidth limit </P
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>type</CODE
+>
+: string, Address type (e.g., 'ipv4') </P
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>method</CODE
+>
+: string, Addressing method (e.g., 'static' or 'dhcp') </P
+></LI
+></UL
+></LI
+></UL
+></DIV
+><DIV
+CLASS="section"
+><HR><H2
+CLASS="section"
+><A
+NAME="GetNodes"
+>2.79. GetNodes</A
+></H2
+><P
+>Prototype:<A
+NAME="AEN3829"
+></A
+><BLOCKQUOTE
+CLASS="BLOCKQUOTE"
+><P
+>GetNodes (auth, node_filter, return_fields)</P
+></BLOCKQUOTE
+></P
+><P
+>Description:<A
+NAME="AEN3832"
+></A
+><BLOCKQUOTE
+CLASS="BLOCKQUOTE"
+><P
+>Returns an array of structs containing details about nodes. If
+node_filter is specified and is an array of node identifiers or
+hostnames, or a struct of node attributes, only nodes matching the
+filter will be returned. If return_fields is specified, only the
+specified details will be returned.</P
+><P
+>Some fields may only be viewed by admins.</P
+></BLOCKQUOTE
+></P
+><P
+>Allowed Roles:<A
+NAME="AEN3836"
+></A
+><BLOCKQUOTE
+CLASS="BLOCKQUOTE"
+><P
+>admin, pi, user, tech, node, anonymous</P
+></BLOCKQUOTE
+></P
+><P
+>Parameters:</P
+><P
+></P
+><UL
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>auth</CODE
+>
+: struct, API authentication structure </P
+><P
+></P
+><UL
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>AuthMethod</CODE
+>
+: string, Authentication method to use </P
+></LI
+></UL
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>node_filter</CODE
+>
+: array of int or string or struct </P
+><P
+></P
+><UL
+><LI
+><P
+> array of int or string </P
+><P
+></P
+><UL
+><LI
+><P
+> int, Node identifier </P
+></LI
+><LI
+><P
+> string, Fully qualified hostname </P
+></LI
+></UL
+></LI
+><LI
+><P
+> struct, Attribute filter </P
+><P
+></P
+><UL
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>last_updated</CODE
+>
+: int or array of int </P
+><P
+></P
+><UL
+><LI
+><P
+> int, Date and time when node entry was created </P
+></LI
+><LI
+><P
+> array of int, Date and time when node entry was created </P
+></LI
+></UL
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>version</CODE
+>
+: string or array of string </P
+><P
+></P
+><UL
+><LI
+><P
+> string, Apparent Boot CD version </P
+></LI
+><LI
+><P
+> array of string, Apparent Boot CD version </P
+></LI
+></UL
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>boot_state</CODE
+>
+: string or array of string </P
+><P
+></P
+><UL
+><LI
+><P
+> string, Boot state </P
+></LI
+><LI
+><P
+> array of string, Boot state </P
+></LI
+></UL
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>peer_node_id</CODE
+>
+: int or array of int </P
+><P
+></P
+><UL
+><LI
+><P
+> int, Foreign node identifier at peer </P
+></LI
+><LI
+><P
+> array of int, Foreign node identifier at peer </P
+></LI
+></UL
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>hostname</CODE
+>
+: string or array of string </P
+><P
+></P
+><UL
+><LI
+><P
+> string, Fully qualified hostname </P
+></LI
+><LI
+><P
+> array of string, Fully qualified hostname </P
+></LI
+></UL
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>site_id</CODE
+>
+: int or array of int </P
+><P
+></P
+><UL
+><LI
+><P
+> int, Site at which this node is located </P
+></LI
+><LI
+><P
+> array of int, Site at which this node is located </P
+></LI
+></UL
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>boot_nonce</CODE
+>
+: string or array of string </P
+><P
+></P
+><UL
+><LI
+><P
+> string, (Admin only) Random value generated by the node at last boot </P
+></LI
+><LI
+><P
+> array of string, (Admin only) Random value generated by the node at last boot </P
+></LI
+></UL
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>session</CODE
+>
+: string or array of string </P
+><P
+></P
+><UL
+><LI
+><P
+> string, (Admin only) Node session value </P
+></LI
+><LI
+><P
+> array of string, (Admin only) Node session value </P
+></LI
+></UL
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>ssh_rsa_key</CODE
+>
+: string or array of string </P
+><P
+></P
+><UL
+><LI
+><P
+> string, Last known SSH host key </P
+></LI
+><LI
+><P
+> array of string, Last known SSH host key </P
+></LI
+></UL
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>key</CODE
+>
+: string or array of string </P
+><P
+></P
+><UL
+><LI
+><P
+> string, (Admin only) Node key </P
+></LI
+><LI
+><P
+> array of string, (Admin only) Node key </P
+></LI
+></UL
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>date_created</CODE
+>
+: int or array of int </P
+><P
+></P
+><UL
+><LI
+><P
+> int, Date and time when node entry was created </P
+></LI
+><LI
+><P
+> array of int, Date and time when node entry was created </P
+></LI
+></UL
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>model</CODE
+>
+: string or array of string </P
+><P
+></P
+><UL
+><LI
+><P
+> string, Make and model of the actual machine </P
+></LI
+><LI
+><P
+> array of string, Make and model of the actual machine </P
+></LI
+></UL
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>peer_id</CODE
+>
+: int or array of int </P
+><P
+></P
+><UL
+><LI
+><P
+> int, Peer to which this node belongs </P
+></LI
+><LI
+><P
+> array of int, Peer to which this node belongs </P
+></LI
+></UL
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>node_id</CODE
+>
+: int or array of int </P
+><P
+></P
+><UL
+><LI
+><P
+> int, Node identifier </P
+></LI
+><LI
+><P
+> array of int, Node identifier </P
+></LI
+></UL
+></LI
+></UL
+></LI
+></UL
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>return_fields</CODE
+>
+: array, List of fields to return </P
+><P
+></P
+><UL
+><LI
+><P
+> string </P
+></LI
+></UL
+></LI
+></UL
+><P
+>Returns:</P
+><P
+></P
+><UL
+><LI
+><P
+> array of struct </P
+><P
+></P
+><UL
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>session</CODE
+>
+: string, (Admin only) Node session value </P
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>pcu_ids</CODE
+>
+: array, List of PCUs that control this node </P
+><P
+></P
+><UL
+><LI
+><P
+> int </P
+></LI
+></UL
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>nodegroup_ids</CODE
+>
+: array, List of node groups that this node is in </P
+><P
+></P
+><UL
+><LI
+><P
+> int </P
+></LI
+></UL
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>last_updated</CODE
+>
+: int, Date and time when node entry was created </P
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>version</CODE
+>
+: string, Apparent Boot CD version </P
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>nodenetwork_ids</CODE
+>
+: array, List of network interfaces that this node has </P
+><P
+></P
+><UL
+><LI
+><P
+> int </P
+></LI
+></UL
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>boot_state</CODE
+>
+: string, Boot state </P
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>peer_node_id</CODE
+>
+: int, Foreign node identifier at peer </P
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>hostname</CODE
+>
+: string, Fully qualified hostname </P
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>site_id</CODE
+>
+: int, Site at which this node is located </P
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>ports</CODE
+>
+: array, List of PCU ports that this node is connected to </P
+><P
+></P
+><UL
+><LI
+><P
+> int </P
+></LI
+></UL
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>slice_ids</CODE
+>
+: array, List of slices on this node </P
+><P
+></P
+><UL
+><LI
+><P
+> int </P
+></LI
+></UL
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>boot_nonce</CODE
+>
+: string, (Admin only) Random value generated by the node at last boot </P
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>node_id</CODE
+>
+: int, Node identifier </P
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>key</CODE
+>
+: string, (Admin only) Node key </P
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>date_created</CODE
+>
+: int, Date and time when node entry was created </P
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>model</CODE
+>
+: string, Make and model of the actual machine </P
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>peer_id</CODE
+>
+: int, Peer to which this node belongs </P
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>conf_file_ids</CODE
+>
+: array, List of configuration files specific to this node </P
+><P
+></P
+><UL
+><LI
+><P
+> int </P
+></LI
+></UL
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>ssh_rsa_key</CODE
+>
+: string, Last known SSH host key </P
+></LI
+></UL
+></LI
+></UL
+></DIV
+><DIV
+CLASS="section"
+><HR><H2
+CLASS="section"
+><A
+NAME="GetPCUs"
+>2.80. GetPCUs</A
+></H2
+><P
+>Prototype:<A
+NAME="AEN4065"
+></A
+><BLOCKQUOTE
+CLASS="BLOCKQUOTE"
+><P
+>GetPCUs (auth, pcu_filter, return_fields)</P
+></BLOCKQUOTE
+></P
+><P
+>Description:<A
+NAME="AEN4068"
+></A
+><BLOCKQUOTE
+CLASS="BLOCKQUOTE"
+><P
+>Returns an array of structs containing details about power control
+units (PCUs). If pcu_filter is specified and is an array of PCU
+identifiers, or a struct of PCU attributes, only PCUs matching the
+filter will be returned. If return_fields is specified, only the
+specified details will be returned.</P
+><P
+>Admin may query all PCUs. Non-admins may only query the PCUs at
+their sites.</P
+></BLOCKQUOTE
+></P
+><P
+>Allowed Roles:<A
+NAME="AEN4072"
+></A
+><BLOCKQUOTE
+CLASS="BLOCKQUOTE"
+><P
+>admin, pi, tech, node</P
+></BLOCKQUOTE
+></P
+><P
+>Parameters:</P
+><P
+></P
+><UL
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>auth</CODE
+>
+: struct, API authentication structure </P
+><P
+></P
+><UL
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>AuthMethod</CODE
+>
+: string, Authentication method to use </P
+></LI
+></UL
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>pcu_filter</CODE
+>
+: array of int or struct </P
+><P
+></P
+><UL
+><LI
+><P
+> array of int, PCU identifier </P
+></LI
+><LI
+><P
+> struct, Attribute filter </P
+><P
+></P
+><UL
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>username</CODE
+>
+: string or array of string </P
+><P
+></P
+><UL
+><LI
+><P
+> string, PCU username </P
+></LI
+><LI
+><P
+> array of string, PCU username </P
+></LI
+></UL
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>protocol</CODE
+>
+: string or array of string </P
+><P
+></P
+><UL
+><LI
+><P
+> string, PCU protocol, e.g. ssh, https, telnet </P
+></LI
+><LI
+><P
+> array of string, PCU protocol, e.g. ssh, https, telnet </P
+></LI
+></UL
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>ip</CODE
+>
+: string or array of string </P
+><P
+></P
+><UL
+><LI
+><P
+> string, PCU IP address </P
+></LI
+><LI
+><P
+> array of string, PCU IP address </P
+></LI
+></UL
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>pcu_id</CODE
+>
+: int or array of int </P
+><P
+></P
+><UL
+><LI
+><P
+> int, PCU identifier </P
+></LI
+><LI
+><P
+> array of int, PCU identifier </P
+></LI
+></UL
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>hostname</CODE
+>
+: string or array of string </P
+><P
+></P
+><UL
+><LI
+><P
+> string, PCU hostname </P
+></LI
+><LI
+><P
+> array of string, PCU hostname </P
+></LI
+></UL
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>site_id</CODE
+>
+: int or array of int </P
+><P
+></P
+><UL
+><LI
+><P
+> int, Identifier of site where PCU is located </P
+></LI
+><LI
+><P
+> array of int, Identifier of site where PCU is located </P
+></LI
+></UL
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>model</CODE
+>
+: string or array of string </P
+><P
+></P
+><UL
+><LI
+><P
+> string, PCU model string </P
+></LI
+><LI
+><P
+> array of string, PCU model string </P
+></LI
+></UL
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>password</CODE
+>
+: string or array of string </P
+><P
+></P
+><UL
+><LI
+><P
+> string, PCU username </P
+></LI
+><LI
+><P
+> array of string, PCU username </P
+></LI
+></UL
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>notes</CODE
+>
+: string or array of string </P
+><P
+></P
+><UL
+><LI
+><P
+> string, Miscellaneous notes </P
+></LI
+><LI
+><P
+> array of string, Miscellaneous notes </P
+></LI
+></UL
+></LI
+></UL
+></LI
+></UL
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>return_fields</CODE
+>
+: array, List of fields to return </P
+><P
+></P
+><UL
+><LI
+><P
+> string </P
+></LI
+></UL
+></LI
+></UL
+><P
+>Returns:</P
+><P
+></P
+><UL
+><LI
+><P
+> array of struct </P
+><P
+></P
+><UL
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>username</CODE
+>
+: string, PCU username </P
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>protocol</CODE
+>
+: string, PCU protocol, e.g. ssh, https, telnet </P
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>node_ids</CODE
+>
+: array, List of nodes that this PCU controls </P
+><P
+></P
+><UL
+><LI
+><P
+> int </P
+></LI
+></UL
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>ip</CODE
+>
+: string, PCU IP address </P
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>pcu_id</CODE
+>
+: int, PCU identifier </P
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>hostname</CODE
+>
+: string, PCU hostname </P
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>site_id</CODE
+>
+: int, Identifier of site where PCU is located </P
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>ports</CODE
+>
+: array, List of the port numbers that each node is connected to </P
+><P
+></P
+><UL
+><LI
+><P
+> int </P
+></LI
+></UL
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>model</CODE
+>
+: string, PCU model string </P
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>password</CODE
+>
+: string, PCU username </P
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>notes</CODE
+>
+: string, Miscellaneous notes </P
+></LI
+></UL
+></LI
+></UL
+></DIV
+><DIV
+CLASS="section"
+><HR><H2
+CLASS="section"
+><A
+NAME="GetPeerData"
+>2.81. GetPeerData</A
+></H2
+><P
+>Prototype:<A
+NAME="AEN4217"
+></A
+><BLOCKQUOTE
+CLASS="BLOCKQUOTE"
+><P
+>GetPeerData (auth)</P
+></BLOCKQUOTE
+></P
+><P
+>Description:<A
+NAME="AEN4220"
+></A
+><BLOCKQUOTE
+CLASS="BLOCKQUOTE"
+><P
+>Returns lists of local objects that a peer should cache in its
+database as foreign objects. Also returns the list of foreign
+nodes in this database, for which the calling peer is
+authoritative, to assist in synchronization of slivers.</P
+><P
+>See the implementation of RefreshPeer for how this data is used.</P
+></BLOCKQUOTE
+></P
+><P
+>Allowed Roles:<A
+NAME="AEN4224"
+></A
+><BLOCKQUOTE
+CLASS="BLOCKQUOTE"
+><P
+>admin, peer</P
+></BLOCKQUOTE
+></P
+><P
+>Parameters:</P
+><P
+></P
+><UL
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>auth</CODE
+>
+: struct, API authentication structure </P
+><P
+></P
+><UL
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>AuthMethod</CODE
+>
+: string, Authentication method to use </P
+></LI
+></UL
+></LI
+></UL
+><P
+>Returns:</P
+><P
+></P
+><UL
+><LI
+><P
+> struct </P
+><P
+></P
+><UL
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>Slices</CODE
+>
+: array, List of local slices </P
+><P
+></P
+><UL
+><LI
+><P
+> struct </P
+></LI
+></UL
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>Keys</CODE
+>
+: array, List of local keys </P
+><P
+></P
+><UL
+><LI
+><P
+> struct </P
+></LI
+></UL
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>Sites</CODE
+>
+: array, List of local sites </P
+><P
+></P
+><UL
+><LI
+><P
+> struct </P
+></LI
+></UL
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>Persons</CODE
+>
+: array, List of local users </P
+><P
+></P
+><UL
+><LI
+><P
+> struct </P
+></LI
+></UL
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>Nodes</CODE
+>
+: array, List of local nodes </P
+><P
+></P
+><UL
+><LI
+><P
+> struct </P
+></LI
+></UL
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>db_time</CODE
+>
+: double, (Debug) Database fetch time </P
+></LI
+></UL
+></LI
+></UL
+></DIV
+><DIV
+CLASS="section"
+><HR><H2
+CLASS="section"
+><A
+NAME="GetPeerName"
+>2.82. GetPeerName</A
+></H2
+><P
+>Prototype:<A
+NAME="AEN4276"
+></A
+><BLOCKQUOTE
+CLASS="BLOCKQUOTE"
+><P
+>GetPeerName (auth)</P
+></BLOCKQUOTE
+></P
+><P
+>Description:<A
+NAME="AEN4279"
+></A
+><BLOCKQUOTE
+CLASS="BLOCKQUOTE"
+><P
+>Returns this peer's name, as defined in the config as PLC_NAME</P
+></BLOCKQUOTE
+></P
+><P
+>Allowed Roles:<A
+NAME="AEN4282"
+></A
+><BLOCKQUOTE
+CLASS="BLOCKQUOTE"
+><P
+>admin, peer, node</P
+></BLOCKQUOTE
+></P
+><P
+>Parameters:</P
+><P
+></P
+><UL
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>auth</CODE
+>
+: struct, API authentication structure </P
+><P
+></P
+><UL
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>AuthMethod</CODE
+>
+: string, Authentication method to use </P
+></LI
+></UL
+></LI
+></UL
+><P
+>Returns:</P
+><P
+></P
+><UL
+><LI
+><P
+> string, Peer name </P
+></LI
+></UL
+></DIV
+><DIV
+CLASS="section"
+><HR><H2
+CLASS="section"
+><A
+NAME="GetPeers"
+>2.83. GetPeers</A
+></H2
+><P
+>Prototype:<A
+NAME="AEN4300"
+></A
+><BLOCKQUOTE
+CLASS="BLOCKQUOTE"
+><P
+>GetPeers (auth, peer_filter, return_fields)</P
+></BLOCKQUOTE
+></P
+><P
+>Description:<A
+NAME="AEN4303"
+></A
+><BLOCKQUOTE
+CLASS="BLOCKQUOTE"
+><P
+>Returns an array of structs containing details about peers. If
+person_filter is specified and is an array of peer identifiers or
+peer names, or a struct of peer attributes, only peers matching
+the filter will be returned. If return_fields is specified, only the
+specified details will be returned.</P
+></BLOCKQUOTE
+></P
+><P
+>Allowed Roles:<A
+NAME="AEN4306"
+></A
+><BLOCKQUOTE
+CLASS="BLOCKQUOTE"
+><P
+>admin, node</P
+></BLOCKQUOTE
+></P
+><P
+>Parameters:</P
+><P
+></P
+><UL
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>auth</CODE
+>
+: struct, API authentication structure </P
+><P
+></P
+><UL
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>AuthMethod</CODE
+>
+: string, Authentication method to use </P
+></LI
+></UL
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>peer_filter</CODE
+>
+: array of int or string or struct </P
+><P
+></P
+><UL
+><LI
+><P
+> array of int or string </P
+><P
+></P
+><UL
+><LI
+><P
+> int, Peer identifier </P
+></LI
+><LI
+><P
+> string, Peer name </P
+></LI
+></UL
+></LI
+><LI
+><P
+> struct, Attribute filter </P
+><P
+></P
+><UL
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>key</CODE
+>
+: string or array of string </P
+><P
+></P
+><UL
+><LI
+><P
+> string, Peer GPG public key </P
+></LI
+><LI
+><P
+> array of string, Peer GPG public key </P
+></LI
+></UL
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>cacert</CODE
+>
+: string or array of string </P
+><P
+></P
+><UL
+><LI
+><P
+> string, Peer SSL public certificate </P
+></LI
+><LI
+><P
+> array of string, Peer SSL public certificate </P
+></LI
+></UL
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>peer_id</CODE
+>
+: int or array of int </P
+><P
+></P
+><UL
+><LI
+><P
+> int, Peer identifier </P
+></LI
+><LI
+><P
+> array of int, Peer identifier </P
+></LI
+></UL
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>peername</CODE
+>
+: string or array of string </P
+><P
+></P
+><UL
+><LI
+><P
+> string, Peer name </P
+></LI
+><LI
+><P
+> array of string, Peer name </P
+></LI
+></UL
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>peer_url</CODE
+>
+: string or array of string </P
+><P
+></P
+><UL
+><LI
+><P
+> string, Peer API URL </P
+></LI
+><LI
+><P
+> array of string, Peer API URL </P
+></LI
+></UL
+></LI
+></UL
+></LI
+></UL
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>return_fields</CODE
+>
+: array, List of fields to return </P
+><P
+></P
+><UL
+><LI
+><P
+> string </P
+></LI
+></UL
+></LI
+></UL
+><P
+>Returns:</P
+><P
+></P
+><UL
+><LI
+><P
+> array of struct </P
+><P
+></P
+><UL
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>node_ids</CODE
+>
+: array, List of nodes for which this peer is authoritative </P
+><P
+></P
+><UL
+><LI
+><P
+> int </P
+></LI
+></UL
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>key_ids</CODE
+>
+: array, List of keys for which this peer is authoritative </P
+><P
+></P
+><UL
+><LI
+><P
+> int </P
+></LI
+></UL
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>person_ids</CODE
+>
+: array, List of users for which this peer is authoritative </P
+><P
+></P
+><UL
+><LI
+><P
+> int </P
+></LI
+></UL
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>peername</CODE
+>
+: string, Peer name </P
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>peer_url</CODE
+>
+: string, Peer API URL </P
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>slice_ids</CODE
+>
+: array, List of slices for which this peer is authoritative </P
+><P
+></P
+><UL
+><LI
+><P
+> int </P
+></LI
+></UL
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>key</CODE
+>
+: string, Peer GPG public key </P
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>cacert</CODE
+>
+: string, Peer SSL public certificate </P
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>site_ids</CODE
+>
+: array, List of sites for which this peer is authoritative </P
+><P
+></P
+><UL
+><LI
+><P
+> int </P
+></LI
+></UL
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>peer_id</CODE
+>
+: int, Peer identifier </P
+></LI
+></UL
+></LI
+></UL
+></DIV
+><DIV
+CLASS="section"
+><HR><H2
+CLASS="section"
+><A
+NAME="GetPersons"
+>2.84. GetPersons</A
+></H2
+><P
+>Prototype:<A
+NAME="AEN4430"
+></A
+><BLOCKQUOTE
+CLASS="BLOCKQUOTE"
+><P
+>GetPersons (auth, person_filter, return_fields)</P
+></BLOCKQUOTE
+></P
+><P
+>Description:<A
+NAME="AEN4433"
+></A
+><BLOCKQUOTE
+CLASS="BLOCKQUOTE"
+><P
+>Returns an array of structs containing details about users. If
+person_filter is specified and is an array of user identifiers or
+usernames, or a struct of user attributes, only users matching the
+filter will be returned. If return_fields is specified, only the
+specified details will be returned.</P
+><P
+>Users and techs may only retrieve details about themselves. PIs
+may retrieve details about themselves and others at their
+sites. Admins and nodes may retrieve details about all accounts.</P
+></BLOCKQUOTE
+></P
+><P
+>Allowed Roles:<A
+NAME="AEN4437"
+></A
+><BLOCKQUOTE
+CLASS="BLOCKQUOTE"
+><P
+>admin, pi, user, tech, node</P
+></BLOCKQUOTE
+></P
+><P
+>Parameters:</P
+><P
+></P
+><UL
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>auth</CODE
+>
+: struct, API authentication structure </P
+><P
+></P
+><UL
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>AuthMethod</CODE
+>
+: string, Authentication method to use </P
+></LI
+></UL
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>person_filter</CODE
+>
+: array of int or string or struct </P
+><P
+></P
+><UL
+><LI
+><P
+> array of int or string </P
+><P
+></P
+><UL
+><LI
+><P
+> int, User identifier </P
+></LI
+><LI
+><P
+> string, Primary e-mail address </P
+></LI
+></UL
+></LI
+><LI
+><P
+> struct, Attribute filter </P
+><P
+></P
+><UL
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>bio</CODE
+>
+: string or array of string </P
+><P
+></P
+><UL
+><LI
+><P
+> string, Biography </P
+></LI
+><LI
+><P
+> array of string, Biography </P
+></LI
+></UL
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>first_name</CODE
+>
+: string or array of string </P
+><P
+></P
+><UL
+><LI
+><P
+> string, Given name </P
+></LI
+><LI
+><P
+> array of string, Given name </P
+></LI
+></UL
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>last_name</CODE
+>
+: string or array of string </P
+><P
+></P
+><UL
+><LI
+><P
+> string, Surname </P
+></LI
+><LI
+><P
+> array of string, Surname </P
+></LI
+></UL
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>last_updated</CODE
+>
+: int or array of int </P
+><P
+></P
+><UL
+><LI
+><P
+> int, Date and time of last update </P
+></LI
+><LI
+><P
+> array of int, Date and time of last update </P
+></LI
+></UL
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>title</CODE
+>
+: string or array of string </P
+><P
+></P
+><UL
+><LI
+><P
+> string, Title </P
+></LI
+><LI
+><P
+> array of string, Title </P
+></LI
+></UL
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>url</CODE
+>
+: string or array of string </P
+><P
+></P
+><UL
+><LI
+><P
+> string, Home page </P
+></LI
+><LI
+><P
+> array of string, Home page </P
+></LI
+></UL
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>verification_key</CODE
+>
+: string or array of string </P
+><P
+></P
+><UL
+><LI
+><P
+> string, Reset password key </P
+></LI
+><LI
+><P
+> array of string, Reset password key </P
+></LI
+></UL
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>enabled</CODE
+>
+: boolean or array of boolean </P
+><P
+></P
+><UL
+><LI
+><P
+> boolean, Has been enabled </P
+></LI
+><LI
+><P
+> array of boolean, Has been enabled </P
+></LI
+></UL
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>phone</CODE
+>
+: string or array of string </P
+><P
+></P
+><UL
+><LI
+><P
+> string, Telephone number </P
+></LI
+><LI
+><P
+> array of string, Telephone number </P
+></LI
+></UL
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>peer_person_id</CODE
+>
+: int or array of int </P
+><P
+></P
+><UL
+><LI
+><P
+> int, Foreign user identifier at peer </P
+></LI
+><LI
+><P
+> array of int, Foreign user identifier at peer </P
+></LI
+></UL
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>password</CODE
+>
+: string or array of string </P
+><P
+></P
+><UL
+><LI
+><P
+> string, Account password in crypt() form </P
+></LI
+><LI
+><P
+> array of string, Account password in crypt() form </P
+></LI
+></UL
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>person_id</CODE
+>
+: int or array of int </P
+><P
+></P
+><UL
+><LI
+><P
+> int, User identifier </P
+></LI
+><LI
+><P
+> array of int, User identifier </P
+></LI
+></UL
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>date_created</CODE
+>
+: int or array of int </P
+><P
+></P
+><UL
+><LI
+><P
+> int, Date and time when account was created </P
+></LI
+><LI
+><P
+> array of int, Date and time when account was created </P
+></LI
+></UL
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>peer_id</CODE
+>
+: int or array of int </P
+><P
+></P
+><UL
+><LI
+><P
+> int, Peer to which this user belongs </P
+></LI
+><LI
+><P
+> array of int, Peer to which this user belongs </P
+></LI
+></UL
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>verification_expires</CODE
+>
+: int or array of int </P
+><P
+></P
+><UL
+><LI
+><P
+> int, Date and time when verification_key expires </P
+></LI
+><LI
+><P
+> array of int, Date and time when verification_key expires </P
+></LI
+></UL
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>email</CODE
+>
+: string or array of string </P
+><P
+></P
+><UL
+><LI
+><P
+> string, Primary e-mail address </P
+></LI
+><LI
+><P
+> array of string, Primary e-mail address </P
+></LI
+></UL
+></LI
+></UL
+></LI
+></UL
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>return_fields</CODE
+>
+: array, List of fields to return </P
+><P
+></P
+><UL
+><LI
+><P
+> string </P
+></LI
+></UL
+></LI
+></UL
+><P
+>Returns:</P
+><P
+></P
+><UL
+><LI
+><P
+> array of struct </P
+><P
+></P
+><UL
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>bio</CODE
+>
+: string, Biography </P
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>first_name</CODE
+>
+: string, Given name </P
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>last_name</CODE
+>
+: string, Surname </P
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>last_updated</CODE
+>
+: int, Date and time of last update </P
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>roles</CODE
+>
+: array, List of roles </P
+><P
+></P
+><UL
+><LI
+><P
+> string </P
+></LI
+></UL
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>title</CODE
+>
+: string, Title </P
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>url</CODE
+>
+: string, Home page </P
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>key_ids</CODE
+>
+: array, List of key identifiers </P
+><P
+></P
+><UL
+><LI
+><P
+> int </P
+></LI
+></UL
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>enabled</CODE
+>
+: boolean, Has been enabled </P
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>slice_ids</CODE
+>
+: array, List of slice identifiers </P
+><P
+></P
+><UL
+><LI
+><P
+> int </P
+></LI
+></UL
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>phone</CODE
+>
+: string, Telephone number </P
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>peer_person_id</CODE
+>
+: int, Foreign user identifier at peer </P
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>role_ids</CODE
+>
+: array, List of role identifiers </P
+><P
+></P
+><UL
+><LI
+><P
+> int </P
+></LI
+></UL
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>person_id</CODE
+>
+: int, User identifier </P
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>date_created</CODE
+>
+: int, Date and time when account was created </P
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>site_ids</CODE
+>
+: array, List of site identifiers </P
+><P
+></P
+><UL
+><LI
+><P
+> int </P
+></LI
+></UL
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>peer_id</CODE
+>
+: int, Peer to which this user belongs </P
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>email</CODE
+>
+: string, Primary e-mail address </P
+></LI
+></UL
+></LI
+></UL
+></DIV
+><DIV
+CLASS="section"
+><HR><H2
+CLASS="section"
+><A
+NAME="GetRoles"
+>2.85. GetRoles</A
+></H2
+><P
+>Prototype:<A
+NAME="AEN4673"
+></A
+><BLOCKQUOTE
+CLASS="BLOCKQUOTE"
+><P
+>GetRoles (auth)</P
+></BLOCKQUOTE
+></P
+><P
+>Description:<A
+NAME="AEN4676"
+></A
+><BLOCKQUOTE
+CLASS="BLOCKQUOTE"
+><P
+>Get an array of structs containing details about all roles.</P
+></BLOCKQUOTE
+></P
+><P
+>Allowed Roles:<A
+NAME="AEN4679"
+></A
+><BLOCKQUOTE
+CLASS="BLOCKQUOTE"
+><P
+>admin, pi, user, tech, node</P
+></BLOCKQUOTE
+></P
+><P
+>Parameters:</P
+><P
+></P
+><UL
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>auth</CODE
+>
+: struct, API authentication structure </P
+><P
+></P
+><UL
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>AuthMethod</CODE
+>
+: string, Authentication method to use </P
+></LI
+></UL
+></LI
+></UL
+><P
+>Returns:</P
+><P
+></P
+><UL
+><LI
+><P
+> array of struct </P
+><P
+></P
+><UL
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>name</CODE
+>
+: string, Role </P
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>role_id</CODE
+>
+: int, Role identifier </P
+></LI
+></UL
+></LI
+></UL
+></DIV
+><DIV
+CLASS="section"
+><HR><H2
+CLASS="section"
+><A
+NAME="GetSession"
+>2.86. GetSession</A
+></H2
+><P
+>Prototype:<A
+NAME="AEN4704"
+></A
+><BLOCKQUOTE
+CLASS="BLOCKQUOTE"
+><P
+>GetSession (auth)</P
+></BLOCKQUOTE
+></P
+><P
+>Description:<A
+NAME="AEN4707"
+></A
+><BLOCKQUOTE
+CLASS="BLOCKQUOTE"
+><P
+>Returns a new session key if a user or node authenticated
+successfully, faults otherwise.</P
+></BLOCKQUOTE
+></P
+><P
+>Allowed Roles:<A
+NAME="AEN4710"
+></A
+><BLOCKQUOTE
+CLASS="BLOCKQUOTE"
+><P
+>admin, pi, user, tech, node</P
+></BLOCKQUOTE
+></P
+><P
+>Parameters:</P
+><P
+></P
+><UL
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>auth</CODE
+>
+: struct, API authentication structure </P
+><P
+></P
+><UL
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>AuthMethod</CODE
+>
+: string, Authentication method to use </P
+></LI
+></UL
+></LI
+></UL
+><P
+>Returns:</P
+><P
+></P
+><UL
+><LI
+><P
+> string, Session key </P
+></LI
+></UL
+></DIV
+><DIV
+CLASS="section"
+><HR><H2
+CLASS="section"
+><A
+NAME="GetSites"
+>2.87. GetSites</A
+></H2
+><P
+>Prototype:<A
+NAME="AEN4728"
+></A
+><BLOCKQUOTE
+CLASS="BLOCKQUOTE"
+><P
+>GetSites (auth, site_filter, return_fields)</P
+></BLOCKQUOTE
+></P
+><P
+>Description:<A
+NAME="AEN4731"
+></A
+><BLOCKQUOTE
+CLASS="BLOCKQUOTE"
+><P
+>Returns an array of structs containing details about sites. If
+site_filter is specified and is an array of site identifiers or
+hostnames, or a struct of site attributes, only sites matching the
+filter will be returned. If return_fields is specified, only the
+specified details will be returned.</P
+></BLOCKQUOTE
+></P
+><P
+>Allowed Roles:<A
+NAME="AEN4734"
+></A
+><BLOCKQUOTE
+CLASS="BLOCKQUOTE"
+><P
+>admin, pi, user, tech, node, anonymous</P
+></BLOCKQUOTE
+></P
+><P
+>Parameters:</P
+><P
+></P
+><UL
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>auth</CODE
+>
+: struct, API authentication structure </P
+><P
+></P
+><UL
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>AuthMethod</CODE
+>
+: string, Authentication method to use </P
+></LI
+></UL
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>site_filter</CODE
+>
+: array of int or string or struct </P
+><P
+></P
+><UL
+><LI
+><P
+> array of int or string </P
+><P
+></P
+><UL
+><LI
+><P
+> int, Site identifier </P
+></LI
+><LI
+><P
+> string, Site slice prefix </P
+></LI
+></UL
+></LI
+><LI
+><P
+> struct, Attribute filter </P
+><P
+></P
+><UL
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>last_updated</CODE
+>
+: int or array of int </P
+><P
+></P
+><UL
+><LI
+><P
+> int, Date and time when site entry was last updated, in seconds since UNIX epoch </P
+></LI
+><LI
+><P
+> array of int, Date and time when site entry was last updated, in seconds since UNIX epoch </P
+></LI
+></UL
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>name</CODE
+>
+: string or array of string </P
+><P
+></P
+><UL
+><LI
+><P
+> string, Full site name </P
+></LI
+><LI
+><P
+> array of string, Full site name </P
+></LI
+></UL
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>url</CODE
+>
+: string or array of string </P
+><P
+></P
+><UL
+><LI
+><P
+> string, URL of a page that describes the site </P
+></LI
+><LI
+><P
+> array of string, URL of a page that describes the site </P
+></LI
+></UL
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>site_id</CODE
+>
+: int or array of int </P
+><P
+></P
+><UL
+><LI
+><P
+> int, Site identifier </P
+></LI
+><LI
+><P
+> array of int, Site identifier </P
+></LI
+></UL
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>enabled</CODE
+>
+: boolean or array of boolean </P
+><P
+></P
+><UL
+><LI
+><P
+> boolean, Has been enabled </P
+></LI
+><LI
+><P
+> array of boolean, Has been enabled </P
+></LI
+></UL
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>longitude</CODE
+>
+: double or array of double </P
+><P
+></P
+><UL
+><LI
+><P
+> double, Decimal longitude of the site </P
+></LI
+><LI
+><P
+> array of double, Decimal longitude of the site </P
+></LI
+></UL
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>latitude</CODE
+>
+: double or array of double </P
+><P
+></P
+><UL
+><LI
+><P
+> double, Decimal latitude of the site </P
+></LI
+><LI
+><P
+> array of double, Decimal latitude of the site </P
+></LI
+></UL
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>max_slices</CODE
+>
+: int or array of int </P
+><P
+></P
+><UL
+><LI
+><P
+> int, Maximum number of slices that the site is able to create </P
+></LI
+><LI
+><P
+> array of int, Maximum number of slices that the site is able to create </P
+></LI
+></UL
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>login_base</CODE
+>
+: string or array of string </P
+><P
+></P
+><UL
+><LI
+><P
+> string, Site slice prefix </P
+></LI
+><LI
+><P
+> array of string, Site slice prefix </P
+></LI
+></UL
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>is_public</CODE
+>
+: boolean or array of boolean </P
+><P
+></P
+><UL
+><LI
+><P
+> boolean, Publicly viewable site </P
+></LI
+><LI
+><P
+> array of boolean, Publicly viewable site </P
+></LI
+></UL
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>max_slivers</CODE
+>
+: int or array of int </P
+><P
+></P
+><UL
+><LI
+><P
+> int, Maximum number of slivers that the site is able to create </P
+></LI
+><LI
+><P
+> array of int, Maximum number of slivers that the site is able to create </P
+></LI
+></UL
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>date_created</CODE
+>
+: int or array of int </P
+><P
+></P
+><UL
+><LI
+><P
+> int, Date and time when site entry was created, in seconds since UNIX epoch </P
+></LI
+><LI
+><P
+> array of int, Date and time when site entry was created, in seconds since UNIX epoch </P
+></LI
+></UL
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>peer_site_id</CODE
+>
+: int or array of int </P
+><P
+></P
+><UL
+><LI
+><P
+> int, Foreign site identifier at peer </P
+></LI
+><LI
+><P
+> array of int, Foreign site identifier at peer </P
+></LI
+></UL
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>peer_id</CODE
+>
+: int or array of int </P
+><P
+></P
+><UL
+><LI
+><P
+> int, Peer to which this site belongs </P
+></LI
+><LI
+><P
+> array of int, Peer to which this site belongs </P
+></LI
+></UL
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>abbreviated_name</CODE
+>
+: string or array of string </P
+><P
+></P
+><UL
+><LI
+><P
+> string, Abbreviated site name </P
+></LI
+><LI
+><P
+> array of string, Abbreviated site name </P
+></LI
+></UL
+></LI
+></UL
+></LI
+></UL
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>return_fields</CODE
+>
+: array, List of fields to return </P
+><P
+></P
+><UL
+><LI
+><P
+> string </P
+></LI
+></UL
+></LI
+></UL
+><P
+>Returns:</P
+><P
+></P
+><UL
+><LI
+><P
+> array of struct </P
+><P
+></P
+><UL
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>address_ids</CODE
+>
+: array, List of address identifiers </P
+><P
+></P
+><UL
+><LI
+><P
+> int </P
+></LI
+></UL
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>pcu_ids</CODE
+>
+: array, List of PCU identifiers </P
+><P
+></P
+><UL
+><LI
+><P
+> int </P
+></LI
+></UL
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>last_updated</CODE
+>
+: int, Date and time when site entry was last updated, in seconds since UNIX epoch </P
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>name</CODE
+>
+: string, Full site name </P
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>node_ids</CODE
+>
+: array, List of site node identifiers </P
+><P
+></P
+><UL
+><LI
+><P
+> int </P
+></LI
+></UL
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>url</CODE
+>
+: string, URL of a page that describes the site </P
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>enabled</CODE
+>
+: boolean, Has been enabled </P
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>person_ids</CODE
+>
+: array, List of account identifiers </P
+><P
+></P
+><UL
+><LI
+><P
+> int </P
+></LI
+></UL
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>site_id</CODE
+>
+: int, Site identifier </P
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>longitude</CODE
+>
+: double, Decimal longitude of the site </P
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>slice_ids</CODE
+>
+: array, List of slice identifiers </P
+><P
+></P
+><UL
+><LI
+><P
+> int </P
+></LI
+></UL
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>max_slivers</CODE
+>
+: int, Maximum number of slivers that the site is able to create </P
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>max_slices</CODE
+>
+: int, Maximum number of slices that the site is able to create </P
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>login_base</CODE
+>
+: string, Site slice prefix </P
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>date_created</CODE
+>
+: int, Date and time when site entry was created, in seconds since UNIX epoch </P
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>latitude</CODE
+>
+: double, Decimal latitude of the site </P
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>is_public</CODE
+>
+: boolean, Publicly viewable site </P
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>peer_site_id</CODE
+>
+: int, Foreign site identifier at peer </P
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>peer_id</CODE
+>
+: int, Peer to which this site belongs </P
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>abbreviated_name</CODE
+>
+: string, Abbreviated site name </P
+></LI
+></UL
+></LI
+></UL
+></DIV
+><DIV
+CLASS="section"
+><HR><H2
+CLASS="section"
+><A
+NAME="GetSliceAttributes"
+>2.88. GetSliceAttributes</A
+></H2
+><P
+>Prototype:<A
+NAME="AEN4968"
+></A
+><BLOCKQUOTE
+CLASS="BLOCKQUOTE"
+><P
+>GetSliceAttributes (auth, slice_attribute_filter, return_fields)</P
+></BLOCKQUOTE
+></P
+><P
+>Description:<A
+NAME="AEN4971"
+></A
+><BLOCKQUOTE
+CLASS="BLOCKQUOTE"
+><P
+>Returns an array of structs containing details about slice and
+sliver attributes. An attribute is a sliver attribute if the
+node_id field is set. If slice_attribute_filter is specified and
+is an array of slice attribute identifiers, or a struct of slice
+attribute attributes, only slice attributes matching the filter
+will be returned. If return_fields is specified, only the
+specified details will be returned.</P
+><P
+>Users may only query attributes of slices or slivers of which they
+are members. PIs may only query attributes of slices or slivers at
+their sites, or of which they are members. Admins may query
+attributes of any slice or sliver.</P
+></BLOCKQUOTE
+></P
+><P
+>Allowed Roles:<A
+NAME="AEN4975"
+></A
+><BLOCKQUOTE
+CLASS="BLOCKQUOTE"
+><P
+>admin, pi, user, node</P
+></BLOCKQUOTE
+></P
+><P
+>Parameters:</P
+><P
+></P
+><UL
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>auth</CODE
+>
+: struct, API authentication structure </P
+><P
+></P
+><UL
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>AuthMethod</CODE
+>
+: string, Authentication method to use </P
+></LI
+></UL
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>slice_attribute_filter</CODE
+>
+: array of int or struct </P
+><P
+></P
+><UL
+><LI
+><P
+> array of int, Slice attribute identifier </P
+></LI
+><LI
+><P
+> struct, Attribute filter </P
+><P
+></P
+><UL
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>name</CODE
+>
+: string or array of string </P
+><P
+></P
+><UL
+><LI
+><P
+> string, Slice attribute type name </P
+></LI
+><LI
+><P
+> array of string, Slice attribute type name </P
+></LI
+></UL
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>slice_id</CODE
+>
+: int or array of int </P
+><P
+></P
+><UL
+><LI
+><P
+> int, Slice identifier </P
+></LI
+><LI
+><P
+> array of int, Slice identifier </P
+></LI
+></UL
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>slice_attribute_id</CODE
+>
+: int or array of int </P
+><P
+></P
+><UL
+><LI
+><P
+> int, Slice attribute identifier </P
+></LI
+><LI
+><P
+> array of int, Slice attribute identifier </P
+></LI
+></UL
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>value</CODE
+>
+: string or array of string </P
+><P
+></P
+><UL
+><LI
+><P
+> string, Slice attribute value </P
+></LI
+><LI
+><P
+> array of string, Slice attribute value </P
+></LI
+></UL
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>attribute_type_id</CODE
+>
+: int or array of int </P
+><P
+></P
+><UL
+><LI
+><P
+> int, Slice attribute type identifier </P
+></LI
+><LI
+><P
+> array of int, Slice attribute type identifier </P
+></LI
+></UL
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>node_id</CODE
+>
+: int or array of int </P
+><P
+></P
+><UL
+><LI
+><P
+> int, Node identifier, if a sliver attribute </P
+></LI
+><LI
+><P
+> array of int, Node identifier, if a sliver attribute </P
+></LI
+></UL
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>min_role_id</CODE
+>
+: int or array of int </P
+><P
+></P
+><UL
+><LI
+><P
+> int, Minimum (least powerful) role that can set or change this attribute </P
+></LI
+><LI
+><P
+> array of int, Minimum (least powerful) role that can set or change this attribute </P
+></LI
+></UL
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>description</CODE
+>
+: string or array of string </P
+><P
+></P
+><UL
+><LI
+><P
+> string, Slice attribute type description </P
+></LI
+><LI
+><P
+> array of string, Slice attribute type description </P
+></LI
+></UL
+></LI
+></UL
+></LI
+></UL
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>return_fields</CODE
+>
+: array, List of fields to return </P
+><P
+></P
+><UL
+><LI
+><P
+> string </P
+></LI
+></UL
+></LI
+></UL
+><P
+>Returns:</P
+><P
+></P
+><UL
+><LI
+><P
+> array of struct </P
+><P
+></P
+><UL
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>name</CODE
+>
+: string, Slice attribute type name </P
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>slice_id</CODE
+>
+: int, Slice identifier </P
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>slice_attribute_id</CODE
+>
+: int, Slice attribute identifier </P
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>value</CODE
+>
+: string, Slice attribute value </P
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>attribute_type_id</CODE
+>
+: int, Slice attribute type identifier </P
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>node_id</CODE
+>
+: int, Node identifier, if a sliver attribute </P
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>min_role_id</CODE
+>
+: int, Minimum (least powerful) role that can set or change this attribute </P
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>description</CODE
+>
+: string, Slice attribute type description </P
+></LI
+></UL
+></LI
+></UL
+></DIV
+><DIV
+CLASS="section"
+><HR><H2
+CLASS="section"
+><A
+NAME="GetSliceAttributeTypes"
+>2.89. GetSliceAttributeTypes</A
+></H2
+><P
+>Prototype:<A
+NAME="AEN5097"
+></A
+><BLOCKQUOTE
+CLASS="BLOCKQUOTE"
+><P
+>GetSliceAttributeTypes (auth, attribute_type_filter, return_fields)</P
+></BLOCKQUOTE
+></P
+><P
+>Description:<A
+NAME="AEN5100"
+></A
+><BLOCKQUOTE
+CLASS="BLOCKQUOTE"
+><P
+>Returns an array of structs containing details about slice
+attribute types. If attribute_type_filter is specified and
+is an array of slice attribute type identifiers, or a
+struct of slice attribute type attributes, only slice attribute
+types matching the filter will be returned. If return_fields is
+specified, only the specified details will be returned.</P
+></BLOCKQUOTE
+></P
+><P
+>Allowed Roles:<A
+NAME="AEN5103"
+></A
+><BLOCKQUOTE
+CLASS="BLOCKQUOTE"
+><P
+>admin, pi, user, tech, node</P
+></BLOCKQUOTE
+></P
+><P
+>Parameters:</P
+><P
+></P
+><UL
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>auth</CODE
+>
+: struct, API authentication structure </P
+><P
+></P
+><UL
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>AuthMethod</CODE
+>
+: string, Authentication method to use </P
+></LI
+></UL
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>attribute_type_filter</CODE
+>
+: array of int or string or struct </P
+><P
+></P
+><UL
+><LI
+><P
+> array of int or string </P
+><P
+></P
+><UL
+><LI
+><P
+> int, Slice attribute type identifier </P
+></LI
+><LI
+><P
+> string, Slice attribute type name </P
+></LI
+></UL
+></LI
+><LI
+><P
+> struct, Attribute filter </P
+><P
+></P
+><UL
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>attribute_type_id</CODE
+>
+: int or array of int </P
+><P
+></P
+><UL
+><LI
+><P
+> int, Slice attribute type identifier </P
+></LI
+><LI
+><P
+> array of int, Slice attribute type identifier </P
+></LI
+></UL
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>min_role_id</CODE
+>
+: int or array of int </P
+><P
+></P
+><UL
+><LI
+><P
+> int, Minimum (least powerful) role that can set or change this attribute </P
+></LI
+><LI
+><P
+> array of int, Minimum (least powerful) role that can set or change this attribute </P
+></LI
+></UL
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>name</CODE
+>
+: string or array of string </P
+><P
+></P
+><UL
+><LI
+><P
+> string, Slice attribute type name </P
+></LI
+><LI
+><P
+> array of string, Slice attribute type name </P
+></LI
+></UL
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>description</CODE
+>
+: string or array of string </P
+><P
+></P
+><UL
+><LI
+><P
+> string, Slice attribute type description </P
+></LI
+><LI
+><P
+> array of string, Slice attribute type description </P
+></LI
+></UL
+></LI
+></UL
+></LI
+></UL
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>return_fields</CODE
+>
+: array, List of fields to return </P
+><P
+></P
+><UL
+><LI
+><P
+> string </P
+></LI
+></UL
+></LI
+></UL
+><P
+>Returns:</P
+><P
+></P
+><UL
+><LI
+><P
+> array of struct </P
+><P
+></P
+><UL
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>attribute_type_id</CODE
+>
+: int, Slice attribute type identifier </P
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>min_role_id</CODE
+>
+: int, Minimum (least powerful) role that can set or change this attribute </P
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>name</CODE
+>
+: string, Slice attribute type name </P
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>description</CODE
+>
+: string, Slice attribute type description </P
+></LI
+></UL
+></LI
+></UL
+></DIV
+><DIV
+CLASS="section"
+><HR><H2
+CLASS="section"
+><A
+NAME="GetSliceInstantiations"
+>2.90. GetSliceInstantiations</A
+></H2
+><P
+>Prototype:<A
+NAME="AEN5186"
+></A
+><BLOCKQUOTE
+CLASS="BLOCKQUOTE"
+><P
+>GetSliceInstantiations (auth)</P
+></BLOCKQUOTE
+></P
+><P
+>Description:<A
+NAME="AEN5189"
+></A
+><BLOCKQUOTE
+CLASS="BLOCKQUOTE"
+><P
+>Returns an array of all valid slice instantiation states.</P
+></BLOCKQUOTE
+></P
+><P
+>Allowed Roles:<A
+NAME="AEN5192"
+></A
+><BLOCKQUOTE
+CLASS="BLOCKQUOTE"
+><P
+>admin, pi, user, tech, node</P
+></BLOCKQUOTE
+></P
+><P
+>Parameters:</P
+><P
+></P
+><UL
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>auth</CODE
+>
+: struct, API authentication structure </P
+><P
+></P
+><UL
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>AuthMethod</CODE
+>
+: string, Authentication method to use </P
+></LI
+></UL
+></LI
+></UL
+><P
+>Returns:</P
+><P
+></P
+><UL
+><LI
+><P
+> array of string, Slice instantiation state </P
+></LI
+></UL
+></DIV
+><DIV
+CLASS="section"
+><HR><H2
+CLASS="section"
+><A
+NAME="GetSlices"
+>2.91. GetSlices</A
+></H2
+><P
+>Prototype:<A
+NAME="AEN5210"
+></A
+><BLOCKQUOTE
+CLASS="BLOCKQUOTE"
+><P
+>GetSlices (auth, slice_filter, return_fields)</P
+></BLOCKQUOTE
+></P
+><P
+>Description:<A
+NAME="AEN5213"
+></A
+><BLOCKQUOTE
+CLASS="BLOCKQUOTE"
+><P
+>Returns an array of structs containing details about slices. If
+slice_filter is specified and is an array of slice identifiers or
+slice names, or a struct of slice attributes, only slices matching
+the filter will be returned. If return_fields is specified, only the
+specified details will be returned.</P
+><P
+>Users may only query slices of which they are members. PIs may
+query any of the slices at their sites. Admins and nodes may query
+any slice. If a slice that cannot be queried is specified in
+slice_filter, details about that slice will not be returned.</P
+></BLOCKQUOTE
+></P
+><P
+>Allowed Roles:<A
+NAME="AEN5217"
+></A
+><BLOCKQUOTE
+CLASS="BLOCKQUOTE"
+><P
+>admin, pi, user, node</P
+></BLOCKQUOTE
+></P
+><P
+>Parameters:</P
+><P
+></P
+><UL
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>auth</CODE
+>
+: struct, API authentication structure </P
+><P
+></P
+><UL
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>AuthMethod</CODE
+>
+: string, Authentication method to use </P
+></LI
+></UL
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>slice_filter</CODE
+>
+: array of int or string or struct </P
+><P
+></P
+><UL
+><LI
+><P
+> array of int or string </P
+><P
+></P
+><UL
+><LI
+><P
+> int, Slice identifier </P
+></LI
+><LI
+><P
+> string, Slice name </P
+></LI
+></UL
+></LI
+><LI
+><P
+> struct, Attribute filter </P
+><P
+></P
+><UL
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>creator_person_id</CODE
+>
+: int or array of int </P
+><P
+></P
+><UL
+><LI
+><P
+> int, Identifier of the account that created this slice </P
+></LI
+><LI
+><P
+> array of int, Identifier of the account that created this slice </P
+></LI
+></UL
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>instantiation</CODE
+>
+: string or array of string </P
+><P
+></P
+><UL
+><LI
+><P
+> string, Slice instantiation state </P
+></LI
+><LI
+><P
+> array of string, Slice instantiation state </P
+></LI
+></UL
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>name</CODE
+>
+: string or array of string </P
+><P
+></P
+><UL
+><LI
+><P
+> string, Slice name </P
+></LI
+><LI
+><P
+> array of string, Slice name </P
+></LI
+></UL
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>slice_id</CODE
+>
+: int or array of int </P
+><P
+></P
+><UL
+><LI
+><P
+> int, Slice identifier </P
+></LI
+><LI
+><P
+> array of int, Slice identifier </P
+></LI
+></UL
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>created</CODE
+>
+: int or array of int </P
+><P
+></P
+><UL
+><LI
+><P
+> int, Date and time when slice was created, in seconds since UNIX epoch </P
+></LI
+><LI
+><P
+> array of int, Date and time when slice was created, in seconds since UNIX epoch </P
+></LI
+></UL
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>url</CODE
+>
+: string or array of string </P
+><P
+></P
+><UL
+><LI
+><P
+> string, URL further describing this slice </P
+></LI
+><LI
+><P
+> array of string, URL further describing this slice </P
+></LI
+></UL
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>max_nodes</CODE
+>
+: int or array of int </P
+><P
+></P
+><UL
+><LI
+><P
+> int, Maximum number of nodes that can be assigned to this slice </P
+></LI
+><LI
+><P
+> array of int, Maximum number of nodes that can be assigned to this slice </P
+></LI
+></UL
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>expires</CODE
+>
+: int or array of int </P
+><P
+></P
+><UL
+><LI
+><P
+> int, Date and time when slice expires, in seconds since UNIX epoch </P
+></LI
+><LI
+><P
+> array of int, Date and time when slice expires, in seconds since UNIX epoch </P
+></LI
+></UL
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>site_id</CODE
+>
+: int or array of int </P
+><P
+></P
+><UL
+><LI
+><P
+> int, Identifier of the site to which this slice belongs </P
+></LI
+><LI
+><P
+> array of int, Identifier of the site to which this slice belongs </P
+></LI
+></UL
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>peer_slice_id</CODE
+>
+: int or array of int </P
+><P
+></P
+><UL
+><LI
+><P
+> int, Foreign slice identifier at peer </P
+></LI
+><LI
+><P
+> array of int, Foreign slice identifier at peer </P
+></LI
+></UL
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>peer_id</CODE
+>
+: int or array of int </P
+><P
+></P
+><UL
+><LI
+><P
+> int, Peer to which this slice belongs </P
+></LI
+><LI
+><P
+> array of int, Peer to which this slice belongs </P
+></LI
+></UL
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>description</CODE
+>
+: string or array of string </P
+><P
+></P
+><UL
+><LI
+><P
+> string, Slice description </P
+></LI
+><LI
+><P
+> array of string, Slice description </P
+></LI
+></UL
+></LI
+></UL
+></LI
+></UL
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>return_fields</CODE
+>
+: array, List of fields to return </P
+><P
+></P
+><UL
+><LI
+><P
+> string </P
+></LI
+></UL
+></LI
+></UL
+><P
+>Returns:</P
+><P
+></P
+><UL
+><LI
+><P
+> array of struct </P
+><P
+></P
+><UL
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>creator_person_id</CODE
+>
+: int, Identifier of the account that created this slice </P
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>instantiation</CODE
+>
+: string, Slice instantiation state </P
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>slice_attribute_ids</CODE
+>
+: array, List of slice attributes </P
+><P
+></P
+><UL
+><LI
+><P
+> int </P
+></LI
+></UL
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>name</CODE
+>
+: string, Slice name </P
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>slice_id</CODE
+>
+: int, Slice identifier </P
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>created</CODE
+>
+: int, Date and time when slice was created, in seconds since UNIX epoch </P
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>url</CODE
+>
+: string, URL further describing this slice </P
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>max_nodes</CODE
+>
+: int, Maximum number of nodes that can be assigned to this slice </P
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>person_ids</CODE
+>
+: array, List of accounts that can use this slice </P
+><P
+></P
+><UL
+><LI
+><P
+> int </P
+></LI
+></UL
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>expires</CODE
+>
+: int, Date and time when slice expires, in seconds since UNIX epoch </P
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>site_id</CODE
+>
+: int, Identifier of the site to which this slice belongs </P
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>peer_slice_id</CODE
+>
+: int, Foreign slice identifier at peer </P
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>node_ids</CODE
+>
+: array, List of nodes in this slice </P
+><P
+></P
+><UL
+><LI
+><P
+> int </P
+></LI
+></UL
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>peer_id</CODE
+>
+: int, Peer to which this slice belongs </P
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>description</CODE
+>
+: string, Slice description </P
+></LI
+></UL
+></LI
+></UL
+></DIV
+><DIV
+CLASS="section"
+><HR><H2
+CLASS="section"
+><A
+NAME="GetSliceTicket"
+>2.92. GetSliceTicket</A
+></H2
+><P
+>Prototype:<A
+NAME="AEN5406"
+></A
+><BLOCKQUOTE
+CLASS="BLOCKQUOTE"
+><P
+>GetSliceTicket (auth, slice_id_or_name)</P
+></BLOCKQUOTE
+></P
+><P
+>Description:<A
+NAME="AEN5409"
+></A
+><BLOCKQUOTE
+CLASS="BLOCKQUOTE"
+><P
+>Returns a ticket for, or signed representation of, the specified
+slice. Slice tickets may be used to manually instantiate or update
+a slice on a node. Present this ticket to the local Node Manager
+interface to redeem it.</P
+><P
+>If the slice has not been added to a node with AddSliceToNodes,
+and the ticket is redeemed on that node, it will be deleted the
+next time the Node Manager contacts the API.</P
+><P
+>Users may only obtain tickets for slices of which they are
+members. PIs may obtain tickets for any of the slices at their
+sites, or any slices of which they are members. Admins may obtain
+tickets for any slice.</P
+><P
+>Returns 1 if successful, faults otherwise.</P
+></BLOCKQUOTE
+></P
+><P
+>Allowed Roles:<A
+NAME="AEN5415"
+></A
+><BLOCKQUOTE
+CLASS="BLOCKQUOTE"
+><P
+>admin, pi, user, peer</P
+></BLOCKQUOTE
+></P
+><P
+>Parameters:</P
+><P
+></P
+><UL
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>auth</CODE
+>
+: struct, API authentication structure </P
+><P
+></P
+><UL
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>AuthMethod</CODE
+>
+: string, Authentication method to use </P
+></LI
+></UL
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>slice_id_or_name</CODE
+>
+: int or string </P
+><P
+></P
+><UL
+><LI
+><P
+> int, Slice identifier </P
+></LI
+><LI
+><P
+> string, Slice name </P
+></LI
+></UL
+></LI
+></UL
+><P
+>Returns:</P
+><P
+></P
+><UL
+><LI
+><P
+> string, Signed slice ticket </P
+></LI
+></UL
+></DIV
+><DIV
+CLASS="section"
+><HR><H2
+CLASS="section"
+><A
+NAME="GetSlivers"
+>2.93. GetSlivers</A
+></H2
+><P
+>Prototype:<A
+NAME="AEN5441"
+></A
+><BLOCKQUOTE
+CLASS="BLOCKQUOTE"
+><P
+>GetSlivers (auth, node_id_or_hostname)</P
+></BLOCKQUOTE
+></P
+><P
+>Description:<A
+NAME="AEN5444"
+></A
+><BLOCKQUOTE
+CLASS="BLOCKQUOTE"
+><P
+>Returns a struct containing information about the specified node
+(or calling node, if called by a node and node_id_or_hostname is
+not specified), including the current set of slivers bound to the
+node.</P
+><P
+>All of the information returned by this call can be gathered from
+other calls, e.g. GetNodes, GetNodeNetworks, GetSlices, etc. This
+function exists almost solely for the benefit of Node Manager.</P
+></BLOCKQUOTE
+></P
+><P
+>Allowed Roles:<A
+NAME="AEN5448"
+></A
+><BLOCKQUOTE
+CLASS="BLOCKQUOTE"
+><P
+>admin, node</P
+></BLOCKQUOTE
+></P
+><P
+>Parameters:</P
+><P
+></P
+><UL
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>auth</CODE
+>
+: struct, API authentication structure </P
+><P
+></P
+><UL
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>AuthMethod</CODE
+>
+: string, Authentication method to use </P
+></LI
+></UL
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>node_id_or_hostname</CODE
+>
+: int or string </P
+><P
+></P
+><UL
+><LI
+><P
+> int, Node identifier </P
+></LI
+><LI
+><P
+> string, Fully qualified hostname </P
+></LI
+></UL
+></LI
+></UL
+><P
+>Returns:</P
+><P
+></P
+><UL
+><LI
+><P
+> struct </P
+><P
+></P
+><UL
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>timestamp</CODE
+>
+: int, Timestamp of this call, in seconds since UNIX epoch </P
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>hostname</CODE
+>
+: string, Fully qualified hostname </P
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>conf_files</CODE
+>
+: array of struct </P
+><P
+></P
+><UL
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>file_owner</CODE
+>
+: string, chown(1) owner </P
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>postinstall_cmd</CODE
+>
+: string, Shell command to execute after installing </P
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>error_cmd</CODE
+>
+: string, Shell command to execute if any error occurs </P
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>preinstall_cmd</CODE
+>
+: string, Shell command to execute prior to installing </P
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>node_ids</CODE
+>
+: int, List of nodes linked to this file </P
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>dest</CODE
+>
+: string, Absolute path where file should be installed </P
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>ignore_cmd_errors</CODE
+>
+: boolean, Install file anyway even if an error occurs </P
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>enabled</CODE
+>
+: boolean, Configuration file is active </P
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>conf_file_id</CODE
+>
+: int, Configuration file identifier </P
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>file_permissions</CODE
+>
+: string, chmod(1) permissions </P
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>source</CODE
+>
+: string, Relative path on the boot server where file can be downloaded </P
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>nodegroup_ids</CODE
+>
+: int, List of node groups linked to this file </P
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>always_update</CODE
+>
+: boolean, Always attempt to install file even if unchanged </P
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>file_group</CODE
+>
+: string, chgrp(1) owner </P
+></LI
+></UL
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>node_id</CODE
+>
+: int, Node identifier </P
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>groups</CODE
+>
+: array of string, Node group name </P
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>networks</CODE
+>
+: array of struct </P
+><P
+></P
+><UL
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>broadcast</CODE
+>
+: string, Network broadcast address </P
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>is_primary</CODE
+>
+: boolean, Is the primary interface for this node </P
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>network</CODE
+>
+: string, Subnet address </P
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>ip</CODE
+>
+: string, IP address </P
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>dns1</CODE
+>
+: string, IP address of primary DNS server </P
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>hostname</CODE
+>
+: string, (Optional) Hostname </P
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>netmask</CODE
+>
+: string, Subnet mask </P
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>gateway</CODE
+>
+: string, IP address of primary gateway </P
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>nodenetwork_id</CODE
+>
+: int, Node interface identifier </P
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>mac</CODE
+>
+: string, MAC address </P
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>node_id</CODE
+>
+: int, Node associated with this interface </P
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>dns2</CODE
+>
+: string, IP address of secondary DNS server </P
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>bwlimit</CODE
+>
+: int, Bandwidth limit </P
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>type</CODE
+>
+: string, Address type (e.g., 'ipv4') </P
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>method</CODE
+>
+: string, Addressing method (e.g., 'static' or 'dhcp') </P
+></LI
+></UL
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>slivers</CODE
+>
+: array of struct </P
+><P
+></P
+><UL
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>instantiation</CODE
+>
+: string, Slice instantiation state </P
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>name</CODE
+>
+: string, Slice name </P
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>slice_id</CODE
+>
+: int, Slice identifier </P
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>keys</CODE
+>
+: array of struct </P
+><P
+></P
+><UL
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>key_type</CODE
+>
+: string, Key type </P
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>key</CODE
+>
+: string, Key value </P
+></LI
+></UL
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>expires</CODE
+>
+: int, Date and time when slice expires, in seconds since UNIX epoch </P
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>attributes</CODE
+>
+: array of struct </P
+><P
+></P
+><UL
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>name</CODE
+>
+: string, Slice attribute type name </P
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>value</CODE
+>
+: string, Slice attribute value </P
+></LI
+></UL
+></LI
+></UL
+></LI
+></UL
+></LI
+></UL
+></DIV
+><DIV
+CLASS="section"
+><HR><H2
+CLASS="section"
+><A
+NAME="NotifyPersons"
+>2.94. NotifyPersons</A
+></H2
+><P
+>Prototype:<A
+NAME="AEN5618"
+></A
+><BLOCKQUOTE
+CLASS="BLOCKQUOTE"
+><P
+>NotifyPersons (auth, person_filter, subject, body)</P
+></BLOCKQUOTE
+></P
+><P
+>Description:<A
+NAME="AEN5621"
+></A
+><BLOCKQUOTE
+CLASS="BLOCKQUOTE"
+><P
+>Sends an e-mail message to the specified users. If person_filter
+is specified and is an array of user identifiers or usernames, or
+a struct of user attributes, only users matching the filter will
+receive the message.</P
+><P
+>Returns 1 if successful.</P
+></BLOCKQUOTE
+></P
+><P
+>Allowed Roles:<A
+NAME="AEN5625"
+></A
+><BLOCKQUOTE
+CLASS="BLOCKQUOTE"
+><P
+>admin, node</P
+></BLOCKQUOTE
+></P
+><P
+>Parameters:</P
+><P
+></P
+><UL
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>auth</CODE
+>
+: struct, API authentication structure </P
+><P
+></P
+><UL
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>AuthMethod</CODE
+>
+: string, Authentication method to use </P
+></LI
+></UL
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>person_filter</CODE
+>
+: array of int or string or struct </P
+><P
+></P
+><UL
+><LI
+><P
+> array of int or string </P
+><P
+></P
+><UL
+><LI
+><P
+> int, User identifier </P
+></LI
+><LI
+><P
+> string, Primary e-mail address </P
+></LI
+></UL
+></LI
+><LI
+><P
+> struct, Attribute filter </P
+><P
+></P
+><UL
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>bio</CODE
+>
+: string or array of string </P
+><P
+></P
+><UL
+><LI
+><P
+> string, Biography </P
+></LI
+><LI
+><P
+> array of string, Biography </P
+></LI
+></UL
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>first_name</CODE
+>
+: string or array of string </P
+><P
+></P
+><UL
+><LI
+><P
+> string, Given name </P
+></LI
+><LI
+><P
+> array of string, Given name </P
+></LI
+></UL
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>last_name</CODE
+>
+: string or array of string </P
+><P
+></P
+><UL
+><LI
+><P
+> string, Surname </P
+></LI
+><LI
+><P
+> array of string, Surname </P
+></LI
+></UL
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>last_updated</CODE
+>
+: int or array of int </P
+><P
+></P
+><UL
+><LI
+><P
+> int, Date and time of last update </P
+></LI
+><LI
+><P
+> array of int, Date and time of last update </P
+></LI
+></UL
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>title</CODE
+>
+: string or array of string </P
+><P
+></P
+><UL
+><LI
+><P
+> string, Title </P
+></LI
+><LI
+><P
+> array of string, Title </P
+></LI
+></UL
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>url</CODE
+>
+: string or array of string </P
+><P
+></P
+><UL
+><LI
+><P
+> string, Home page </P
+></LI
+><LI
+><P
+> array of string, Home page </P
+></LI
+></UL
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>verification_key</CODE
+>
+: string or array of string </P
+><P
+></P
+><UL
+><LI
+><P
+> string, Reset password key </P
+></LI
+><LI
+><P
+> array of string, Reset password key </P
+></LI
+></UL
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>enabled</CODE
+>
+: boolean or array of boolean </P
+><P
+></P
+><UL
+><LI
+><P
+> boolean, Has been enabled </P
+></LI
+><LI
+><P
+> array of boolean, Has been enabled </P
+></LI
+></UL
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>phone</CODE
+>
+: string or array of string </P
+><P
+></P
+><UL
+><LI
+><P
+> string, Telephone number </P
+></LI
+><LI
+><P
+> array of string, Telephone number </P
+></LI
+></UL
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>peer_person_id</CODE
+>
+: int or array of int </P
+><P
+></P
+><UL
+><LI
+><P
+> int, Foreign user identifier at peer </P
+></LI
+><LI
+><P
+> array of int, Foreign user identifier at peer </P
+></LI
+></UL
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>password</CODE
+>
+: string or array of string </P
+><P
+></P
+><UL
+><LI
+><P
+> string, Account password in crypt() form </P
+></LI
+><LI
+><P
+> array of string, Account password in crypt() form </P
+></LI
+></UL
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>person_id</CODE
+>
+: int or array of int </P
+><P
+></P
+><UL
+><LI
+><P
+> int, User identifier </P
+></LI
+><LI
+><P
+> array of int, User identifier </P
+></LI
+></UL
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>date_created</CODE
+>
+: int or array of int </P
+><P
+></P
+><UL
+><LI
+><P
+> int, Date and time when account was created </P
+></LI
+><LI
+><P
+> array of int, Date and time when account was created </P
+></LI
+></UL
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>peer_id</CODE
+>
+: int or array of int </P
+><P
+></P
+><UL
+><LI
+><P
+> int, Peer to which this user belongs </P
+></LI
+><LI
+><P
+> array of int, Peer to which this user belongs </P
+></LI
+></UL
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>verification_expires</CODE
+>
+: int or array of int </P
+><P
+></P
+><UL
+><LI
+><P
+> int, Date and time when verification_key expires </P
+></LI
+><LI
+><P
+> array of int, Date and time when verification_key expires </P
+></LI
+></UL
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>email</CODE
+>
+: string or array of string </P
+><P
+></P
+><UL
+><LI
+><P
+> string, Primary e-mail address </P
+></LI
+><LI
+><P
+> array of string, Primary e-mail address </P
+></LI
+></UL
+></LI
+></UL
+></LI
+></UL
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>subject</CODE
+>
+: string, E-mail subject </P
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>body</CODE
+>
+: string, E-mail body </P
+></LI
+></UL
+><P
+>Returns:</P
+><P
+></P
+><UL
+><LI
+><P
+> int, 1 if successful </P
+></LI
+></UL
+></DIV
+><DIV
+CLASS="section"
+><HR><H2
+CLASS="section"
+><A
+NAME="RebootNode"
+>2.95. RebootNode</A
+></H2
+><P
+>Prototype:<A
+NAME="AEN5791"
+></A
+><BLOCKQUOTE
+CLASS="BLOCKQUOTE"
+><P
+>RebootNode (auth, node_id_or_hostname)</P
+></BLOCKQUOTE
+></P
+><P
+>Description:<A
+NAME="AEN5794"
+></A
+><BLOCKQUOTE
+CLASS="BLOCKQUOTE"
+><P
+>Sends the specified node a specially formatted UDP packet which
+should cause it to reboot immediately.</P
+><P
+>Admins can reboot any node. Techs and PIs can only reboot nodes at
+their site.</P
+><P
+>Returns 1 if the packet was successfully sent (which only whether
+the packet was sent, not whether the reboot was successful).</P
+></BLOCKQUOTE
+></P
+><P
+>Allowed Roles:<A
+NAME="AEN5799"
+></A
+><BLOCKQUOTE
+CLASS="BLOCKQUOTE"
+><P
+>admin, pi, tech</P
+></BLOCKQUOTE
+></P
+><P
+>Parameters:</P
+><P
+></P
+><UL
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>auth</CODE
+>
+: struct, API authentication structure </P
+><P
+></P
+><UL
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>AuthMethod</CODE
+>
+: string, Authentication method to use </P
+></LI
+></UL
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>node_id_or_hostname</CODE
+>
+: int or string </P
+><P
+></P
+><UL
+><LI
+><P
+> int, Node identifier </P
+></LI
+><LI
+><P
+> string, Fully qualified hostname </P
+></LI
+></UL
+></LI
+></UL
+><P
+>Returns:</P
+><P
+></P
+><UL
+><LI
+><P
+> int, 1 if successful </P
+></LI
+></UL
+></DIV
+><DIV
+CLASS="section"
+><HR><H2
+CLASS="section"
+><A
+NAME="RefreshPeer"
+>2.96. RefreshPeer</A
+></H2
+><P
+>Prototype:<A
+NAME="AEN5825"
+></A
+><BLOCKQUOTE
+CLASS="BLOCKQUOTE"
+><P
+>RefreshPeer (auth, peer_id_or_peername)</P
+></BLOCKQUOTE
+></P
+><P
+>Description:<A
+NAME="AEN5828"
+></A
+><BLOCKQUOTE
+CLASS="BLOCKQUOTE"
+><P
+>Fetches node and slice data from the specified peer and caches it
+locally; also deletes stale entries. Returns 1 if successful,
+faults otherwise.</P
+></BLOCKQUOTE
+></P
+><P
+>Allowed Roles:<A
+NAME="AEN5831"
+></A
+><BLOCKQUOTE
+CLASS="BLOCKQUOTE"
+><P
+>admin</P
+></BLOCKQUOTE
+></P
+><P
+>Parameters:</P
+><P
+></P
+><UL
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>auth</CODE
+>
+: struct, API authentication structure </P
+><P
+></P
+><UL
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>AuthMethod</CODE
+>
+: string, Authentication method to use </P
+></LI
+></UL
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>peer_id_or_peername</CODE
+>
+: int or string </P
+><P
+></P
+><UL
+><LI
+><P
+> int, Peer identifier </P
+></LI
+><LI
+><P
+> string, Peer name </P
+></LI
+></UL
+></LI
+></UL
+><P
+>Returns:</P
+><P
+></P
+><UL
+><LI
+><P
+> int, 1 if successful </P
+></LI
+></UL
+></DIV
+><DIV
+CLASS="section"
+><HR><H2
+CLASS="section"
+><A
+NAME="ResetPassword"
+>2.97. ResetPassword</A
+></H2
+><P
+>Prototype:<A
+NAME="AEN5857"
+></A
+><BLOCKQUOTE
+CLASS="BLOCKQUOTE"
+><P
+>ResetPassword (auth, person_id_or_email, verification_key, verification_expires)</P
+></BLOCKQUOTE
+></P
+><P
+>Description:<A
+NAME="AEN5860"
+></A
+><BLOCKQUOTE
+CLASS="BLOCKQUOTE"
+><P
+>If verification_key is not specified, then a new verification_key
+will be generated and stored with the user's account. The key will
+be e-mailed to the user in the form of a link to a web page.</P
+><P
+>The web page should verify the key by calling this function again
+and specifying verification_key. If the key matches what has been
+stored in the user's account, a new random password will be
+e-mailed to the user.</P
+><P
+>Returns 1 if verification_key was not specified, or was specified
+and is valid, faults otherwise.</P
+></BLOCKQUOTE
+></P
+><P
+>Allowed Roles:<A
+NAME="AEN5865"
+></A
+><BLOCKQUOTE
+CLASS="BLOCKQUOTE"
+><P
+>admin</P
+></BLOCKQUOTE
+></P
+><P
+>Parameters:</P
+><P
+></P
+><UL
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>auth</CODE
+>
+: struct, API authentication structure </P
+><P
+></P
+><UL
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>AuthMethod</CODE
+>
+: string, Authentication method to use </P
+></LI
+></UL
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>person_id_or_email</CODE
+>
+: int or string </P
+><P
+></P
+><UL
+><LI
+><P
+> int, User identifier </P
+></LI
+><LI
+><P
+> string, Primary e-mail address </P
+></LI
+></UL
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>verification_key</CODE
+>
+: string, Reset password key </P
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>verification_expires</CODE
+>
+: int, Date and time when verification_key expires </P
+></LI
+></UL
+><P
+>Returns:</P
+><P
+></P
+><UL
+><LI
+><P
+> int, 1 if verification_key is valid </P
+></LI
+></UL
+></DIV
+><DIV
+CLASS="section"
+><HR><H2
+CLASS="section"
+><A
+NAME="SetPersonPrimarySite"
+>2.98. SetPersonPrimarySite</A
+></H2
+><P
+>Prototype:<A
+NAME="AEN5897"
+></A
+><BLOCKQUOTE
+CLASS="BLOCKQUOTE"
+><P
+>SetPersonPrimarySite (auth, person_id_or_email, site_id_or_login_base)</P
+></BLOCKQUOTE
+></P
+><P
+>Description:<A
+NAME="AEN5900"
+></A
+><BLOCKQUOTE
+CLASS="BLOCKQUOTE"
+><P
+>Makes the specified site the person's primary site. The person
+must already be a member of the site.</P
+><P
+>Admins may update anyone. All others may only update themselves.</P
+></BLOCKQUOTE
+></P
+><P
+>Allowed Roles:<A
+NAME="AEN5904"
+></A
+><BLOCKQUOTE
+CLASS="BLOCKQUOTE"
+><P
+>admin, pi, user, tech</P
+></BLOCKQUOTE
+></P
+><P
+>Parameters:</P
+><P
+></P
+><UL
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>auth</CODE
+>
+: struct, API authentication structure </P
+><P
+></P
+><UL
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>AuthMethod</CODE
+>
+: string, Authentication method to use </P
+></LI
+></UL
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>person_id_or_email</CODE
+>
+: int or string </P
+><P
+></P
+><UL
+><LI
+><P
+> int, User identifier </P
+></LI
+><LI
+><P
+> string, Primary e-mail address </P
+></LI
+></UL
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>site_id_or_login_base</CODE
+>
+: int or string </P
+><P
+></P
+><UL
+><LI
+><P
+> int, Site identifier </P
+></LI
+><LI
+><P
+> string, Site slice prefix </P
+></LI
+></UL
+></LI
+></UL
+><P
+>Returns:</P
+><P
+></P
+><UL
+><LI
+><P
+> int, 1 if successful </P
+></LI
+></UL
+></DIV
+><DIV
+CLASS="section"
+><HR><H2
+CLASS="section"
+><A
+NAME="UpdateAddress"
+>2.99. UpdateAddress</A
+></H2
+><P
+>Prototype:<A
+NAME="AEN5938"
+></A
+><BLOCKQUOTE
+CLASS="BLOCKQUOTE"
+><P
+>UpdateAddress (auth, address_id, address_fields)</P
+></BLOCKQUOTE
+></P
+><P
+>Description:<A
+NAME="AEN5941"
+></A
+><BLOCKQUOTE
+CLASS="BLOCKQUOTE"
+><P
+>Updates the parameters of an existing address with the values in
+address_fields.</P
+><P
+>PIs may only update addresses of their own sites.</P
+><P
+>Returns 1 if successful, faults otherwise.</P
+></BLOCKQUOTE
+></P
+><P
+>Allowed Roles:<A
+NAME="AEN5946"
+></A
+><BLOCKQUOTE
+CLASS="BLOCKQUOTE"
+><P
+>admin, pi</P
+></BLOCKQUOTE
+></P
+><P
+>Parameters:</P
+><P
+></P
+><UL
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>auth</CODE
+>
+: struct, API authentication structure </P
+><P
+></P
+><UL
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>AuthMethod</CODE
+>
+: string, Authentication method to use </P
+></LI
+></UL
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>address_id</CODE
+>
+: int, Address identifier </P
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>address_fields</CODE
+>
+: struct </P
+><P
+></P
+><UL
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>city</CODE
+>
+: string, City </P
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>country</CODE
+>
+: string, Country </P
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>line3</CODE
+>
+: string, Address line 3 </P
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>line2</CODE
+>
+: string, Address line 2 </P
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>line1</CODE
+>
+: string, Address line 1 </P
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>state</CODE
+>
+: string, State or province </P
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>postalcode</CODE
+>
+: string, Postal code </P
+></LI
+></UL
+></LI
+></UL
+><P
+>Returns:</P
+><P
+></P
+><UL
+><LI
+><P
+> int, 1 if successful </P
+></LI
+></UL
+></DIV
+><DIV
+CLASS="section"
+><HR><H2
+CLASS="section"
+><A
+NAME="UpdateAddressType"
+>2.100. UpdateAddressType</A
+></H2
+><P
+>Prototype:<A
+NAME="AEN5992"
+></A
+><BLOCKQUOTE
+CLASS="BLOCKQUOTE"
+><P
+>UpdateAddressType (auth, address_type_id_or_name, address_type_fields)</P
+></BLOCKQUOTE
+></P
+><P
+>Description:<A
+NAME="AEN5995"
+></A
+><BLOCKQUOTE
+CLASS="BLOCKQUOTE"
+><P
+>Updates the parameters of an existing address type with the values
+in address_type_fields.</P
+><P
+>Returns 1 if successful, faults otherwise.</P
+></BLOCKQUOTE
+></P
+><P
+>Allowed Roles:<A
+NAME="AEN5999"
+></A
+><BLOCKQUOTE
+CLASS="BLOCKQUOTE"
+><P
+>admin</P
+></BLOCKQUOTE
+></P
+><P
+>Parameters:</P
+><P
+></P
+><UL
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>auth</CODE
+>
+: struct, API authentication structure </P
+><P
+></P
+><UL
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>AuthMethod</CODE
+>
+: string, Authentication method to use </P
+></LI
+></UL
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>address_type_id_or_name</CODE
+>
+: int or string </P
+><P
+></P
+><UL
+><LI
+><P
+> int, Address type identifier </P
+></LI
+><LI
+><P
+> string, Address type </P
+></LI
+></UL
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>address_type_fields</CODE
+>
+: struct </P
+><P
+></P
+><UL
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>name</CODE
+>
+: string, Address type </P
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>description</CODE
+>
+: string, Address type description </P
+></LI
+></UL
+></LI
+></UL
+><P
+>Returns:</P
+><P
+></P
+><UL
+><LI
+><P
+> int, 1 if successful </P
+></LI
+></UL
+></DIV
+><DIV
+CLASS="section"
+><HR><H2
+CLASS="section"
+><A
+NAME="UpdateConfFile"
+>2.101. UpdateConfFile</A
+></H2
+><P
+>Prototype:<A
+NAME="AEN6035"
+></A
+><BLOCKQUOTE
+CLASS="BLOCKQUOTE"
+><P
+>UpdateConfFile (auth, conf_file_id, conf_file_fields)</P
+></BLOCKQUOTE
+></P
+><P
+>Description:<A
+NAME="AEN6038"
+></A
+><BLOCKQUOTE
+CLASS="BLOCKQUOTE"
+><P
+>Updates a node configuration file. Only the fields specified in
+conf_file_fields are updated, all other fields are left untouched.</P
+><P
+>Returns 1 if successful, faults otherwise.</P
+></BLOCKQUOTE
+></P
+><P
+>Allowed Roles:<A
+NAME="AEN6042"
+></A
+><BLOCKQUOTE
+CLASS="BLOCKQUOTE"
+><P
+>admin</P
+></BLOCKQUOTE
+></P
+><P
+>Parameters:</P
+><P
+></P
+><UL
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>auth</CODE
+>
+: struct, API authentication structure </P
+><P
+></P
+><UL
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>AuthMethod</CODE
+>
+: string, Authentication method to use </P
+></LI
+></UL
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>conf_file_id</CODE
+>
+: int, Configuration file identifier </P
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>conf_file_fields</CODE
+>
+: struct </P
+><P
+></P
+><UL
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>file_owner</CODE
+>
+: string, chown(1) owner </P
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>postinstall_cmd</CODE
+>
+: string, Shell command to execute after installing </P
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>error_cmd</CODE
+>
+: string, Shell command to execute if any error occurs </P
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>preinstall_cmd</CODE
+>
+: string, Shell command to execute prior to installing </P
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>dest</CODE
+>
+: string, Absolute path where file should be installed </P
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>ignore_cmd_errors</CODE
+>
+: boolean, Install file anyway even if an error occurs </P
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>enabled</CODE
+>
+: boolean, Configuration file is active </P
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>file_permissions</CODE
+>
+: string, chmod(1) permissions </P
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>source</CODE
+>
+: string, Relative path on the boot server where file can be downloaded </P
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>always_update</CODE
+>
+: boolean, Always attempt to install file even if unchanged </P
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>file_group</CODE
+>
+: string, chgrp(1) owner </P
+></LI
+></UL
+></LI
+></UL
+><P
+>Returns:</P
+><P
+></P
+><UL
+><LI
+><P
+> int, 1 if successful </P
+></LI
+></UL
+></DIV
+><DIV
+CLASS="section"
+><HR><H2
+CLASS="section"
+><A
+NAME="UpdateKey"
+>2.102. UpdateKey</A
+></H2
+><P
+>Prototype:<A
+NAME="AEN6100"
+></A
+><BLOCKQUOTE
+CLASS="BLOCKQUOTE"
+><P
+>UpdateKey (auth, key_id, key_fields)</P
+></BLOCKQUOTE
+></P
+><P
+>Description:<A
+NAME="AEN6103"
+></A
+><BLOCKQUOTE
+CLASS="BLOCKQUOTE"
+><P
+>Updates the parameters of an existing key with the values in
+key_fields.</P
+><P
+>Non-admins may only update their own keys.</P
+><P
+>Returns 1 if successful, faults otherwise.</P
+></BLOCKQUOTE
+></P
+><P
+>Allowed Roles:<A
+NAME="AEN6108"
+></A
+><BLOCKQUOTE
+CLASS="BLOCKQUOTE"
+><P
+>admin, pi, tech, user</P
+></BLOCKQUOTE
+></P
+><P
+>Parameters:</P
+><P
+></P
+><UL
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>auth</CODE
+>
+: struct, API authentication structure </P
+><P
+></P
+><UL
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>AuthMethod</CODE
+>
+: string, Authentication method to use </P
+></LI
+></UL
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>key_id</CODE
+>
+: int, Key identifier </P
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>key_fields</CODE
+>
+: struct </P
+><P
+></P
+><UL
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>key_type</CODE
+>
+: string, Key type </P
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>key</CODE
+>
+: string, Key value </P
+></LI
+></UL
+></LI
+></UL
+><P
+>Returns:</P
+><P
+></P
+><UL
+><LI
+><P
+> int, 1 if successful </P
+></LI
+></UL
+></DIV
+><DIV
+CLASS="section"
+><HR><H2
+CLASS="section"
+><A
+NAME="UpdateMessage"
+>2.103. UpdateMessage</A
+></H2
+><P
+>Prototype:<A
+NAME="AEN6139"
+></A
+><BLOCKQUOTE
+CLASS="BLOCKQUOTE"
+><P
+>UpdateMessage (auth, message_id, message_fields)</P
+></BLOCKQUOTE
+></P
+><P
+>Description:<A
+NAME="AEN6142"
+></A
+><BLOCKQUOTE
+CLASS="BLOCKQUOTE"
+><P
+>Updates the parameters of an existing message template with the
+values in message_fields.</P
+><P
+>Returns 1 if successful, faults otherwise.</P
+></BLOCKQUOTE
+></P
+><P
+>Allowed Roles:<A
+NAME="AEN6146"
+></A
+><BLOCKQUOTE
+CLASS="BLOCKQUOTE"
+><P
+>admin</P
+></BLOCKQUOTE
+></P
+><P
+>Parameters:</P
+><P
+></P
+><UL
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>auth</CODE
+>
+: struct, API authentication structure </P
+><P
+></P
+><UL
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>AuthMethod</CODE
+>
+: string, Authentication method to use </P
+></LI
+></UL
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>message_id</CODE
+>
+: string, Message identifier </P
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>message_fields</CODE
+>
+: struct </P
+><P
+></P
+><UL
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>enabled</CODE
+>
+: boolean, Message is enabled </P
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>template</CODE
+>
+: string, Message template </P
+></LI
+></UL
+></LI
+></UL
+><P
+>Returns:</P
+><P
+></P
+><UL
+><LI
+><P
+> int, 1 if successful </P
+></LI
+></UL
+></DIV
+><DIV
+CLASS="section"
+><HR><H2
+CLASS="section"
+><A
+NAME="UpdateNodeGroup"
+>2.104. UpdateNodeGroup</A
+></H2
+><P
+>Prototype:<A
+NAME="AEN6177"
+></A
+><BLOCKQUOTE
+CLASS="BLOCKQUOTE"
+><P
+>UpdateNodeGroup (auth, nodegroup_id_or_name, nodegroup_fields)</P
+></BLOCKQUOTE
+></P
+><P
+>Description:<A
+NAME="AEN6180"
+></A
+><BLOCKQUOTE
+CLASS="BLOCKQUOTE"
+><P
+>Updates a custom node group.</P
+><P
+>Returns 1 if successful, faults otherwise.</P
+></BLOCKQUOTE
+></P
+><P
+>Allowed Roles:<A
+NAME="AEN6184"
+></A
+><BLOCKQUOTE
+CLASS="BLOCKQUOTE"
+><P
+>admin</P
+></BLOCKQUOTE
+></P
+><P
+>Parameters:</P
+><P
+></P
+><UL
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>auth</CODE
+>
+: struct, API authentication structure </P
+><P
+></P
+><UL
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>AuthMethod</CODE
+>
+: string, Authentication method to use </P
+></LI
+></UL
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>nodegroup_id_or_name</CODE
+>
+: int or string </P
+><P
+></P
+><UL
+><LI
+><P
+> int, Node group identifier </P
+></LI
+><LI
+><P
+> string, Node group name </P
+></LI
+></UL
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>nodegroup_fields</CODE
+>
+: struct </P
+><P
+></P
+><UL
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>name</CODE
+>
+: string, Node group name </P
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>description</CODE
+>
+: string, Node group description </P
+></LI
+></UL
+></LI
+></UL
+><P
+>Returns:</P
+><P
+></P
+><UL
+><LI
+><P
+> int, 1 if successful </P
+></LI
+></UL
+></DIV
+><DIV
+CLASS="section"
+><HR><H2
+CLASS="section"
+><A
+NAME="UpdateNodeNetwork"
+>2.105. UpdateNodeNetwork</A
+></H2
+><P
+>Prototype:<A
+NAME="AEN6220"
+></A
+><BLOCKQUOTE
+CLASS="BLOCKQUOTE"
+><P
+>UpdateNodeNetwork (auth, nodenetwork_id, nodenetwork_fields)</P
+></BLOCKQUOTE
+></P
+><P
+>Description:<A
+NAME="AEN6223"
+></A
+><BLOCKQUOTE
+CLASS="BLOCKQUOTE"
+><P
+>Updates an existing node network. Any values specified in
+nodenetwork_fields are used, otherwise defaults are
+used. Acceptable values for method are dhcp and static. If type is
+static, then ip, gateway, network, broadcast, netmask, and dns1
+must all be specified in nodenetwork_fields. If type is dhcp,
+these parameters, even if specified, are ignored.</P
+><P
+>PIs and techs may only update networks associated with their own
+nodes. Admins may update any node network.</P
+><P
+>Returns 1 if successful, faults otherwise.</P
+></BLOCKQUOTE
+></P
+><P
+>Allowed Roles:<A
+NAME="AEN6228"
+></A
+><BLOCKQUOTE
+CLASS="BLOCKQUOTE"
+><P
+>admin, pi, tech</P
+></BLOCKQUOTE
+></P
+><P
+>Parameters:</P
+><P
+></P
+><UL
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>auth</CODE
+>
+: struct, API authentication structure </P
+><P
+></P
+><UL
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>AuthMethod</CODE
+>
+: string, Authentication method to use </P
+></LI
+></UL
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>nodenetwork_id</CODE
+>
+: int, Node interface identifier </P
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>nodenetwork_fields</CODE
+>
+: struct </P
+><P
+></P
+><UL
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>network</CODE
+>
+: string, Subnet address </P
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>is_primary</CODE
+>
+: boolean, Is the primary interface for this node </P
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>dns1</CODE
+>
+: string, IP address of primary DNS server </P
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>hostname</CODE
+>
+: string, (Optional) Hostname </P
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>mac</CODE
+>
+: string, MAC address </P
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>bwlimit</CODE
+>
+: int, Bandwidth limit </P
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>broadcast</CODE
+>
+: string, Network broadcast address </P
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>method</CODE
+>
+: string, Addressing method (e.g., 'static' or 'dhcp') </P
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>netmask</CODE
+>
+: string, Subnet mask </P
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>dns2</CODE
+>
+: string, IP address of secondary DNS server </P
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>ip</CODE
+>
+: string, IP address </P
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>type</CODE
+>
+: string, Address type (e.g., 'ipv4') </P
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>gateway</CODE
+>
+: string, IP address of primary gateway </P
+></LI
+></UL
+></LI
+></UL
+><P
+>Returns:</P
+><P
+></P
+><UL
+><LI
+><P
+> int, 1 if successful </P
+></LI
+></UL
+></DIV
+><DIV
+CLASS="section"
+><HR><H2
+CLASS="section"
+><A
+NAME="UpdateNode"
+>2.106. UpdateNode</A
+></H2
+><P
+>Prototype:<A
+NAME="AEN6292"
+></A
+><BLOCKQUOTE
+CLASS="BLOCKQUOTE"
+><P
+>UpdateNode (auth, node_id_or_hostname, node_fields)</P
+></BLOCKQUOTE
+></P
+><P
+>Description:<A
+NAME="AEN6295"
+></A
+><BLOCKQUOTE
+CLASS="BLOCKQUOTE"
+><P
+>Updates a node. Only the fields specified in node_fields are
+updated, all other fields are left untouched.</P
+><P
+>PIs and techs can update only the nodes at their sites. Only
+admins can update the key, session, and boot_nonce fields.</P
+><P
+>Returns 1 if successful, faults otherwise.</P
+></BLOCKQUOTE
+></P
+><P
+>Allowed Roles:<A
+NAME="AEN6300"
+></A
+><BLOCKQUOTE
+CLASS="BLOCKQUOTE"
+><P
+>admin, pi, tech</P
+></BLOCKQUOTE
+></P
+><P
+>Parameters:</P
+><P
+></P
+><UL
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>auth</CODE
+>
+: struct, API authentication structure </P
+><P
+></P
+><UL
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>AuthMethod</CODE
+>
+: string, Authentication method to use </P
+></LI
+></UL
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>node_id_or_hostname</CODE
+>
+: int or string </P
+><P
+></P
+><UL
+><LI
+><P
+> int, Node identifier </P
+></LI
+><LI
+><P
+> string, Fully qualified hostname </P
+></LI
+></UL
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>node_fields</CODE
+>
+: struct </P
+><P
+></P
+><UL
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>version</CODE
+>
+: string, Apparent Boot CD version </P
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>boot_state</CODE
+>
+: string, Boot state </P
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>hostname</CODE
+>
+: string, Fully qualified hostname </P
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>boot_nonce</CODE
+>
+: string, (Admin only) Random value generated by the node at last boot </P
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>session</CODE
+>
+: string, (Admin only) Node session value </P
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>key</CODE
+>
+: string, (Admin only) Node key </P
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>model</CODE
+>
+: string, Make and model of the actual machine </P
+></LI
+></UL
+></LI
+></UL
+><P
+>Returns:</P
+><P
+></P
+><UL
+><LI
+><P
+> int, 1 if successful </P
+></LI
+></UL
+></DIV
+><DIV
+CLASS="section"
+><HR><H2
+CLASS="section"
+><A
+NAME="UpdatePCU"
+>2.107. UpdatePCU</A
+></H2
+><P
+>Prototype:<A
+NAME="AEN6351"
+></A
+><BLOCKQUOTE
+CLASS="BLOCKQUOTE"
+><P
+>UpdatePCU (auth, pcu_id, pcu_fields)</P
+></BLOCKQUOTE
+></P
+><P
+>Description:<A
+NAME="AEN6354"
+></A
+><BLOCKQUOTE
+CLASS="BLOCKQUOTE"
+><P
+>Updates the parameters of an existing PCU with the values in
+pcu_fields.</P
+><P
+>Non-admins may only update PCUs at their sites.</P
+><P
+>Returns 1 if successful, faults otherwise.</P
+></BLOCKQUOTE
+></P
+><P
+>Allowed Roles:<A
+NAME="AEN6359"
+></A
+><BLOCKQUOTE
+CLASS="BLOCKQUOTE"
+><P
+>admin, pi, tech</P
+></BLOCKQUOTE
+></P
+><P
+>Parameters:</P
+><P
+></P
+><UL
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>auth</CODE
+>
+: struct, API authentication structure </P
+><P
+></P
+><UL
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>AuthMethod</CODE
+>
+: string, Authentication method to use </P
+></LI
+></UL
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>pcu_id</CODE
+>
+: int, PCU identifier </P
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>pcu_fields</CODE
+>
+: struct </P
+><P
+></P
+><UL
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>username</CODE
+>
+: string, PCU username </P
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>protocol</CODE
+>
+: string, PCU protocol, e.g. ssh, https, telnet </P
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>node_ids</CODE
+>
+: array, List of nodes that this PCU controls </P
+><P
+></P
+><UL
+><LI
+><P
+> int </P
+></LI
+></UL
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>ip</CODE
+>
+: string, PCU IP address </P
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>notes</CODE
+>
+: string, Miscellaneous notes </P
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>hostname</CODE
+>
+: string, PCU hostname </P
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>model</CODE
+>
+: string, PCU model string </P
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>password</CODE
+>
+: string, PCU username </P
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>ports</CODE
+>
+: array, List of the port numbers that each node is connected to </P
+><P
+></P
+><UL
+><LI
+><P
+> int </P
+></LI
+></UL
+></LI
+></UL
+></LI
+></UL
+><P
+>Returns:</P
+><P
+></P
+><UL
+><LI
+><P
+> int, 1 if successful </P
+></LI
+></UL
+></DIV
+><DIV
+CLASS="section"
+><HR><H2
+CLASS="section"
+><A
+NAME="UpdatePeer"
+>2.108. UpdatePeer</A
+></H2
+><P
+>Prototype:<A
+NAME="AEN6417"
+></A
+><BLOCKQUOTE
+CLASS="BLOCKQUOTE"
+><P
+>UpdatePeer (auth, peer_id_or_name, peer_fields)</P
+></BLOCKQUOTE
+></P
+><P
+>Description:<A
+NAME="AEN6420"
+></A
+><BLOCKQUOTE
+CLASS="BLOCKQUOTE"
+><P
+>Updates a peer. Only the fields specified in peer_fields are
+updated, all other fields are left untouched.</P
+><P
+>Returns 1 if successful, faults otherwise.</P
+></BLOCKQUOTE
+></P
+><P
+>Allowed Roles:<A
+NAME="AEN6424"
+></A
+><BLOCKQUOTE
+CLASS="BLOCKQUOTE"
+><P
+>admin</P
+></BLOCKQUOTE
+></P
+><P
+>Parameters:</P
+><P
+></P
+><UL
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>auth</CODE
+>
+: struct, API authentication structure </P
+><P
+></P
+><UL
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>AuthMethod</CODE
+>
+: string, Authentication method to use </P
+></LI
+></UL
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>peer_id_or_name</CODE
+>
+: int or string </P
+><P
+></P
+><UL
+><LI
+><P
+> int, Peer identifier </P
+></LI
+><LI
+><P
+> string, Peer name </P
+></LI
+></UL
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>peer_fields</CODE
+>
+: struct </P
+><P
+></P
+><UL
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>key</CODE
+>
+: string, Peer GPG public key </P
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>cacert</CODE
+>
+: string, Peer SSL public certificate </P
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>peername</CODE
+>
+: string, Peer name </P
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>peer_url</CODE
+>
+: string, Peer API URL </P
+></LI
+></UL
+></LI
+></UL
+><P
+>Returns:</P
+><P
+></P
+><UL
+><LI
+><P
+> int, 1 if successful </P
+></LI
+></UL
+></DIV
+><DIV
+CLASS="section"
+><HR><H2
+CLASS="section"
+><A
+NAME="UpdatePerson"
+>2.109. UpdatePerson</A
+></H2
+><P
+>Prototype:<A
+NAME="AEN6466"
+></A
+><BLOCKQUOTE
+CLASS="BLOCKQUOTE"
+><P
+>UpdatePerson (auth, person_id_or_email, person_fields)</P
+></BLOCKQUOTE
+></P
+><P
+>Description:<A
+NAME="AEN6469"
+></A
+><BLOCKQUOTE
+CLASS="BLOCKQUOTE"
+><P
+>Updates a person. Only the fields specified in person_fields are
+updated, all other fields are left untouched.</P
+><P
+>Users and techs can only update themselves. PIs can only update
+themselves and other non-PIs at their sites.</P
+><P
+>Returns 1 if successful, faults otherwise.</P
+></BLOCKQUOTE
+></P
+><P
+>Allowed Roles:<A
+NAME="AEN6474"
+></A
+><BLOCKQUOTE
+CLASS="BLOCKQUOTE"
+><P
+>admin, pi, user, tech</P
+></BLOCKQUOTE
+></P
+><P
+>Parameters:</P
+><P
+></P
+><UL
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>auth</CODE
+>
+: struct, API authentication structure </P
+><P
+></P
+><UL
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>AuthMethod</CODE
+>
+: string, Authentication method to use </P
+></LI
+></UL
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>person_id_or_email</CODE
+>
+: int or string </P
+><P
+></P
+><UL
+><LI
+><P
+> int, User identifier </P
+></LI
+><LI
+><P
+> string, Primary e-mail address </P
+></LI
+></UL
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>person_fields</CODE
+>
+: struct </P
+><P
+></P
+><UL
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>bio</CODE
+>
+: string, Biography </P
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>first_name</CODE
+>
+: string, Given name </P
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>last_name</CODE
+>
+: string, Surname </P
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>title</CODE
+>
+: string, Title </P
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>url</CODE
+>
+: string, Home page </P
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>enabled</CODE
+>
+: boolean, Has been enabled </P
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>phone</CODE
+>
+: string, Telephone number </P
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>password</CODE
+>
+: string, Account password in crypt() form </P
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>email</CODE
+>
+: string, Primary e-mail address </P
+></LI
+></UL
+></LI
+></UL
+><P
+>Returns:</P
+><P
+></P
+><UL
+><LI
+><P
+> int, 1 if successful </P
+></LI
+></UL
+></DIV
+><DIV
+CLASS="section"
+><HR><H2
+CLASS="section"
+><A
+NAME="UpdateSite"
+>2.110. UpdateSite</A
+></H2
+><P
+>Prototype:<A
+NAME="AEN6531"
+></A
+><BLOCKQUOTE
+CLASS="BLOCKQUOTE"
+><P
+>UpdateSite (auth, site_id_or_login_base, site_fields)</P
+></BLOCKQUOTE
+></P
+><P
+>Description:<A
+NAME="AEN6534"
+></A
+><BLOCKQUOTE
+CLASS="BLOCKQUOTE"
+><P
+>Updates a site. Only the fields specified in update_fields are
+updated, all other fields are left untouched.</P
+><P
+>PIs can only update sites they are a member of. Only admins can
+update max_slices, max_slivers, and login_base.</P
+><P
+>Returns 1 if successful, faults otherwise.</P
+></BLOCKQUOTE
+></P
+><P
+>Allowed Roles:<A
+NAME="AEN6539"
+></A
+><BLOCKQUOTE
+CLASS="BLOCKQUOTE"
+><P
+>admin, pi</P
+></BLOCKQUOTE
+></P
+><P
+>Parameters:</P
+><P
+></P
+><UL
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>auth</CODE
+>
+: struct, API authentication structure </P
+><P
+></P
+><UL
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>AuthMethod</CODE
+>
+: string, Authentication method to use </P
+></LI
+></UL
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>site_id_or_login_base</CODE
+>
+: int or string </P
+><P
+></P
+><UL
+><LI
+><P
+> int, Site identifier </P
+></LI
+><LI
+><P
+> string, Site slice prefix </P
+></LI
+></UL
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>site_fields</CODE
+>
+: struct </P
+><P
+></P
+><UL
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>name</CODE
+>
+: string, Full site name </P
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>url</CODE
+>
+: string, URL of a page that describes the site </P
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>enabled</CODE
+>
+: boolean, Has been enabled </P
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>longitude</CODE
+>
+: double, Decimal longitude of the site </P
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>latitude</CODE
+>
+: double, Decimal latitude of the site </P
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>max_slices</CODE
+>
+: int, Maximum number of slices that the site is able to create </P
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>login_base</CODE
+>
+: string, Site slice prefix </P
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>max_slivers</CODE
+>
+: int, Maximum number of slivers that the site is able to create </P
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>is_public</CODE
+>
+: boolean, Publicly viewable site </P
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>abbreviated_name</CODE
+>
+: string, Abbreviated site name </P
+></LI
+></UL
+></LI
+></UL
+><P
+>Returns:</P
+><P
+></P
+><UL
+><LI
+><P
+> int, 1 if successful </P
+></LI
+></UL
+></DIV
+><DIV
+CLASS="section"
+><HR><H2
+CLASS="section"
+><A
+NAME="UpdateSliceAttribute"
+>2.111. UpdateSliceAttribute</A
+></H2
+><P
+>Prototype:<A
+NAME="AEN6599"
+></A
+><BLOCKQUOTE
+CLASS="BLOCKQUOTE"
+><P
+>UpdateSliceAttribute (auth, slice_attribute_id, value)</P
+></BLOCKQUOTE
+></P
+><P
+>Description:<A
+NAME="AEN6602"
+></A
+><BLOCKQUOTE
+CLASS="BLOCKQUOTE"
+><P
+>Updates the value of an existing slice or sliver attribute.</P
+><P
+>Users may only update attributes of slices or slivers of which
+they are members. PIs may only update attributes of slices or
+slivers at their sites, or of which they are members. Admins may
+update attributes of any slice or sliver.</P
+><P
+>Returns 1 if successful, faults otherwise.</P
+></BLOCKQUOTE
+></P
+><P
+>Allowed Roles:<A
+NAME="AEN6607"
+></A
+><BLOCKQUOTE
+CLASS="BLOCKQUOTE"
+><P
+>admin, pi, user</P
+></BLOCKQUOTE
+></P
+><P
+>Parameters:</P
+><P
+></P
+><UL
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>auth</CODE
+>
+: struct, API authentication structure </P
+><P
+></P
+><UL
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>AuthMethod</CODE
+>
+: string, Authentication method to use </P
+></LI
+></UL
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>slice_attribute_id</CODE
+>
+: int, Slice attribute identifier </P
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>value</CODE
+>
+: string, Slice attribute value </P
+></LI
+></UL
+><P
+>Returns:</P
+><P
+></P
+><UL
+><LI
+><P
+> int, 1 if successful </P
+></LI
+></UL
+></DIV
+><DIV
+CLASS="section"
+><HR><H2
+CLASS="section"
+><A
+NAME="UpdateSliceAttributeType"
+>2.112. UpdateSliceAttributeType</A
+></H2
+><P
+>Prototype:<A
+NAME="AEN6631"
+></A
+><BLOCKQUOTE
+CLASS="BLOCKQUOTE"
+><P
+>UpdateSliceAttributeType (auth, attribute_type_id_or_name, attribute_type_fields)</P
+></BLOCKQUOTE
+></P
+><P
+>Description:<A
+NAME="AEN6634"
+></A
+><BLOCKQUOTE
+CLASS="BLOCKQUOTE"
+><P
+>Updates the parameters of an existing attribute with the values in
+attribute_type_fields.</P
+><P
+>Returns 1 if successful, faults otherwise.</P
+></BLOCKQUOTE
+></P
+><P
+>Allowed Roles:<A
+NAME="AEN6638"
+></A
+><BLOCKQUOTE
+CLASS="BLOCKQUOTE"
+><P
+>admin</P
+></BLOCKQUOTE
+></P
+><P
+>Parameters:</P
+><P
+></P
+><UL
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>auth</CODE
+>
+: struct, API authentication structure </P
+><P
+></P
+><UL
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>AuthMethod</CODE
+>
+: string, Authentication method to use </P
+></LI
+></UL
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>attribute_type_id_or_name</CODE
+>
+: int or string </P
+><P
+></P
+><UL
+><LI
+><P
+> int, Slice attribute type identifier </P
+></LI
+><LI
+><P
+> string, Slice attribute type name </P
+></LI
+></UL
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>attribute_type_fields</CODE
+>
+: struct </P
+><P
+></P
+><UL
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>min_role_id</CODE
+>
+: int, Minimum (least powerful) role that can set or change this attribute </P
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>name</CODE
+>
+: string, Slice attribute type name </P
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>description</CODE
+>
+: string, Slice attribute type description </P
+></LI
+></UL
+></LI
+></UL
+><P
+>Returns:</P
+><P
+></P
+><UL
+><LI
+><P
+> int, 1 if successful </P
+></LI
+></UL
+></DIV
+><DIV
+CLASS="section"
+><HR><H2
+CLASS="section"
+><A
+NAME="UpdateSlice"
+>2.113. UpdateSlice</A
+></H2
+><P
+>Prototype:<A
+NAME="AEN6677"
+></A
+><BLOCKQUOTE
+CLASS="BLOCKQUOTE"
+><P
+>UpdateSlice (auth, slice_id_or_name, slice_fields)</P
+></BLOCKQUOTE
+></P
+><P
+>Description:<A
+NAME="AEN6680"
+></A
+><BLOCKQUOTE
+CLASS="BLOCKQUOTE"
+><P
+>Updates the parameters of an existing slice with the values in
+slice_fields.</P
+><P
+>Users may only update slices of which they are members. PIs may
+update any of the slices at their sites, or any slices of which
+they are members. Admins may update any slice.</P
+><P
+>Only PIs and admins may update max_nodes. Slices cannot be renewed
+(by updating the expires parameter) more than 8 weeks into the
+future.</P
+><P
+>Returns 1 if successful, faults otherwise.</P
+></BLOCKQUOTE
+></P
+><P
+>Allowed Roles:<A
+NAME="AEN6686"
+></A
+><BLOCKQUOTE
+CLASS="BLOCKQUOTE"
+><P
+>admin, pi, user</P
+></BLOCKQUOTE
+></P
+><P
+>Parameters:</P
+><P
+></P
+><UL
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>auth</CODE
+>
+: struct, API authentication structure </P
+><P
+></P
+><UL
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>AuthMethod</CODE
+>
+: string, Authentication method to use </P
+></LI
+></UL
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>slice_id_or_name</CODE
+>
+: int or string </P
+><P
+></P
+><UL
+><LI
+><P
+> int, Slice identifier </P
+></LI
+><LI
+><P
+> string, Slice name </P
+></LI
+></UL
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>slice_fields</CODE
+>
+: struct </P
+><P
+></P
+><UL
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>url</CODE
+>
+: string, URL further describing this slice </P
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>max_nodes</CODE
+>
+: int, Maximum number of nodes that can be assigned to this slice </P
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>instantiation</CODE
+>
+: string, Slice instantiation state </P
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>expires</CODE
+>
+: int, Date and time when slice expires, in seconds since UNIX epoch </P
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>description</CODE
+>
+: string, Slice description </P
+></LI
+></UL
+></LI
+></UL
+><P
+>Returns:</P
+><P
+></P
+><UL
+><LI
+><P
+> int, 1 if successful </P
+></LI
+></UL
+></DIV
+><DIV
+CLASS="section"
+><HR><H2
+CLASS="section"
+><A
+NAME="VerifyPerson"
+>2.114. VerifyPerson</A
+></H2
+><P
+>Prototype:<A
+NAME="AEN6731"
+></A
+><BLOCKQUOTE
+CLASS="BLOCKQUOTE"
+><P
+>VerifyPerson (auth, person_id_or_email, verification_key, verification_expires)</P
+></BLOCKQUOTE
+></P
+><P
+>Description:<A
+NAME="AEN6734"
+></A
+><BLOCKQUOTE
+CLASS="BLOCKQUOTE"
+><P
+>Verify a new (must be disabled) user's e-mail address and registration.</P
+><P
+>If verification_key is not specified, then a new verification_key
+will be generated and stored with the user's account. The key will
+be e-mailed to the user in the form of a link to a web page.</P
+><P
+>The web page should verify the key by calling this function again
+and specifying verification_key. If the key matches what has been
+stored in the user's account, then an e-mail will be sent to the
+user's PI (and support if the user is requesting a PI role),
+asking the PI (or support) to enable the account.</P
+><P
+>Returns 1 if the verification key if valid.</P
+></BLOCKQUOTE
+></P
+><P
+>Allowed Roles:<A
+NAME="AEN6740"
+></A
+><BLOCKQUOTE
+CLASS="BLOCKQUOTE"
+><P
+>admin</P
+></BLOCKQUOTE
+></P
+><P
+>Parameters:</P
+><P
+></P
+><UL
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>auth</CODE
+>
+: struct, API authentication structure </P
+><P
+></P
+><UL
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>AuthMethod</CODE
+>
+: string, Authentication method to use </P
+></LI
+></UL
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>person_id_or_email</CODE
+>
+: int or string </P
+><P
+></P
+><UL
+><LI
+><P
+> int, User identifier </P
+></LI
+><LI
+><P
+> string, Primary e-mail address </P
+></LI
+></UL
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>verification_key</CODE
+>
+: string, Reset password key </P
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>verification_expires</CODE
+>
+: int, Date and time when verification_key expires </P
+></LI
+></UL
+><P
+>Returns:</P
+><P
+></P
+><UL
+><LI
+><P
+> int, 1 if verification_key is valid </P
+></LI
+></UL
+></DIV
+><DIV
+CLASS="section"
+><HR><H2
+CLASS="section"
+><A
+NAME="system.listMethods"
+>2.115. system.listMethods</A
+></H2
+><P
+>Prototype:<A
+NAME="AEN6772"
+></A
+><BLOCKQUOTE
+CLASS="BLOCKQUOTE"
+><P
+>system.listMethods ()</P
+></BLOCKQUOTE
+></P
+><P
+>Description:<A
+NAME="AEN6775"
+></A
+><BLOCKQUOTE
+CLASS="BLOCKQUOTE"
+><P
+>This method lists all the methods that the XML-RPC server knows
+how to dispatch.</P
+></BLOCKQUOTE
+></P
+><P
+>Allowed Roles:<A
+NAME="AEN6778"
+></A
+><BLOCKQUOTE
+CLASS="BLOCKQUOTE"
+><P
+></P
+></BLOCKQUOTE
+></P
+><P
+>Parameters:</P
+><P
+></P
+><UL
+><LI
+><P
+>None</P
+></LI
+></UL
+><P
+>Returns:</P
+><P
+></P
+><UL
+><LI
+><P
+> array, List of methods </P
+></LI
+></UL
+></DIV
+><DIV
+CLASS="section"
+><HR><H2
+CLASS="section"
+><A
+NAME="system.methodHelp"
+>2.116. system.methodHelp</A
+></H2
+><P
+>Prototype:<A
+NAME="AEN6791"
+></A
+><BLOCKQUOTE
+CLASS="BLOCKQUOTE"
+><P
+>system.methodHelp (method)</P
+></BLOCKQUOTE
+></P
+><P
+>Description:<A
+NAME="AEN6794"
+></A
+><BLOCKQUOTE
+CLASS="BLOCKQUOTE"
+><P
+>Returns help text if defined for the method passed, otherwise
+returns an empty string.</P
+></BLOCKQUOTE
+></P
+><P
+>Allowed Roles:<A
+NAME="AEN6797"
+></A
+><BLOCKQUOTE
+CLASS="BLOCKQUOTE"
+><P
+></P
+></BLOCKQUOTE
+></P
+><P
+>Parameters:</P
+><P
+></P
+><UL
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>method</CODE
+>
+: string, Method name </P
+></LI
+></UL
+><P
+>Returns:</P
+><P
+></P
+><UL
+><LI
+><P
+> string, Method help </P
+></LI
+></UL
+></DIV
+><DIV
+CLASS="section"
+><HR><H2
+CLASS="section"
+><A
+NAME="system.methodSignature"
+>2.117. system.methodSignature</A
+></H2
+><P
+>Prototype:<A
+NAME="AEN6811"
+></A
+><BLOCKQUOTE
+CLASS="BLOCKQUOTE"
+><P
+>system.methodSignature (method)</P
+></BLOCKQUOTE
+></P
+><P
+>Description:<A
+NAME="AEN6814"
+></A
+><BLOCKQUOTE
+CLASS="BLOCKQUOTE"
+><P
+>Returns an array of known signatures (an array of arrays) for the
+method name passed. If no signatures are known, returns a
+none-array (test for type != array to detect missing signature).</P
+></BLOCKQUOTE
+></P
+><P
+>Allowed Roles:<A
+NAME="AEN6817"
+></A
+><BLOCKQUOTE
+CLASS="BLOCKQUOTE"
+><P
+></P
+></BLOCKQUOTE
+></P
+><P
+>Parameters:</P
+><P
+></P
+><UL
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>method</CODE
+>
+: string, Method name </P
+></LI
+></UL
+><P
+>Returns:</P
+><P
+></P
+><UL
+><LI
+><P
+> array of array, Method signature </P
+><P
+></P
+><UL
+><LI
+><P
+> string </P
+></LI
+></UL
+></LI
+></UL
+></DIV
+><DIV
+CLASS="section"
+><HR><H2
+CLASS="section"
+><A
+NAME="system.multicall"
+>2.118. system.multicall</A
+></H2
+><P
+>Prototype:<A
+NAME="AEN6834"
+></A
+><BLOCKQUOTE
+CLASS="BLOCKQUOTE"
+><P
+>system.multicall (calls)</P
+></BLOCKQUOTE
+></P
+><P
+>Description:<A
+NAME="AEN6837"
+></A
+><BLOCKQUOTE
+CLASS="BLOCKQUOTE"
+><P
+>Process an array of calls, and return an array of results. Calls
+should be structs of the form</P
+><P
+>{'methodName': string, 'params': array}</P
+><P
+>Each result will either be a single-item array containg the result
+value, or a struct of the form</P
+><P
+>{'faultCode': int, 'faultString': string}</P
+><P
+>This is useful when you need to make lots of small calls without
+lots of round trips.</P
+></BLOCKQUOTE
+></P
+><P
+>Allowed Roles:<A
+NAME="AEN6844"
+></A
+><BLOCKQUOTE
+CLASS="BLOCKQUOTE"
+><P
+></P
+></BLOCKQUOTE
+></P
+><P
+>Parameters:</P
+><P
+></P
+><UL
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>calls</CODE
+>
+: array of struct </P
+><P
+></P
+><UL
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>params</CODE
+>
+: array, Method arguments </P
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>methodName</CODE
+>
+: string, Method name </P
+></LI
+></UL
+></LI
+></UL
+><P
+>Returns:</P
+><P
+></P
+><UL
+><LI
+><P
+> array of mixed or struct </P
+><P
+></P
+><UL
+><LI
+><P
+> array of mixed </P
+></LI
+><LI
+><P
+> struct </P
+><P
+></P
+><UL
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>faultCode</CODE
+>
+: int, XML-RPC fault code </P
+></LI
+><LI
+><P
+> <CODE
+CLASS="parameter"
+>faultString</CODE
+>
+: int, XML-RPC fault detail </P
+></LI
+></UL
+></LI
+></UL
+></LI
+></UL
+></DIV
+></DIV
+></DIV
+></BODY
+></HTML
+>
\ No newline at end of file