v4.0 Groups API


TrueSight Network Automation REST API – GroupService
The base URL for the API is:

https://serverName:portNumber/bca-networks/api

groups

{{status subtle="false" colour="Blue" title="GET"/}}

 /v4.0/groups
Click here to expand...


Description

Retrieves groups, matching any filter criteria or view, with the returned result being abbreviated or partially-detailed groups; may filter by filterable group dynamic fields by including query parameters in the form 'filter.dynamicFieldName=value'

Parameters

Name

Located in

Description

Default

Schema

query

Filter for groups matching this name, asterisk wildcards allowed


string

filter.realm

query

Filter for groups that belong to this realm, either by exact name or by database key


string

filter.staticGroups

query

Filter for static groups or non-static groups; when true, returns only static groups; when false, returns only non-static groups; when this filter is absent, no filtering is done


boolean

filter.autoGroups

query

Filter for auto-groups or non-auto-groups; when true, returns only auto-groups; when false, returns only non-auto-groups; when this filter is absent, no filtering is done


boolean

filter.emptyAutoGroups

query

Filter for empty auto-groups or non-empty auto-groups; when true, returns both auto-groups and empty auto-groups; when false, returns all the groups except for the empty auto-groups; when this filter is absent, no filtering is done; This can be set only when filter.autoGroup is set to true


boolean

filter.action

query

Filter for groups where the user is allowed to perform this action, by action GUID


string

view

query

Filter for groups per the named private or shared view; any input filter.* or orderBy parameters override those settings in the view


string

orderBy

query

Sort by the specified attribute (name, realm, deviceCount, autoGroupFlag,or a listable group dynamic field name) in the specified order (prefix with a '+' for ascending or a '-' for descending)


string 
Enum: [
 "+name",
 "-name",
 "+deviceCount",
 "-deviceCount",
 "+realm",
 "-realm",
 "+autoGroupFlag",
 "-autoGroupFlag"
]

offset

query

Return the specified page number

1

integer

limit

query

Define the number of rows in a page or the maximum number of groups to return

25

integer

Authorization

header

Authorization token formatted as 'Bearer [token]'


string *

Responses

Code

Description

Schema

200

successful operation

400

Bad Request: The filter.staticGroups and filter.autoGroups query parameters cannot both be false, as that will match no groups.


401

Unauthorized: Failed to provide a suitable Authorization header or accessToken cookie, or the specified user is not logged in


403

Forbidden: Not allowed to access groups


404

Not found: No matching view found


500

Internal server error: Unexpected exception occurred


{{status subtle="false" colour="Green" title="POST"/}}

 /v4.0/groups
Click here to expand...


Parameters

Name

Located in

Description

Default

Schema

body

body

Complete attributes of the new group


Authorization

header

Authorization token formatted as 'Bearer [token]'


string *

Responses

Code

Description

Schema

201

Created: New group successfully added


400

Bad request: Input group DTO is missing or new group is invalid


401

Unauthorized: Failed to provide a suitable Authorization header or accessToken cookie, or the specified user is not logged in


403

Forbidden: Not allowed to add a new group or not allowed to specify an ACL


500

Internal server error: Unexpected exception occurred


{{status subtle="false" colour="Green" title="POST"/}}

 /v4.0/groups/changes_to_acls
Click here to expand...


Parameters

Name

Located in

Description

Default

Schema

body

body

Changes to be made in the access control lists


Authorization

header

Authorization token formatted as 'Bearer [token]'


string *

Responses

Code

Description

Schema

200

OK: Access control lists updated successfully


400

Bad request: Group access control lists are not enabled, input DTO is missing or invalid, or a modified group is invalid


401

Unauthorized: Failed to provide a suitable Authorization header or accessToken cookie, or the specified user is not logged in


403

Forbidden: Not allowed to manage the access control lists of groups,not allowed to modify a particular group, or not allowed to grant or revoke a particular right


500

Internal server error: Unexpected exception occurred


{{status subtle="false" colour="Blue" title="GET"/}}

 /v4.0/groups/custom_rights_management_information
Click here to expand...


Parameters

Name

Located in

Description

Default

Schema

realmNameOrKey

query

Name or database key of the realm that the group of interest belongs to; required when retrieving information useful for managing rights in a single group ACL with multiple roles while editing a group; when null, retrieves information useful for managing rights across all groups


string

Authorization

header

Authorization token formatted as 'Bearer [token]'


string *

Responses

Code

Description

Schema

200

successful operation

400

Bad request: Group access control lists are not enabled


401

