@itentialopensource/adapter-aws_cognito_identity_provider 0.1.1 → 0.1.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/AUTH.md CHANGED
@@ -3,7 +3,7 @@
3
3
  This document will go through the steps for authenticating the AWS Cognito Identity Provider adapter with AWS Signature 4 Authentication. Properly configuring the properties for an adapter in IAP is critical for getting the adapter online. You can read more about adapter authentication <a href="https://docs.itential.com/opensource/docs/authentication" target="_blank">HERE</a>.
4
4
 
5
5
  ### AWS Authentication
6
- The AWS Cognito Identity Provider adapter requires AWS Authentication therefore the `auth_method` should be set to `aws_authentication`. The adapter utilizes AWS signature 4 authentication. There are three mechanisms for doing this.
6
+ The AWS Cognito Identity Provider adapter requires AWS Authentication therefore the `auth_method` should be set to `aws_authentication`. The adapter utilizes AWS signature 4 authentication. There are three mechanisms for doing this. There is a brief description in this section and more information in the specific section for each authentication.
7
7
 
8
8
  The first way is using a "service" account and its AWS keys to authenticate as that account. In this case, you will get the aws_access_key, aws_secret_key, and aws_session_token from AWS and configure them into the adapter service instance as shown below.
9
9
 
@@ -14,7 +14,9 @@ The third authentication method is to use an IAM role. With this method, you do
14
14
  If you change authentication methods, you should change this section accordingly and merge it back into the adapter repository.
15
15
 
16
16
  ### AWS Signature 4 Service Account Authentication
17
- The AWS Cognito Identity Provider adapter requires AWS Signature 4 Authentication. If you change authentication methods, you should change this section accordingly and merge it back into the adapter repository.
17
+ This can also be referred to as standard credential signing using an Adapter Role or Pod Role.
18
+
19
+ Provide access key and secret key in adapter service instance configuration (Adapter Role). Those credentials are used to sign all calls. If no access key and/or secret key are provided, it will use AWS Environment variables (which in Saas is the Pod Role) to sign all calls. If this role has no permission to make the call, the call will fail with authentication issues.
18
20
 
19
21
  STEPS
20
22
  1. Ensure you have access to a AWS Cognito Identity Provider server and that it is running
@@ -32,7 +34,12 @@ you can leave all of the other properties in the authentication section, they wi
32
34
  4. Restart the adapter. If your properties were set correctly, the adapter should go online.
33
35
 
34
36
  ### AWS Security Token Service
35
- The AWS Cognito Identity Provider adapter also supports AWS Security Token Service (STS) Authentication. For using this authentication, you need to use the calls in the Adapter that have the STSRole suffix on them and pass the STS information into the method. You will still need to provide the relevant `aws_secret_key` and `aws_access_key` as described above. Below is an example of the data required in the `sts` tasks:
37
+ The AWS Cognito Identity Provider adapter also supports AWS Security Token Service (STS) Authentication. This can also be referred to as standard credential but then STS assume role based on STS Params on Task.
38
+ Adapter Role => Task Role(s) or Pod Role => Task Role(s).
39
+
40
+ Provide access key and secret key in adapter service instance configuration (Adapter Role). Will use these credentials on the assume role request to assume a different role defined in the STSParams on the task (Task Role). The Task Role will then be used to sign the call to AWS. The Adapter Role has to have the right to assume the Task Role or the call will fail. If no access key and/or secret key are provided, it will use AWS Environment variables (which is Saas is the Pod Role) to attempt the assume a different role defined in the STSParams on the task (Task Role). The Task Role will then be used to sign the call to AWS. The Pod Role has to have the right to assume the Task Role or the call will fail.
41
+
42
+ For using this authentication, you need to use the calls in the Adapter that have the STSRole suffix on them and pass the STS information into the method. You will still need to provide the relevant `aws_secret_key` and `aws_access_key` as described above. Below is an example of the data required in the `sts` tasks:
36
43
 
