PartsTech Local Inventory API

Local inventory

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/partstech-local-inventory-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no email required.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

partstech-local-inventory-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  version: 2.021.1
  title: PartsTech Local Inventory API
  description: "\n# Rate Limiting\n\nRequests can be limited by user requests, by private partner requests and by all requests with partner's credentials.\nIt has several time intervals:\n  - *Per day* restricts count of requests made in one day.\n  - *Requests per second* restricts count of requests made in one second.\n  - *Concurrent requests* restricts count of parallel requests.\n  - *Sliding 15 minutes* restricts count of requests made in last 15 minutes.\n\n**Note**: Every method has own separate sets of the limits.\n\n## Headers\nUse the HTTP headers in order to understand where the application is at for a given rate limit, on the method that was just utilized.\nThe HTTP header is returned only for one general limit or for limit that user reached.\n\n\n*Headers*\n  - the rate limit ceiling for that given endpoint:\n  ```\n  x-rate-limit-limit: 1000\n  ```\n  - the number of requests left:\n  ```\n  x-rate-limit-remaining: 570\n  ```\n  - the remaining window before the rate limit resets, in UTC [epoch seconds](https://en.wikipedia.org/wiki/Unix_time):\n  ```\n  x-rate-limit-reset: 1552003200\n  ```\n\nWhen an application exceeds the rate limit for a given standard API endpoint,\nthe API will return a HTTP 429 “Too Many Requests” response code, and the following error will be returned in the response body:\n```\n{\n  \"error\": {\n    \"code\": \"TooManyRequests\",\n    \"message\": \"Some description\"\n  }\n}\n```\n\n# Pagination\n\nWhen you call an API method to retrieve information, it can be returned to you in portions.\nCheck out more detail below on pagination in API methods, including how to use them and which methods follow the pattern.\n\nAPI methods that supports pagination will return the `Link` header. It will include available urls of `first`, `last`, `previous` and `next` pages.\n\n```\nLink: <https://api.partstech.com/purchases?page=1>; rel=\"first\"\nLink: <https://api.partstech.com/purchases?page=1>; rel=\"previous\"\nLink: <https://api.partstech.com/purchases?page=3>; rel=\"next\"\nLink: <https://api.partstech.com/purchases?page=142>; rel=\"last\"\n```\n\n# MOTOR Compliance Requirements\n\nAll MOTOR-powered endpoints (Labor, Maintenance Schedules, Fluids, and Specifications) return a `Link` header\ncontaining the URL to MOTOR's OEM Compliance Requirements documentation.\n\nThe header follows the [RFC 8288 (Web Linking)](https://tools.ietf.org/html/rfc8288) format:\n\n```\nLink: <https://www.motor.com/oem-compliance-requirements/>; rel=\"compliance\"\n```\n\n# Errors\n\nThe API uses standard HTTP status codes to indicate the success or failure of the API call. The body of the response will be JSON in the following format:\n\n```\n{\n  \"error\": {\n    \"code\": \"InternalErrorCode\",\n    \"message\": \"Some description\"\n  }\n}\n```\n\n# Error Responses\nSome default error responses used in the API.\n\nHttp Code  | Explanation | Content Type | Used error codes\n----------------|-------------|------------------|---------\n400 | Bad Request. The request was unacceptable. | `application/json` | `InvalidRequestSyntax`\n401 | Unauthorized. The request requires user or partner credentials or bearer token. Also used for invalid credentials or bearer token. | `application/json` | `InvalidToken`, `UserAuthenticationFailed`, `PartnerAuthenticationFailed`\n402 | Request Failed. The parameters were valid but the request failed. | `application/json` | Different codes, depend on method.\n403 | Forbidden. Also used for unauthorized requests such as improper credentials scopes or permissions issues. | `application/json` | `IncorrectMode`, `DisabledApiUsage`, `UserIsNotActivated`, `HaveNotPermission`, `NotAvailableMethod`\n404 | Some data in the request is not found. Or incorrect url was used. | `application/json`, `text/html`, no content | `NotFound`\n405 | Method not allowed. | `application/json`, `text/html`, no content |\n406 | Unacceptable content type. Client sent an accepts header for a content type which does not exist on the server. | No content |\n409 | Locked. One of the another operations that is in progress blocks this method call. | `application/json` | `LockedSession`\n429 | Too Many Requests | `application/json` | `TooManyRequests`\n432 | Integration Error | `application/json` |\n500 | Internal Server Error. (This is rare.) | `application/json` | `InternalError`\n501 | Not Implemented | `application/json` | `MethodNotImplemented`\n503 | The backend server is not available. (This is rare.) | No content |\n"
  x-logo:
    url: https://partstech.com/wp-content/uploads/2025/03/PartsTech_OEC-compnay_logo.svg
    altText: PartsTech logo