Unauthorized: Failed to provide a suitable Authorization header or accessToken cookie, or the specified user is not logged in


404

Not found: No single matching accessible realm found


500

Internal server error: Unexpected exception occurred


{{status subtle="false" colour="Yellow" title="PUT"/}}

 /v4.0/groups/{id
}
Click here to expand...


Parameters

Name

Located in

Description

Default

Schema

id

path

Database key of the group to be modified


string *

body

body

Complete new attribute values for the group; anything left out will be considered to be null and will be nulled out in the group; any required dynamic fields missing or null in the input will revert to default values; to change the realm a group belongs to, must first remove all devices from the group


Authorization

header

Authorization token formatted as 'Bearer [token]'


string *

Responses

Code

Description

Schema

200

successful operation

400

Bad request: Input group DTO is missing, modified group is invalid, or attempted to make an invalid type of change (such as renaming an auto-group); see error message for details


401

Unauthorized: Failed to provide a suitable Authorization header or accessToken cookie, or the specified user is not logged in


403

Forbidden: Not allowed to modify the group or not allowed to modify the ACL


404

Not found: No single matching accessible group found


500

Internal server error: Unexpected exception occurred


{{status subtle="false" colour="Red" title="DELETE"/}}

 /v4.0/groups/{id
}
Click here to expand...


Parameters

Name

Located in

Description

Default

Schema

id

path

Database key of the group to be deleted


string *

Authorization

header

Authorization token formatted as 'Bearer [token]'


string *

Responses

Code

Description

Schema

200

successful operation

string

400

Bad request: group is currently in use or is a non-empty auto-group


401

Unauthorized: Failed to provide a suitable Authorization header or accessToken cookie, or the specified user is not logged in


403

Forbidden: Not allowed to delete the group


404

Not found: No single matching accessible group found


500

Internal server error: Unexpected exception occurred


{{status subtle="false" colour="Yellow" title="PATCH"/}}

 /v4.0/groups/{id
}
Click here to expand...


Parameters

Name

Located in

Description

Default

Schema

id

path

Database key of the group to be modified


string *

body

body

New attribute values for the group, in JSON Patch format


Authorization

header

Authorization token formatted as 'Bearer [token]'


string *

Responses

Code

Description

Schema

200

successful operation

400

Bad request: Input JSON patch information is missing, modified group is invalid, or attempted to make an invalid type of change (such as renaming an auto-group); see error message for details


401

Unauthorized: Failed to provide a suitable Authorization header or accessToken cookie, or the specified user is not logged in


403

Forbidden: Not allowed to modify the group or not allowed to modify the ACL


404

Not found: No single matching accessible group found


500

Internal server error: Unexpected exception occurred


{{status subtle="false" colour="Blue" title="GET"/}}

 /v4.0/groups/{id}/devices
Click here to expand...


Parameters

Name

Located in

Description

Default

Schema

id

path

Database key of the group of interest


string *

Authorization

header

Authorization token formatted as 'Bearer [token]'


string *

Responses

Code

Description

Schema

200

successful operation

401

Unauthorized: Failed to provide a suitable Authorization header or accessToken cookie, or the specified user is not logged in


403

Forbidden: Not allowed to access groups


404

Not found: No single matching accessible group found


500

Internal server error: Unexpected exception occurred


{{status subtle="false" colour="Yellow" title="PUT"/}}

 /v4.0/groups/{id}/devices
Click here to expand...


Description

Updates the group to have the exact specified device members; any input device that is not already a member of the group is added to the group; any current member device that is not in the input list is removed from the group; an event is logged for each device moved in to or out of the group; note that this can be a lengthy request, as configuration profiled dynamic fields and compliance status must be updated to reflect the changes to the group membership

Parameters

Name

Located in

Description

Default

Schema

id

path

Database key of the group of interest


string *

body

body

The devices that are to make up the member devices of the group, replacing the current members of the group (so devices are added to and removed from the group as needed); can be an empty list to remove all current member devices from the group


[ 
  ComponentId 
]

Authorization

header

Authorization token formatted as 'Bearer [token]'


string *

Responses

Code

Description

Schema

200

successful operation

string

400

Bad request: A device database name or key is not valid, a device is not in the same realm as the group, or attempted to update an auto-group


401

Unauthorized: Failed to provide a suitable Authorization header or accessToken cookie, or the specified user is not logged in


403

Forbidden: Not allowed to modify the group


404

Not found: No single matching accessible group found


500

Internal server error: Unexpected exception occurred


