> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://docs.itspropel.com/llms.txt.
> For full documentation content, see https://docs.itspropel.com/llms-full.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://docs.itspropel.com/_mcp/server.

# List Available Technicians

GET https://dispatch/available-technicians#getDispatchAvailable-technicians2

Get technicians available for a given time slot. Checks work schedules, shift templates, schedule exceptions (PTO, sick leave), tenant holidays, and existing work order conflicts to determine which technicians are free during the requested period.

Reference: https://docs.itspropel.com/propel-biz/24-dispatcher/available-technicians/list-available-technicians

## OpenAPI Specification

```yaml
openapi: 3.1.0
info:
  title: PropelBiz
  version: 1.0.0
paths:
  /dispatch/available-technicians#getDispatchAvailable-technicians2:
    get:
      operationId: list-available-technicians
      summary: List Available Technicians
      description: >-
        Get technicians available for a given time slot. Checks work schedules,
        shift templates, schedule exceptions (PTO, sick leave), tenant holidays,
        and existing work order conflicts to determine which technicians are
        free during the requested period.
      tags:
        - subpackage_24Dispatcher.subpackage_24Dispatcher/availableTechnicians
      parameters:
        - name: scheduled_start
          in: query
          description: >-
            Required: Start datetime for availability check - Y-m-d H:i:s format
            - "2026-04-14 09:00:00"
          required: false
          schema:
            type: string
        - name: scheduled_end
          in: query
          description: >-
            Required: End datetime for availability check - must be after
            scheduled_start - "2026-04-14 12:00:00"
          required: false
          schema:
            type: string
        - name: '{{tenant_key_name}}'
          in: header
          required: false
          schema:
            type: string
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/24 Dispatcher_Available Technicians_List
                  Available Technicians_Response_200
servers:
  - url: https:/
components:
  schemas:
    24 Dispatcher_Available Technicians_List Available Technicians_Response_200:
      type: object
      properties: {}
      description: Empty response body
      title: >-
        24 Dispatcher_Available Technicians_List Available
        Technicians_Response_200

```

## SDK Code Examples

```python
import requests

url = "https://https/dispatch/available-technicians#getDispatchAvailable-technicians2"

querystring = {"scheduled_start":"2026-04-14 09:00:00","scheduled_end":"2026-04-14 12:00:00"}

payload = { "{{tenant_key_value1}}|{{tenant_key_value2}}": "acme_corp|region_1" }
headers = {
    "{{tenant_key_name}}": "X-Tenant-Key",
    "Content-Type": "application/json"
}

response = requests.get(url, json=payload, headers=headers, params=querystring)

print(response.json())
```

```javascript
const url = 'https://https/dispatch/available-technicians?scheduled_start=2026-04-14+09%3A00%3A00&scheduled_end=2026-04-14+12%3A00%3A00#getDispatchAvailable-technicians2';
const options = {
  method: 'GET',
  headers: {'{{tenant_key_name}}': 'X-Tenant-Key', 'Content-Type': 'application/json'},
  body: '{"{{tenant_key_value1}}|{{tenant_key_value2}}":"acme_corp|region_1"}'
};

try {
  const response = await fetch(url, options);
  const data = await response.json();
  console.log(data);
} catch (error) {
  console.error(error);
}
```

```go
package main

import (
	"fmt"
	"strings"
	"net/http"
	"io"
)

func main() {

	url := "https://https/dispatch/available-technicians?scheduled_start=2026-04-14+09%3A00%3A00&scheduled_end=2026-04-14+12%3A00%3A00#getDispatchAvailable-technicians2"

	payload := strings.NewReader("{\n  \"{{tenant_key_value1}}|{{tenant_key_value2}}\": \"acme_corp|region_1\"\n}")

	req, _ := http.NewRequest("GET", url, payload)

	req.Header.Add("{{tenant_key_name}}", "X-Tenant-Key")
	req.Header.Add("Content-Type", "application/json")

	res, _ := http.DefaultClient.Do(req)

	defer res.Body.Close()
	body, _ := io.ReadAll(res.Body)

	fmt.Println(res)
	fmt.Println(string(body))

}
```

```ruby
require 'uri'
require 'net/http'

url = URI("https://https/dispatch/available-technicians?scheduled_start=2026-04-14+09%3A00%3A00&scheduled_end=2026-04-14+12%3A00%3A00#getDispatchAvailable-technicians2")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Get.new(url)
request["{{tenant_key_name}}"] = 'X-Tenant-Key'
request["Content-Type"] = 'application/json'
request.body = "{\n  \"{{tenant_key_value1}}|{{tenant_key_value2}}\": \"acme_corp|region_1\"\n}"

response = http.request(request)
puts response.read_body
```

```java
import com.mashape.unirest.http.HttpResponse;
import com.mashape.unirest.http.Unirest;

HttpResponse<String> response = Unirest.get("https://https/dispatch/available-technicians?scheduled_start=2026-04-14+09%3A00%3A00&scheduled_end=2026-04-14+12%3A00%3A00#getDispatchAvailable-technicians2")
  .header("{{tenant_key_name}}", "X-Tenant-Key")
  .header("Content-Type", "application/json")
  .body("{\n  \"{{tenant_key_value1}}|{{tenant_key_value2}}\": \"acme_corp|region_1\"\n}")
  .asString();
```

```php
<?php
require_once('vendor/autoload.php');

$client = new \GuzzleHttp\Client();

$response = $client->request('GET', 'https://https/dispatch/available-technicians?scheduled_start=2026-04-14+09%3A00%3A00&scheduled_end=2026-04-14+12%3A00%3A00#getDispatchAvailable-technicians2', [
  'body' => '{
  "{{tenant_key_value1}}|{{tenant_key_value2}}": "acme_corp|region_1"
}',
  'headers' => [
    'Content-Type' => 'application/json',
    '{{tenant_key_name}}' => 'X-Tenant-Key',
  ],
]);

echo $response->getBody();
```

```csharp
using RestSharp;

var client = new RestClient("https://https/dispatch/available-technicians?scheduled_start=2026-04-14+09%3A00%3A00&scheduled_end=2026-04-14+12%3A00%3A00#getDispatchAvailable-technicians2");
var request = new RestRequest(Method.GET);
request.AddHeader("{{tenant_key_name}}", "X-Tenant-Key");
request.AddHeader("Content-Type", "application/json");
request.AddParameter("application/json", "{\n  \"{{tenant_key_value1}}|{{tenant_key_value2}}\": \"acme_corp|region_1\"\n}", ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
```

```swift
import Foundation

let headers = [
  "{{tenant_key_name}}": "X-Tenant-Key",
  "Content-Type": "application/json"
]
let parameters = ["{{tenant_key_value1}}|{{tenant_key_value2}}": "acme_corp|region_1"] as [String : Any]

let postData = JSONSerialization.data(withJSONObject: parameters, options: [])

let request = NSMutableURLRequest(url: NSURL(string: "https://https/dispatch/available-technicians?scheduled_start=2026-04-14+09%3A00%3A00&scheduled_end=2026-04-14+12%3A00%3A00#getDispatchAvailable-technicians2")! as URL,
                                        cachePolicy: .useProtocolCachePolicy,
                                    timeoutInterval: 10.0)
request.httpMethod = "GET"
request.allHTTPHeaderFields = headers
request.httpBody = postData as Data

let session = URLSession.shared
let dataTask = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> Void in
  if (error != nil) {
    print(error as Any)
  } else {
    let httpResponse = response as? HTTPURLResponse
    print(httpResponse)
  }
})

dataTask.resume()
```