openapi: 3.1.0 info: title: ServiceTitan Accounting Adjustments Services API description: 'The Accounting API manages invoices, invoice items, AP credits, payments, payment terms, payment types, journal entries, journal entry details, tax zones, and GL accounts. Tenant-scoped; OAuth 2.0 + App Key. Integrates with QuickBooks, Sage Intacct, and Acumatica. ' version: 2.0.0 contact: name: ServiceTitan Developer Support url: https://developer.servicetitan.io/ email: integrations@servicetitan.com license: name: ServiceTitan Terms of Service url: https://www.servicetitan.com/legal/terms-of-service servers: - url: https://api.servicetitan.io/accounting/v2/{tenant} description: Production variables: tenant: default: '0000000' - url: https://api-integration.servicetitan.io/accounting/v2/{tenant} description: Integration (Sandbox) variables: tenant: default: '0000000' security: - OAuth2: [] AppKey: [] tags: - name: Services paths: /services: get: summary: List Services operationId: listServices tags: - Services parameters: - $ref: '#/components/parameters/Page' - $ref: '#/components/parameters/PageSize' - $ref: '#/components/parameters/ModifiedOnOrAfter' - name: active in: query schema: type: boolean responses: '200': description: Paginated services content: application/json: schema: $ref: '#/components/schemas/ServicePagedResponse' post: summary: Create Service operationId: createService tags: - Services requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/ServiceCreateRequest' responses: '200': description: Created service content: application/json: schema: $ref: '#/components/schemas/Service' /services/{id}: get: summary: Get Service operationId: getService tags: - Services parameters: - $ref: '#/components/parameters/Id' responses: '200': description: Service content: application/json: schema: $ref: '#/components/schemas/Service' patch: summary: Update Service operationId: updateService tags: - Services parameters: - $ref: '#/components/parameters/Id' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/Service' responses: '200': description: Updated service delete: summary: Delete Service operationId: deleteService tags: - Services parameters: - $ref: '#/components/parameters/Id' responses: '200': description: Deleted components: schemas: Service: type: object properties: id: type: integer format: int64 code: type: string displayName: type: string description: type: string warranty: type: object properties: duration: type: integer description: type: string categories: type: array items: type: integer price: type: number format: double memberPrice: type: number format: double nullable: true addOnPrice: type: number format: double nullable: true addOnMemberPrice: type: number format: double nullable: true taxable: type: boolean account: type: string nullable: true hours: type: number isLabor: type: boolean recommendations: type: array items: type: integer upgrades: type: array items: type: integer commissionBonus: type: object properties: type: type: string amount: type: number paysCommission: type: boolean active: type: boolean modifiedOn: type: string format: date-time ServicePagedResponse: type: object properties: page: type: integer pageSize: type: integer hasMore: type: boolean data: type: array items: $ref: '#/components/schemas/Service' ServiceCreateRequest: type: object required: - code - displayName - price properties: code: type: string displayName: type: string description: type: string price: type: number memberPrice: type: number hours: type: number taxable: type: boolean categories: type: array items: type: integer parameters: Id: name: id in: path required: true schema: type: integer format: int64 PageSize: name: pageSize in: query schema: type: integer default: 50 maximum: 500 Page: name: page in: query schema: type: integer default: 1 ModifiedOnOrAfter: name: modifiedOnOrAfter in: query schema: type: string format: date-time securitySchemes: OAuth2: type: oauth2 flows: clientCredentials: tokenUrl: https://auth.servicetitan.io/connect/token scopes: {} AppKey: type: apiKey in: header name: ST-App-Key