I'm using the TSheets API in a custom connector, and I'd like the fields to be available in the Flows as Dynamic content, so I'm trying to provide a default response. The way they structure their results are unlike other APIs I've used - each child element is not really in an array, it has its own element, named after its id...
From their API documentation, here's an example of the result when you call the GET Users endpoint:
{
"results": {
"users": {
"933849": {
"id": 933849,
"first_name": "Mary",
"last_name": "Samsonite",
"group_id": 0,
"active": true,
"employee_number": 0,
"salaried": false,
"exempt": false,
"username": "admin",
"email": "admin@example.com",
"email_verified": false,
"payroll_id": "",
"mobile_number": "2087231456",
"hire_date": "0000-00-00",
"term_date": "0000-00-00",
"last_modified": "2018-03-28T17:24:20+00:00",
"last_active": "",
"created": "2018-03-27T16:13:34+00:00",
"client_url": "api_sample_output",
"company_name": "API Sample Output Company",
"profile_image_url": "https:\/\/www.gravatar.com\/avatar\/e64c7d89f26bd1972efa854d13d7dd61",
"display_name": "",
"pronouns": "",
"pto_balances": {
"2624351": 0,
"2624353": 0,
"2624355": 0
},
"submitted_to": "2000-01-01",
"approved_to": "2000-01-01",
"manager_of_group_ids": [ ],
"require_password_change": false,
"pay_rate": 0,
"pay_interval": "hour",
"permissions": {
"admin": true,
"mobile": true,
"status_box": false,
"reports": false,
"manage_timesheets": false,
"manage_authorization": false,
"manage_users": false,
"manage_my_timesheets": false,
"manage_jobcodes": false,
"pin_login": false,
"approve_timesheets": false,
"manage_schedules": false,
"external_access": false,
"manage_my_schedule": false,
"manage_company_schedules": false,
"view_company_schedules": false,
"view_group_schedules": false,
"manage_no_schedules": false,
"view_my_schedules": false,
"time_tracking": false
},
"customfields": ""
},
"933845": {
"id": 933845,
"first_name": "Bob",
"last_name": "Smith",
"group_id": 64965,
"active": true,
"employee_number": 0,
"salaried": false,
"exempt": false,
"username": "bobsmith",
"email": "",
"email_verified": false,
"payroll_id": "",
"hire_date": "0000-00-00",
"term_date": "0000-00-00",
"last_modified": "2018-03-27T16:13:33+00:00",
"last_active": "2018-03-28T20:16:39+00:00",
"created": "2018-03-27T16:13:33+00:00",
"client_url": "api_sample_output",
"company_name": "API Sample Output Company",
"profile_image_url": "",
"display_name": "",
"pronouns": "",
"mobile_number": "",
"pto_balances": {
"2624351": 0,
"2624353": 0,
"2624355": 0
},
"submitted_to": "2000-01-01",
"approved_to": "2000-01-01",
"manager_of_group_ids": [ ],
"require_password_change": false,
"pay_rate": 0,
"pay_interval": "hour",
"permissions": {
"admin": false,
"mobile": true,
"status_box": false,
"reports": false,
"manage_timesheets": false,
"manage_authorization": false,
"manage_users": false,
"manage_my_timesheets": false,
"manage_jobcodes": false,
"pin_login": false,
"approve_timesheets": false,
"manage_schedules": false,
"external_access": false,
"manage_my_schedule": false,
"manage_company_schedules": false,
"view_company_schedules": false,
"view_group_schedules": false,
"manage_no_schedules": false,
"view_my_schedules": false,
"time_tracking": false
},
"customfields": ""
}
}
},
"more": false,
"supplemental_data": {
"jobcodes": {
"2624351": {
"id": 2624351,
"parent_id": 0,
"assigned_to_all": true,
"billable": false,
"active": true,
"type": "pto",
"has_children": false,
"billable_rate": 0,
"short_code": "",
"name": "Sick",
"last_modified": "2018-03-27T16:13:28+00:00",
"created": "2018-03-27T16:13:28+00:00",
"filtered_customfielditems": "",
"required_customfields": [ ],
"locations": [ ]
},
"2624353": {
"id": 2624353,
"parent_id": 0,
"assigned_to_all": true,
"billable": false,
"active": true,
"type": "pto",
"has_children": false,
"billable_rate": 0,
"short_code": "",
"name": "Vacation",
"last_modified": "2018-03-27T16:13:28+00:00",
"created": "2018-03-27T16:13:28+00:00",
"filtered_customfielditems": "",
"required_customfields": [ ],
"locations": [ ]
},
"2624355": {
"id": 2624355,
"parent_id": 0,
"assigned_to_all": true,
"billable": false,
"active": true,
"type": "pto",
"has_children": false,
"billable_rate": 0,
"short_code": "",
"name": "Holiday",
"last_modified": "2018-03-27T16:13:28+00:00",
"created": "2018-03-27T16:13:28+00:00",
"filtered_customfielditems": "",
"required_customfields": [ ],
"locations": [ ]
}
},
"groups": {
"64965": {
"id": 64965,
"active": true,
"name": "Construction",
"last_modified": "2018-03-27T16:13:30+00:00",
"created": "2018-03-27T16:13:29+00:00",
"manager_ids": [
"933833"
]
}
}
}
}
I would have expected the users: node to contain an array, with a bunch of objects that had the id, first_name, etc. properties, but instead, there's a "933849" object with those properties. I'm not sure how I'd be able to script the default response in this case... any ideas? Since I won't know what those nodes will be named, will it be possible to set up a default response schema?
Thanks!
That's what I figured. Seems like a small change to the design of their output would make this much easier to work with - calling these one at a time due to the way they've structured the "GET ALL" endpoint seems like it'll cost them a lot more processing...
Just making sure I wasn't missing something simple on my end, as I often do. Maybe not this time though...
Hi @peteryee78
Its more of a question to TSheets API support team. You can't have dynamic mapping for the above JSON schema you provided. Are there any other TSheets API there to get each user ids or a collection of user ids and later you could filter using the ids.
Thanks