Skip to main content

D-Tools SI API Overview

Eduardo Voloch avatar
Written by Eduardo Voloch
Updated this week

All the following information relates to the D-Tools System Integrator (on-premises or hosted server) API. This API is not for D-Tools Cloud, but just for the D-Tools System Integrator.

Please take a moment to review our overall API capabilities and considerations. This will help you understand how our API works and will answer most of the preliminary questions you may have. This page is updated when new features become available.

The D-Tools SI API is Cloud-based and has been created to bridge the data from the on-premises (or hosted) D-Tools instance to a cloud API Server, where it becomes available for subscription and updates from/to a 3rd party application.

It is important to understand how our API has been designed in relation to our product: As an on-premises application (regardless of whether the server is installed locally or is hosted), SI has no directly accessible API. Instead, we have created a middleware solution running on our cloud, simulating a queue for data. When you POST data to the API, that data is stored on the API until it is applied to D-Tools SI. To consume data from the API, D-Tools SI must first export data to the API. The export of data (i.e., project export) can be done manually or automatically.

Cloud API

Features Available

  • Projects and Change Orders

    • Create new SI projects and change orders

    • Update existing SI projects

    • Archive and Unarchive SI Projects

    • Lock and unlock SI Projects and change orders

    • Add project comments

    • Get SI projects and change orders

    • Get partial projects

  • Tasks

    • Get tasks (by task ID or by project ID)

    • Get Mobile Install task notes

    • Publish new tasks

    • Update existing tasks

  • Service Orders

    • Get service orders

    • Create a new service order

    • Update an existing service order

    • Get Mobile Install Service Order notes

  • Purchase Orders

    • Get Purchase Orders

  • Service Plan

    • Get Service Plans

  • Time Sheets

    • Get time sheets

    • Create new time sheets

    • Update existing time sheets

  • Catalog

    • Get products (batches of items)

    • Create (or Update) products

  • Clients

    • Get clients

    • Create new clients

    • Update existing clients

    • Subscribe (GET) Clients (will be available in v21 - mid-February release)

  • Webhooks (see webhooks section below)

Please note that the old Change Order method (before SI2017, and based on revision compare) is deprecated. Please use the Change Order feature in D-Tools SI and the Projects / Change Orders Subscribe service endpoint to retrieve Change Orders data.

Webhooks

Our webhooks offer a comprehensive range of features and functionalities, tailored to meet diverse user requirements and preferences:

Authentication Options: Users have the flexibility to choose from various authentication methods:

  • Basic Authentication only (username and password).

  • Headers only (excluding username and password).

  • Both Basic Authentication and Headers.

  • None: Leaving all fields blank.

API Key Integration: The inclusion of the API key in the webhook post object enhances both security and integration efficiency.

Webhook Post Object Elements:

  • API Key: Links to the Integration and SI License.

  • Id: The identifier of the object posted, which can be used to retrieve the full object from the API.

  • Type: Options include Create, Update, or Delete (with Delete currently supported only in projects).

  • Module: Various types such as Product, Project, Partial Project, Purchase Order, Service Order, Service Plan, or Time Sheet.

  • UpdatedOn: Records the UTC date and time of the publication.

Enhanced Reliability: The webhook code in SI v22 logs both successful and failed attempts. In case of failure, the system executes three retry attempts at intervals of approximately 5, 15, and 30 minutes. After four total attempts, no further attempts are made.

Logging and Monitoring: The new Log button in the Manage Webhooks section in SI displays logs of successful and unsuccessful attempts for a selected webhook, including fields like Status, Number/Name, Date, Error, Attempts, and Last Attempted time.

Webhooks are incredibly useful for automating reactions to events within a system or application. They function as user-defined HTTP callbacks that are triggered by specific events. When an event occurs, the source site makes an HTTP request to the URL configured for the webhook. This mechanism allows for real-time data transmission, efficient inter-system communication, and immediate response to events.

Real-world Example: Imagine a scenario in a sales management system where every time a new sale is recorded, a webhook is triggered. This webhook could be configured to automatically send an HTTP request to a CRM (Customer Relationship Management) system. The request would contain details of the sale (like sale amount, customer information, and product details) encapsulated in the webhook post object. This real-time update enables the CRM system to immediately log this new sale, update the customer's purchase history, and trigger other processes like inventory adjustment or personalized customer follow-up emails. This automation not only saves time but also ensures that all systems are synchronized with the latest data, improving efficiency and customer experience.

