tread.io Users API
The Users API from tread.io — 23 operation(s) for users.
The Users API from tread.io — 23 operation(s) for users.
openapi: 3.0.3
info:
title: Horizon API V1 AccountExternalTruckIdentifier Users API
version: '1.0'
contact:
name: Tread
url: https://tread.io
email: developers@tread.io
description: 'This is the Version 1 implementation.
When in doubt we default to the practices outlined [here](https://www.vinaysahni.com/best-practices-for-a-pragmatic-restful-api#advanced-queries)'
license:
name: Private
url: https://tread.io
servers:
- description: production
url: https://api.tread-horizon.com
security:
- bearerAuth: []
tags:
- name: Users
paths:
/v1/companies/{company-id}/managed_companies/{managed-company-id}/users:
parameters:
- schema:
type: string
format: uuid
name: company-id
in: path
required: true
description: Managing Company ID
- schema:
type: string
format: uuid
name: managed-company-id
in: path
required: true
description: Managed Company ID
- $ref: '#/components/parameters/Accept-Language'
post:
summary: Create User for a Managed Company
operationId: post-v1-companies-company-id-managed_companies-managed-company-id-users
responses:
'201':
description: Created
content:
application/json:
schema:
type: object
properties:
data:
$ref: '#/components/schemas/User-Read'
required:
- data
'400':
$ref: '#/components/responses/Error'
'401':
$ref: '#/components/responses/UnauthenticatedError'
'403':
$ref: '#/components/responses/Error'
'404':
$ref: '#/components/responses/Error'
'406':
$ref: '#/components/responses/Error'
'415':
$ref: '#/components/responses/Error'
'422':
$ref: '#/components/responses/ModelError'
x-stoplight:
id: usr3bn8rq9w5uf
description: 'Create a `User` for a Managed Company
This endpoint requires the `create_user` permission'
tags:
- Users
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/User-Create'
get:
summary: Retrieve Users for a Managed Company
tags:
- Users
responses:
'200':
description: OK
headers:
Link:
schema:
type: string
description: Contains prev and next links for pagination
content:
application/json:
schema:
type: object
required:
- data
properties:
data:
x-stoplight:
id: usr7xk2mn3r9pz
type: array
items:
$ref: '#/components/schemas/User-Read'
'401':
$ref: '#/components/responses/UnauthenticatedError'
'404':
$ref: '#/components/responses/Error'
'406':
$ref: '#/components/responses/Error'
'422':
$ref: '#/components/responses/ModelError'
operationId: get-v1-companies-company-id-managed_companies-managed-company-id-users
x-stoplight:
id: usrht5kp8w2nr
description: Retrieve `Users` for a managed company.
parameters:
- $ref: '#/components/parameters/page-limit'
- $ref: '#/components/parameters/page-after'
- $ref: '#/components/parameters/page-before'
- $ref: '#/components/parameters/search-datagrid'
- schema:
type: string
enum:
- execute_jobs
- manage_sites
- manage_materials
- manage_equipment
- manage_accounts
- manage_users
in: query
name: filter[access]
description: User access filter
allowEmptyValue: true
- $ref: '#/components/parameters/filter-iam_roles'
/v1/companies/{company-id}/managed_companies/{managed-company-id}/users/typeahead:
parameters:
- schema:
type: string
format: uuid
name: company-id
in: path
required: true
description: Managing Company ID
- schema:
type: string
format: uuid
name: managed-company-id
in: path
required: true
description: Managed Company ID
- $ref: '#/components/parameters/Accept-Language'
get:
summary: Typeahead search Users for a Managed Company
tags:
- Users
responses:
'200':
description: OK
headers:
Link:
schema:
type: string
description: Contains prev and next links for pagination
content:
application/json:
schema:
type: object
required:
- data
properties:
data:
x-stoplight:
id: usr9yk4no5t1rb
type: array
items:
$ref: '#/components/schemas/User-Read-Typeahead'
'401':
$ref: '#/components/responses/UnauthenticatedError'
'404':
$ref: '#/components/responses/Error'
'406':
$ref: '#/components/responses/Error'
operationId: get-v1-companies-company-id-managed_companies-managed-company-id-users-typeahead
x-stoplight:
id: usr0zm5op6u2sc
description: Typeahead search for `Users` in a managed company
parameters:
- $ref: '#/components/parameters/page-limit'
- $ref: '#/components/parameters/page-after'
- $ref: '#/components/parameters/page-before'
- $ref: '#/components/parameters/search-query'
- $ref: '#/components/parameters/filter-iam_roles'
/v1/companies/{company-id}/managed_companies/{managed-company-id}/users/{id}:
parameters:
- schema:
type: string
format: uuid
name: company-id
in: path
required: true
description: Managing Company ID
- schema:
type: string
format: uuid
name: managed-company-id
in: path
required: true
description: Managed Company ID
- schema:
type: string
format: uuid
name: id
in: path
required: true
description: User ID
- $ref: '#/components/parameters/Accept-Language'
get:
summary: Retrieve User by ID for a Managed Company
tags:
- Users
responses:
'200':
description: OK
content:
application/json:
schema:
type: object
properties:
data:
$ref: '#/components/schemas/User-Read'
required:
- data
'401':
$ref: '#/components/responses/UnauthenticatedError'
'404':
$ref: '#/components/responses/Error'
'406':
$ref: '#/components/responses/Error'
operationId: get-v1-companies-company-id-managed_companies-managed-company-id-users-id
x-stoplight:
id: usr8xk3mn4s0qa
description: Retrieve `User` by ID for a Managed Company
patch:
summary: Update User for a Managed Company
tags:
- Users
responses:
'200':
description: OK
content:
application/json:
schema:
type: object
properties:
data:
$ref: '#/components/schemas/User-Read'
required:
- data
'400':
$ref: '#/components/responses/Error'
'401':
$ref: '#/components/responses/UnauthenticatedError'
'403':
$ref: '#/components/responses/Error'
'404':
$ref: '#/components/responses/Error'
'406':
$ref: '#/components/responses/Error'
'415':
$ref: '#/components/responses/Error'
'422':
$ref: '#/components/responses/ModelError'
operationId: patch-v1-companies-company-id-managed_companies-managed-company-id-users-id
x-stoplight:
id: usr9yl4no5t1rb
description: 'Update `User` by ID for a Managed Company
A `User` can always update their own `Equipment` via the `equipment_id` /`additional_equipment_ids` properties.
Any other updates require the `edit_user` permission.'
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/User-Update'
delete:
summary: Delete User for a Managed Company
tags:
- Users
responses:
'204':
description: No Content
'401':
$ref: '#/components/responses/UnauthenticatedError'
'403':
$ref: '#/components/responses/Error'
'404':
$ref: '#/components/responses/Error'
'406':
$ref: '#/components/responses/Error'
'422':
$ref: '#/components/responses/ModelError'
operationId: delete-v1-companies-company-id-managed_companies-managed-company-id-users-id
x-stoplight:
id: usr0zm5op6u2sc
description: 'Delete `User` by ID for a Managed Company
This endpoint requires the `delete_user` permission'
/v1/companies/{company-id}/managed_companies/{managed-company-id}/users/{user-id}/invite/email:
parameters:
- schema:
type: string
format: uuid
name: company-id
in: path
required: true
description: Managing Company ID
- schema:
type: string
format: uuid
name: managed-company-id
in: path
required: true
description: Managed Company ID
- schema:
type: string
format: uuid
name: user-id
in: path
required: true
description: User ID
- $ref: '#/components/parameters/Accept-Language'
put:
summary: Send an Email Invite to a User in a Managed Company
tags:
- Users
responses:
'202':
description: Accepted
content:
application/json:
schema:
type: object
properties:
data:
type: string
x-stoplight:
id: usr1adspcrg3pq
'401':
$ref: '#/components/responses/UnauthenticatedError'
'403':
$ref: '#/components/responses/Error'
'404':
$ref: '#/components/responses/Error'
'406':
$ref: '#/components/responses/Error'
'415':
$ref: '#/components/responses/Error'
'422':
$ref: '#/components/responses/ModelError'
operationId: put-v1-companies-company-id-managed_companies-managed-company-id-users-user-id-invite-email
x-stoplight:
id: usrhlezr70c8g6
description: This endpoint sends an Email invite to a `User` in a Managed Company asynchronously.
requestBody:
content:
application/json:
schema:
type: object
properties: {}
/v1/companies/{company-id}/managed_companies/{managed-company-id}/users/{user-id}/invite/sms:
parameters:
- schema:
type: string
format: uuid
name: company-id
in: path
required: true
description: Managing Company ID
- schema:
type: string
format: uuid
name: managed-company-id
in: path
required: true
description: Managed Company ID
- schema:
type: string
format: uuid
name: user-id
in: path
required: true
description: User ID
- $ref: '#/components/parameters/Accept-Language'
put:
summary: Send an SMS Invite to a User in a Managed Company
tags:
- Users
responses:
'202':
description: Accepted
content:
application/json:
schema:
type: object
properties:
data:
type: string
x-stoplight:
id: usr1sx8dj8kbpae
'401':
$ref: '#/components/responses/UnauthenticatedError'
'403':
$ref: '#/components/responses/Error'
'404':
$ref: '#/components/responses/Error'
'406':
$ref: '#/components/responses/Error'
'415':
$ref: '#/components/responses/Error'
'422':
$ref: '#/components/responses/ModelError'
operationId: put-v1-companies-company-id-managed_companies-managed-company-id-users-user-id-invite-sms
x-stoplight:
id: usr186ihbacn7w
description: This endpoint sends an SMS invite to a `User` in a Managed Company asynchronously.
requestBody:
content:
application/json:
schema:
type: object
properties: {}
/v1/companies/{company-id}/users:
parameters:
- schema:
type: string
format: uuid
name: company-id
in: path
required: true
description: Company ID
- $ref: '#/components/parameters/Accept-Language'
get:
summary: Retrieve Users that belong to a Company
tags:
- Users
responses:
'200':
description: OK
content:
application/json:
schema:
type: object
properties:
data:
type: array
x-stoplight:
id: 609yciwdv8wfy
items:
$ref: '#/components/schemas/User-Read'
x-stoplight:
id: 0cb21ff0w1taw
required:
- data
headers:
Link:
schema:
type: string
description: Contains prev and next links for pagination
'401':
$ref: '#/components/responses/UnauthenticatedError'
'404':
$ref: '#/components/responses/Error'
'406':
$ref: '#/components/responses/Error'
operationId: get-v1-companies-company-id-users
description: "Retrieve `Users` for a `Company`\n\nDatagrid search (`search[datagrid]`) queries against the following properties:\n * `first_name`\n * `last_name`\n * `email`\n * `phone`\n * `company.legal_name`\n * `iam_roles.name`\n\nNote:\n- `filter[iam_roles]` array are applied as `OR` in the query"
parameters:
- $ref: '#/components/parameters/page-limit'
- $ref: '#/components/parameters/page-after'
- $ref: '#/components/parameters/page-before'
- $ref: '#/components/parameters/search-datagrid'
- schema:
type: string
enum:
- execute_jobs
- manage_sites
- manage_materials
- manage_equipment
- manage_accounts
- manage_users
in: query
name: filter[access]
description: User access filter
allowEmptyValue: true
- $ref: '#/components/parameters/filter-iam_roles'
x-internal: false
/v1/companies/{company-id}/users/typeahead:
parameters:
- schema:
type: string
name: company-id
in: path
required: true
description: Company ID
- $ref: '#/components/parameters/Accept-Language'
get:
summary: Typeahead search on Users for a Company
tags:
- Users
responses:
'200':
description: OK
content:
application/json:
schema:
type: object
properties:
data:
type: array
items:
$ref: '#/components/schemas/User-Read-Typeahead'
required:
- data
headers:
Link:
schema:
type: string
description: Contains prev and next links for pagination
'401':
$ref: '#/components/responses/UnauthenticatedError'
'404':
$ref: '#/components/responses/Error'
'406':
$ref: '#/components/responses/Error'
operationId: get-v1-companies-company-id-users-typeahead
description: 'Typeahead search against the `first_name` and `last_name` property on `Users` for a `Company`.
Note:
- `filter[iam_roles]` array are applied as `OR` in the query'
parameters:
- $ref: '#/components/parameters/page-limit'
- $ref: '#/components/parameters/page-after'
- $ref: '#/components/parameters/page-before'
- $ref: '#/components/parameters/search-query'
- $ref: '#/components/parameters/filter-iam_roles'
x-stoplight:
id: 1m1zvo5unnm6v
x-internal: true
/v1/users:
parameters:
- $ref: '#/components/parameters/Accept-Language'
post:
summary: Create a User
operationId: post-v1-users
responses:
'201':
description: Created
content:
application/json:
schema:
type: object
properties:
data:
$ref: '#/components/schemas/User-Read'
x-stoplight:
id: fc68vd1prtuts
required:
- data
'400':
$ref: '#/components/responses/Error'
'401':
$ref: '#/components/responses/UnauthenticatedError'
'403':
$ref: '#/components/responses/Error'
'406':
$ref: '#/components/responses/Error'
'415':
$ref: '#/components/responses/Error'
'422':
$ref: '#/components/responses/ModelError'
description: 'Create a `User`
This endpoint requires the `create_user` permission'
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/User-Create'
tags:
- Users
get:
summary: Retrieve Users that belong to the current Company
tags:
- Users
responses:
'200':
description: OK
content:
application/json:
schema:
type: object
properties:
data:
x-stoplight:
id: sdssn4pxcl3iy
type: array
items:
$ref: '#/components/schemas/User-Read'
x-stoplight:
id: 29tkyj0rzkrl0
required:
- data
headers:
Link:
schema:
type: string
description: Contains prev and next links for pagination
'401':
$ref: '#/components/responses/UnauthenticatedError'
'406':
$ref: '#/components/responses/Error'
operationId: get-v1-users
parameters:
- $ref: '#/components/parameters/page-limit'
- $ref: '#/components/parameters/page-after'
- $ref: '#/components/parameters/page-before'
- $ref: '#/components/parameters/search-datagrid'
- schema:
type: string
enum:
- execute_jobs
- manage_sites
- manage_materials
- manage_equipment
- manage_accounts
- manage_users
in: query
name: filter[access]
description: User access filter
allowEmptyValue: true
- $ref: '#/components/parameters/filter-iam_roles'
- $ref: '#/components/parameters/filter-label_ids'
description: "Retrieve `Users` visible to your `Company`\n\nDatagrid search (`search[datagrid]`) queries against the following properties:\n * `first_name`\n * `last_name`\n * `email`\n * `phone`\n * `company.legal_name`\n * `iam_roles.name`\n\nNote:\n- `filter[iam_roles]` array are applied as `OR` in the query\n- `filter[label_ids]` array are applied as `OR` in the query"
/v1/users/me:
parameters:
- $ref: '#/components/parameters/Accept-Language'
get:
summary: Retrieve the current User
responses:
'200':
description: OK
content:
application/json:
schema:
type: object
properties:
data:
$ref: '#/components/schemas/User-Me-Read'
required:
- data
'401':
$ref: '#/components/responses/UnauthenticatedError'
'406':
$ref: '#/components/responses/Error'
operationId: get-v1-users-me
description: Retrieve the current authenticated `User`
tags:
- Users
/v1/users/me/access:
parameters:
- $ref: '#/components/parameters/Accept-Language'
get:
summary: Retrieve current User's Access
tags:
- Users
responses:
'200':
description: OK
headers: {}
content:
application/json:
schema:
type: object
properties:
data:
type: array
x-stoplight:
id: 83mx63p61cb6q
items:
$ref: '#/components/schemas/Access-Read'
required:
- data
'401':
$ref: '#/components/responses/UnauthenticatedError'
'406':
$ref: '#/components/responses/Error'
operationId: get-v1-users-me-access
x-stoplight:
id: 8osd42hir7w7m
description: Retrieve current `User`'s `Access`
x-internal: true
/v1/users/me/iam_permissions:
parameters:
- $ref: '#/components/parameters/Accept-Language'
get:
summary: Retrieve Permissions granted to the current User
responses:
'200':
description: OK
content:
application/json:
schema:
type: object
properties:
data:
type: array
items:
$ref: '#/components/schemas/IamPermission-Read-Nested'
required:
- data
'401':
$ref: '#/components/responses/UnauthenticatedError'
'406':
$ref: '#/components/responses/Error'
operationId: get-v1-users-me-iam-permissions
description: Retrieve the current authenticated users permissions
tags:
- Users
x-stoplight:
id: oshhefbjay9o3
/v1/users/me/location:
parameters:
- $ref: '#/components/parameters/Accept-Language'
post:
summary: Set Current Location
tags:
- Users
operationId: get-v1-users-me-location
responses:
'204':
description: No Content
'401':
$ref: '#/components/responses/UnauthenticatedError'
'404':
$ref: '#/components/responses/Error'
'406':
$ref: '#/components/responses/Error'
'415':
$ref: '#/components/responses/Error'
'422':
$ref: '#/components/responses/ModelError'
x-stoplight:
id: vpv57qj94t9zg
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/MobileDeviceLocation-Create'
x-internal: true
description: Set the current location for a User's Mobile Device
/v1/users/me/locations:
parameters:
- $ref: '#/components/parameters/Accept-Language'
post:
summary: Bulk Create Historical Locations
tags:
- Users
responses:
'204':
description: No Content
'401':
$ref: '#/components/responses/UnauthenticatedError'
'404':
$ref: '#/components/responses/Error'
'406':
$ref: '#/components/responses/Error'
'415':
$ref: '#/components/responses/Error'
'422':
$ref: '#/components/responses/ModelError'
operationId: patch-v1-users-me-location
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/MobileDeviceLocations-Create'
x-stoplight:
id: 01j1tm6m17rt2
x-internal: true
description: Record historical location data for a User's Mobile Device
/v1/users/typeahead:
parameters:
- $ref: '#/components/parameters/Accept-Language'
get:
summary: Typeahead search on Users
tags:
- Users
responses:
'200':
description: OK
content:
application/json:
schema:
type: object
properties:
data:
type: array
items:
$ref: '#/components/schemas/User-Read-Typeahead'
required:
- data
headers:
Link:
schema:
type: string
description: Contains prev and next links for pagination
'401':
$ref: '#/components/responses/UnauthenticatedError'
'406':
$ref: '#/components/responses/Error'
operationId: get-v1-users-typeahead
description: 'Typeahead search against the `first_name` and `last_name` property for `Users` visible to the currently authenticated `Company`.
Note:
- `filter[iam_roles]` array are applied as `OR` in the query'
x-internal: true
parameters:
- $ref: '#/components/parameters/page-limit'
- $ref: '#/components/parameters/page-after'
- $ref: '#/components/parameters/page-before'
- $ref: '#/components/parameters/search-query'
- $ref: '#/components/parameters/filter-iam_roles'
x-stoplight:
id: ot445z3l0x9vy
/v1/users/{id}:
parameters:
- schema:
type: string
name: id
in: path
required: true
description: User ID
- $ref: '#/components/parameters/Accept-Language'
get:
summary: Retrieve User
operationId: get-v1-users-id
responses:
'200':
description: OK
content:
application/json:
schema:
type: object
required:
- data
properties:
data:
$ref: '#/components/schemas/User-Read'
'401':
$ref: '#/components/responses/UnauthenticatedError'
'404':
$ref: '#/components/responses/Error'
'406':
$ref: '#/components/responses/Error'
x-stoplight:
id: aa3d7et8uws3l
description: Retrieve a `User` by ID
tags:
- Users
patch:
summary: Update a User
operationId: patch-v1-users-id
responses:
'200':
description: OK
content:
application/json:
schema:
type: object
properties:
data:
$ref: '#/components/schemas/User-Read'
required:
- data
'400':
$ref: '#/components/responses/Error'
'401':
$ref: '#/components/responses/UnauthenticatedError'
'403':
$ref: '#/components/responses/Error'
'404':
$ref: '#/components/responses/Error'
'406':
$ref: '#/components/responses/Error'
'415':
$ref: '#/components/responses/Error'
'422':
$ref: '#/components/responses/ModelError'
description: 'Update a `User` by ID
A `User` can always update their own `Equipment` via the `equipment_id` /`additional_equipment_ids` properties.
Any other updates require the `edit_user` permission.'
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/User-Update'
tags:
- Users
delete:
summary: Delete a User
operationId: delete-v1-users-id
responses:
'204':
description: No Content
'400':
$ref: '#/components/responses/Error'
'401':
$ref: '#/components/responses/UnauthenticatedError'
'403':
$ref: '#/components/responses/Error'
'406':
$ref: '#/components/responses/Error'
'422':
$ref: '#/components/responses/ModelError'
x-stoplight:
id: 5x7b0jxyu11c0
description: 'Delete a `User` by ID
This endpoint requires the `delete_user` permission'
tags:
- Users
/v1/users/{user-id}/impersonations:
parameters:
- schema:
type: string
format: uuid
name: user-id
in: path
required: true
description: User ID
- $ref: '#/components/parameters/Accept-Language'
post:
summary: Impersonate a User
tags:
- Users
responses:
'201':
description: Shared Response
content:
application/json:
schema:
type: object
required:
- data
properties:
data:
$ref: '#/components/schemas/AuthToken'
'401':
$ref: '#/components/responses/UnauthenticatedError'
'403':
$ref: '#/components/responses/Error'
'404':
$ref: '#/components/responses/Error'
'406':
$ref: '#/components/responses/Error'
'422':
$ref: '#/components/responses/ModelError'
operationId: post-v1-users-user-id-impersonations
x-stoplight:
id: odezqsjnkifwz
x-internal: true
description: "Impersonate a `User`. \n\nThis endpoint requires the `impersonate` `IamPermission`. "
/v1/users/{user-id}/invite/email:
parameters:
- schema:
type: string
name: user-id
in: path
required: true
description: User ID
- $ref: '#/components/parameters/Accept-Language'
put:
summary: Send an Email Invite to a User
tags:
- Users
responses:
'202':
description: Accepted
content:
application/json:
schema:
type: object
properties:
data:
type: string
x-stoplight:
id: adspcrg3phakp
'401':
$ref: '#/components/responses/UnauthenticatedError'
'403':
$ref: '#/components/responses/Error'
'404':
$ref: '#/components/responses/Error'
'406':
$ref: '#/components/responses/Error'
'415':
$ref: '#/components/responses/Error'
'422':
$ref: '#/components/responses/ModelError'
operationId: put-v1-users-user-id-invite-email
x-stoplight:
id: hlezr70c8g6yf
description: This endpoint sends an Email invite to a `User` asynchronously.
requestBody:
content:
application/json:
schema:
type: object
properties: {}
/v1/users/{user-id}/invite/sms:
parameters:
- schema:
type: string
name: user-id
in: path
required: true
description: User ID
- $ref: '#/components/parameters/Accept-Language'
put:
summary: Send an SMS Invite to a User
tags:
- Users
responses:
'202':
description: Accepted
content:
application/json:
schema:
type: object
properties:
data:
type: string
x-stoplight:
id: sx8dj8kbpae6u
'401':
$ref: '#/components/responses/UnauthenticatedError'
'403':
$ref: '#/components/responses/Error'
'404':
$ref: '#/components/responses/Error'
'406':
$ref: '#/components/responses/Error'
'415':
$ref: '#/components/responses/Error'
'422':
$ref: '#/components/responses/ModelError'
operationId: put-v1-users-user-id-invite-sms
x-stoplight:
id: 86ihbacn7wppo
description: This endpoint sends an SMS invite to a `User` asynchronously.
reques
# --- truncated at 32 KB (86 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/treadio/refs/heads/main/openapi/treadio-users-api-openapi.yml