2. User Management

2.1. Users

GET /users/

HTTP GET/HEAD rest route. HEAD will be the same result except their will be no body.

Example request:

GET /rest/users/ HTTP/1.1
Host: datagerry.com
Accept: application/json

Example response:

HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 1000
X-Total-Count: 1
X-API-Version: 1.0

{
   "results": [
        {
          "public_id": 1,
          "user_name": "admin",
          "active": true,
          "group_id": 1,
          "registration_time": "2020-01-01 00:00:00.000000",
          "authenticator": "LocalAuthenticationProvider",
          "email": null,
          "password": "YWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXo=",
          "image": null,
          "first_name": null,
          "last_name": null
        }
  ],
  "count": 1,
  "total": 1,
  "parameters": {
    "limit": 10,
    "sort": "public_id",
    "order": 1,
    "page": 1,
    "filter": {},
    "optional": {}
  },
  "pager": {
    "page": 1,
    "page_size": 10,
    "total_pages": 1
  },
  "pagination": {
    "current": "http://datagerry.com/rest/users/",
    "first": "http://datagerry.com/rest/users/?page=1",
    "prev": "http://datagerry.com/rest/users/?page=1",
    "next": "http://datagerry.com/rest/users/?page=1",
    "last": "http://datagerry.com/rest/users/?page=1"
  },
  "response_type": "GET",
  "model": "User",
  "time": "2020-01-01 00:00:00.000000"
}
Query Parameters
  • sort – the sort field name. default is public_id

  • order – the sort order value for ascending or descending. default is 1 for ascending

  • page – the current view page. default is 1

  • limit – max number of results. default is 10

  • filter – a mongodb query filter. default is {} which means everything

Request Headers
Response Headers
Status Codes
GET /users/(int: public_id)

HTTP GET/HEAD rest route for a single resource by its ID.

Example request

GET /rest/users/1 HTTP/1.1
Host: datagerry.com
Accept: application/json

Example response

HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 100
X-API-Version: 1.0

{
    "result": {
        "public_id": 1,
        "user_name": "admin",
        "active": true,
        "group_id": 1,
        "registration_time": "2020-01-01 00:00:00.000000",
        "authenticator": "LocalAuthenticationProvider",
        "email": null,
        "password": "YWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXo=",
        "image": null,
        "first_name": null,
        "last_name": null
    },
    "response_type": "GET",
    "model": "User",
    "time": "2020-01-01 00:00:00.000000"
}
Request Headers
Response Headers
Status Codes
POST /users/

HTTP POST route for inserting a new user.

Example request

POST /rest/users/ HTTP/1.1
Host: datagerry.com
Accept: application/json

{
    "user_name": "test",
    "active": true,
    "group_id": 2,
    "password": "YWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXo=",
}

Example response

HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 100
Location: http://datagerry.com/rest/users/2
X-API-Version: 1.0

{
  "result_id": 2,
  "raw": {
        "public_id": 2,
        "user_name": "test",
        "active": true,
        "group_id": 2,
        "registration_time": "2020-01-01 00:00:00.000000",
        "authenticator": "LocalAuthenticationProvider",
        "email": null,
        "password": "YWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXo=",
        "image": null,
        "first_name": null,
        "last_name": null
    },
  "response_type": "INSERT",
  "model": "User",
  "time": "1970-01-01T00:00:00"
}
Request Headers
Response Headers
Status Codes
PUT /users/(int: public_id)

HTTP PUT/PATCH route for updating a existing user.

Example request

PUT /rest/users/1 HTTP/1.1
Host: datagerry.com
Accept: application/json

{
    "public_id": 1,
    "user_name": "admin",
    "active": false,
    "group_id": 1,
    "registration_time": "2020-01-01 00:00:00.000000",
    "authenticator": "LocalAuthenticationProvider",
    "email": null,
    "password": "YWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXo=",
    "image": null,
    "first_name": null,
    "last_name": null
}

Example response

HTTP/1.1 202 ACCEPTED
Content-Type: application/json
Content-Length: 100
Location: http://datagerry.com/rest/users/1
X-API-Version: 1.0

{
    "result": {
        "public_id": 1,
        "user_name": "admin",
        "active": false,
        "group_id": 1,
        "registration_time": "2020-01-01 00:00:00.000000",
        "authenticator": "LocalAuthenticationProvider",
        "email": null,
        "password": "YWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXo=",
        "image": null,
        "first_name": null,
        "last_name": null
    },
    "response_type": "UPDATE",
    "model": "User",
    "time": "2020-01-01 00:00:00.000000"
}
Request Headers
Response Headers
Status Codes
DELETE /users/(int: public_id)

HTTP DELETE route for deleting a existing user.