Below is an example of a JSON payload for a webhook that incorporates the features described above. This example assumes a scenario where a new sale has been recorded, and the webhook is triggered to update a CRM system:

{ "ApiKey": "my_api_key", "Type": "Update", "Module": "Project", "Ids": [ "5791e708-4c59-4d8c-9fec-11635bc93679" ], "UpdatedOn": "2024-02-13T18:28:48.6806156" }

This JSON structure contains the following elements, and it is not customizable:

  • APIKey: Unique identifier for the Integration and SI License.

  • Id: Identifier of the sale object.

  • Type: Denotes the action type; here, it is a "Create" action.

  • Module: Specifies the module type, in this case, "Sales".

  • UpdatedOn: The UTC timestamp of when the webhook was triggered.

  • Authentication: Shows the use of Basic Authentication with a username and password.

  • Headers: These include additional HTTP headers that may be required for the request.

CREATING A WEBHOOK:

EDITING A WEBHOOK:

IP Address and Server Location

We call our API (https://api.d-tools.com) on the IP 52.34.10.235.
This server is located in the US, the West Oregon data center of AWS.

The SI Client directly calls the API endpoint on the AWS server (api.d-tools.com), and it does not go through the SI Server when doing Export to integration.

Automation Settings

We offer a series of settings related to Automation. Please refer to the Integration Settings for the most updated list of automation options available on your D-Tools SI version:

  • Automatic Update (From the API to SI) - The SI Server can automatically pull data from the API and update the SI database

  • Automatic Update (From SI to the API)

    • Export Catalog (Group of Items) - Can choose the Integration and Price Type

    • Projects - Export Projects based on Specific Project statuses and independent integrations. We have defined three use cases for the logic involving automation export, as follows:

a. Always, automatically export a project with "any statuses" to the default integration upon project check-in. This option will always export the project to the API upon project check-in, regardless of the project status. This scenario is for companies that are using Project Management Apps, which require that the project be pushed as they are built/changed/approved/lost, etc This will give a sense of real-time visibility on third-party integrations.

b. Always, automatically export a project with "specific status(es)" only, to the default integration upon project check-in. This is similar to the use case noted above, where multiple recurring pushes are set up. The difference is that only specific statuses are selected.

c. Conditionally, automatically export a project with "specific status(es)" to the default integration upon project check-in. The condition is that if the project status changes, export. If it doesn't change, don't export. As an example, this scenario would be for companies using third-party accounting apps, where they would specify a single status to export to their accounting app, and only (automatically) push it once.

Please go to Start > Setup > Control Panel > Manage Integrations > Settings to set up your automation.

Automation Schedule

The D-Tools System Integrator (SI) API supports both real-time and scheduled data automation, offering flexibility in how data is exchanged between SI and external systems. The API functions as a staging layer between the on-premise SI environment and external consumers, enabling both push and pull operations using either event-based triggers or time-based schedules.

Real-Time Automation (On-Demand and Event-Driven)

The SI API supports real-time data availability. When data is published to the API from SI, it becomes immediately accessible for consumption. There is no throttling mechanism or rate-limiting in place on the SI API, allowing integrations to retrieve data as soon as it becomes available.

Integrators can implement a webhook-based design pattern to trigger actions based on specific events, removing the need for polling-based middleware. Webhooks are used to notify external systems that new data is available, prompting a GET request only when necessary. This approach reduces overhead and ensures efficient API usage.

Examples of real-time or event-driven automation include:

  • Automatic export of a project when it is checked in within SI. This export is pushed to the API immediately.

  • POST requests to the API to create a new project from an external application. Upon successful submission, the API returns the project identifier, and the project is queued and immediately visible in the "New Projects from Integration" screen in SI.

  • Project creation is initiated from a CRM or external system, where available CRM opportunities are fetched in real-time for user selection.

Scheduled Automation (Batch-Oriented)

In addition to real-time automation, the SI API also supports batch-driven processing for data synchronization tasks that do not require immediate execution. This batch approach is typically used for backend automation tasks such as catalog synchronization or bulk project creation. These scheduled jobs are executed by SI services at defined intervals.

Batch workflows include:

  • Automatic Project Creation (from API to SI): This service runs every four hours after the first execution, which begins 15 minutes after the SI Windows service is started. It scans the API for new project definitions and queues them for creation in SI. This is a background process designed for streamlined project creation, not real-time responsiveness.

  • Catalog Data Export (from SI to API): This service initiates 30 minutes after the SI Windows service starts and runs every 2, 6, 12, 18, and 24 hours thereafter. It automates the export of catalog records for synchronization with external systems.

PROJECTS:

CATALOG:

The timer intervals mentioned above are hardcoded in the SI Windows service. These are not imposed by the API, but rather by the internal job scheduler that governs automation routines within the SI environment.

Notes on Integration Design

  • There are no enforced polling intervals required by the API. If a developer chooses to query the API on a 15-minute cycle, that is determined entirely by the use case and integration design. This is a common practice in designing project-related integrations, but not related to our API or capabilities of SI.

  • Large datasets may take longer to process, particularly when retrieving detailed information using single-object requests (e.g., GET /Projects/{id}). However, summary queries, such as GET /Projects can return hundreds or thousands of records within seconds.

  • The queuing model used by the SI API allows control and visibility into staged operations. For example, users can review, select templates, and configure metadata before initiating project creation in SI.

  • Webhooks, when enabled, provide an efficient alternative to polling by notifying consumers only when new content is ready.

Important Design Considerations

API Data Exchange Behavior and Workflow

The D-Tools System Integrator (SI) API functions as a queue-based interface that facilitates asynchronous data exchange between SI and third-party applications. This queue model applies to all endpoints and is designed to enable consistent two-way integration. There is no direct access to the data in SI.

Direction of Data Flow

  • From SI to API: Projects and catalog items exported from SI become immediately available for third-party applications to consume.

  • From Third-Party to API: Data such as new projects or item catalogs sent by external applications is queued and becomes available to SI for processing.

Project Handling Logic

When a project is sent to the API:

  • If the project does not exist in SI: It appears in the New Projects from Integration interface for review and creation.

  • If the project already exists in SI: It is routed to the Update from Integration interface, where changes can be reviewed and applied.

Catalog Handling Logic

  • Manual Import Limit: A single catalog import operation into SI can support up to 100,000 records.

  • Automated Export Behavior: When catalog automation is enabled in SI, each export batch includes a maximum of 5,000 items. If more than 5,000 records have changed, multiple batches will be created and exported to the API.

System Requirements and Access Control

  • Version Requirement: API access is supported only for users running the latest version of D-Tools SI.

  • License Requirement: API access is limited to users enrolled in the Software Assurance (SA) program.

  • Permissions: Some API and integration features may be restricted by user group permissions or licensing type. However, companies using full on-premise licenses retain complete control over user access through internal permission settings.

Change Order Support

D-Tools SI supports integration of Change Orders as part of the standard project export workflow. Change Orders are processed using the same API endpoints and logic as regular project exports. Users are encouraged to manage change orders directly in SI using the enhanced functionality available in SI 2018 and later. For more details, refer to the Change Orders documentation: ​Change Orders Overview.

CHANGE ORDERS:

Integration Design Guidance

Integrations should focus on managing the full lifecycle of a project, allowing for both creation and updates to occur bidirectionally. While adding items from either system is supported and may be useful depending on the use case, it is important to implement a consolidation strategy.

Best Practice: Recommend item mapping or creation only when the project is first created or updated in D-Tools from a third-party integration. This helps avoid data mismatches between systems.

Initial Data Alignment

For the initial sync of clients, vendors, and part libraries, it is recommended to perform a manual import/export using CSV files or leverage existing connectors such as QuickBooks or Outlook. Developing an automated sync for the initial setup is not advised due to the variability in how users manage their source data. Once the systems are aligned, subsequent updates should occur through the normal project import/export process via the API.

Accounting and Inventory Considerations

D-Tools SI does not manage accounting operations or inventory. If those functions are required, users should integrate D-Tools with a third-party system such as QuickBooks using the corresponding integration tools available from D-Tools or their third-party provider.

Authentication and API Keys

Access to the API requires an API key tied to the user’s SI license. All API requests must include the correct API key in the header, as outlined in the documentation: ​API Key Usage.

To manage integrations from within SI, see: ​Manage Integrations Window.

Data Export Details

When a project is exported from SI to a third-party system, both project metadata and detailed item-level data are included. Exported fields may include:

  • Project-Level: Project Name, Client Name, Addresses, and other project metadata.

  • Item-Level: Manufacturer, Model, IP Address, Serial Number, Vendor, and more.

Refer to the full schema documentation for details:

Labor Endpoints Considerations

When handling labor data via the SI API, it is important to understand how different types of labor are represented in API responses. The SI system distinguishes between fixed labor, variable labor, labor by phase or type, and labor associated with equipment.

Labor Item Types

1. Fixed Labor

  • Quantity: Fixed labor is typically passed with a quantity of 1. If the export process aggregates identical fixed labor items, the total quantity may reflect the count of similar items.

  • Labor Hours: Always zero for fixed labor items.

2. Variable (Calculated) Labor

  • Quantity: Equals the number of labor hours.

  • Labor Hours: Matches the quantity. This applies to calculated labor where time, not instance count, defines the cost or effort.

3. Phase-Based or Labor Type-Based Labor

  • Aggregation: Represented as a distinct labor line item (Labor Type 2).

  • Quantity: Total labor hours for that phase or type.

4. Equipment-Associated Labor

  • Labor Hours: Represent the estimated labor required to install or service the associated equipment.

  • Phase Reference: If assigned, the associated phase appears in the Phase endpoint for that equipment line item.

Suggested Pattern

To build a stable and predictable integration between a third-party system and D-Tools SI, the following workflow pattern is recommended:

1. Opportunity Origin (Third-Party CRM)

  • If the third-party system includes CRM capabilities, the workflow begins when a user exports an opportunity from the third-party system to D-Tools SI via the API.

  • This action stages the project in SI and makes it available in the New Projects from Integration screen.

2. Opportunity Origin (SI)

  • If CRM is not part of the third-party integration, users can start by creating a New Project directly in SI.

3. Project Management in SI

  • The user manages the project within SI, adding labor, equipment, and other scope elements as needed.

  • This phase represents the active build stage before the project is sent back to the third-party integration.

4. Export from SI to API

  • Once ready, the user exports the project using either:

    • A manual export via the Export to Integration function

    • An enabled automation scheme for background export

  • The project is posted to the SI API for consumption by the third-party application.

5. Import into Third-Party System

  • The third-party integration fetches the project data from the SI API.

  • The integration logic should allow for flexible handling:

    • Map the incoming SI project to an existing opportunity

    • Create a new opportunity or project from the SI data

6. Change Order Workflow (Optional)

  • If users prefer to manage change orders within SI, each Change Order can be exported individually to the third-party system.

  • Integrators should allow mapping flexibility:

    • Each CO can be pushed to the same opportunity or to a newly created opportunity.

7. Updating SI from Third-Party (Optional)

  • If users make changes in their third-party system and wish to sync updates back to SI, the API supports this functionality.

  • However, it is not recommended to implement bidirectional editing without clearly defined rules. From a process governance perspective, only one application should serve as the system of record for changes to project data.

Suggested Company Workflow.jpg

Aggregation of Project Items

The SI API supports aggregation of project items to reduce payload size and optimize performance during data exchange. This functionality is available through the SubscribeProjects endpoint, which retrieves a specific project using a given Project ID published by an SI user.

Aggregation Options

When calling SubscribeProjects, you can group project items by one or more of the following dimensions:

  • Item

  • Location

  • System

  • Phase

This grouping capability is designed to consolidate similar project items into a single entry, with a calculated quantity field that reflects the aggregation.

Fields Used to Determine Item Grouping

Items will only be grouped together if the values of all the following fields are identical:

  • TypeId

  • LaborType

  • Manufacturer

  • Model

  • PackageName

  • PartNumber

  • IsOfe

  • IsNonBillable

  • UnitCost

  • UnitPrice

  • LaborHours

  • IsTaxable

  • TaxId

  • Vendor

If any of these values differ between two items, they will be treated as separate entries during aggregation.

Considerations on "Quantity" of Similar Items

As of D-Tools SI Version 18, two key fields were introduced for project items:

  • Quantity

  • TotalQuantity

These fields help accurately calculate the quantity of grouped items, especially in cases involving nested components such as packages or solutions.

Total Quantity Logic

The TotalQuantity is derived using the following formula:

TotalQuantity = Item Quantity × Parent Item Quantity × Package Item Quantity × Solution Item Quantity

This calculation ensures that the final quantity accurately reflects all nesting levels of the item structure.

Item Type-Specific Rules

  • Bulk Wire:
    Quantity = Wire Length × Total Quantity

  • Variable Labor:
    Quantity = Labor Hours × Total Quantity

  • All Other Items:
    Quantity = Total Quantity

When importing grouped project items from the API into SI, starting with Version 18, the system no longer splits items into individual units. The Quantity field is respected during import and is visible in the SI interface.

API Testing

To test the SI API and aggregation behavior, we recommend using the Postman application. It is a free API client that supports request creation, environment management, and response validation. You can use the test key in the endpoints documentation to make GET requests.

Did this answer your question?