tread.io ApprovalAssignments API
The ApprovalAssignments API from tread.io — 12 operation(s) for approvalassignments.
The ApprovalAssignments API from tread.io — 12 operation(s) for approvalassignments.
openapi: 3.0.3
info:
title: Horizon API V1 AccountExternalTruckIdentifier ApprovalAssignments 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: ApprovalAssignments
paths:
/v1/companies/{company-id}/driver_days/{driver-day-id}/approval_status:
parameters:
- schema:
type: string
format: uuid
name: driver-day-id
in: path
required: true
description: Driver Day Id
- schema:
type: string
format: uuid
name: company-id
in: path
required: true
description: Company ID
- $ref: '#/components/parameters/Accept-Language'
get:
summary: Retrieve ApprovalStatus for a Driver Day for a Company
responses:
'200':
description: OK
content:
application/json:
schema:
type: object
required:
- data
properties:
data:
$ref: '#/components/schemas/Approval-Status'
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-driver-days-driver-day-id-driver_status
description: Retrieve `ApprovalStatus` for a visible `DriverDay` for a specific `Company`
tags:
- ApprovalAssignments
x-stoplight:
id: 2nwlpo1o4637v
/v1/companies/{company-id}/driver_days/{driver-day-id}/approvals:
parameters:
- schema:
type: string
format: uuid
name: company-id
in: path
required: true
description: Company ID
- schema:
type: string
format: uuid
name: driver-day-id
in: path
required: true
description: DriverDay ID
- $ref: '#/components/parameters/Accept-Language'
get:
summary: Retrieve ApprovalAssignments for a DriverDay as a Company
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:
type: array
x-stoplight:
id: h8hgsi1nvlpxz
items:
$ref: '#/components/schemas/ApprovalAssignment-Read'
'400':
$ref: '#/components/responses/Error'
'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-driver_days-driver-day-id-approvals
x-stoplight:
id: 9tqoz2dxf9td3
x-internal: true
description: Retrieve `ApprovalAssignments` for a `DriverDay` as a `Company`
tags:
- ApprovalAssignments
/v1/companies/{company-id}/driver_days/{driver-day-id}/approve:
parameters:
- schema:
type: string
format: uuid
name: company-id
in: path
required: true
description: Company ID
- schema:
type: string
format: uuid
name: driver-day-id
in: path
required: true
description: DriverDay ID
- $ref: '#/components/parameters/Accept-Language'
put:
summary: Approve a DriverDay as a Company
tags:
- ApprovalAssignments
responses:
'200':
description: OK
content:
application/json:
schema:
type: object
required:
- data
properties:
data:
$ref: '#/components/schemas/DriverDay-Read'
'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-driver_days-driver-day-id-approve
x-stoplight:
id: qcgf2529culuc
x-internal: true
description: 'Approve a `DriverDay` by ID as a `Company`
This endpoint requires the `approve_driver_day` permission.'
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/Approval-Approve'
/v1/companies/{company-id}/driver_days/{driver-day-id}/unapprove:
parameters:
- schema:
type: string
format: uuid
name: company-id
in: path
required: true
description: Company ID
- schema:
type: string
format: uuid
name: driver-day-id
in: path
required: true
description: DriverDay ID
- $ref: '#/components/parameters/Accept-Language'
put:
summary: Unapprove a DriverDay as a Company
tags:
- ApprovalAssignments
responses:
'200':
description: OK
content:
application/json:
schema:
type: object
required:
- data
properties:
data:
$ref: '#/components/schemas/DriverDay-Read'
'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-driver_days-driver-day-id-unapprove
x-stoplight:
id: or0ir2wc8pnje
x-internal: true
description: 'Unapprove a `DriverDay` by ID as a `Company`
This endpoint requires the `approve_driver_day` permission.'
requestBody:
content:
application/json:
schema:
type: object
properties: {}
/v1/companies/{company-id}/jobs/{job-id}/approval_status:
parameters:
- schema:
type: string
format: uuid
name: job-id
in: path
required: true
description: Job Id
- schema:
type: string
format: uuid
name: company-id
in: path
required: true
description: Company ID
- $ref: '#/components/parameters/Accept-Language'
get:
summary: Retrieve ApprovalStatus for a Job for a Company
responses:
'200':
description: OK
content:
application/json:
schema:
type: object
required:
- data
properties:
data:
$ref: '#/components/schemas/Approval-Status'
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-jobs-job-id-driver_status
description: Retrieve `ApprovalStatus` for a visible `Job` for a specific `Company`
tags:
- ApprovalAssignments
x-stoplight:
id: amdv2nn5zoknz
/v1/companies/{company-id}/jobs/{job-id}/approvals:
parameters:
- schema:
type: string
format: uuid
name: job-id
in: path
required: true
description: Job ID
- schema:
type: string
format: uuid
name: company-id
in: path
required: true
description: Company ID
- $ref: '#/components/parameters/Accept-Language'
get:
summary: Retrieve ApprovalAssignments for a Job for a Company
responses:
'200':
description: OK
content:
application/json:
schema:
type: object
required:
- data
properties:
data:
type: array
items:
$ref: '#/components/schemas/ApprovalAssignment-Read'
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-jobs-job-id-job_approvals
description: Retrieve all `ApprovalAssignments` visible to the specified `Company` for a `Job`
x-stoplight:
id: wpvi2o1l6w7d8
tags:
- ApprovalAssignments
/v1/companies/{company-id}/loads/{load-id}/approvals:
parameters:
- schema:
type: string
format: uuid
name: load-id
in: path
required: true
description: Load ID
- schema:
type: string
format: uuid
name: company-id
in: path
required: true
description: Company ID
- $ref: '#/components/parameters/Accept-Language'
get:
summary: Retrieve ApprovalAssignments for a Load for a Company
responses:
'200':
description: OK
content:
application/json:
schema:
type: object
required:
- data
properties:
data:
type: array
items:
$ref: '#/components/schemas/ApprovalAssignment-Read'
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-loads-load-id-load_approvals
description: Retrieve all `ApprovalAssignments` visible to the specified `Company` for a `Load`
tags:
- ApprovalAssignments
x-stoplight:
id: uazfhzq623xqz
/v1/driver_days/{driver-day-id}/approval_status:
parameters:
- schema:
type: string
format: uuid
name: driver-day-id
in: path
required: true
description: Driver Day Id
- $ref: '#/components/parameters/Accept-Language'
get:
summary: Retrieve ApprovalStatus for a Driver Day
responses:
'200':
description: OK
content:
application/json:
schema:
type: object
required:
- data
properties:
data:
$ref: '#/components/schemas/Approval-Status'
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-driver-days-driver-day-id-driver_status
description: 'Deprecated in favor of "Retrieve `ApprovalStatus` for a visible `DriverDay` for a Company"
Retrieve `ApprovalStatus` for a visible `DriverDay`'
tags:
- ApprovalAssignments
x-stoplight:
id: 2nvlpn1o4537v
deprecated: true
/v1/driver_days/{driver-day-id}/approvals:
parameters:
- schema:
type: string
name: driver-day-id
in: path
required: true
description: Driver Day Id
- $ref: '#/components/parameters/Accept-Language'
get:
summary: Retrieve ApprovalAssignments for a Driver Day
responses:
'200':
description: OK
content:
application/json:
schema:
type: object
required:
- data
properties:
data:
type: array
items:
$ref: '#/components/schemas/ApprovalAssignment-Read'
headers:
Link:
schema:
type: string
description: Contains prev and next links for pagination
'400':
$ref: '#/components/responses/Error'
'401':
$ref: '#/components/responses/UnauthenticatedError'
'404':
$ref: '#/components/responses/Error'
'406':
$ref: '#/components/responses/Error'
'422':
$ref: '#/components/responses/ModelError'
operationId: get-v1-driver-days-driver-day-id-driver_day_approvals
description: 'Deprecated in favor of "Retrieve `ApprovalAssignments` for a `DriverDay` as a `Company`"
Retrieve all `ApprovalAssignments` visible to your `Company` for a `DriverDay`'
tags:
- ApprovalAssignments
x-stoplight:
id: f3xryhg69wok0
deprecated: true
/v1/jobs/{job-id}/approval_status:
parameters:
- schema:
type: string
format: uuid
name: job-id
in: path
required: true
description: Job Id
- $ref: '#/components/parameters/Accept-Language'
get:
summary: Retrieve ApprovalStatus for a Job
responses:
'200':
description: OK
content:
application/json:
schema:
type: object
required:
- data
properties:
data:
$ref: '#/components/schemas/Approval-Status'
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-job-job-id-driver_status
description: 'Deprecated in favor of "Retrieve `ApprovalStatus` for a visible `Job` for a Company"
Retrieve `ApprovalStatus` for a visible `Job`'
tags:
- ApprovalAssignments
x-stoplight:
id: amcv2nm5zojnz
deprecated: true
/v1/jobs/{job-id}/approvals:
parameters:
- schema:
type: string
name: job-id
in: path
required: true
description: Job ID
- $ref: '#/components/parameters/Accept-Language'
get:
summary: Retrieve ApprovalAssignments for a Job
responses:
'200':
description: OK
content:
application/json:
schema:
type: object
required:
- data
properties:
data:
type: array
items:
$ref: '#/components/schemas/ApprovalAssignment-Read'
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-jobs-job-id-job_approvals
description: 'Deprecated in favor of "Retrieve ApprovalAssignments for a Job for a Company"
Retrieve all `ApprovalAssignments` visible to your `Company` for a `Job`'
x-stoplight:
id: wpui2o9l6q7d8
tags:
- ApprovalAssignments
deprecated: true
/v1/loads/{load-id}/approvals:
parameters:
- schema:
type: string
name: load-id
in: path
required: true
description: Load ID
- $ref: '#/components/parameters/Accept-Language'
get:
summary: Retrieve ApprovalAssignments for a Load
responses:
'200':
description: OK
content:
application/json:
schema:
type: object
required:
- data
properties:
data:
type: array
items:
$ref: '#/components/schemas/ApprovalAssignment-Read'
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-loads-load-id-load_approvals
description: 'Deprecated in favor of "Retrieve ApprovalAssignments for a Load for a Company"
Retrieve all `ApprovalAssignments` visible to your `Company` for a `Load`'
tags:
- ApprovalAssignments
x-stoplight:
id: uazehzp622xqz
deprecated: true
components:
schemas:
GpsStatus:
title: GpsStatus
x-stoplight:
id: 3b02180lfd6ve
description: GPS Ping status for a record
type: object
required:
- status
- last_ping_at
properties:
status:
x-stoplight:
id: 7f6aqydupq3ac
enum:
- online
- offline
- idle
- no_signal
last_ping_at:
type: string
x-stoplight:
id: 1ikh7blmxdqcz
format: date-time
nullable: true
additionalProperties: false
RoleApprovable:
title: RoleApprovable
x-stoplight:
id: fie0647l1zmho
type: object
required:
- approved
- approvable
- unapprovable
- billing_approved_at
- field_approved_at
properties:
approved:
type: boolean
x-stoplight:
id: je3f3e9kzi9d8
approvable:
type: boolean
x-stoplight:
id: 3e8gmlshlm661
unapprovable:
type: boolean
x-stoplight:
id: 7t2cltf0njxtj
billing_approved_at:
type: string
x-stoplight:
id: f2bkkw0znb1uy
format: date-time
nullable: true
field_approved_at:
type: string
x-stoplight:
id: 78l5n1sakfgl3
format: date-time
nullable: true
additionalProperties: false
CompanyShare-Read-Nested:
title: CompanyShare-Read-Nested
x-stoplight:
id: makajouqsb7jq
allOf:
- $ref: '#/components/schemas/Identifier'
- type: object
x-stoplight:
id: s6h0nfzt2fjry
required:
- external_id
- ticket_match_id
- sender_company
- dispatchable
- schedule_on
- rate_override
- expires_at
properties:
external_id:
type: string
x-stoplight:
id: c9ls3nrhbih3v
nullable: true
ticket_match_id:
type: string
x-stoplight:
id: a1cd3nrhbih3v
nullable: true
sender_company:
$ref: '#/components/schemas/Company-Read-Nested'
dispatchable:
type: boolean
x-stoplight:
id: kd884ihz6qi6w
schedule_on:
type: boolean
x-stoplight:
id: kd884ihz61234
rate_override:
type: boolean
x-stoplight:
id: mq4osazzielxo
expires_at:
type: string
x-stoplight:
id: aaa111jpq0ga9
format: date-time
description: ISO8601 timestamp with local timezone
nullable: true
Equipment-Read-Typeahead:
title: Equipment-Read-Typeahead
x-stoplight:
id: sv94osohm5xhg
allOf:
- $ref: '#/components/schemas/Identifier'
- type: object
required:
- name
- equipment_type
- external_id
- equipment_id
properties:
name:
type: string
description: Equipment name
equipment_type:
$ref: '#/components/schemas/EquipmentType-Read-Nested'
external_id:
type: string
x-stoplight:
id: jrkz95htilck3
nullable: true
company_share:
$ref: '#/components/schemas/CompanyShare-Read-Nested'
equipment_id:
type: string
x-stoplight:
id: fkr9fkdtl996f
Error-Response:
title: Error-Response
x-stoplight:
id: 52cydhphee3qe
type: object
required:
- error
properties:
error:
$ref: '#/components/schemas/Error'
additionalProperties: false
MaterialDeliveredQuantity:
title: MaterialDeliveredQuantity
x-stoplight:
id: x8zbak180ua1x
type: object
x-internal: true
required:
- material_id
properties:
material_id:
type: string
x-stoplight:
id: eww32a0dqwhel
format: uuid
unit_quantities:
type: array
x-stoplight:
id: yergzsohqrwmd
items:
$ref: '#/components/schemas/QuantityUnit'
additionalProperties: false
ApprovalAssignment-Read:
title: ApprovalAssignment-Read
x-stoplight:
id: j2fcwgvbf8qjm
allOf:
- $ref: '#/components/schemas/Identifier'
- $ref: '#/components/schemas/Timestamps'
- type: object
x-stoplight:
id: ehtvb5mvqfibq
required:
- approval_category
properties:
approval_type:
x-stoplight:
id: 7xzbj92ggrge9
enum:
- foreman
- biller
- company_admin
- platform_admin
approver_id:
type: string
x-stoplight:
id: kiva0q8kik4ph
format: uuid
external_approver_name:
type: string
x-stoplight:
id: mzm4cqlaqkbhz
nullable: true
approver_type:
x-stoplight:
id: hg7tm679i5kjp
enum:
- User
- Company
- Impersonation
- M2MClient
approval_action:
$ref: '#/components/schemas/ApprovalAction'
approval_category:
$ref: '#/components/schemas/ApprovalCategory'
x-tags:
- Approvals
DriverStateEvent-Read:
title: DriverStateEvent-Read
x-stoplight:
id: 813jz0m2wvdpm
allOf:
- $ref: '#/components/schemas/Identifier'
- type: object
properties:
user_id:
type: string
format: uuid
x-stoplight:
id: azx0we0941wlr
state:
$ref: '#/components/schemas/DriverState'
started_at:
x-stoplight:
id: k97zhsrha4zvo
type: string
format: date-time
ended_at:
x-stoplight:
id: xqde66xx0nitc
type: string
format: date-time
nullable: true
required:
- user_id
- state
- started_at
- $ref: '#/components/schemas/Timestamps'
description: Model for driver_state_event
x-tags:
- DriverStateEvent
x-internal: true
AccountType:
title: AccountType
x-stoplight:
id: i4vfmd4rwrq8p
enum:
- customer
- vendor
example: customer
ApprovalCategory:
title: ApprovalCategory
x-stoplight:
id: qhkzxgj1hqou5
enum:
- field
- billing
default: field
example: field
TreadId:
title: TreadId
x-stoplight:
id: 43k4t5tl359m4
type: object
required:
- tread_id
properties:
tread_id:
type: string
x-stoplight:
id: zi3ld7djflw6f
pattern: ^[0-9A-F]{6}$
minLength: 6
maxLength: 6
example: ABC123
description: Tread ID
additionalProperties: false
Label-Read-Nested:
title: Label-Read-Nested
x-stoplight:
id: lbl1readnest01
allOf:
- $ref: '#/components/schemas/Identifier'
- type: object
properties:
name:
type: string
x-stoplight:
id: lbl1nestnm0001
description: Label name
color:
type: string
x-stoplight:
id: lbl1nestcol001
description: Hex color code for the label
pattern: ^#[0-9A-Fa-f]{6}$
required:
- name
- color
QuantityUnit:
title: QuantityUnit
x-stoplight:
id: c6w3qflofaihr
type: object
required:
- quantity
- unit_of_measure
properties:
quantity:
type: string
x-stoplight:
id: xf9z9w59yb0cv
unit_of_measure:
$ref: '#/components/schemas/OrderUnitOfMeasure'
x-internal: true
additionalProperties: false
DriverDay-Read:
title: DriverDay-Read
x-stoplight:
id: x3uyxssr62k8m
allOf:
- $ref: '#/components/schemas/Identifier'
- type: object
required:
- started_shift_at
- ended_shift_at
- jobs_count
- loads_count
- tickets_count
- first_geofence_entry_at
- last_geofence_exit_at
- first_homebase_exit_at
- last_homebase_entry_at
- first_ticket_at
- last_ticket_at
- total_break_minutes
- total_gps_minutes
- total_delivered_quantities
- driver
- company
- driver_day_date
- equipment_external_ids
- shift_adjustment_minutes
- shift_adjustment_type
- total_shift_minutes
- total_on_duty_minutes
- external_id
- driver_day_id
- editable
- times_editable
- adjusted_started_shift_at
- adjusted_ended_shift_at
- delivered_quantities
- travelled_distance_meters
properties:
started_shift_at:
type: string
x-stoplight:
id: jyxnpz12glvic
format: date-time
nullable: true
ended_shift_at:
type: string
x-stoplight:
id: erxxhi8q861f3
format: date-time
nullable: true
jobs_count:
type: integer
x-stoplight:
id: hh1rgudjzyz80
loads_count:
type: integer
x-stoplight:
id: uli2dn8an8w7r
tickets_count:
type: integer
x-stoplight:
id: 9px12c8gnfo0v
first_geofence_entry_at:
type: string
x-stoplight:
id: kdvvk1bmxcjcs
format: date-time
nullable: true
last_geofence_exit_at:
type: string
x-stoplight:
id: ljnrxb4f9nf4j
format: date-time
nullable: true
first_homebase_exit_at:
type: string
x-stoplight:
id: fhex01234abcd
format: date-time
nullable: true
description: The earliest time equipment exited its home base during the driver's on-duty time
last_homebase_entry_at:
type: string
x-stoplight:
id: lhen56789efgh
format: date-time
nullable: true
description: The latest time equipment entered its home base during the driver's on-duty time
first_ticket_at:
type: string
x-stoplight:
id: efp3h7z5ymr5v
format: date-time
nullable: true
last_ticket_at:
type: string
x-stoplight:
id: ve7lma3tf2eqh
format: date-time
nullable: true
total_break_minutes:
type: integer
x-stoplight:
id: 3uinxutb9eigk
nullable: true
total_gps_minutes:
type: integer
x-stoplight:
id: 53qb3y1wrtmgz
total_delivered_quantities:
x-stoplight:
id: wa46amxr07q26
type: array
items:
$ref: '#/components/schemas/MaterialDeliveredQuantity'
driver:
$ref: '#/components/schemas/Driver-Read-Nested'
company:
$ref: '#/components/schemas/Company-Read-Nested'
driver_day_date:
type: string
x-stoplight:
id: 15n3k7oiut8o8
format: date
vendor_account:
$ref: '#/components/schemas/Account-Read-Nested'
equipment_external_ids:
type: array
x-stoplight:
id: 7bic77dhx0hqe
items:
x-stoplight:
id: d27mh52vjf5dq
type: string
shift_adjustment_minutes:
type: integer
x-stoplight:
id: kqqg46ypfm3i2
shift_adjustment_type:
$ref: '#/components/schemas/NullableShiftAdjustmentType'
total_shift_minutes:
type: integer
x-stoplight:
id: opw4karobx252
nullable: true
total_on_duty_minutes:
type: integer
x-stoplight:
id: p4craugui1zmy
nullable: true
external_id:
type: string
x-stoplight:
id: p2viy5es0xhab
nullable: true
driver_day_id:
type: string
x-stoplight:
id: 4eo8bb1c0o7ni
editable:
type: boolean
x-stoplight:
id: w5ugpdzu8qo1p
times_editable:
type: boolean
description: Whether the driver can edit shift times, captured from the edit_job_times feature flag at creation time
adjusted_started_shift_at:
type: string
x-stoplight:
id: xxxnpz12glvic
format: date-time
nullable: true
adjusted_ended_shift_at:
type: string
x-stoplight:
id: xxxxhi8q861f3
format: date-time
nullable: true
approval_status:
$ref: '#/components/schemas/Approval-Status'
delivered_quantities:
type: array
x-stoplight:
id: xa3113eklmosr
items:
$ref: '#/components/schemas/DeliveredQuantity-Read'
current_driver_state_event:
$ref: '#/components/schemas/DriverStateEvent-Read'
travelled_distance_meters:
type: strin
# --- truncated at 32 KB (51 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/treadio/refs/heads/main/openapi/treadio-approvalassignments-api-openapi.yml