{{status subtle="false" colour="Yellow" title="PUT"/}}

 /v4.0/groups/{id}/devices/{deviceId
}
Click here to expand...


Parameters

Name

Located in

Description

Default

Schema

id

path

Database key of the group of interest


string *

deviceId

path

Database key of the device to be added to the group


string *

Authorization

header

Authorization token formatted as 'Bearer [token]'


string *

Responses

Code

Description

Schema

200

successful operation

string

400

Bad request: Device database key is not valid, device is not in the same realm as the group, or attempted to add a device to an auto-group


401

Unauthorized: Failed to provide a suitable Authorization header or accessToken cookie, or the specified user is not logged in


403

Forbidden: Not allowed to modify the group


404

Not found: No single matching accessible group found, or no single matching accessible device found


500

Internal server error: Unexpected exception occurred


{{status subtle="false" colour="Red" title="DELETE"/}}

 /v4.0/groups/{id}/devices/{deviceId
}
Click here to expand...


Parameters

Name

Located in

Description

Default

Schema

id

path

Database key of the group of interest


string *

deviceId

path

Database key of the device to be removed from the group


string *

Authorization

header

Authorization token formatted as 'Bearer [token]'


string *

Responses

Code

Description

Schema

200

successful operation

string

400

Bad request: Device database key is not valid, device is not a member of the group, or attempted to remove a device from an auto-group


401

Unauthorized: Failed to provide a suitable Authorization header or accessToken cookie, or the specified user is not logged in


403

Forbidden: Not allowed to modify the group


404

Not found: No single matching accessible group found, or no single matching accessible device found


500

Internal server error: Unexpected exception occurred


{{status subtle="false" colour="Blue" title="GET"/}}

 /v4.0/groups/{nameOrKey
}
Click here to expand...


Parameters

Name

Located in

Description

Default

Schema

nameOrKey

path

Name or database key of the group of interest; a name must be unique across all realms for a group to be returned


string *

Authorization

header

Authorization token formatted as 'Bearer [token]'


string *

Responses

Code

Description

Schema

200

successful operation

401

Unauthorized: Failed to provide a suitable Authorization header or accessToken cookie, or the specified user is not logged in


403

Forbidden: Not allowed to access groups


404

Not found: No single matching accessible group found


500

Internal server error: Unexpected exception occurred



Object Definitions

Object

Schema

AbbreviatedDeviceDTO


Click here to expand...


{ 
    id: string 
    The device's unique database key 

     name: string 
    The device's unique display name 

     canCopyFlag: boolean 
   {{Whether or not the user is allowed to copy this device }}

     canDeleteFlag: boolean 
   {{Whether or not the user is allowed to delete this device }}

     canEditFlag: boolean 
   {{Whether or not the user is allowed to edit this device }}

     canViewTranscriptFlag: boolean 
    Whether or not the user can view recorded device interaction transcripts 

     deviceDetailsLink: string 
    Link to get complete details about this device 

     realmId: string 
    The database key of the realm this device belongs to 

     realmName: string 
    The name of the realm this device belongs to 

     lastSnapshotErrorMessage: string 
    Reason for the failure of the most recently attempted snapshot action 

     modelName: string 
    The discovered model 

     osImageName: string 
    The full name of the discovered operating system version 

     deviceTypeId: ComponentId 
    Identifies the owning device type and vendor 

     categoryId: integer 
    The category 

     categoryName: string 
    The meaning of the numeric categoryId 

     onlineFlag: boolean 
    Whether or not this device is online 

     discrepanciesFlag: boolean 
    Whether or not this device has discrepancies 

     violationsFlag: boolean 
    Whether or not this device has compliance violations 

     primaryInterfaceAddress: string 
    The primary interface IP address, host name, or URL 

     primaryInterfaceDeviceAgentId: string 
    The database key of the primary interface device agent 

     primaryInterfaceDeviceAgentName: string 
    The name of the primary interface device agent 

     primaryInterfaceDeviceAgentNIC: string 
    The name of the primary interface device agent NIC 

     primaryInterfaceAccessModeId: integer 
    The primary interface access mode 

     primaryInterfaceAccessModeName: string 
    The meaning of the numeric primaryInterfaceAccessModeId 

     primaryInterfaceTransferModeId: integer 
    The primary interface transfer mode 

     primaryInterfaceTransferModeName: string 
    The meaning of the numeric primaryInterfaceTransferModeId 

     primaryInterfaceDeviceSecurityProfileId: string 
    The database key of the primary interface device security profile 

     primaryInterfaceDeviceSecurityProfileName: string 
    The name of the primary interface device security profile 

     dynamicFields: [ 
      The dynamic fields 

       DynamicFieldValueDTO
    ] 

     lastSnapshotTimestamp: date-time 
    The date/time of the most recently attempted snapshot action 
    Example: 2017-01-31T13:45:00.000+0000

     lastSnapshotStatus: string 
    The status of the most recently attempted snapshot action; a null indicates the device has never attempted a snapshot 
}