37
44
  ```json
38
45
  {
@@ -47,12 +54,15 @@ The proxy field should point to the AWS loadbalancer or a proxy server that forw
47
54
 
48
55
  Region can be important as it is the region in which the STS assume role request will be processed. Each AWS partition may have one primary region for STS. In our tests, we have found that for the standard partition the STS region should be set to us-east-t but this is configurable should your primary region be different or you are working in a different AWS partition.
49
56
 
57
+ If doing cross organizational role assumption it is recommended to have an external id that is agreed upon for further security. THis external id can be provided in the aws_sts properties (global) or defined in the STS Params object on the task (dynamic).
58
+
50
59
  ```json
51
60
  "authentication": {
52
61
  "aws_sts": {
53
62
  "region": "us-east-1",
54
63
  "endpoint": "<sts certificate endpoint>",
55
64
  "proxy": "<proxy/loadbalancer ip>",
65
+ "externalId": "<sts external id>"
56
66
  }
57
67
  }
58
68
  ```
@@ -60,6 +70,17 @@ Region can be important as it is the region in which the STS assume role request
60
70
  ### AWS IAM Role
61
71
  The AWS Cognito Identity Provider adapter also supports AWS IAM Role Authentication. For using this authentication, you need to use the calls in the Adapter that have the STSRole suffix on them and provide the role's ARN in the RoleName variable. In addition to passing the IAM Role in the task, it is possible to set an IAM Role in the Service Instance Configuration by using the `aws_iam_role` property in the authentication section and providing the role's ARN.
62
72
 
73
+ This can also be referred to as role signing scenarios - need to have either a Task Role (roleName) and/or Adapter Role (aws_iam_role) to use ay of these scenarios.
74
+
75
+ Scenarios:
76
+ - IAM to internal AWS Server - either Task Role (roleName) or Adapter Role (aws_iam_role)
77
+ - Adapter Role (aws_iam_role) assumes Task Role (STSParams or roleName)
78
+ - IAM to internal AWS Server for Adapter Role
79
+ - AWS STS for assuming Task Role(s) using Adapter Role
80
+ - Pod Role assumes Adapter Role (aws_iam_role) assumes Task Role (STSParams, RoleName)
81
+ - AWS STS for assuming Adapter Role using AWS Environment (Pod Role)
82
+ - AWS STS for assuming Task Role(s) using Adapter Role
83
+
63
84
  ```json
64
85
  "authentication": {
65
86
  "auth_method": "aws_authentication",
@@ -83,7 +104,7 @@ Create a new role and attach to it policies:
83
104
  - Create a role:
84
105
  ```text
85
106
  Trusted entity type: AWS service
86
- Use Case: cognito-idp
107
+ Use Case: Cognito Identity Provider
87
108
  ```
88
109
 
89
110
  Add desired policies to the role.
package/CHANGELOG.md CHANGED
@@ -1,4 +1,12 @@
1
1
 
2
+ ## 0.1.2 [11-11-2024]
3
+
4
+ * more auth changes
5
+
6
+ See merge request itentialopensource/adapters/adapter-aws_cognito_identity_provider!2
7
+
8
+ ---
9
+
2
10
  ## 0.1.1 [11-04-2024]
3
11
 
4
12
  * initial commits
@@ -6,4 +14,3 @@
6
14
  See merge request itentialopensource/adapters/adapter-aws_cognito_identity_provider!1
7
15
 
8
16
  ---
9
-
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@itentialopensource/adapter-aws_cognito_identity_provider",
3
- "version": "0.1.1",
3
+ "version": "0.1.2",
4
4
  "description": "This adapter integrates with system described as: Amazon Cognito Identity Provider.",
5
5
  "main": "adapter.js",
6
6
  "systemName": "Aws_cognito_identity_provider",
@@ -52,7 +52,7 @@
52
52
  "author": "Itential",
53
53
  "homepage": "https://gitlab.com/itentialopensource/adapters/adapter-aws_cognito_identity_provider#readme",
54
54
  "dependencies": {
55
- "@itentialopensource/adapter-utils": "^5.9.4",
55
+ "@itentialopensource/adapter-utils": "^5.9.5",
56
56
  "acorn": "^8.12.1",
57
57
  "ajv": "^8.17.1",
58
58
  "axios": "^1.7.4",
@@ -74,7 +74,7 @@
74
74
  "boolean",
75
75
  "string"
76
76
  ],
77
- "description": "When true the metrics collected by the adapter will be stored in mongo or on the filesystem",
77
+ "description": "When true the metrics collected by the adapter will be stored in mongo or in the adapter. If a full path is provided, metrics will be saved in the path provided.",
78
78
  "default": false
79
79
  },
