D-Tools Products API

The Products API from D-Tools — 5 operation(s) for products.

Operations 5

GET /api/v1/Products/GetProducts
GET /api/v1/Products/GetProduct
PUT /api/v1/Products/UpdateProductPrices
PUT /api/v1/Products/UpdateProductBarcodes
PUT /api/v1/Products/UpdateProductStatuses

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/d-tools-products-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

d-tools-products-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: D-Tools Cloud Products API
  description: API to integrate with the D-Tools Cloud application.
  termsOfService: https://www.d-tools.com/d-tools-software-terms-of-services
  contact:
    name: api@d-toolshelp.com
    email: api@d-toolshelp.com
  license:
    name: License Agreement
    url: https://www.d-tools.com/license-agreement
  version: v1
servers:
- url: https://dtcloudapi.d-tools.cloud
tags:
- name: Products
paths:
  /api/v1/Products/GetProducts:
    get:
      tags:
      - Products
      parameters:
      - name: brands
        in: query
        schema:
          type: array
          items:
            type: string
      - name: categories
        in: query
        schema:
          type: array
          items:
            type: string
      - name: suppliers
        in: query
        schema:
          type: array
          items:
            type: string
      - name: fromCreatedDate
        in: query
        schema:
          type: string
          format: date-time
      - name: toCreatedDate
        in: query
        schema:
          type: string
          format: date-time
      - name: fromModifiedDate
        in: query
        schema:
          type: string
          format: date-time
      - name: toModifiedDate
        in: query
        schema:
          type: string
          format: date-time
      - name: stockItemsOnly
        in: query
        schema:
          type: boolean
      - name: includeInactive
        in: query
        schema:
          type: boolean
      - name: includeTotalCount
        in: query
        schema:
          type: boolean
      - name: search
        in: query
        schema:
          type: string
      - name: sort
        in: query
        schema:
          type: string
      - name: page
        in: query
        schema:
          type: integer
          format: int32
          default: 1
      - name: pageSize
        in: query
        schema:
          type: integer
          format: int32
          default: 20
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DTools.Cloud.Data.GetProductsResult'
            text/json:
              schema:
                $ref: '#/components/schemas/DTools.Cloud.Data.GetProductsResult'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails'
            text/json:
              schema:
                $ref: '#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails'
            text/json:
              schema:
                $ref: '#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails'
        '500':
          description: Internal Server Error
  /api/v1/Products/GetProduct:
    get:
      tags:
      - Products
      parameters:
      - name: id
        in: query
        schema:
          type: string
          format: uuid
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DTools.Cloud.Data.ProductDetail'
            text/json:
              schema:
                $ref: '#/components/schemas/DTools.Cloud.Data.ProductDetail'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails'
            text/json:
              schema:
                $ref: '#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails'
            text/json:
              schema:
                $ref: '#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails'
            text/json:
              schema:
                $ref: '#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails'
        '500':
          description: Internal Server Error
  /api/v1/Products/UpdateProductPrices:
    put:
      tags:
      - Products
      requestBody:
        content:
          application/json-patch+json:
            schema:
              type: array
              items:
                $ref: '#/components/schemas/DTools.Cloud.Data.ProductPrice'
          application/json:
            schema:
              type: array
              items:
                $ref: '#/components/schemas/DTools.Cloud.Data.ProductPrice'
          text/json:
            schema:
              type: array
              items:
                $ref: '#/components/schemas/DTools.Cloud.Data.ProductPrice'
          application/*+json:
            schema:
              type: array
              items:
                $ref: '#/components/schemas/DTools.Cloud.Data.ProductPrice'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: string
            text/json:
              schema:
                type: string
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails'
            text/json:
              schema:
                $ref: '#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails'
            text/json:
              schema:
                $ref: '#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails'
            text/json:
              schema:
                $ref: '#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails'
        '500':
          description: Internal Server Error
  /api/v1/Products/UpdateProductBarcodes:
    put:
      tags:
      - Products
      requestBody:
        content:
          application/json-patch+json:
            schema:
              type: array
              items:
                $ref: '#/components/schemas/DTools.Cloud.Data.ProductBarcode'
          application/json:
            schema:
              type: array
              items:
                $ref: '#/components/schemas/DTools.Cloud.Data.ProductBarcode'
          text/json:
            schema:
              type: array
              items:
                $ref: '#/components/schemas/DTools.Cloud.Data.ProductBarcode'
          application/*+json:
            schema:
              type: array
              items:
                $ref: '#/components/schemas/DTools.Cloud.Data.ProductBarcode'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: string
            text/json:
              schema:
                type: string
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails'
            text/json:
              schema:
                $ref: '#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails'
            text/json:
              schema:
                $ref: '#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails'
            text/json:
              schema:
                $ref: '#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails'
        '500':
          description: Internal Server Error
  /api/v1/Products/UpdateProductStatuses:
    put:
      tags:
      - Products
      requestBody:
        content:
          application/json-patch+json:
            schema:
              type: array
              items:
                $ref: '#/components/schemas/DTools.Cloud.Data.ProductStatus'
          application/json:
            schema:
              type: array
              items:
                $ref: '#/components/schemas/DTools.Cloud.Data.ProductStatus'
          text/json:
            schema:
              type: array
              items:
                $ref: '#/components/schemas/DTools.Cloud.Data.ProductStatus'
          application/*+json:
            schema:
              type: array
              items:
                $ref: '#/components/schemas/DTools.Cloud.Data.ProductStatus'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: string
            text/json:
              schema:
                type: string
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails'
            text/json:
              schema:
                $ref: '#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails'
            text/json:
              schema:
                $ref: '#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails'
            text/json:
              schema:
                $ref: '#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails'
        '500':
          description: Internal Server Error
components:
  schemas:
    DTools.Cloud.Data.ProductStatus:
      type: object
      properties:
        id:
          type: string
          format: uuid
        isDiscontinued:
          type:
          - boolean
          - 'null'
        isActive:
          type:
          - boolean
          - 'null'
      additionalProperties: false
    DTools.Cloud.Data.ProductSubscription:
      type: object
      properties:
        itemId:
          type: string
          format: uuid
        name:
          type:
          - string
          - 'null'
        quantity:
          type: integer
          format: int32
      additionalProperties: false
    DTools.Cloud.Data.GetProductsResult:
      type: object
      properties:
        products:
          type:
          - array
          - 'null'
          items:
            $ref: '#/components/schemas/DTools.Cloud.Data.ProductDetail'
        totalProducts:
          type: integer
          format: int32
      additionalProperties: false
    DTools.Cloud.Data.ProductDetail:
      type: object
      properties:
        id:
          type: string
          format: uuid
        name:
          type:
          - string
          - 'null'
        brand:
          type:
          - string
          - 'null'
        model:
          type:
          - string
          - 'null'
        partNumber:
          type:
          - string
          - 'null'
        shortDescription:
          type:
          - string
          - 'null'
        description:
          type:
          - string
          - 'null'
        category:
          type:
          - string
          - 'null'
        keywords:
          type:
          - string
          - 'null'
        defaultQuantity:
          type: integer
          format: int32
        sellUnit:
          type:
          - string
          - 'null'
        isLengthBased:
          type: boolean
        lengthName:
          type:
          - string
          - 'null'
        length:
          type:
          - integer
          - 'null'
          format: int32
        msrp:
          type:
          - number
          - 'null'
          format: double
        unitCost:
          type:
          - number
          - 'null'
          format: double
        unitPrice:
          type:
          - number
          - 'null'
          format: double
        margin:
          type:
          - number
          - 'null'
          format: double
        markup:
          type:
          - number
          - 'null'
          format: double
        costPerLength:
          type:
          - number
          - 'null'
          format: double
        pricePerLength:
          type:
          - number
          - 'null'
          format: double
        isTaxable:
          type: boolean
        tax:
          type:
          - string
          - 'null'
        supplier:
          type:
          - string
          - 'null'
        system:
          type:
          - string
          - 'null'
        phase:
          type:
          - string
          - 'null'
        upcBarcode:
          type:
          - string
          - 'null'
        eanBarcode:
          type:
          - string
          - 'null'
        itfBarcode:
          type:
          - string
          - 'null'
        isStockItem:
          type: boolean
        quantityOnHand:
          type:
          - integer
          - 'null'
          format: int32
        quantityAllocated:
          type:
          - integer
          - 'null'
          format: int32
        quantityAvailable:
          type:
          - integer
          - 'null'
          format: int32
        quantityOnOrder:
          type:
          - integer
          - 'null'
          format: int32
        quantityNeeded:
          type:
          - integer
          - 'null'
          format: int32
        minimumStockLevel:
          type:
          - integer
          - 'null'
          format: int32
        reorderLevel:
          type:
          - integer
          - 'null'
          format: int32
        isDiscontinued:
          type: boolean
        isClientSupplied:
          type: boolean
        createdDate:
          type: string
          format: date-time
        modifiedDate:
          type: string
          format: date-time
        isActive:
          type: boolean
        images:
          type:
          - array
          - 'null'
          items:
            $ref: '#/components/schemas/DTools.Cloud.Data.ProductImage'
        specifications:
          type:
          - array
          - 'null'
          items:
            $ref: '#/components/schemas/DTools.Cloud.Data.ProductSpecification'
        laborItems:
          type:
          - array
          - 'null'
          items:
            $ref: '#/components/schemas/DTools.Cloud.Data.ProductLaborItem'
        accessories:
          type:
          - array
          - 'null'
          items:
            $ref: '#/components/schemas/DTools.Cloud.Data.ProductAccessory'
        subscriptions:
          type:
          - array
          - 'null'
          items:
            $ref: '#/components/schemas/DTools.Cloud.Data.ProductSubscription'
      additionalProperties: false
    DTools.Cloud.Data.ProductSpecification:
      type: object
      properties:
        name:
          type:
          - string
          - 'null'
        value:
          type:
          - string
          - 'null'
      additionalProperties: false
    DTools.Cloud.Data.ProductBarcode:
      type: object
      properties:
        id:
          type: string
          format: uuid
        upcBarcode:
          type:
          - string
          - 'null'
        eanBarcode:
          type:
          - string
          - 'null'
        itfBarcode:
          type:
          - string
          - 'null'
      additionalProperties: false
    DTools.Cloud.Data.ProductPrice:
      type: object
      properties:
        id:
          type: string
          format: uuid
        msrp:
          type:
          - number
          - 'null'
          format: double
        unitCost:
          type:
          - number
          - 'null'
          format: double
        unitPrice:
          type:
          - number
          - 'null'
          format: double
      additionalProperties: false
    DTools.Cloud.Data.ProductLaborItem:
      type: object
      properties:
        laborType:
          type:
          - string
          - 'null'
        time:
          type: integer
          format: int32
        price:
          type: number
          format: double
        timePerLength:
          type:
          - integer
          - 'null'
          format: int32
        pricePerLength:
          type:
          - number
          - 'null'
          format: double
        phase:
          type:
          - string
          - 'null'
        isBillable:
          type: boolean
      additionalProperties: false
    Microsoft.AspNetCore.Mvc.ProblemDetails:
      type: object
      properties:
        type:
          type:
          - string
          - 'null'
        title:
          type:
          - string
          - 'null'
        status:
          type:
          - integer
          - 'null'
          format: int32
        detail:
          type:
          - string
          - 'null'
        instance:
          type:
          - string
          - 'null'
      additionalProperties: {}
    DTools.Cloud.Data.ProductImage:
      type: object
      properties:
        url:
          type:
          - string
          - 'null'
        type:
          type:
          - string
          - 'null'
          readOnly: true
        isDefault:
          type: boolean
      additionalProperties: false
    DTools.Cloud.Data.ProductAccessory:
      type: object
      properties:
        itemId:
          type: string
          format: uuid
        type:
          type:
          - string
          - 'null'
          readOnly: true
        name:
          type:
          - string
          - 'null'
        quantity:
          type: integer
          format: int32
        laborTime:
          type:
          - integer
          - 'null'
          format: int32
        laborPrice:
          type:
          - number
          - 'null'
          format: double
        includeOption:
          type:
          - string
          - 'null'
          readOnly: true
        isBillable:
          type: boolean
      additionalProperties: false