Tekmetric Shops API

Shop locations, hours, labor rates, and settings.

OpenAPI Specification

tekmetric-shops-api-openapi.yml Raw ↑
openapi: 3.0.3
info:
  title: Tekmetric Appointments Shops 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: Shops
  description: Shop locations, hours, labor rates, and settings.
paths:
  /oauth/token:
    post:
      operationId: getAccessToken
      tags:
      - Shops
      summary: Obtain an OAuth 2.0 access token
      description: Exchanges an approved Client ID/Secret (sent as HTTP Basic auth) for a bearer access token via the client_credentials grant. The token's scope field lists the space-separated shop IDs the client may access.
      security: []
      requestBody:
        required: true
        content:
          application/x-www-form-urlencoded:
            schema:
              type: object
              required:
              - grant_type
              properties:
                grant_type:
                  type: string
                  enum:
                  - client_credentials
      responses:
        '200':
          description: Access token issued.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TokenResponse'
        '401':
          $ref: '#/components/responses/Unauthorized'
  /shops:
    get:
      operationId: listShops
      tags:
      - Shops
      summary: List authorized shops
      description: Lists the shop records the authenticated OAuth client is scoped to.
      responses:
        '200':
          description: A list of shops.
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Shop'
        '401':
          $ref: '#/components/responses/Unauthorized'
  /shops/{id}:
    parameters:
    - $ref: '#/components/parameters/Id'
    get:
      operationId: getShop
      tags:
      - Shops
      summary: Get a shop
      description: Retrieves a single shop's hours, labor rates, and settings by ID.
      responses:
        '200':
          description: The requested shop.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Shop'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
components:
  schemas:
    Shop:
      type: object
      properties:
        id:
          type: integer
        name:
          type: string
        address:
          $ref: '#/components/schemas/Address'
        phone:
          type: string
        timezone:
          type: string
    TokenResponse:
      type: object
      properties:
        access_token:
          type: string
        token_type:
          type: string
          example: Bearer
        expires_in:
          type: integer
          description: Reported token lifetime in seconds. Per third-party accounts, tokens remain valid until explicitly revoked by Tekmetric regardless of this value.
        scope:
          type: string
          description: Space-separated shop IDs the client is authorized for.
    Address:
      type: object
      properties:
        id:
          type: integer
        address1:
          type: string
        address2:
          type: string
        city:
          type: string
        state:
          type: string
        zip:
          type: string
        streetAddress:
          type: string
        fullAddress:
          type: string
  parameters:
    Id:
      name: id
      in: path
      required: true
      description: The numeric ID of the resource.
      schema:
        type: integer
  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: {}