> ## Knowledge Base Index
> Fetch the complete knowledge base index at: https://support.xperiencehr.com/sitemap.xml
> Use this file to discover available pages before exploring further.
> Pure-Markdown content can be obtained by appending a '.md' suffix to the content URLs listed in the sitemap (without the trailing slash).

# Sub-Project API

The **Sub-Project API** in XperienceHR provides an interface for managing sub projects, including creating, updating, deactivating, and listing sub-projects, ensuring seamless integration with external systems for detailed project management and tracking.

This API supports **XML & JSON format** for structured data exchange and requires authentication via an **API key**.

By integrating the Sub-Project API, organizations can efficiently manage sub project lifecycle data, ensuring accurate tracking and resource allocation within larger projects.

# Overview

**API Type:** REST
**Supported Formats:** XML
**API Key:** Generated in the app configuration
**Method:** *POST*, *GET*
---

# Sub-Project Management

**Functionality:** 
* Create New Sub-Project
* Update Sub-Project
* Deactivate Sub-Project
* Get all Sub-Projects

### Create New Sub-Project

| Parameter | Min | Max | Required | Information | Description |
| ---- |
| name | 1 | 100 | ✅ |  | The sub-project name. |
| code | 1 | 30 | ✅ |  | The sub-project short name. |
| description | 0 | 500 | ❌ |  | The description of this sub-project. |
| projectType | FIXED | HOURLY | ❌ | Default value is *HOURLY* | The sub-project type. |
| inheritParentPermissions | TRUE | FALSE | ❌ |  | If TRUE, the sub-project inherits access and team assignments (e.g., ProjectManagers and ProjectTeam) from its parent project. Set to FALSE to manage the sub-project’s permissions independently. |
| startDate |  |  | ❌ |  | The date when the sub-project begins (format: YYYY-MM-DD). |
| finishDate |  |  | ❌ |  | The date when the sub-project ends (format: YYYY-MM-DD). |
| subprojectCode | 0 | 30 | ❌ |  | Optional secondary identifier (alias) for the sub-project; should be unique within the parent project. |
| ProjectStatus code |  |  | ✅ | Valid XPHR value | The value of the sub-project status. |
| ParentProject code |  |  | ✅ | Valid XPHR value | The code of parent project. |
| budget | 0 | Double_MAX_VALUE | ❌ |  | The amount of money expected to be spent on the sub-project ($). |
| duration | 0 | Integer_MAX_VALUE | ❌ |  | The number of hours expected to be spent on the sub-project. |
| billingType |  |  | ❌ | Valid values: employee, activity, project | The way in which the budgeted amount is calculated. |
| rate | 0 | Double_MAX_VALUE | ❌ | Only relevant for project rate type | The sub-project rate ($). |
| durationCorrection |  | Positive value | ❌ |  | The number of hours already tracked outside the application. |
| billable | TRUE | FALSE | ❌ |  | TRUE: all activities are billable; FALSE: only manually marked activities are billable |
| billableType |  |  | ❌ |  | Controls the default billable flag for time records |
| active | TRUE | FALSE | ❌ |  | Indicates whether the project is currently active. |
| lateMissingNotification | TRUE | FALSE | ❌ |  | TRUE: enabled; FALSE: disabled |
| lateMissingEmployeeSMSNotification | TRUE | FALSE | ❌ | Valid XPHR value | Indicates if employees will receive SMS notifications when late (paid service). |
| lateMissingEmailsString |  |  | ❌ | Valid email address | The email addresses that should receive Late and Missing Notifications (multiple addresses separated by commas). |
| projectManagerLogins |  |  | ❌ | Valid XPHR value | The logins for sub-project management. |
| ProjectTeamMember OU, User |  |  | ❌ | Valid XPHR value | Team assignments for the sub-project. |
| latitude | -90 | 90 | ❌ |  | The latitude of the sub-project location. |
| longitude | -180 | 180 | ❌ |  | The longitude of the sub-project location. |
| gpsRadius | 0 | Integer_MAX_VALUE | ❌ |  | The GPS radius in meters. |
| CostCenter code |  |  | ❌ | Valid XPHR value | The code of the cost center, only for creating a new sub-project (updating Cost Center is not supported). |

| Billable Type Options | Description |
| ---- |
| YES | All activities marked strictly as billable |
| DEFAULT_YES | All activities marked as billable but could be unmarked |
| NO | All activities marked strictly as non-billable |
| DEFAULT_NO | All activities marked as non-billable but could be unmarked |
| ACTIVITY | Billable flag is determined by activity setting |

|| Multiple email addresses are separated with commas.

###### Endpoint
---

### Update Sub-Project

To update sub-project's information, match its code in request body and provide value(s) for data to be updated.

###### Endpoint
---

### Get All Sub-Projects

To filter the list of sub-projects, include the `projectStatus` parameter in the request and specify one of the supported values: **ACTIVE**, **INACTIVE**, or **ARCHIVED**.

###### Endpoint
---

### Error Handling

Common errors help in debugging and correcting API usage issues.

**Example 1: Missing Code**

**Example 2: User Not Found**

**Example 3: Parent Project Required**
---

### HTTP Response Codes
* **2XX Success** - Operation completed successfully.
* **4XX Client Error** - Likely an issue with the request, such as incorrect parameters or insufficient permissions. Returns an error message in text or XML format.
* **5XX Server Error** - Indicates a server issue. Report this error if encountered.