80
80
  "stub": {
@@ -91,10 +91,10 @@
91
91
  "https"
92
92
  ]
93
93
  },
94
- "service" : {
95
- "type" : "string",
94
+ "service": {
95
+ "type": "string",
96
96
  "description": "Service we are integrating with -- used with AWS Authentication",
97
- "examples" : [
97
+ "examples": [
98
98
  "ec2",
99
99
  "route53"
100
100
  ]
@@ -221,7 +221,7 @@
221
221
  "description": "How long a token is valid (in milliseconds), -1 (always get token), 0 use expiration returned with token",
222
222
  "default": -1,
223
223
  "minimum": -1,
224
- "maximum": 3600000
224
+ "maximum": 86400000
225
225
  },
226
226
  "token_cache": {
227
227
  "type": "string",
@@ -298,7 +298,9 @@
298
298
  "description": "the protocol to request token from system",
299
299
  "default": "",
300
300
  "enum": [
301
- "http", "https", ""
301
+ "http",
302
+ "https",
303
+ ""
302
304
  ]
303
305
  },
304
306
  "host": {
@@ -337,7 +339,7 @@
337
339
  "responseFields": {
338
340
  "type": "object",
339
341
  "description": "The fields from the step result"
340
- },
342
+ },
341
343
  "successfullResponseCode": {
342
344
  "type": "integer",
343
345
  "description": "Expected response code for given step, if not set any successfull http response is accepted",
@@ -422,6 +424,11 @@
422
424
  "https",
423
425
  "http"
424
426
  ]
427
+ },
428
+ "externalId": {
429
+ "type": "string",
430
+ "description": "define an external id to send with the sts request",
431
+ "default": ""
425
432
  }
426
433
  }
427
434
  }
@@ -505,7 +512,7 @@
505
512
  "type": "integer",
506
513
  "description": "How often the healthcheck should run (in milliseconds).",
507
514
  "default": 300000,
508
- "minimum": 60000,
515
+ "minimum": 30000,
509
516
  "maximum": 3600000
510
517
  },
511
518
  "protocol": {
@@ -1053,21 +1060,30 @@
1053
1060
  "type": "object",
1054
1061
  "description": "The json object with query parameters of the call to getDevice",
1055
1062
  "additionalProperties": {
1056
- "type": ["string", "number"]
1063
+ "type": [
1064
+ "string",
1065
+ "number"
1066
+ ]
1057
1067
  }
1058
1068
  },
1059
1069
  "body": {
1060
1070
  "type": "object",
1061
1071
  "description": "The json object with body of the call to getDevice",
1062
1072
  "additionalProperties": {
1063
- "type": ["string", "number"]
1073
+ "type": [
1074
+ "string",
1075
+ "number"
1076
+ ]
1064
1077
  }
1065
1078
  },
1066
1079
  "headers": {
1067
1080
  "type": "object",
1068
1081
  "description": "The json object with headers of the call to getDevice",
1069
1082
  "additionalProperties": {
1070
- "type": ["string", "number"]
1083
+ "type": [
1084
+ "string",
1085
+ "number"
1086
+ ]
1071
1087
  }
1072
1088
  },
1073
1089
  "handleFailure": {
@@ -1083,7 +1099,10 @@
1083
1099
  "type": "object",
1084
1100
  "description": "The json object with response fields of the call to getDevice",
1085
1101
  "additionalProperties": {
1086
- "type": ["string", "number"]
1102
+ "type": [
1103
+ "string",
1104
+ "number"
1105
+ ]
1087
1106
  },
1088
1107
  "properties": {}
1089
1108
  },
@@ -1096,7 +1115,10 @@
1096
1115
  "type": "object",
1097
1116
  "description": "The json object with response fields of the call to getDevice",
1098
1117
  "additionalProperties": {
1099
- "type": ["string", "number"]
1118
+ "type": [
1119
+ "string",
1120
+ "number"
1121
+ ]
1100
1122
  },
