Skip to main content

Topology Groups

API calls for handling topology group resources

NameDescriptionShortcut
POST: Create group topology for specific dateCreates a daily group topology mapping endpoints to endpoint groupsDescription
GET: List group topology for specific dateLists group topology for a specific dateDescription
DELETE: Delete group topology for specific dateDelete group topology items for specific dateDescription
GET: List group topology for specific reportLists group topology for a specific reportDescription

POST: Create group topology for specific date

Creates a daily group topology mapping top-level groups to subgroups

Input

POST /topology/groups?date=YYYY-MM-DD

Url Parameters

TypeDescriptionRequiredDefault value
datetarget a specific dateNOtoday's date

Headers

x-api-key: secret_key_value
Accept: application/json

POST BODY

[
{
"group": "NGIA",
"type": "NGIS",
"subgroup": "SITEA",
"tags": {
"scope": "FEDERATION",
"infrastructure": "Production",
"certification": "Certified"
}
},
{
"group": "NGIA",
"type": "NGIS",
"subgroup": "SITEB",
"tags": {
"scope": "FEDERATION",
"infrastructure": "Production",
"certification": "Certified"
},
"notifications": {
"contacts": ["email01@example.com"],
"enabled": true
}
},
{
"group": "PROJECTZ",
"type": "PROJECT",
"subgroup": "SITEZ",
"tags": {
"scope": "FEDERATION",
"infrastructure": "Production",
"certification": "Certified"
}
}
]

Response Code

Status: 201 OK Created

Response body

{
"message": "Topology of 3 groups created for date: YYYY-MM-DD",
"code": "201"
}

409 Conflict when trying to insert a topology that already exists

When trying to insert a topology for a specific date that already exists the api will answer with the following response:

Response Code

Status: 409 Conflict

Response body

{
"message": "topology already exists for date: YYYY-MM-DD, please either update it or delete it first!",
"code": "409"
}

User can proceed with either updating the existing topology OR deleting before trying to create it anew

GET: List group topology for specific date

Lists group topology items for specific date

Input

GET /topology/groups?date=YYYY-MM-DD

Url Parameters

TypeDescriptionRequiredDefault value
datetarget a specific dateNOtoday's date
groupfilter by group nameNO
typefilter by group typeNO
subgroupfilter by subgroupNO
tagsfilter by tag key:value pairsNO
modeif stating mode=combined then if the tenant has data feeds from other tenants their group topology items will be combined in the final resultsNOempty

note : user can use wildcard * in filters note : when using tag filters the query string must follow the pattern: ?tags=key1:value1,key2:value2 note : You can use ~ as a negative operator in the beginning of a filter value to exclude something: For example you can exclude endpoints with subgroup of value GROUP_A by issuing ?subgroup:~SERVICE_A

Headers

x-api-key: secret_key_value
Accept: application/json

Example Request

GET /topology/groups?date=2015-07-22

Response Code

Status: 200 OK

Response body

{
"status": {
"message": "Success",
"code": "200"
},
"data": [
{
"date": "2015-07-22",
"group": "NGIA",
"type": "NGIS",
"subgroup": "SITEA",
"tags": {
"certification": "Certified",
"infrastructure": "Production"
}
},
{
"date": "2015-07-22",
"group": "NGIA",
"type": "NGIS",
"subgroup": "SITEB",
"tags": {
"certification": "Certified",
"infrastructure": "Production"
},
"notifications": {
"contacts": ["email01@example.com"],
"enabled": true
}
}
]
}

Combined tenant example

If the tenant is configured to receive data from other tenants in its data feeds the combined mode can be used when retrieving topology group items. In this mode the list of items is enriched with items from tenants specified in the data feeds. Items from those tenants receive an extra tenant field to signify their origin. To enable the combine mode use the optional url parameter mode=combined

Example Request

GET /topology/groups?date=2015-07-22?mode=combined

Response Code

Status: 200 OK

Response body

{
"status": {
"message": "Success",
"code": "200"
},
"data": [
{
"date": "2015-07-22",
"group": "TENANT1-NGIA",
"type": "NGIS",
"subgroup": "SITEX",
"tags": {
"certification": "Certified",
"infrastructure": "Production"
},
"tenant":"TENANT1"
},
{
"date": "2015-07-22",
"group": "TENANT2-NGIA",
"type": "NGIS",
"subgroup": "SITEZ",
"tags": {
"certification": "Certified",
"infrastructure": "Production"
},
"tenant":"TENANT2"
}
]
}

[DELETE]: Delete group topology for a specific date

This method can be used to delete all group items contributing to the group topology of a specific date

Input

DELETE /topology/groups?date=YYYY-MM-DD

Request headers

x-api-key: shared_key_value
Content-Type: application/json
Accept: application/json

Response

Headers: Status: 200 OK

Response body

Json Response

{
"message": "Topology of 3 groups deleted for date: 2019-12-12",
"code": "200"
}

GET: List group topology for specific report

Lists group topology items for specific report

Input

GET /topology/groups/by_report/{report-name}?date=YYYY-MM-DD

Url Parameters

TypeDescriptionRequiredDefault value
report-nametarget a specific reportYESnone
datetarget a specific dateNOtoday's date
modeif stating mode=combined then if the tenant has data feeds from other tenants their group topology items will be combined in the final resultsNOempty

Headers

x-api-key: secret_key_value
Accept: application/json

Example Request

GET /topology/groups/by_report/Critical?date=2015-07-22

Response Code

Status: 200 OK

Response body

{
"status": {
"message": "Success",
"code": "200"
},
"data": [
{
"date": "2015-07-22",
"group": "NGIA",
"type": "NGIS",
"subgroup": "SITEA",
"tags": {
"certification": "Certified",
"infrastructure": "Production"
}
},
{
"date": "2015-07-22",
"group": "NGIA",
"type": "NGIS",
"subgroup": "SITEB",
"tags": {
"certification": "Certified",
"infrastructure": "Production"
},
"notifications": {
"contacts": ["email01@example.com"],
"enabled": true
}
},
{
"date": "2015-07-22",
"group": "NGIX",
"type": "NGIS",
"subgroup": "SITEX",
"tags": {
"certification": "Certified",
"infrastructure": "Production"
}
}
]
}