servers:
- url: https://api.partstech.com
  description: Production server
- url: https://api.beta.partstech.com
  description: Beta server
tags:
- name: local-inventory
  description: Local inventory
  x-displayName: Local inventory
paths:
  /local-inventory:
    post:
      summary: Replace local inventory
      description: 'Replaces current local inventory in PartsTech with a new inventory or creates a new inventory in PartsTech.

        '
      operationId: replaceLocalInventory
      x-operation-name: ReplaceLocalInventory
      tags:
      - local-inventory
      security:
      - bearerAuth:
        - user
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
              - items
              properties:
                items:
                  type: array
                  items:
                    $ref: '#/components/schemas/LocalInventoryItem'
      responses:
        '200':
          description: OK
        '400':
          $ref: '#/components/responses/InvalidRequest'
    put:
      summary: Update local inventory
      description: 'Receives changes in local inventory.


        Updates current local inventory with provided changes.

        '
      operationId: updateLocalInventory
      x-operation-name: UpdateLocalInventory
      tags:
      - local-inventory
      security:
      - bearerAuth:
        - user
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
              - items
              properties:
                items:
                  type: array
                  items:
                    $ref: '#/components/schemas/LocalInventoryItem'
      responses:
        '200':
          description: OK
        '400':
          $ref: '#/components/responses/InvalidRequest'
  /local-inventory/health/summary:
    get:
      summary: Get local inventory mapping report summary
      description: 'Get current number of items in local inventory, number of mapped and unmapped, number of unmapped items by error.

        '
      operationId: localInventoryMappingReportSummary
      x-operation-name: GetLocalInventoryHealthSummary
      tags:
      - local-inventory
      security:
      - bearerAuth:
        - user
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                required:
                - total
                - mapped
                - unmapped
                properties:
                  total:
                    description: Number of local inventory items in the system.
                    type: integer
                  mapped:
                    description: Number of local inventory items that were mapped.
                    type: integer
                  unmapped:
                    description: Number of local inventory items that were mapped.
                    type: integer
                  unmappedByError:
                    description: Number of unmapped items by error.
                    type: array
                    items:
                      type: object
                      required:
                      - errorCode
                      - count
                      properties:
                        errorCode:
                          description: 'Error code. Describes a reason why items were not mapped.

                            - NO_PARTNER_MAPPING

                            - NO_SUPPLIER_MAPPING

                            - NO_LINE_CODE_MAPPING

                            - NO_BRAND_MAPPING

                            - PART_NOT_FOUND

                            - MULTIPLE_PARTS_FOUND

                            - etc

                            '
                          type: string
                        count:
                          description: Number of unmapped items with the error.
                          type: integer
        '403':
          $ref: '#/components/responses/ForbiddenError'
  /local-inventory/health/details:
    get:
      summary: Get local inventory mapping report details
      description: 'Get a list of local inventory items with status and errors.

        '
      operationId: localInventoryMappingReportDetails
      x-operation-name: GetLocalInventoryHealthDetails
      tags:
      - local-inventory
      security:
      - bearerAuth:
        - user
      parameters:
      - name: status
        in: query
        description: Mapping Status
        required: false
        schema:
          type: string
          enum:
          - MAPPED
          - UNMAPPED
        example: UNMAPPED
      - $ref: '#/components/parameters/page'
      - name: perPage
        in: query
        schema:
          type: integer
          enum:
          - 25
          - 50
          - 100
          - 250
          - 500
        example: 50
        description: 'Records per request. Default: 50'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                required:
                - total
                - items
                properties:
                  total:
                    description: Total number of items
                    type: integer
                  items:
                    description: List of items.
                    type: array
                    items:
                      $ref: '#/components/schemas/LocalInventoryMappingReportItem'
        '403':
          $ref: '#/components/responses/ForbiddenError'
  /local-inventory/search:
    post:
      summary: Search Parts
      description: "Search Params:\n  - Search by Part Number\n  - Non-app Search - search by universal part types and attributes.\n\n    Use part types with application UNIVERSAL or UNIVERSAL_FITTED  (see [\"Get/Search Part Types\"](#operation/getPartTypes)).\n    Check and select required attributes for a part type before sending of search request (see [\"Get Part Type Attributes\"](#operation/getPartTypeAttributes)).\n  - Search by Vehicle - a mix of Vehicle identifier with auxilary param\n\nVehicle Identifiers:\n  - Vehicle params (year, make, model, etc)\n  - Partstech Vehicle ID\n  - VIN\n  - Plate with State\n\nAuxilary Params:\n  - Part Type IDs\n  - Keyword\n\nSee examples of requests.\n"
      tags:
      - local-inventory
      operationId: localInventorySearch
      x-operation-name: QueryLocalInventorySearch
      security:
      - bearerAuth:
        - user
      parameters:
      - $ref: '#/components/parameters/locale'
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
              - searchParams
              properties:
                searchParams:
                  oneOf:
                  - $ref: '#/components/schemas/VehicleSearchParamsByKeyword'
                  - $ref: '#/components/schemas/VehicleSearchParamsByPartTypes'
                  - $ref: '#/components/schemas/PartsTechVehicleIdSearchParamsByKeyword'
                  - $ref: '#/components/schemas/PartsTechVehicleIdSearchParamsByPartTypes'
                  - $ref: '#/components/schemas/VinSearchParamsByKeyword'
                  - $ref: '#/components/schemas/VinSearchParamsByPartTypes'
                  - $ref: '#/components/schemas/PlateSearchParamsByKeyword'
                  - $ref: '#/components/schemas/PlateSearchParamsByPartTypes'
                  - $ref: '#/components/schemas/PartNumberSearchParams'
                  - $ref: '#/components/schemas/NonAppSearchParams'
                filters:
                  type: array
                  minItems: 0
                  items:
                    type: object
                    properties:
                      name:
                        type: string
                      values:
                        type: array
                        minItems: 1
                        items:
                          oneOf:
                          - type: integer
                          - type: string
                          - type: boolean
                  example:
                  - name: parts
                    values:
                    - 1688
                    - 2172
                  - name: WarrantyTime
                    values:
                    - 24 Months
                  - name: manufacturers
                    values:
                    - 336
            examples:
              VehiclePartTypeSearch:
                summary: Search by Vehicle and PartTypeIds
                description: Make a search by Vehicle and PartTypeId. `searchParams` accepts only `vehicleParams` and `partTypeIds` parameters.
                value:
                  searchParams:
                    vehicleParams:
                      yearId: 2003
                      makeId: 31
                      modelId: 173
                      subModelId: 20
                      engineId: 177
                      engineParams:
                        engineVinId: 1
                        engineDesignationId: 589
                        engineVersionId: 3
                        fuelTypeId: 5
                        cylinderHeadTypeId: 6
                    partTypeIds:
                    - 5132
                    - 10328
                  filters:
                  - name: parts
                    values:
                    - 5132
                    - 10328
                  - name: Bodytype
                    values:
                    - Sedan
                  - name: manufacturers
                    values:
                    - 551
              VehicleKeywordSearch:
                summary: Search by Vehicle and Keyword
                description: Make a search by Vehicle and PartTypeIds. `searchParams` accepts only `vehicleParams` and `keyword` parameters.
                value:
                  searchParams:
                    vehicleParams:
                      yearId: 2014
                      makeId: 21
                      modelId: 104
                      subModelId: 3512
                      engineId: 2062
                      engineParams:
                        engineVinId: 31
                        engineDesignationId: 1
                        engineVersionId: 73
                        fuelTypeId: 14
                        cylinderHeadTypeId: 6
                    keyword: Air Filter
              VehicleIdPartTypeSearch:
                summary: Search by PartsTech Vehicle ID and PartTypeIds
                description: Make a search by PartsTech Vehicle ID and PartTypeIds. `searchParams` accepts only `vehicleId` and `partTypeIds` parameters.
                value:
                  searchParams:
                    vehicleId: 287296
                    partTypeIds:
                    - 5132
                    - 10328
              VehicleIdKeywordSearch:
                summary: Search by PartsTech Vehicle ID and Keyword
                description: Make a search by PartsTech Vehicle ID and Keyword. `searchParams` accepts only `vehicleId` and `keyword` parameters.
                value:
                  searchParams:
                    vehicleId: 287296
                    keyword: Air Filter
              VinPartTypeSearch:
                summary: Search by VIN and PartTypeIds
                description: Make a search by VIN and PartTypeIds. `searchParams` accepts only `vin` and `partTypeIds` parameters.
                value:
                  searchParams:
                    vin: somevin
                    partTypeIds:
                    - 1005
                    - 1006
              VinKeywordSearch:
                summary: Search by VIN and Keyword
                description: Make a search by VIN and Keyword. `searchParams` accepts only `vin` and `keyword` parameters.
                value:
                  searchParams:
                    vin: somevin
                    keyword: Air Filter
              PlatePartTypeSearch:
                summary: Search by Plate and PartTypeIds
                description: Make a search by Plate and PartTypeIds. `searchParams` accepts only `plate` and `partTypeIds` parameters.
                value:
                  searchParams:
                    plate:
                      plate: Some Plate
                      state: CT
                    partTypeIds:
                    - 1005
                    - 1006
              PlateKeywordSearch:
                summary: Search by Plate and Keyword
                description: Make a search by Plate and Keyword. `searchParams` accepts only `plate` and `keyword` parameters.
                value:
                  searchParams:
                    plate:
                      plate: Some Plate
                      state: CT
                    keyword: Air Filter
              PartNumberSearch:
                summary: Search by PartNumber
                description: Make a search by PartNumber. `searchParams` accepts only `partNumber` parameter.
                value:
                  searchParams:
                    partNumber:
                    - 331
              NonAppSearch:
                summary: Search by universal part type
                description: Make a search by Part type and required attribute.
                value:
                  searchParams:
                    partTypeId: 11393
                    attributes:
                    - name: Color
                      values:
                      - Green
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                required:
                - parts
                - filters
                properties:
                  parts:
                    type: array
                    minItems: 0
                    items:
                      $ref: '#/components/schemas/LocalInventoryPart'
                  filters:
                    type: array
                    minItems: 0
                    items:
                      type: object
                      required:
                      - name
                      - label
                      - options
                      properties:
                        name:
                          type: string
                          description: A property used in the search request to identify a filter.
                        label:
                          type: string
                          description: An user-friendly description.
                        options:
                          type: array
                          description: Options for the filter.
                          minItems: 1
                          items:
                            type: object
                            required:
                            - label
                            - active
                            - value
                            properties:
                              label:
                                type: string
                                description: An user-friendly description.
                              count:
                                type:
                                - integer
                                - 'null'
                                description: A number of parts with this value.
                              active:
                                type: boolean
                                description: Shows if this option affects current results.
                              value:
                                description: A property used in the search request to filter results.
                                oneOf:
                                - type: string
                                - type: integer
                                - type: boolean
                    example:
                    - name: WarrantyTime
                      label: Warranty Time
                      options:
                      - label: 24 Months
                        value: 24 Months
                        active: true
                        count: 2
                    - name: manufacturers
                      label: Manufacturer
                      options:
                      - label: Spectra Premium
                        value: 336
                        active: true
                        count: 2
                      - label: Spectra Radiators Size Codes
                        value: 44452
                        active: false
                        count: 2
                    - name: parts
                      label: Part Type
                      options:
                      - label: Radiator
                        value: 2172
                        active: true
                        count: 2
                      - label: Drum Brake Shoe
                        value: 1688
                        active: true
                        count: 0
        '403':
          $ref: '#/components/responses/ForbiddenError'