1101
1123
  "properties": {
1102
1124
  "name": {
@@ -1181,21 +1203,30 @@
1181
1203
  "type": "object",
1182
1204
  "description": "The json object with query parameters of the call to getDevicesFiltered",
1183
1205
  "additionalProperties": {
1184
- "type": ["string", "number"]
1206
+ "type": [
1207
+ "string",
1208
+ "number"
1209
+ ]
1185
1210
  }
1186
1211
  },
1187
1212
  "body": {
1188
1213
  "type": "object",
1189
1214
  "description": "The json object with body of the call to getDevicesFiltered",
1190
1215
  "additionalProperties": {
1191
- "type": ["string", "number"]
1216
+ "type": [
1217
+ "string",
1218
+ "number"
1219
+ ]
1192
1220
  }
1193
1221
  },
1194
1222
  "headers": {
1195
1223
  "type": "object",
1196
1224
  "description": "The json object with headers of the call to getDevicesFiltered",
1197
1225
  "additionalProperties": {
1198
- "type": ["string", "number"]
1226
+ "type": [
1227
+ "string",
1228
+ "number"
1229
+ ]
1199
1230
  }
1200
1231
  },
1201
1232
  "handleFailure": {
@@ -1211,7 +1242,10 @@
1211
1242
  "type": "object",
1212
1243
  "description": "The json object with response fields of the call to getDevice",
1213
1244
  "additionalProperties": {
1214
- "type": ["string", "number"]
1245
+ "type": [
1246
+ "string",
1247
+ "number"
1248
+ ]
1215
1249
  },
1216
1250
  "properties": {}
1217
1251
  },
@@ -1224,7 +1258,10 @@
1224
1258
  "type": "object",
1225
1259
  "description": "The json object with response fields of the call to getDevicesFiltered",
1226
1260
  "additionalProperties": {
1227
- "type": ["string", "number"]
1261
+ "type": [
1262
+ "string",
1263
+ "number"
1264
+ ]
1228
1265
  },
1229
1266
  "properties": {
1230
1267
  "name": {
@@ -1277,21 +1314,30 @@
1277
1314
  "type": "object",
1278
1315
  "description": "The json object with query parameters of the call to isAlive",
1279
1316
  "additionalProperties": {
1280
- "type": ["string", "number"]
1317
+ "type": [
1318
+ "string",
1319
+ "number"
1320
+ ]
1281
1321
  }
1282
1322
  },
1283
1323
  "body": {
1284
1324
  "type": "object",
1285
1325
  "description": "The json object with body of the call to isAlive",
1286
1326
  "additionalProperties": {
1287
- "type": ["string", "number"]
1327
+ "type": [
1328
+ "string",
1329
+ "number"
1330
+ ]
1288
1331
  }
1289
1332
  },
1290
1333
  "headers": {
1291
1334
  "type": "object",
1292
1335
  "description": "The json object with headers of the call to isAlive",
1293
1336
  "additionalProperties": {
1294
- "type": ["string", "number"]
1337
+ "type": [
1338
+ "string",
1339
+ "number"
1340
+ ]
1295
1341
  }
1296
1342
  },
1297
1343
  "handleFailure": {
@@ -1307,7 +1353,10 @@
1307
1353
  "type": "object",
1308
1354
  "description": "The json object with response fields of the call to getDevice",
1309
1355
  "additionalProperties": {
1310
- "type": ["string", "number"]
1356
+ "type": [
1357
+ "string",
1358
+ "number"
1359
+ ]
1311
1360
  },
1312
1361
  "properties": {}
1313
1362
  },
@@ -1320,7 +1369,10 @@
1320
1369
  "type": "object",
1321
1370
  "description": "The json object with response fields of the call to isAlive",
1322
1371
  "additionalProperties": {
1323
- "type": ["string", "number"]
1372
+ "type": [
1373
+ "string",
1374
+ "number"
1375
+ ]
1324
1376
  },
1325
1377
  "properties": {
1326
1378
  "status": {
@@ -1358,21 +1410,30 @@
1358
1410
  "type": "object",
1359
1411
  "description": "The json object with query parameters of the call to getConfig",
1360
1412
  "additionalProperties": {
1361
- "type": ["string", "number"]
1413
+ "type": [
1414
+ "string",
1415
+ "number"
1416
+ ]
1362
1417
  }
1363
1418
  },
1364
1419
  "body": {
1365
1420
  "type": "object",
1366
1421
  "description": "The json object with body of the call to getConfig",
1367
1422
  "additionalProperties": {
1368
- "type": ["string", "number"]
1423
+ "type": [
1424
+ "string",
1425
+ "number"
1426
+ ]
1369
1427
  }
1370
1428
  },
1371
1429
  "headers": {
1372
1430
  "type": "object",
1373
1431
  "description": "The json object with headers of the call to getConfig",
1374
1432
  "additionalProperties": {
1375
- "type": ["string", "number"]
1433
+ "type": [
1434
+ "string",
1435
+ "number"
1436
+ ]
1376
1437
  }
1377
1438
  },
1378
1439
  "handleFailure": {
@@ -1388,7 +1449,10 @@
1388
1449
  "type": "object",
1389
1450
  "description": "The json object with response fields of the call to getDevice",
1390
1451
  "additionalProperties": {
1391
- "type": ["string", "number"]
1452
+ "type": [
1453
+ "string",
1454
+ "number"
1455
+ ]
1392
1456
  },
1393
1457
  "properties": {}
1394
1458
  },
@@ -1401,7 +1465,10 @@
1401
1465
  "type": "object",
1402
1466
  "description": "The json object with response fields of the call to getConfig",
1403
1467
  "additionalProperties": {
1404
- "type": ["string", "number"]
1468
+ "type": [
1469
+ "string",
1470
+ "number"
1471
+ ]
1405
1472
  },
1406
1473
  "properties": {}
1407
1474
  }
@@ -1428,21 +1495,30 @@
1428
1495
  "type": "object",
1429
1496
  "description": "The json object with query parameters of the call to getCount",
1430
1497
  "additionalProperties": {
1431
- "type": ["string", "number"]
1498
+ "type": [
1499
+ "string",
1500
+ "number"
1501
+ ]
1432
1502
  }
1433
1503
  },
1434
1504
  "body": {
1435
1505
  "type": "object",
1436
1506
  "description": "The json object with body of the call to getCount",
1437
1507
  "additionalProperties": {
1438
- "type": ["string", "number"]
1508
+ "type": [
1509
+ "string",
1510
+ "number"
1511
+ ]
1439
1512
  }
1440
1513
  },
1441
1514
  "headers": {
1442
1515
  "type": "object",
1443
1516
  "description": "The json object with headers of the call to getCount",
1444
1517
  "additionalProperties": {
1445
- "type": ["string", "number"]
1518
+ "type": [
1519
+ "string",
1520
+ "number"
1521
+ ]
1446
1522
  }
1447
1523
  },
1448
1524
  "handleFailure": {
@@ -1458,7 +1534,10 @@
1458
1534
  "type": "object",
1459
1535
  "description": "The json object with response fields of the call to getDevice",
1460
1536
  "additionalProperties": {
1461
- "type": ["string", "number"]
1537
+ "type": [
1538
+ "string",
1539
+ "number"
1540
+ ]
1462
1541
  },
1463
1542
  "properties": {}
1464
1543
  },
@@ -1471,7 +1550,10 @@
1471
1550
  "type": "object",
1472
1551
  "description": "The json object with response fields of the call to getConfig",
1473
1552
  "additionalProperties": {
1474
- "type": ["string", "number"]
1553
+ "type": [
1554
+ "string",
1555
+ "number"
1556
+ ]
1475
1557
  },
1476
1558
  "properties": {}
1477
1559
  }