Example request

DELETE /rest/users/1 HTTP/1.1
Host: datagerry.com
Accept: application/json

Example response

HTTP/1.1 202 ACCEPTED
Content-Type: application/json
Content-Length: 100
X-API-Version: 1.0

{
    "deleted_entry": {
        "public_id": 1,
        "user_name": "admin",
        "active": false,
        "group_id": 1,
        "registration_time": "2020-01-01 00:00:00.000000",
        "authenticator": "LocalAuthenticationProvider",
        "email": null,
        "password": "YWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXo=",
        "image": null,
        "first_name": null,
        "last_name": null
    },
  "response_type": "DELETE",
  "model": "User",
  "time": "2020-01-01 00:00:00.000000"
}
Request Headers
Response Headers
Status Codes

2.2. Groups

GET /groups/

HTTP GET/HEAD rest route. HEAD will be the same result except their will be no body.

Example request:

GET /rest/groups/ HTTP/1.1
Host: datagerry.com
Accept: application/json

Example response:

HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 1000
X-Total-Count: 1
X-API-Version: 1.0

{
   "results": [
        {
            "public_id": 1,
            "name": "admin",
            "label": "Administrator",
            "rights": [
                {
                    "level": 0,
                    "name": "base.*",
                    "label": "base.*",
                    "description": "Base application right",
                    "is_master": true
                }
            ]
        }
  ],
  "count": 1,
  "total": 1,
  "parameters": {
    "limit": 10,
    "sort": "public_id",
    "order": 1,
    "page": 1,
    "filter": {},
    "optional": {}
  },
  "pager": {
    "page": 1,
    "page_size": 10,
    "total_pages": 1
  },
  "pagination": {
    "current": "http://datagerry.com/rest/groups/",
    "first": "http://datagerry.com/rest/groups/?page=1",
    "prev": "http://datagerry.com/rest/groups/?page=1",
    "next": "http://datagerry.com/rest/groups/?page=1",
    "last": "http://datagerry.com/rest/groups/?page=1"
  },
  "response_type": "GET",
  "model": "Group",
  "time": "2020-01-01 00:00:00.000000"
}
Query Parameters
  • sort – the sort field name. default is public_id

  • order – the sort order value for ascending or descending. default is 1 for ascending

  • page – the current view page. default is 1

  • limit – max number of results. default is 10

  • filter – a mongodb query filter. default is {} which means everything

Request Headers
Response Headers
Status Codes
GET /groups/(int: public_id)

HTTP GET/HEAD rest route for a single resource by its ID.

Example request

GET /rest/groups/1 HTTP/1.1
Host: datagerry.com
Accept: application/json

Example response

HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 100
X-API-Version: 1.0

{
    "result": {
        "public_id": 1,
        "name": "admin",
        "label": "Administrator",
        "rights": [
            {
                "level": 0,
                "name": "base.*",
                "label": "base.*",
                "description": "Base application right",
                "is_master": true
            }
        ]
    },
    "response_type": "GET",
    "model": "Group",
    "time": "2020-01-01 00:00:00.000000"
}
Request Headers
Response Headers
Status Codes
POST /groups/

HTTP POST route for inserting a new group.

Example request

POST /rest/groups/ HTTP/1.1
Host: datagerry.com
Accept: application/json

{
    "name": "test",
    "label": "test",
    "rights": [
        "base.framework.object.*"
    ]
}

Example response

HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 100
Location: http://datagerry.com/rest/groups/3
X-API-Version: 1.0

{
    "result_id": 3,
    "raw": {
        "public_id": 3,
        "name": "test",
        "label": "test",
        "rights": [
            {
                "level": 10,
                "name": "base.framework.object.*",
                "label": "object.*",
                "description": "Manage objects from framework",
                "is_master": true
            }
        ]
    },
    "response_type": "INSERT",
    "model": "Group",
    "time": "2020-01-01 00:00:00.000000"
}
Request Headers
Response Headers
Status Codes
PUT /groups/(int: public_id)

HTTP PUT/PATCH route for updating a existing user.

Example request

PUT /rest/groups/3 HTTP/1.1
Host: datagerry.com
Accept: application/json

{
    "public_id": 3,
    "name": "test",
    "label": "Test",
    "rights": [
        "base.framework.object.*"
    ]
}

Example response

HTTP/1.1 202 ACCEPTED
Content-Type: application/json
Content-Length: 100
Location: http://datagerry.com/rest/groups/3
X-API-Version: 1.0

{
    "result": {
        "public_id": 3,
        "name": "test",
        "label": "Test",
        "rights": [
            "base.framework.object.*"
        ]
    },
    "response_type": "UPDATE",
    "model": "Group",
    "time": "2020-01-01 00:00:00.000000"
}
Request Headers
Response Headers
Status Codes
DELETE /groups/(int: public_id)