AbbreviatedGroupDTO


Click here to expand...


{ 
    id: string 
    The group's unique database key 

     name: string 
    The group's display name 

     canCopyFlag: boolean 
    Whether or not the user is allowed to copy this group 

     canDeleteFlag: boolean 
    Whether or not the user is allowed to delete this group 

     canEditFlag: boolean 
    Whether or not the user is allowed to edit this group 

     deviceCount: integer 
    The number of devices currently in this group 

     realmId: ComponentId 
    Identifies the realm this group belongs to 

     realmDetailsLink: string 
    Link to get complete details about the parent realm 

     autoGroupFlag: boolean 
    Whether or not this group is an auto-group 

     dynamicFields: [ 
      The dynamic fields 

       DynamicFieldValueDTO
    ] 

     memberDevicesLink: string 
    Link to get a list of the member devices 
}

AclChangesDTO


Click here to expand...


{ 
    components: [ 
      The components whose access control list is to be updated; components can be groups, rule sets, or templates, which are the types of components that support ACLs 

       ComponentId 
    ] * 

     customRights: { 
      The changes to be made to the rights in each component's ACL; this is a map where the key is a right string appropriate to the components, and the value is a flag indicating the type of change to make to the right; for the flag value, a null means no change, a true means grant the right, and a false means revoke the right; when this field is null, the specified roles are set back to default rights 
    } 

     roles: [ 
      The roles whose rights are to be modified in the access control list of each component 

       ComponentId 
    ] * 
}

AclDTO


Click here to expand...


{ 
    canEditFlag: boolean 
   {{Whether or not the user is allowed to edit (grant or revoke) the rights for the specified role (read-only) }}

     roleId: ComponentId *
    The role being granted the specified rights 

     rights: [ 
      The rights being granted to the users who belong to the specified role; the right strings used here are specific to the type of component that owns this ACL; when null, means default rights are granted to the role (that is, the rights granted by the role definition, not by this ACL); when non-null but empty, means no rights are granted to the role;otherwise, the specified rights are granted to the role 

       string 
    ] 
}

ComponentId


Click here to expand...


{ 
    id: string 
    The database key of the component; an incoming component can be identified either by its database key, or by its unique name, or by its name with qualifiers which are unique when combined; when this database key is present, it takes precedence and componentName and qualifiers(when present) are used to verify the retrieved component 

     componentName: string 
    The name of the component; an incoming component can be identified either by its database key, or by its unique name, or by its name with qualifiers which are unique when combined; this name is used to verify any component retrieved by database key, and is used if there is no database key or if the database key fails to resolve; for componentType Configuration and HardwareInventory, componentName is the created timestamp (in milliseconds); for componentType SecurityVulnerability, componentName is the securityVulnerabilityID; for componentType SnmpManagerStation, componentName is the address 

     componentType: string * 
    The type of the component, used to verify what is retrieved by key/name; valid values are: Combogroup, Condition, Configuration, Device, DeviceAdapter, DeviceAgent, DeviceSecurityProfile DynamicField, EmailDistributionList, Group, HardwareInventory, JobApprovalType, Keyword, Model, OsImage, PredefinedJob, Realm, RemoteFileServer, Role, Rule, RuleSet, SecurityVulnerability, SnmpManagerStation, Template, and User 

     qualifiers: { 
      Any additional single qualifier needed to identify the component uniquely, when the name alone is not sufficient; the map key is the extra attribute name string; the map value string completes the identification of the component; for componentType Configuration and HardwareInventory: key=deviceKey, value=database key of the device the item belongs to, key=deviceName, value=name of the device the item belongs to, key=timestamp, value=creation date/time in server display format; for componentType DeviceAdapter: key=adapterType, value=type of the device adapter, key=parent, value=parent or owner used for organizing certain types of adapters, key=vendorName, value=name of the vendor that owns a device type; for componentType DynamicField: key=type, value=base class name of the component associated with the dynamic field; for componentType Group, ComboGroup: key=realmName, value=name of the realm the group belongs to; for componentType Model: key=vendorGuid, value=the vendor GUID; for componentType OsImage: key=filename, value=name of the file(s) making up the image; for componentType SecurityVulnerability: key=vendorGuid, value=the vendor GUID 
    } 
}