@@ -1533,12 +1615,12 @@
1533
1615
  "properties": {
1534
1616
  "path": {
1535
1617
  "type": "string",
1536
- "description": "The fully qualified path of the call to getDevice (e.g. /rest/api/device/{deviceid})",
1618
+ "description": "The fully qualified path of the call to populate the cache (e.g. /rest/api/devices)",
1537
1619
  "default": ""
1538
1620
  },
1539
1621
  "method": {
1540
1622
  "type": "string",
1541
- "description": "The method of the call to getDevice",
1623
+ "description": "The method of the call to populate the cache",
1542
1624
  "default": "GET"
1543
1625
  },
1544
1626
  "pagination": {
@@ -1575,23 +1657,32 @@
1575
1657
  },
1576
1658
  "query": {
1577
1659
  "type": "object",
1578
- "description": "The json object with query parameters of the call to getDevice",
1660
+ "description": "The json object with query parameters of the call to populate the cache",
1579
1661
  "additionalProperties": {
1580
- "type": ["string", "number"]
1662
+ "type": [
1663
+ "string",
1664
+ "number"
1665
+ ]
1581
1666
  }
1582
1667
  },
1583
1668
  "body": {
1584
1669
  "type": "object",
1585
- "description": "The json object with body of the call to getDevice",
1670
+ "description": "The json object with body of the call to populate the cache",
1586
1671
  "additionalProperties": {
1587
- "type": ["string", "number"]
1672
+ "type": [
1673
+ "string",
1674
+ "number"
1675
+ ]
1588
1676
  }
1589
1677
  },
1590
1678
  "headers": {
1591
1679
  "type": "object",
1592
- "description": "The json object with headers of the call to getDevice",
1680
+ "description": "The json object with headers of the call to populate the cache",
1593
1681
  "additionalProperties": {
1594
- "type": ["string", "number"]
1682
+ "type": [
1683
+ "string",
1684
+ "number"
1685
+ ]
1595
1686
  }
1596
1687
  },
1597
1688
  "handleFailure": {
@@ -1605,9 +1696,12 @@
1605
1696
  },
1606
1697
  "requestFields": {
1607
1698
  "type": "object",
1608
- "description": "The json object with response fields of the call to getDevice",
1699
+ "description": "The json object with response fields of the call to populate the cache",
1609
1700
  "additionalProperties": {
1610
- "type": ["string", "number"]
1701
+ "type": [
1702
+ "string",
1703
+ "number"
1704
+ ]
1611
1705
  },
1612
1706
  "properties": {}
1613
1707
  },
@@ -1618,9 +1712,12 @@
1618
1712
  },
