openapi: 3.0.3 info: title: Tekmetric Appointments Vehicles API description: Tekmetric is a cloud-based auto repair shop management platform. Its REST API is partner-gated - access requires requesting credentials at api.tekmetric.com and Tekmetric's approval (reported at roughly 2-3 weeks); there is no self-serve signup or public API reference. The endpoints, parameters, and response envelope documented here are sourced from beetlebugorg/tekmetric-mcp, an independent open-source client that holds approved credentials and calls the live API - not from an official Tekmetric API reference document. Only read (GET) endpoints are documented because that is all the reference client implements; write endpoints may exist but are not evidenced in any public source. version: v1 contact: name: Tekmetric url: https://www.tekmetric.com/ x-source-note: Endpoint shapes confirmed via github.com/beetlebugorg/tekmetric-mcp (pkg/tekmetric/*.go), an unofficial, independently maintained client, not an official Tekmetric-published specification. servers: - url: https://shop.tekmetric.com/api/v1 description: Production - url: https://sandbox.tekmetric.com/api/v1 description: Sandbox security: - oauth2: [] tags: - name: Vehicles description: Customer vehicles serviced by the shop. paths: /vehicles: get: operationId: listVehicles tags: - Vehicles summary: List or search vehicles description: Lists a shop's vehicles, optionally filtered by a search term (VIN, license plate, make/model) or owning customer. parameters: - $ref: '#/components/parameters/Shop' - $ref: '#/components/parameters/Page' - $ref: '#/components/parameters/Size' - name: search in: query required: false description: Free-text search across VIN, license plate, and make/model. schema: type: string - name: customerId in: query required: false schema: type: integer responses: '200': description: A page of vehicles. content: application/json: schema: $ref: '#/components/schemas/VehiclePage' '401': $ref: '#/components/responses/Unauthorized' /vehicles/{id}: parameters: - $ref: '#/components/parameters/Id' get: operationId: getVehicle tags: - Vehicles summary: Get a vehicle description: Retrieves a single vehicle by ID. responses: '200': description: The requested vehicle. content: application/json: schema: $ref: '#/components/schemas/Vehicle' '401': $ref: '#/components/responses/Unauthorized' '404': $ref: '#/components/responses/NotFound' components: schemas: Page: type: object description: Spring Data Page envelope used by all list endpoints. properties: totalPages: type: integer totalElements: type: integer first: type: boolean last: type: boolean size: type: integer number: type: integer numberOfElements: type: integer Vehicle: type: object properties: id: type: integer customerId: type: integer vin: type: string year: type: integer make: type: string model: type: string subModel: type: string licensePlate: type: string VehiclePage: allOf: - $ref: '#/components/schemas/Page' - type: object properties: content: type: array items: $ref: '#/components/schemas/Vehicle' parameters: Shop: name: shop in: query required: false description: The shop ID to scope the request to. schema: type: integer Id: name: id in: path required: true description: The numeric ID of the resource. schema: type: integer Page: name: page in: query required: false description: Zero-based page number. schema: type: integer default: 0 Size: name: size in: query required: false description: Page size. schema: type: integer default: 20 responses: NotFound: description: The requested resource was not found. Unauthorized: description: Missing, invalid, or revoked access token. securitySchemes: oauth2: type: oauth2 description: OAuth 2.0 client credentials grant. Requires an approved Client ID/Secret issued by Tekmetric after a manual request-access review (reported at roughly 2-3 weeks). flows: clientCredentials: tokenUrl: https://shop.tekmetric.com/api/v1/oauth/token scopes: {}