CustomRightsManagementDTO


Click here to expand...


{ 
    availableCustomRights: [ 
      Full set of rights applicable to a component's ACL 

       string 
    ] 

     components: [ 
      The components whose access control list the user is allowed to edit; components can be groups, rule sets, or templates 

       ComponentId 
    ] 

     defaultCustomRights: [ 
      For each role the user is allowed to edit, which of the availableCustomRights are granted by that role 

       PerRoleRightsDTO
    ] 

     grantedCustomRights: [ 
      Of the availableCustomRights, the rights the user is granted, and thus the rights the user is allowed to modify (grant or revoke) in the components 

       string 
    ] 
}

DynamicFieldValueDTO


Click here to expand...


{ 
    id: string 
    The database key of the dynamic field whose value this is (read-only) 

     name: string 
    The name of the dynamic field (read-only) 

     values: [ 
      The value(s) for the dynamic field; for a single-value field, only the first entry is relevant; read-only for Auto Derived and Configuration Profiled types 

       string 
    ] 

     dynamicFieldDetailsLink: string 
    Link to get more detailed information about the dynamic field (read-only) 
}

GroupDTO


Click here to expand...


{ 
    id: string 
    The group's unique database key (read-only) 

     name: string * 
    The group's display name 

     acl: [ 
      Which span actions users can execute on this group, for the accessible roles, containing group rights; applicable only when group ACLs are enabled in the system parameters; ignored on input if group ACLs are disabled; if there are multiple entries for the same role, the rights are combined together; during an update, a null value reverts the custom rights of accessible roles back to default rights 

       AclDTO
    ] 

     allowedActions: [ 
      The span actions the user is allowed to perform on this group, containing the GUIDs of these actions (read-only) 

       string 
    ] 

     canCopyFlag: boolean 
    Whether or not the user is allowed to copy this group (read-only) 

     canDeleteFlag: boolean 
    Whether or not the user is allowed to delete this group (read-only) 

     canEditFlag: boolean 
    Whether or not the user is allowed to edit this group (read-only) 

     offlineDeviceCount: integer 
    How many of the member devices are currently offline (read-only) 

     onlineDeviceCount: integer 
    How many of the member devices are currently online (read-only) 

     realmId: ComponentId *
    Identifies the realm this group belongs to 

     realmDetailsLink: string 
    Link to get complete details about the parent realm (read-only) 

     autoGroupFlag: boolean 
    Whether or not this group is an auto-group (read-only) 

     dynamicFields: [ 
      The dynamic fields 
 

    • DynamicFieldValueDTO
          
      ] 

           memberDevicesLink: string 
          Link to get a list of the member devices (read-only) 
      }

JsonPatch


Click here to expand...


[ 
    A list of JSON Patch operations 

     JsonPatch.OneOperation
  ]

JsonPatch.OneOperation

JsonPatch.Pointer


Click here to expand...


string 
  Pointer or path to an element or property

JsonPatch.Add

Click here to expand...


{ 
    op: string * 
   Enum: [
     "add"
   ]
    value: any * 
    path: JsonPatch.Pointer*
}

JsonPatch.Remove

Click here to expand...


{ 
    op: string * 
   Enum: [
     "remove"
   ]
    path: JsonPatch.Pointer*
}

JsonPatch.Replace

Click here to expand...


{ 
    op: string * 
   Enum: [
     "replace"
   ]
    value: any * 
    path: JsonPatch.Pointer*
}

JsonPatch.Move

Click here to expand...


{ 
    op: string * 
   Enum: [
     "move"
   ]
    path: JsonPatch.Pointer*
    from: JsonPatch.Pointer*
}

JsonPatch.Copy

Click here to expand...


{ 
    op: string * 
   Enum: [
     "copy"
   ]
    path: JsonPatch.Pointer*
    from: JsonPatch.Pointer*
}

JsonPatch.Test

Click here to expand...


{ 
    op: string * 
   Enum: [
     "test"
   ]
    value: any * 
    path: JsonPatch.Pointer*
}

PerRoleRightsDTO

Click here to expand...


{ 
    role: ComponentId 
    A role that can used for editing an ACL 

     rights: [ 
      The rights granted by the role; in case of groups, these are network rights for the realm that the group belongs to 

       string 
    ] 
}

 

Tip: For faster searching, add an asterisk to the end of your partial query. Example: cert*