> For the complete documentation index, see [llms.txt](https://qbits-organization.gitbook.io/buildwise-doc/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://qbits-organization.gitbook.io/buildwise-doc/subcontractor-endpoints/subcontractor-project.md).

# Subcontractor project

### Assign Subcontractors to the Project

Assigns multiple subcontractors to a specific project.

#### Endpoint

```
POST /api/v1/subcontractor/projects/{projectId}/assign
```

#### Path Parameters

* `projectId` (UUID) - The project identifier

#### Request Body

```json
{
    "subcontractorIds": [
        "456e7890-e12b-34c5-d678-901234567890",
        "789abcde-f12g-34h5-i678-901234567890"
    ]
}
```

#### Success Response

```json
{
    "success": true,
    "httpStatus": "OK",
    "message": "Subcontractors assigned to project successfully",
    "action_time": "2025-06-02T15:25:30.456789",
    "data": [
        {
            "subcontractorId": "456e7890-e12b-34c5-d678-901234567890",
            "companyName": "ABC Construction Services",
            "email": "contact@abcconstruction.com",
            "phoneNumber": "+1234567890",
            "tin": "123456789",
            "address": "123 Construction Avenue, Builder City, BC 12345",
            "registrationNumber": "REG-2025-ABC-001",
            "specializations": ["Electrical", "Plumbing", "HVAC"],
            "organisationName": "My Construction Company",
            "organisationId": "987fcdeb-51a2-43d1-9f12-123456789abc",
            "projects": [
                {
                    "projectId": "123e4567-e89b-12d3-a456-426614174000",
                    "name": "Website Redesign Project",
                    "description": "Complete overhaul of company website",
                    "budget": 50000.00,
                    "organisationId": "987fcdeb-51a2-43d1-9f12-123456789abc",
                    "organisationName": "My Construction Company",
                    "status": "ACTIVE",
                    "contractNumber": "WEB-2025-001",
                    "createdAt": "2025-06-02T14:30:15.123456",
                    "updatedAt": "2025-06-02T14:30:15.123456"
                }
            ],
            "createdAt": "2025-06-02T14:30:15.123456",
            "updatedAt": "2025-06-02T15:25:30.456789",
            "projectsCount": 1,
            "specializationsCount": 3
        }
    ]
}
```

#### Error Responses

* `404` - Project not found or subcontractor not found
* `401` - Unauthorized
* `500` - Internal server error

***

### Assign Project to Subcontractor

Assigns a specific project to a subcontractor.

#### Endpoint

```
POST /api/v1/subcontractor/{subcontractorId}/projects/{projectId}
```

#### Path Parameters

* `subcontractorId` (UUID) - The subcontractor identifier
* `projectId` (UUID) - The project identifier

#### Success Response

```json
{
    "success": true,
    "httpStatus": "OK",
    "message": "Project assigned to subcontractor successfully",
    "action_time": "2025-06-02T15:30:15.678901",
    "data": {
        "subcontractorId": "456e7890-e12b-34c5-d678-901234567890",
        "companyName": "ABC Construction Services",
        "email": "contact@abcconstruction.com",
        "phoneNumber": "+1234567890",
        "tin": "123456789",
        "address": "123 Construction Avenue, Builder City, BC 12345",
        "registrationNumber": "REG-2025-ABC-001",
        "specializations": ["Electrical", "Plumbing", "HVAC"],
        "organisationName": "My Construction Company",
        "organisationId": "987fcdeb-51a2-43d1-9f12-123456789abc",
        "projects": [
            {
                "projectId": "123e4567-e89b-12d3-a456-426614174000",
                "name": "Website Redesign Project",
                "description": "Complete overhaul of company website",
                "budget": 50000.00,
                "organisationId": "987fcdeb-51a2-43d1-9f12-123456789abc",
                "organisationName": "My Construction Company",
                "status": "ACTIVE",
                "contractNumber": "WEB-2025-001",
                "createdAt": "2025-06-02T14:30:15.123456",
                "updatedAt": "2025-06-02T14:30:15.123456"
            }
        ],
        "createdAt": "2025-06-02T14:30:15.123456",
        "updatedAt": "2025-06-02T15:30:15.678901",
        "projectsCount": 1,
        "specializationsCount": 3
    }
}
```

#### Error Responses

* `404` - Subcontractor not found or project not found
* `401` - Unauthorized
* `500` - Internal server error

***

### Remove Project from Subcontractor

Removes a project assignment from a subcontractor.

#### Endpoint

```
DELETE /api/v1/subcontractor/{subcontractorId}/projects/{projectId}
```

#### Path Parameters

* `subcontractorId` (UUID) - The subcontractor identifier
* `projectId` (UUID) - The project identifier to remove

#### Success Response

```json
{
    "success": true,
    "httpStatus": "OK",
    "message": "Project removed from subcontractor successfully",
    "action_time": "2025-06-02T15:35:30.123456",
    "data": {
        "subcontractorId": "456e7890-e12b-34c5-d678-901234567890",
        "companyName": "ABC Construction Services",
        "email": "contact@abcconstruction.com",
        "phoneNumber": "+1234567890",
        "tin": "123456789",
        "address": "123 Construction Avenue, Builder City, BC 12345",
        "registrationNumber": "REG-2025-ABC-001",
        "specializations": ["Electrical", "Plumbing", "HVAC"],
        "organisationName": "My Construction Company",
        "organisationId": "987fcdeb-51a2-43d1-9f12-123456789abc",
        "projects": [],
        "createdAt": "2025-06-02T14:30:15.123456",
        "updatedAt": "2025-06-02T15:35:30.123456",
        "projectsCount": 0,
        "specializationsCount": 3
    }
}
```

#### Error Responses

* `404` - Subcontractor not found or project not found
* `401` - Unauthorized
* `500` - Internal server error

**Additional notes**&#x20;

#### Project Assignment

* Subcontractors can be assigned to multiple projects
* Projects can have multiple subcontractors
* The relationship is managed through a junction table (ProjectSubcontractorEntity)
* Duplicate assignments are automatically prevented