1619
1713
  "responseFields": {
1620
1714
  "type": "object",
1621
- "description": "The json object with response fields of the call to getDevice",
1715
+ "description": "The json object with response fields of the call to populate the cache",
1622
1716
  "additionalProperties": {
1623
- "type": ["string", "number"]
1717
+ "type": [
1718
+ "string",
1719
+ "number"
1720
+ ]
1624
1721
  }
1625
1722
  }
1626
1723
  }
Binary file
@@ -1,6 +1,6 @@
1
1
  {
2
- "version": "0.1.0",
3
- "configLines": 7468,
2
+ "version": "0.1.1",
3
+ "configLines": 7565,
4
4
  "scriptLines": 1783,
5
5
  "codeLines": 15598,
6
6
  "testLines": 8769,
@@ -52,7 +52,8 @@
52
52
  "sslEnable": true,
53
53
  "endpoint": "",
54
54
  "proxy": "",
55
- "proxyagent": ""
55
+ "proxyagent": "",
56
+ "externalId": ""
56
57
  }
57
58
  },
58
59
  "healthcheck": {
@@ -132,28 +133,29 @@
132
133
  "enabled": false,
133
134
  "getDevice": [
134
135
  {
135
- "path": "/get/devices/{id}",
136
+ "path": "/not/mapped",
136
137
  "method": "GET",
137
138
  "query": {},
138
139
  "body": {},
139
140
  "headers": {},
140
- "handleFailure": "fail",
141
+ "handleFailure": "ignore",
141
142
  "requestFields": {
142
- "id": "name"
143
+ "insample": "{port}"
143
144
  },
144
145
  "responseDatakey": "",
145
146
  "responseFields": {
146
- "name": "host",
147
- "ostype": "os",
148
- "ostypePrefix": "system-",
149
- "ipaddress": "attributes.ipaddr",
150
- "port": "443"
147
+ "name": "{this}{||}{that}",
148
+ "ostype": "{osfield}",
149
+ "ostypePrefix": "meraki-",
150
+ "port": "{port}",
151
+ "ipaddress": "{ip_addr}",
152
+ "serial": "{serial}"
151
153
  }
152
154
  }
153
155
  ],
154
156
  "getDevicesFiltered": [
155
157
  {
156
- "path": "/get/devices",
158
+ "path": "/not/mapped",
157
159
  "method": "GET",
158
160
  "pagination": {
159
161
  "offsetVar": "",
@@ -164,46 +166,48 @@
164
166
  "query": {},
165
167
  "body": {},
166
168
  "headers": {},
167
- "handleFailure": "fail",
169
+ "handleFailure": "ignore",
168
170
  "requestFields": {},
169
171
  "responseDatakey": "",
170
172
  "responseFields": {
171
- "name": "host",
172
- "ostype": "os",
173
- "ostypePrefix": "system-",
174
- "ipaddress": "attributes.ipaddr",
175
- "port": "443"
173
+ "name": "{this}{||}{that}",
174
+ "ostype": "{osfield}",
175
+ "ostypePrefix": "meraki-",
176
+ "port": "{port}",
177
+ "ipaddress": "{ip_addr}",
178
+ "serial": "{serial}",
179
+ "id": "{myid}"
176
180
  }
177
181
  }
178
182
  ],
179
183
  "isAlive": [
180
184
  {
181
- "path": "/get/devices/{id}/status",
185
+ "path": "/not/mapped/{devID}",
182
186
  "method": "GET",
183
187
  "query": {},
184
188
  "body": {},
185
189
  "headers": {},
186
- "handleFailure": "fail",
190
+ "handleFailure": "ignore",
187
191
  "requestFields": {
188
- "id": "name"
192
+ "devID": "{id}"
189
193
  },
190
194
  "responseDatakey": "",
191
195
  "responseFields": {
192
- "status": "status",
193
- "statusValue": "online"
196
+ "status": "return2xx",
197
+ "statusValue": "AD.200"
194
198
  }
195
199
  }
196
200
  ],
197
201
  "getConfig": [
198
202
  {
199
- "path": "/get/devices/{id}/configPart1",
203
+ "path": "/not/mapped/{devID}",
200
204
  "method": "GET",
201
205
  "query": {},
202
206
  "body": {},
203
207
  "headers": {},
204
- "handleFailure": "fail",
208
+ "handleFailure": "ignore",
205
209
  "requestFields": {
206
- "id": "name"
210
+ "devID": "{id}"
207
211
  },
208
212
  "responseDatakey": "",
209
213
  "responseFields": {}
@@ -211,12 +215,12 @@
211
215
  ],
212
216
  "getCount": [
213
217
  {
214
- "path": "/get/devices",
218
+ "path": "/not/mapped",
215
219
  "method": "GET",
216
220
  "query": {},
217
221
  "body": {},
218
222
  "headers": {},
219
- "handleFailure": "fail",
223
+ "handleFailure": "ignore",
220
224
  "requestFields": {},
221
225
  "responseDatakey": "",
222
226
  "responseFields": {}
@@ -227,15 +231,15 @@
227
231
  "enabled": false,
228
232
  "entities": [
229
233
  {
230
- "entityType": "",
231
- "frequency": 1440,
234
+ "entityType": "device",
235
+ "frequency": 3600,
232
236
  "flushOnFail": false,
233
- "limit": 1000,
237
+ "limit": 10000,
234
238
  "retryAttempts": 5,
235
239
  "sort": true,
236
240
  "populate": [
237
241
  {
238
- "path": "",
242
+ "path": "/not/mapped",
239
243
  "method": "GET",
240
244
  "pagination": {
241
245
  "offsetVar": "",
@@ -249,7 +253,15 @@
249
253
  "handleFailure": "ignore",
250
254
  "requestFields": {},
251
255
  "responseDatakey": "",
252
- "responseFields": {}
256
+ "responseFields": {
257
+ "name": "{this}{||}{that}",
258
+ "ostype": "{osfield}",
259
+ "ostypePrefix": "meraki-",
260
+ "port": "{port}",
261
+ "ipaddress": "{ip_addr}",
262
+ "serial": "{serial}",
263
+ "id": "{myid}"
264
+ }
253
265
  }
254
266
  ],
255
267
  "cachedTasks": [