HTTP DELETE route for deleting a existing user.

Note

Group with PublicID 1 (Admin) & 2 (User) can not be deleted!

Example request

DELETE /rest/groups/3 HTTP/1.1
Host: datagerry.com
Accept: application/json

Example response

HTTP/1.1 202 ACCEPTED
Content-Type: application/json
Content-Length: 100
X-API-Version: 1.0

{
    "deleted_entry":  {
        "public_id": 3,
        "name": "test",
        "label": "Test",
        "rights": [
            {
                "level": 10,
                "name": "base.framework.object.*",
                "label": "object.*",
                "description": "Manage objects from framework",
                "is_master": true
            }
        ]
    },
    "response_type": "DELETE",
    "model": "Group",
    "time": "2020-01-01 00:00:00.000000"
}
Query Parameters
  • action – Parameter of GroupDeleteMode. MOVE will push all users in this group to passed group_id and DELETE will delete all users in this group.

  • group_id – The PublicID of the group which the MOVE action will be use.

Request Headers
Response Headers
Status Codes

2.3. Rights

Note

The right routes are static.

GET /rights/

HTTP GET/HEAD rest route. HEAD will be the same result except their will be no body.

Example request:

GET /rest/rights/ HTTP/1.1
Host: datagerry.com
Accept: application/json

Example response:

HTTP/1.1 202 ACCEPTED
Content-Type: application/json
Content-Length: 100
X-API-Version: 1.0

{
    "results": [{
         "level": 0,
         "name": "base.*",
         "label": "base.*",
         "description": "Base application right",
         "is_master": true
    }],

    "count": 1,
    "total": 62,
    "parameters": {
        "limit": 1,
        "sort": "name",
        "order": 1,
        "page": 1,
        "filter": {},
        "optional": {
            "view": "list"
        }
   },
   "pager":{
        "page": 1,
        "page_size": 1,
        "total_pages": 62
   },
   "pagination": {
        "current": "http://datagerry.com/rest/rights/",
        "first": "http://datagerry.com/rest/rights/?page=1",
        "prev": "http://datagerry.com/rest/rights/?page=1",
        "next": "http://datagerry.com/rest/rights/?page=2",
        "last": "http://datagerry.com/rest/rights/?page=62"
   },
   "response_type": "GET",
   "model": "Right",
   "time": "2020-01-01 00:00:00.000000"
}
Query Parameters
  • sort – the sort field name. default is name.

  • order – the sort order value for ascending or descending. default is 1 for ascending

  • page – the current view page. default is 1

  • limit – max number of results. default is 10

  • filter – a mongodb query filter. default is {} which means everything

  • optionalview parameter. Default is list.

Request Headers
Response Headers
Status Codes
GET /rights/(str: name)

HTTP GET/HEAD rest route for a single resource by its name.

Example request

GET /rest/rights/base.* HTTP/1.1
Host: datagerry.com
Accept: application/json

Example response

HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 100
X-API-Version: 1.0

{
    "result": {
        "level": 0,
        "name": "base.*",
        "label": "base.*",
        "description": "Base application right",
        "is_master": true
    },
    "response_type": "GET",
    "model": "Right",
    "time": "2020-01-01 00:00:00.000000"
}
Request Headers
Response Headers
Status Codes
GET /rights/levels

HTTP GET/HEAD rest route for a all security levels.

Example request

GET /rest/rights/levels HTTP/1.1
Host: datagerry.com
Accept: application/json

Example response

HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 100
X-API-Version: 1.0

{
  "result": {
    "CRITICAL": 100,
    "DANGER": 80,
    "SECURE": 50,
    "PROTECTED": 30,
    "PERMISSION": 10,
    "NOTSET": 0
  },
  "response_type": "GET",
  "model": "Security-Level",
  "time": "2020-01-01 00:00:00.000000"
}
Request Headers
Response Headers
Status Codes
  • 200 OK – Everything is fine.

2.4. Settings

GET /users/(int: user_id)/settings/

HTTP GET/HEAD rest route. HEAD will be the same result except their will be no body.

Example request:

GET /rest/users/1/settings/ HTTP/1.1
Host: datagerry.com
Accept: application/json

Example response:

HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 1000
X-Total-Count: 1
X-API-Version: 1.0

{
  "results": [
    {
      "identifier": "test",
      "user_id": 1,
      "payload": {},
      "setting_type": "GLOBAL"
    }
  ],
  "response_type": "GET",
  "model": "UserSetting",
  "time": "2020-01-01 00:00:00.000000"
}
Request Headers
Response Headers
Status Codes
GET /users/(int: public_id)/settings/(str: identifier)

