# Tạo Job

> Tạo một job mới kèm các task trong tài khoản Fleetwork của bạn.

Source: https://docs.fleetwork.vn/vi/jobs/jobs-create

**POST** `https://live.fleetwork.vn/api/v1/workspace/jobs`

## Body yêu cầu

| Trường           | Kiểu    | Bắt buộc     | Mô tả                                                  |
| ---------------- | ------- | ------------ | ------------------------------------------------------ |
| `jobName`        | string  | **Bắt buộc** | Tên job                                                |
| `jobStatus`      | integer | **Bắt buộc** | `0`=New, `1`=Scheduled, `2`=InProgress                 |
| `jobType`        | integer | **Bắt buộc** | `0`=Unknown, `1`=Shipment, `2`=Service                 |
| `jobDescription` | string  | Tuỳ chọn     | Mô tả job                                              |
| `metaData`       | string  | Tuỳ chọn     | Chuỗi JSON metadata tuỳ chỉnh                          |
| `tasks`          | array   | **Bắt buộc** | Mảng các đối tượng task (xem các trường Task bên dưới) |

> **Shipment job (`jobType=1`)** yêu cầu **đúng 2 task**: một `Pick`
> (shipmentType=1) và một `Drop` (shipmentType=2). API sẽ trả về lỗi nếu điều
> kiện này không được đáp ứng.

### Các trường Task

| Trường             | Kiểu    | Bắt buộc        | Mô tả                                                                                                                   |
| ------------------ | ------- | --------------- | ----------------------------------------------------------------------------------------------------------------------- |
| `taskName`         | string  | **Bắt buộc**    | Tên task                                                                                                                |
| `taskType`         | integer | Tuỳ chọn        | `0`=Unknown, `1`=Shipment, `2`=Service                                                                                  |
| `priority`         | integer | Tuỳ chọn        | `0`=Low, `1`=Medium, `2`=High                                                                                           |
| `description`      | string  | Tuỳ chọn        | Mô tả task                                                                                                              |
| `contactName`      | string  | Tuỳ chọn        | Tên người liên hệ                                                                                                       |
| `contactPhone`     | string  | Tuỳ chọn        | Số liên hệ                                                                                                              |
| `startDt`          | long    | Tuỳ chọn        | Thời gian bắt đầu theo lịch (Unix ms)                                                                                   |
| `endDt`            | long    | Tuỳ chọn        | Thời gian kết thúc theo lịch (Unix ms)                                                                                  |
| `startTime`        | integer | Tuỳ chọn        | Khung giờ bắt đầu (số phút kể từ nửa đêm)                                                                               |
| `endTime`          | integer | Tuỳ chọn        | Khung giờ kết thúc (số phút kể từ nửa đêm)                                                                              |
| `serviceTime`      | integer | Tuỳ chọn        | Thời gian dịch vụ tính theo phút                                                                                        |
| `setupTime`        | integer | Tuỳ chọn        | Thời gian chuẩn bị tính theo phút                                                                                       |
| `place`            | object  | Tuỳ chọn        | Đối tượng place — xem các trường Place bên dưới. Dùng API [Search Places](https://docs.fleetwork.vn/vi/places/places-search) để lấy refId hợp lệ.   |
| `metaData`         | string  | Tuỳ chọn        | Chuỗi JSON metadata tuỳ chỉnh ở cấp task                                                                                |
| `skillId`          | UUID    | Tuỳ chọn        | ID kỹ năng yêu cầu cho task này                                                                                         |
| `shipmentProperty` | object  | Có điều kiện    | **Bắt buộc với Shipment job** — xem bên dưới                                                                            |

### Các trường place

| Trường          | Kiểu    | Bắt buộc     | Mô tả                                                                                  |
| --------------- | ------- | ------------ | -------------------------------------------------------------------------------------- |
| `id`            | UUID    | Tuỳ chọn     | ID của một place đã tồn tại (nếu đã có trong sổ địa chỉ)                               |
| `refId`         | string  | **Bắt buộc** | ID tham chiếu bên ngoài của bạn cho place này (xem [Search Places](https://docs.fleetwork.vn/vi/places/places-search)) |
| `name`          | string  | Tuỳ chọn     | Tên place                                                                              |
| `address`       | string  | Tuỳ chọn     | Địa chỉ đầy đủ                                                                         |
| `lat`           | number  | Tuỳ chọn     | Vĩ độ                                                                                  |
| `lng`           | number  | Tuỳ chọn     | Kinh độ                                                                                |
| `contactPerson` | string  | Tuỳ chọn     | Tên người liên hệ                                                                      |
| `contactNum`    | string  | Tuỳ chọn     | Số liên hệ                                                                             |
| `startTime`     | integer | Tuỳ chọn     | Khung giờ bắt đầu (số phút kể từ nửa đêm)                                              |
| `endTime`       | integer | Tuỳ chọn     | Khung giờ kết thúc (số phút kể từ nửa đêm)                                             |

### Các trường shipmentProperty (chỉ cho Shipment job)

| Trường         | Kiểu    | Bắt buộc     | Mô tả              |
| -------------- | ------- | ------------ | ------------------ |
| `shipmentType` | integer | **Bắt buộc** | `1`=Pick, `2`=Drop |

```json
{
  "jobName": "Delivery Job Q1",
  "jobDescription": "Morning delivery run",
  "jobStatus": 1,
  "jobType": 1,
  "tasks": [
    {
      "taskName": "Pick up goods",
      "taskType": 1,
      "priority": 1,
      "contactName": "Mr. Tuan",
      "contactPhone": "+84901234567",
      "shipmentProperty": { "shipmentType": 1 },
      "place": {
        "refId": "WH-001",
        "name": "Main Warehouse",
        "address": "100 Warehouse St, D7",
        "lat": 10.74,
        "lng": 106.72
      }
    },
    {
      "taskName": "Deliver to Customer A",
      "taskType": 1,
      "priority": 1,
      "contactName": "Ms. Lan",
      "contactPhone": "+84907654321",
      "shipmentProperty": { "shipmentType": 2 },
      "place": {
        "refId": "CUST-A-001",
        "name": "Customer A Location",
        "address": "123 Le Loi, D1",
        "lat": 10.7731,
        "lng": 106.703
      }
    }
  ]
}
```

## Ví dụ

### Request

```bash
curl -X POST \
  "https://live.fleetwork.vn/api/v1/workspace/jobs" \
  -H "API-KEY: <your-key>" \
  -H "Content-Type: application/json" \
  -d '{"jobName":"Delivery Job Q1","jobStatus":1,"jobType":1,"tasks":[{"taskName":"Pick up goods","taskType":1,"priority":1,"shipmentProperty":{"shipmentType":1},"place":{"refId":"WH-001","name":"Main Warehouse","address":"100 Warehouse St, D7","lat":10.74,"lng":106.72}},{"taskName":"Deliver to Customer A","taskType":1,"priority":1,"contactName":"Ms. Lan","contactPhone":"+84907654321","shipmentProperty":{"shipmentType":2},"place":{"refId":"CUST-A-001","name":"Customer A","address":"123 Le Loi, D1","lat":10.7731,"lng":106.703}}]}'
```

### Response

```json
{
  "code": "OK",
  "message": null,
  "data": "3fa85f64-5717-4562-b3fc-2c963f66afa6"
}
```

Trường `data` chứa UUID của job vừa được tạo.
