openapi: 3.1.0 info: title: ServiceTitan Accounting Adjustments Bookings 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: Bookings description: Customer-initiated booking requests paths: /bookings: get: summary: List Bookings operationId: listBookings tags: - Bookings parameters: - $ref: '#/components/parameters/Page' - $ref: '#/components/parameters/PageSize' - $ref: '#/components/parameters/ModifiedOnOrAfter' responses: '200': description: Paginated list of bookings content: application/json: schema: $ref: '#/components/schemas/BookingPagedResponse' post: summary: Create Booking operationId: createBooking tags: - Bookings requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/BookingCreateRequest' responses: '200': description: Created booking content: application/json: schema: $ref: '#/components/schemas/Booking' components: schemas: BookingPagedResponse: type: object properties: data: type: array items: $ref: '#/components/schemas/Booking' Address: type: object properties: street: type: string unit: type: string nullable: true city: type: string state: type: string zip: type: string country: type: string latitude: type: number nullable: true longitude: type: number nullable: true Booking: type: object properties: id: type: integer format: int64 source: type: string name: type: string address: $ref: '#/components/schemas/Address' customerType: type: string start: type: string format: date-time summary: type: string campaignId: type: integer nullable: true businessUnitId: type: integer nullable: true isFirstTimeClient: type: boolean uploadedImages: type: array items: type: string status: type: string enum: - Pending - Converted - Dismissed modifiedOn: type: string format: date-time BookingCreateRequest: type: object required: - name - summary - start properties: source: type: string name: type: string address: $ref: '#/components/schemas/Address' customerType: type: string start: type: string format: date-time summary: type: string campaignId: type: integer businessUnitId: type: integer parameters: PageSize: name: pageSize in: query schema: type: integer default: 50 maximum: 500 Page: name: page in: query schema: type: integer default: 1 minimum: 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