ServiceTitan Settings API
Manage business units, employees, technicians, user roles, employee permissions, tag types, and tenant-wide settings. The tenant configuration surface for every other API in the platform.
Manage business units, employees, technicians, user roles, employee permissions, tag types, and tenant-wide settings. The tenant configuration surface for every other API in the platform.
openapi: 3.1.0
info:
title: ServiceTitan Settings API
description: |
The Settings API manages business units, employees, technicians, user roles, employee
permissions, tag types, and tenant-wide settings. The tenant configuration surface for
every other API in the platform. Tenant-scoped; OAuth 2.0 + App Key.
version: "2.0.0"
contact:
name: ServiceTitan Developer Support
url: https://developer.servicetitan.io/
email: [email protected]
license:
name: ServiceTitan Terms of Service
url: https://www.servicetitan.com/legal/terms-of-service
servers:
- url: https://api.servicetitan.io/settings/v2/{tenant}
description: Production
variables:
tenant:
default: "0000000"
- url: https://api-integration.servicetitan.io/settings/v2/{tenant}
description: Integration (Sandbox)
variables:
tenant:
default: "0000000"
security:
- OAuth2: []
AppKey: []
tags:
- name: Business Units
- name: Technicians
- name: Employees
- name: User Roles
- name: Tag Types
paths:
/business-units:
get:
summary: List Business Units
operationId: listBusinessUnits
tags: [Business Units]
parameters:
- $ref: '#/components/parameters/Page'
- $ref: '#/components/parameters/PageSize'
- $ref: '#/components/parameters/ModifiedOnOrAfter'
responses:
'200':
description: Business units
content:
application/json:
schema:
$ref: '#/components/schemas/BusinessUnitPagedResponse'
/business-units/{id}:
get:
summary: Get Business Unit
operationId: getBusinessUnit
tags: [Business Units]
parameters:
- $ref: '#/components/parameters/Id'
responses:
'200':
description: Business unit
content:
application/json:
schema:
$ref: '#/components/schemas/BusinessUnit'
/technicians:
get:
summary: List Technicians
operationId: listTechnicians
tags: [Technicians]
parameters:
- $ref: '#/components/parameters/Page'
- $ref: '#/components/parameters/PageSize'
- $ref: '#/components/parameters/ModifiedOnOrAfter'
- name: active
in: query
schema: { type: string, enum: [True, Any, False] }
responses:
'200':
description: Technicians
content:
application/json:
schema:
$ref: '#/components/schemas/TechnicianPagedResponse'
post:
summary: Create Technician
operationId: createTechnician
tags: [Technicians]
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/TechnicianCreateRequest'
responses:
'200':
description: Created technician
/technicians/{id}:
get:
summary: Get Technician
operationId: getTechnician
tags: [Technicians]
parameters:
- $ref: '#/components/parameters/Id'
responses:
'200':
description: Technician
content:
application/json:
schema:
$ref: '#/components/schemas/Technician'
patch:
summary: Update Technician
operationId: updateTechnician
tags: [Technicians]
parameters:
- $ref: '#/components/parameters/Id'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/TechnicianCreateRequest'
responses:
'200':
description: Updated
/employees:
get:
summary: List Employees
operationId: listEmployees
tags: [Employees]
parameters:
- $ref: '#/components/parameters/Page'
- $ref: '#/components/parameters/PageSize'
- $ref: '#/components/parameters/ModifiedOnOrAfter'
responses:
'200':
description: Employees
content:
application/json:
schema:
$ref: '#/components/schemas/EmployeePagedResponse'
/user-roles:
get:
summary: List User Roles
operationId: listUserRoles
tags: [User Roles]
responses:
'200':
description: User roles
content:
application/json:
schema:
type: object
properties:
data:
type: array
items:
type: object
properties:
id: { type: integer }
name: { type: string }
active: { type: boolean }
employeeType: { type: string }
/tag-types:
get:
summary: List Tag Types
operationId: listTagTypes
tags: [Tag Types]
responses:
'200':
description: Tag types
content:
application/json:
schema:
type: object
properties:
data:
type: array
items:
type: object
properties:
id: { type: integer }
name: { type: string }
color: { type: string }
active: { type: boolean }
components:
securitySchemes:
OAuth2:
type: oauth2
flows:
clientCredentials:
tokenUrl: https://auth.servicetitan.io/connect/token
scopes: {}
AppKey:
type: apiKey
in: header
name: ST-App-Key
parameters:
Id:
name: id
in: path
required: true
schema: { type: integer, format: int64 }
Page:
name: page
in: query
schema: { type: integer, default: 1 }
PageSize:
name: pageSize
in: query
schema: { type: integer, default: 50, maximum: 500 }
ModifiedOnOrAfter:
name: modifiedOnOrAfter
in: query
schema: { type: string, format: date-time }
schemas:
BusinessUnit:
type: object
properties:
id: { type: integer }
name: { type: string }
official: { type: string, nullable: true }
email: { type: string, nullable: true }
currency: { type: string }
active: { type: boolean }
invoiceHeader: { type: string, nullable: true }
invoiceMessage: { type: string, nullable: true }
defaultTaxRate: { type: number }
phoneNumber: { type: string, nullable: true }
address:
type: object
modifiedOn: { type: string, format: date-time }
BusinessUnitPagedResponse:
type: object
properties:
data:
type: array
items: { $ref: '#/components/schemas/BusinessUnit' }
Technician:
type: object
properties:
id: { type: integer, format: int64 }
userId: { type: integer }
name: { type: string }
roleIds:
type: array
items: { type: integer }
businessUnitId: { type: integer }
loginName: { type: string }
phoneNumber: { type: string }
email: { type: string }
active: { type: boolean }
memo: { type: string, nullable: true }
dailyGoal: { type: number }
hourlyGoal: { type: number }
modifiedOn: { type: string, format: date-time }
TechnicianCreateRequest:
type: object
required: [name, businessUnitId, loginName]
properties:
name: { type: string }
businessUnitId: { type: integer }
loginName: { type: string }
phoneNumber: { type: string }
email: { type: string }
active: { type: boolean }
roleIds:
type: array
items: { type: integer }
TechnicianPagedResponse:
type: object
properties:
page: { type: integer }
pageSize: { type: integer }
hasMore: { type: boolean }
data:
type: array
items: { $ref: '#/components/schemas/Technician' }
Employee:
type: object
properties:
id: { type: integer }
userId: { type: integer, nullable: true }
name: { type: string }
active: { type: boolean }
roleIds:
type: array
items: { type: integer }
businessUnitId: { type: integer }
email: { type: string }
phoneNumber: { type: string }
modifiedOn: { type: string, format: date-time }
EmployeePagedResponse:
type: object
properties:
data:
type: array
items: { $ref: '#/components/schemas/Employee' }