# Create a new subproject

Use this method to create a new subproject off of a parent project. A subproject is a great way to group resources together.
### Limitations
- Subprojects cannot have their own billing account. The billing account is handled by the parent project.
- You cannot have a subproject created off of a subproject.

Endpoint: POST /v1/projects/{parentProjectId}/subprojects
Version: v1
Security: OAuth2.0, Basic

## Description:

  - `Limitations` ()
    Subprojects cannot have their own billing account. The billing account is handled by the parent project.You cannot have a subproject created off of a subproject.

## Security:

  - `OAuth2.0` (unknown)
    oauth2

  - `Basic` (unknown)
    http basic

## Path parameters:

  - `parentProjectId` (string, required)
    the parent project ID the subproject belongs to.

## Request fields (application/json):

  - `displayName` (string, required)
    The display name of the subproject. You cannot have a null value. It does not have to be unique.
    Example: Taco Time

  - `labels` (object)
    A map of labels. String, key-value pairs that are completely customizable to allow for your metadata. Both the key and the value can be modified. Examples: `"region": "US-Northwest"` or `"phoneNumber": "14051234567"`

## Request examples:

  - `Create a subproject - fill in` (unknown)

  - `Create a subproject with a display name and labels` (unknown)

## Response 200:

  - `200` (unknown)
    A successful response.

## Response 200 fields (application/json):

  - `createTime` (string, required)
    The date/time the subproject was created. ISO 8601 format.

  - `deleted` (boolean, required)
    The current deleted state of the subproject.
    Example: false

  - `displayName` (string, required)
    The display name of the subproject. You cannot have a null value. It does not have to be unique.
    Example: Your Customer's Business Name

  - `labels` (object)

  - `parentProjectId` (string, required)
    The parent project ID the subproject belongs to. Set from the URL path on creation; a value sent in the request body is ignored.

  - `subprojectId` (string, required)
    The unique subproject identifier. Not to be confused with the `parentProjectId`; the `subprojectId` is a new ID related to your parent project.

  - `updateTime` (string, required)
    The date/time the subproject was updated. ISO 8601 format.

## Response 400:

  - `400` (unknown)
    The request can't be completed. The `status` field in the body distinguishes the cause:
- `INVALID_ARGUMENT`: the request doesn't conform to the API (e.g. `displayName` is missing, empty, or longer than 255 characters).
- `FAILED_PRECONDITION`: the parent project is invalid or does not exist.

## Response 401:

  - `401` (unknown)
    UNAUTHENTICATED: The authentication token is invalid.

## Response 403:

  - `403` (unknown)
    PERMISSION_DENIED: The request syntax is valid but can't be performed.

## Response 404:

  - `404` (unknown)
    NOT_FOUND: The path is invalid or no resource exists with the given ID.

## Response 400 examples:

  - `INVALID_ARGUMENT` (unknown)

  - `FAILED_PRECONDITION (invalid or non-existent parent project)` (unknown)

