Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
28 changes: 28 additions & 0 deletions plugins/TeamDynamix/v1/configValidation.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
{
"steps": [
{
"displayName": "Authenticate",
"dataStream": { "name": "currentUser" },
"required": true,
"error": "Could not sign in to TeamDynamix. Check the Web API address ends in /TDWebApi, that the BEID and Web Services Key match the values on the organization detail page in TDAdmin, and that the admin service account is set to Active.",
"success": "Signed in to TeamDynamix."
},
{
"displayName": "Find applications",
"dataStream": {
"name": "applications",
"config": { "errorOnEmptyResults": true }
},
"required": true,
"error": "Signed in, but no TeamDynamix applications are visible to this service account. Tickets, assets and configuration items are all read per application, so at least one is required.",
"success": "Applications found."
},
{
"displayName": "Read organization data",
"dataStream": { "name": "accounts" },
"required": false,
"error": "Signed in, but accounts and departments could not be read. Dashboards will still work, but department breakdowns will be empty.",
"success": "Accounts and departments accessible."
}
]
}
58 changes: 58 additions & 0 deletions plugins/TeamDynamix/v1/custom_types.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
[
{
"name": "TeamDynamix Ticketing App",
"sourceType": "TeamDynamix Ticketing App",
"icon": "headset",
"singular": "Ticketing Application",
"plural": "Ticketing Applications"
},
{
"name": "TeamDynamix Asset App",
"sourceType": "TeamDynamix Asset App",
"icon": "boxes-stacked",
"singular": "Asset Application",
"plural": "Asset Applications"
},
{
"name": "TeamDynamix Application",
"sourceType": "TeamDynamix Application",
"icon": "grid-2",
"singular": "Application",
"plural": "Applications"
},
{
"name": "TeamDynamix Account",
"sourceType": "TeamDynamix Account",
"icon": "building",
"singular": "Account",
"plural": "Accounts"
},
{
"name": "TeamDynamix Location",
"sourceType": "TeamDynamix Location",
"icon": "location-dot",
"singular": "Location",
"plural": "Locations"
},
{
"name": "TeamDynamix Group",
"sourceType": "TeamDynamix Group",
"icon": "users",
"singular": "Group",
"plural": "Groups"
},
{
"name": "TeamDynamix Asset",
"sourceType": "TeamDynamix Asset",
"icon": "laptop",
"singular": "Asset",
"plural": "Assets"
},
{
"name": "TeamDynamix Configuration Item",
"sourceType": "TeamDynamix Configuration Item",
"icon": "sitemap",
"singular": "Configuration Item",
"plural": "Configuration Items"
}
]
32 changes: 32 additions & 0 deletions plugins/TeamDynamix/v1/dataStreams/accounts.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
{
"name": "accounts",
"displayName": "Accounts",
"description": "Active accounts and departments, one row per account",
"tags": ["Organization"],
"baseDataSourceName": "httpRequestUnscoped",
"config": {
"httpMethod": "get",
"endpointPath": "api/accounts",
"paging": { "mode": "none" },
"postRequestScript": "accounts.js",
"errorHandling": {
"type": "script",
"script": "errorHandling/rateLimit.js"
}
},
"matches": "none",
"metadata": [
{ "name": "name", "displayName": "Name", "shape": "string", "role": "label" },
{ "name": "accountId", "displayName": "Account ID", "shape": "string", "role": "id" },
{ "name": "code", "displayName": "Code", "shape": "string" },
{ "name": "managerName", "displayName": "Manager", "shape": "string" },
{ "name": "parentName", "displayName": "Parent", "shape": "string" },
{ "name": "industryName", "displayName": "Industry", "shape": "string" },
{ "name": "city", "displayName": "City", "shape": "string" },
{ "name": "stateName", "displayName": "State", "shape": "string" },
{ "name": "country", "displayName": "Country", "shape": "string" },
{ "name": "createdDate", "displayName": "Created", "shape": "date" }
],
"timeframes": false,
"visibility": { "type": "hidden" }
}
28 changes: 28 additions & 0 deletions plugins/TeamDynamix/v1/dataStreams/applications.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
{
"name": "applications",
"displayName": "Applications",
"description": "TeamDynamix applications available to the service account, one row per application",
"tags": ["Organization"],
"baseDataSourceName": "httpRequestUnscoped",
"config": {
"httpMethod": "get",
"endpointPath": "api/applications",
"paging": { "mode": "none" },
"postRequestScript": "applications.js",
"errorHandling": {
"type": "script",
"script": "errorHandling/rateLimit.js"
}
},
"matches": "none",
"metadata": [
{ "name": "name", "displayName": "Name", "shape": "string", "role": "label" },
{ "name": "appId", "displayName": "App ID", "shape": "string", "role": "id" },
{ "name": "appType", "displayName": "Type", "shape": "string" },
{ "name": "appClass", "displayName": "Class", "shape": "string" },
{ "name": "description", "displayName": "Description", "shape": "string" },
{ "name": "sourceType", "displayName": "Object Type", "shape": "string", "visible": false }
],
"timeframes": false,
"visibility": { "type": "hidden" }
}
75 changes: 75 additions & 0 deletions plugins/TeamDynamix/v1/dataStreams/assets.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,75 @@
{
"name": "assets",
"displayName": "Assets",
"description": "Assets in an asset application, one row per asset, with status, owner, location and purchase detail",
"tags": ["Assets", "Inventory"],
"baseDataSourceName": "httpRequestScopedSingle",
"config": {
"httpMethod": "post",
"endpointPath": "api/{{object.rawId}}/assets/search",
"postBody": {
"MaxResults": "{{maxResults || dataSource.maxRecords || 2000}}",
"IsInService": "{{typeof inService === 'undefined' || inService === '' || inService === 'all' ? null : inService === 'inService'}}"
},
"paging": { "mode": "none" },
"postRequestScript": "assets.js",
"errorHandling": {
"type": "script",
"script": "errorHandling/rateLimit.js"
}
},
"matches": {
"sourceType": { "type": "oneOf", "values": ["TeamDynamix Asset App"] }
},
"ui": [
{
"type": "switch",
"name": "inService",
"label": "Service state",
"defaultValue": "all",
"options": [
{ "value": "all", "label": "All" },
{ "value": "inService", "label": "In service" },
{ "value": "outOfService", "label": "Out of service" }
]
},
{
"type": "number",
"name": "maxResults",
"label": "Maximum assets",
"help": "The TeamDynamix asset search returns a single unpaged result set, so this is a hard ceiling on how many assets the tile can see.",
"validation": { "min": 1, "max": 10000, "valueAsNumber": true }
}
],
"metadata": [
{ "name": "name", "displayName": "Asset", "shape": "string", "role": "label" },
{ "name": "sourceId", "displayName": "Source ID", "shape": "string", "role": "id", "visible": false },
{ "name": "assetId", "displayName": "Asset ID", "shape": "string", "visible": false },
{ "name": "link", "displayName": "Link", "shape": ["url", { "label": "Open in TeamDynamix" }], "role": "link" },
{ "name": "statusName", "displayName": "Status", "shape": "string" },
{ "name": "tag", "displayName": "Tag", "shape": "string" },
{ "name": "serialNumber", "displayName": "Serial Number", "shape": "string" },
{ "name": "manufacturerName", "displayName": "Manufacturer", "shape": "string" },
{ "name": "productModelName", "displayName": "Model", "shape": "string" },
{ "name": "supplierName", "displayName": "Supplier", "shape": "string", "visible": false },
{ "name": "locationName", "displayName": "Location", "shape": "string" },
{ "name": "locationRoomName", "displayName": "Room", "shape": "string", "visible": false },
{ "name": "owningCustomerName", "displayName": "Owner", "shape": "string" },
{ "name": "owningDepartmentName", "displayName": "Owning Department", "shape": "string" },
{ "name": "requestingCustomerName", "displayName": "Requestor", "shape": "string", "visible": false },
{ "name": "purchaseCost", "displayName": "Purchase Cost", "shape": ["number", { "decimalPlaces": 2, "thousandsSeparator": true }] },
{ "name": "acquisitionDate", "displayName": "Acquired", "shape": "date" },
{ "name": "expectedReplacementDate", "displayName": "Expected Replacement", "shape": "date" },
{ "name": "createdDate", "displayName": "Created", "shape": "date", "visible": false },
{ "name": "modifiedDate", "displayName": "Modified", "shape": "date" },
{ "name": "parentName", "displayName": "Parent Asset", "shape": "string", "visible": false },
{ "name": "externalId", "displayName": "External ID", "shape": "string", "visible": false },
{ "name": "configurationItemId", "displayName": "Configuration Item ID", "shape": "string", "visible": false },
{ "name": "appId", "displayName": "App ID", "shape": "string", "visible": false },
{ "name": "sourceType", "displayName": "Object Type", "shape": "string", "visible": false }
],
"defaultShaping": {
"sort": { "by": [["name", "asc"]] }
},
"timeframes": false
}
61 changes: 61 additions & 0 deletions plugins/TeamDynamix/v1/dataStreams/configurationItems.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
{
"name": "configurationItems",
"displayName": "Configuration Items",
"description": "Configuration items in the CMDB of an asset application, one row per item",
"tags": ["Configuration Items", "Inventory"],
"baseDataSourceName": "httpRequestScopedSingle",
"config": {
"httpMethod": "post",
"endpointPath": "api/{{object.rawId}}/cmdb/search",
"postBody": {
"IsActive": "{{typeof activeState === 'undefined' || activeState === '' || activeState === 'all' ? null : activeState === 'active'}}"
},
"paging": { "mode": "none" },
Comment thread
coderabbitai[bot] marked this conversation as resolved.
"postRequestScript": "configurationItems.js",
"errorHandling": {
"type": "script",
"script": "errorHandling/rateLimit.js"
}
},
"matches": {
"sourceType": { "type": "oneOf", "values": ["TeamDynamix Asset App"] }
},
"ui": [
{
"type": "switch",
"name": "activeState",
"label": "Active state",
"defaultValue": "active",
"options": [
{ "value": "all", "label": "All" },
{ "value": "active", "label": "Active" },
{ "value": "inactive", "label": "Inactive" }
]
}
],
"metadata": [
{ "name": "name", "displayName": "Configuration Item", "shape": "string", "role": "label" },
{ "name": "sourceId", "displayName": "Source ID", "shape": "string", "role": "id", "visible": false },
{ "name": "configurationItemId", "displayName": "CI ID", "shape": "string", "visible": false },
{ "name": "link", "displayName": "Link", "shape": ["url", { "label": "Open in TeamDynamix" }], "role": "link" },
{ "name": "typeName", "displayName": "Type", "shape": "string" },
{ "name": "isActive", "displayName": "Active", "shape": "boolean" },
{ "name": "ownerFullName", "displayName": "Owner", "shape": "string" },
{ "name": "owningDepartmentName", "displayName": "Owning Department", "shape": "string" },
{ "name": "owningGroupName", "displayName": "Owning Group", "shape": "string" },
{ "name": "locationName", "displayName": "Location", "shape": "string" },
{ "name": "maintenanceScheduleName", "displayName": "Maintenance Window", "shape": "string" },
{ "name": "backingItemType", "displayName": "Backing Item Type", "shape": "string", "visible": false },
{ "name": "isSystemMaintained", "displayName": "System Maintained", "shape": "boolean", "visible": false },
{ "name": "externalSourceName", "displayName": "External Source", "shape": "string", "visible": false },
{ "name": "externalId", "displayName": "External ID", "shape": "string", "visible": false },
{ "name": "createdDate", "displayName": "Created", "shape": "date", "visible": false },
{ "name": "modifiedDate", "displayName": "Modified", "shape": "date" },
{ "name": "appId", "displayName": "App ID", "shape": "string", "visible": false },
{ "name": "sourceType", "displayName": "Object Type", "shape": "string", "visible": false }
],
"defaultShaping": {
"sort": { "by": [["name", "asc"]] }
},
"timeframes": false
}
27 changes: 27 additions & 0 deletions plugins/TeamDynamix/v1/dataStreams/currentUser.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
{
"name": "currentUser",
"displayName": "Current User",
"description": "Details of the TeamDynamix service account the connection is using",
"tags": ["User"],
"baseDataSourceName": "httpRequestUnscoped",
"config": {
"httpMethod": "get",
"endpointPath": "api/auth/getuser",
"paging": { "mode": "none" },
"errorHandling": {
"type": "script",
"script": "errorHandling/rateLimit.js"
}
},
"matches": "none",
"metadata": [
{ "name": "FullName", "displayName": "Name", "shape": "string", "role": "label" },
{ "name": "UserName", "displayName": "Username", "shape": "string" },
{ "name": "PrimaryEmail", "displayName": "Email", "shape": "string" },
{ "name": "IsActive", "displayName": "Active", "shape": "boolean" },
{ "name": "BEID", "displayName": "BEID", "shape": "string" },
{ "name": "UID", "displayName": "UID", "shape": "string", "visible": false }
],
"timeframes": false,
"visibility": { "type": "hidden" }
}
30 changes: 30 additions & 0 deletions plugins/TeamDynamix/v1/dataStreams/groups.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
{
"name": "groups",
"displayName": "Groups",
"description": "Active groups used to assign and route work, one row per group",
"tags": ["Organization"],
"baseDataSourceName": "httpRequestUnscoped",
"config": {
"httpMethod": "post",
"endpointPath": "api/groups/search",
"postBody": {
"IsActive": true
},
"paging": { "mode": "none" },
"errorHandling": {
"type": "script",
"script": "errorHandling/rateLimit.js"
}
},
"matches": "none",
"metadata": [
{ "name": "Name", "displayName": "Group", "shape": "string", "role": "label" },
{ "name": "ID", "displayName": "Group ID", "shape": "string", "role": "id" },
{ "name": "Description", "displayName": "Description", "shape": "string" },
{ "name": "ExternalID", "displayName": "External ID", "shape": "string" },
{ "name": "CreatedDate", "displayName": "Created", "shape": "date" },
{ "name": "ModifiedDate", "displayName": "Modified", "shape": "date" }
],
"timeframes": false,
"visibility": { "type": "hidden" }
}
Loading
Loading