HTTP GET/HEAD rest route for a single resource by the UserID and the setting identifier.

Example request

GET /rest/users/1/settings/test HTTP/1.1
Host: datagerry.com
Accept: application/json

Example response

HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 100
X-API-Version: 1.0

{
  "results": [
    {
      "identifier": "test",
      "user_id": 1,
      "payload": {},
      "setting_type": "GLOBAL"
    }
  ],
  "response_type": "GET",
  "model": "UserSetting",
  "time": "2020-01-01 00:00:00.000000"
}
Request Headers
Response Headers
Status Codes
POST /users/(int: public_id)/settings/

HTTP POST route for inserting a new setting.

Example request

POST /rest/users/1/settings/ HTTP/1.1
Host: datagerry.com
Accept: application/json

{
    "identifier" : "test",
    "user_id" : 1,
    "payload" : {},
    "setting_type" : "GLOBAL"
}

Example response

HTTP/1.1 201 CREATED
Content-Type: application/json
Content-Length: 100
Location: http://datagerry.com/rest/users/1/settings/test
X-API-Version: 1.0

{
  "result_id": "test",
  "raw": {
    "identifier": "test",
    "user_id": 1,
    "payload": {},
    "setting_type": "GLOBAL"
  },
  "response_type": "INSERT",
  "model": "UserSetting",
  "time": "2020-01-01 00:00:00.000000"
}
Request Headers
Response Headers
Status Codes
PUT /users/(int: public_id)/settings/(str: identifier)

HTTP PUT/PATCH route for updating a setting.

Example request

PUT /rest/users/1/settings/test HTTP/1.1
Host: datagerry.com
Accept: application/json

{
    "identifier" : "test",
    "user_id" : 1,
    "payload" : {},
    "setting_type" : "GLOBAL"
}

Example response

HTTP/1.1 202 ACCEPTED
Content-Type: application/json
Content-Length: 100
Location: http://datagerry.com/rest/users/1/settings/test
X-API-Version: 1.0

{
    "result": {
        "identifier": "test",
        "user_id": 1,
        "payload": {},
        "setting_type": "GLOBAL"
    },
    "response_type": "UPDATE",
    "model": "UserSetting",
    "time": "2020-01-01 00:00:00.000000"
}
Request Headers
Response Headers
Status Codes
DELETE /users/(int: public_id)/settings/(str: identifier)

HTTP DELETE route for deleting a existing setting.

Example request

DELETE /rest/users/1/settings/test HTTP/1.1
Host: datagerry.com
Accept: application/json

Example response

HTTP/1.1 202 ACCEPTED
Content-Type: application/json
Content-Length: 100
X-API-Version: 1.0

{
    "deleted_entry": {
        "identifier": "test",
        "user_id": 1,
        "payload": {},
        "setting_type": "APPLICATION"
    },
    "response_type": "DELETE",
    "model": "UserSetting",
    "time": "2020-01-01 00:00:00.000000"
}
Request Headers
Response Headers
Status Codes
6. Event Handling — DATAGERRY bugfix-NET-1100_bulkchange-one-field-instead-all-f8989b75f5c4d641a09e0fed1f6b8b21f02889c6 documentation

6. Event Handling

DATAGERRY uses an event based communication between its daemons. Each daemon can publish and subscribe events to a message broker. The message broker (currently, RabbitMQ is supported) will route events to the different daemons.

Each daemon will open two AMQP connections to the message broker (one for sending, one for receiving events). The connection handling will be done by cmdb.event_management.event_manager.EventManagerAmqp.

6.1. structure of an event

An event consists of a type and a set of key-value pairs as parameters.

6.1.1. example:

type:

cmdb.core.object.added

parameters:

id: id of the new created object

The set of key-value pairs depends on the event type.

6.2. event routing

Events are routed by type to the daemons. Each daemon can subscribe to a list of event type definitions. In these definitions, wildcards can be used:

# subscribe to a specific event type
cmdb.core.object.added

# subscribe to all event types starting with a specific string
cmdb.core.#

6.3. list of event types

The following event types are defined in DATAGERRY:

6.3.1. cmdb.core.object:

These events will be created by the core system if CMDB objects will be added/updated/deleted. The parameter “public_id” which includes the public ID of the specific object will be included.

  • cmdb.core.object.added

  • cmdb.core.object.updated

  • cmdb.core.object.deleted

6.3.2. cmdb.core.objecttype:

These events will be created by the core system if CMDB object types will be added/updated/deleted. The parameter “public_id” which includes the public ID of the specific object will be included.

  • cmdb.core.objecttype.added

  • cmdb.core.objecttype.updated

  • cmdb.core.objecttype.deleted