There have been a number of changes to the overall system since
version 1.06 some of which affect the way the API behaves, and
there have also been a number of changes to functions in the API
independent of the system changes.

System Changes.

Permissions

NicTool now uses an action-oriented permissions system. Group
objects may be created with specific sets of permissions defining
what actions are allowed by users inside the group. Users can be
created with their own set of permissions, or by default they
inherit the permissions defined for their group. The Permissions
define what types of objects can be created, deleted, modified, or
delegated. (See new_user and new_group)

Delegation

Users of NicTool can now "Delegate" Zones and Zone Records to
any of the sub-groups available to them. They can specify what the
delegate group can do to the delegated Zone or Record, including
modify,re-delegate, and remove delegation. In addition they can
specify whether Zone Records can be added to or deleted from a
delegated Zone. Delegation provides a way for certain groups of
users to have limited access to Zones and Records. One application
of this feature is that it enables administrators to delegate
reverse-lookup Zones and Records ("in-addr.arpa" zones) to an
appropriate person. (See delegate_zones and delegate_zone_records.)

Nameservers

With the Permissions and Delegation changes made to the system,
the behavior of Nameserver objects needed to be changed as well.
When a new Group is created, you must now specify the list of
Nameserver objects that users in that group may publish zones to.
(See new_group and edit_group.)

Creating/Modifying Objects

In version 1.06, the function save_X
was used both to create and modify objects of type X. Each of those
functions has been split into new_X and
edit_X. This is a less clutered
protocol.

API Changes.

List parameters

Some functions take some kind of "list" as a parameter. In
version 1.06 it was required to be a comma-separated string. You
can now specify the list as a true array as well. A comma-separated
string is still allowed for backwards compatibility.

Use this function to create new User objects. You can specify
all of the permissions parameters or you can include the parameter
inherit_group_permissions with a
value of '1' to explicitly have
permissions inherited from the user's group.