components:
  schemas:
    PartCategory:
      type:
      - string
      - 'null'
      enum:
      - Maintenance
      - Service
      - Consumable
    LocalInventoryItem:
      type: object
      required:
      - inventoryUID
      - partNumber
      - onHand
      - partPrice
      - partCost
      properties:
        inventoryUID:
          type: string
          description: Unique ID of item in SMS.
        partNumber:
          type: string
        brandAAIAId:
          type:
          - string
          - 'null'
          description: The ID of a brand from the Autocare Association. Can be got from brand object.
        brandUID:
          type:
          - integer
          - 'null'
          description: The ID of a brand in SMS.
        brandName:
          type:
          - string
          - 'null'
          description: The name of a brand in SMS.
        lineCode:
          type:
          - string
          - 'null'
        partDescription:
          type:
          - string
          - 'null'
        supplierId:
          type:
          - integer
          - 'null'
          description: Supplier ID in PartsTech.
        supplierUID:
          type:
          - string
          - 'null'
          description: Supplier ID in SMS.
        supplierName:
          type:
          - string
          - 'null'
          description: Supplier Name in SMS.
        categoryUID:
          type:
          - string
          - 'null'
        categoryName:
          type:
          - string
          - 'null'
        onHand:
          type: integer
          minimum: 0
          description: Current quantity in inventory.
        partPrice:
          type: number
          format: float
          description: Price for customer.
        partCost:
          type: number
          format: float
          description: Price for shop.
    VinSearchParamsByPartTypes:
      allOf:
      - $ref: '#/components/schemas/VinSearchParams'
      - $ref: '#/components/schemas/PartTypesSearchParams'
    VehicleSearchParamsByPartTypes:
      allOf:
      - $ref: '#/components/schemas/VehicleSearchParams'
      - $ref: '#/components/schemas/PartTypesSearchParams'
    VehicleParamsByEngineConfigId:
      title: Vehicle params with engineConfigId
      description: 'Vehicle parameters with Engine Config ID.


        EngineID and other Engine parameters will be defined by Engine Config ID.

        '
      type: object
      required:
      - yearId
      - makeId
      - modelId
      - subModelId
      - engineConfigId
      properties:
        yearId:
          type: integer
          example: 2015
        makeId:
          type: integer
          example: 65
        modelId:
          type: integer
          example: 123
        subModelId:
          type: integer
          example: 234
        engineConfigId:
          type: integer
          example: 34
    InvalidRequestError:
      description: Malformed request. The request body is not parse-able or with invalid content.
      type: object
      required:
      - error
      properties:
        error:
          $ref: '#/components/schemas/Error'
        validationErrors:
          type: array
          items:
            type: string
      example:
        error:
          code: InvalidRequestSyntax
          message: Cannot parse request. Invalid data format
        validationErrors:
        - credentials.user.key - This value should not be blank.
        - credentials.user.id - This value should be of type string.
        - credentials.partner - This value should not be blank.
    PartsTechVehicleIdSearchParams:
      description: 'A search parameters for the search by PartsTech Vehicle ID.

        It consists on Vehicle ID and Part Types or Keyword.

        '
      type: object
      minProperties: 1
      maxProperties: 2
      required:
      - vehicleId
      properties:
        vehicleId:
          type: integer
          example: 1
          description: PartsTech's ID for a vehicle.
    VehicleSearchParams:
      description: 'A search parameters for the search by vehicle parameters.

        It consists on Vehicle arameters and Part Types or Keyword.


        [Search](#tag/search) require Vehicle arameters and one of another properties - Part Types or Keyword.


        [Create Quote](#operation/createQuote) requires only Vehicle parameters. Part Types or Keyword is optional.

        '
      type: object
      minProperties: 1
      maxProperties: 2
      required:
      - vehicleParams
      properties:
        vehicleParams:
          $ref: '#/components/schemas/VehicleParams'
    ResponseTaxonomy:
      type:
      - object
      - 'null'
      description: "Part taxonomy has three levels of classification. \nCategory, subcategory, and part type. \nCategory is the most broad and each category contains subcategories.\nEach subcategory contains part types. \nPart type is the most specific classification for a part. \nFor example, the taxonomy for brake pads are the following\n\\- Category = Brake - Subcategory = Disc Pads and Brake Shoes - Part Type = Disc Brake Pad Set.\n"
      required:
      - partTypeId
      properties:
        partTypeId:
          type: integer
          example: 14216
          description: The ID of a part type from the Autocare Association's PCdb.
        partTypeName:
          type:
          - string
          - 'null'
          example: Air Filter Set
          description: The name of a part type.
        partTypeDescription:
          type:
          - string
          - 'null'
          example: Initial fill additive for turbochargers.
          description: The description of a part type.
        categoryId:
          type:
          - integer
          - 'null'
          example: 12
          description: The ID of a part category from the Autocare Association's PCdb. Category is the highest level of part taxonomy.
        categoryName:
          type:
          - string
          - 'null'
          example: Air and Fuel Delivery
          description: The name of a category.
        subCategoryId:
          type: integer
          example: 153
          description: The ID of a subcategory from the Autocare Association's PCdb.
        subCategoryName:
          type:
          - string
          - 'null'
          example: Filters
          description: The name of a subcategory.
      example:
        partTypeId: 8852
        partTypeName: Windshield Wiper Blade
        categoryId: 22
        categoryName: Wiper and Washer
        subCategoryId: 236
        subCategoryName: Windshield Wiper Arm, Blade, and Related Components
    EngineParams:
      title: Engine params
      type: object
      required:
      - engineVinId
      - engineDesignationId
      - engineVersionId
      - fuelTypeId
      - cylinderHeadTypeId
      properties:
        engineVinId:
          type: integer
          example: 134
        engineDesignationId:
          type: integer
          example: 344
        engineVersionId:
          type: integer
          example: 342
        fuelTypeId:
          type: integer
          example: 54
        cylinderHeadTypeId:
          type: integer
          example: 25243
    LocalInventoryPart:
      type: object
      required:
      - inventoryUID
      - partId
      - partNumber
      - partName
      - brand
      - quantity
      properties:
        inventoryUID:
          type: string
          description: ID of part in local inventory.
        partId:
          type: string
          example: BBHK-24CA
          description: PartsTech's ID for a part. Consists of brandId-partNumber.
        partNumber:
          type: string
          example: 24CA
          description: The manufacturer part number.
        partName:
          type: string
          example: Bosch Windshield Wiper Blade
          description: The name of the part. Part name is typically the brand name + the part type name. For tires it is typically the brand name + model. There is a shop setting that can be enabled to remove the brand name from this field for all parts (tires excluded).
        brand:
          $ref: '#/components/schemas/Brand'
        vehicleId:
          type:
          - integer
          - 'null'
          description: PartsTech's ID for a vehicle.
        vehicleName:
          type:
          - string
          - 'null'
          description: Name of the vehicle selected for fitment during the PartsTech session. Typically consists of year, make, model, and engine.
        images:
          type: array
          minItems: 0
          items:
            type: object
            required:
            - preview
            - full
            - medium
            properties:
              preview:
                type: string
              full:
                type: string
              medium:
                type: string
          example:
          - preview: some_url
            full: some_url
            medium: some_url
          - preview: some_url
            full: some_url
            medium: some_url
        taxonomy:
          $ref: '#/components/schemas/ResponseTaxonomy'
        partCategory:
          $ref: '#/components/schemas/PartCategory'
        supplier:
          $ref: '#/components/schemas/BriefSupplier'
        quantity:
          type: integer
          description: Current quantity in inventory.
        price:
          $ref: '#/components/schemas/PartPrice'
        attributes:
          type: array
          minItems: 0
          items:
            $ref: '#/components/schemas/Attribute'
          example:
          - name: ItemQuantity
            label: Item Qty/Size/Weight
            value: 1 Each
            type: Part
          - name: Position
            label: Position
            value: Front Left
            type: Part
            dbInfo:
              dbName: pcdb
              tableName: positions
              idFieldName: Position
              idValue: PositionID
          - name: Qty
            label: Quantity per vehicle
            value: 1
            type: Both
        variations:
          type: array
          minItems: 0
          items:
            type: object
            properties:
              variationId:
                type: string
              notes:
                type: array
                minItems: 0
                items:
                  type: array
                  minItems: 1
                  items:
                    type: string
                  example: {}
              partName:
                type:
                - string
                - 'null'
                example: Bosch Windshield Wiper Blade
              attribu

# --- truncated at 32 KB (51 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/partstech/refs/heads/main/openapi/partstech-local-inventory-api-openapi.yml