# Creating a new Participation

Adds a user to a project (workspace).
**Bulk Create**
This endpoint supports bulk creating up to 100 objects. In the request body, set the top-level key to its plural form and place the objects in an array. Example:

```
{
  "participations": [
    {
      "workspace_id": 123,
      "role": "maven",
      "user_id": 111
    },
    {
      "workspace_id": 123,
      "role": "maven",
      "user_id": 222
    }
  ]
}
```
This endpoint returns structured Participation objects.
As with all Kantata OX API endpoints, the returned data will be referenced in sorted order in the `results` array
and will be indexed by ID in the `participations` top-level JSON key.
Please see our [Response Format](#section/Response-Format) section for more information.

Endpoint: POST /participations
Version: 1.0.0

## Query parameters:

  - `include` (string)
    Any of the below associations can be included in your request by providing the `include` param, e.g. `include=association1,association2`.
- `active_roles` (Role) - Retrieves all of the project roles of the participant. The response will include `active_role_ids`, which references the data in the `roles` top-level key.
- `external_references` (ExternalReference) - Includes references to external integrations for this object.
- `primary_role` (Role) - Retrieves account role of the participant. Only visible when the authenticated user is on the same account the project is on. The response will include `primary_role_id`, which references the data in the `roles` top-level key.
- `user` (User) - Retrieves the user (also known as the participant). The response will include `user_id`, which references the data in the `users` top-level key.
- `workspace` (Workspace) - Retrieves the project. The response will include `workspace_id`, which references the data in the `workspaces` top-level key.
- `workspace_resources` (WorkspaceResource) - Retrieves the resource(s) associated with the participation, ordered alphabetically. The response will include `workspace_resource_ids`, which references the data in the `workspace_resources` top-level key.
- `workspace_role` (Role) - Retrieves the primary project role for the participant. The response will include `workspace_role_id`, which references the data in the `roles` top-level key.

  - `optional_fields` (array)
    Allows you to request one or more optional fields as an array.

## Request fields (application/json):

  - `participation` (object)

  - `participation.can_invite` (boolean)
    Permission for the participant to invite other users into the project.

  - `participation.can_schedule_their_hours` (boolean)
    Permission for the participant to schedule their own hours.

  - `participation.can_schedule_team_hours` (boolean)
    Permission for the participant to schedule hours for project team members.

  - `participation.can_edit_todos` (boolean)
    Permission for the participant to edit To Dos.

  - `participation.access_level` (string)
    Access level for the user in the workspace. Valid options include "edit_tasks", "view_tasks", "edit_time_and_expenses", "view_time_and_expenses",
"edit_financials", "view_financials", "admin". Legacy options include "financial", "time_logging", "collaboration".

  - `participation.workspace_id` (integer, required)
    The ID of the project the participation will belong to.

  - `participation.role` (string, required)
    The team a participant is on in a project, defined as either the "maven" (provider) or "buyer" (client) team.

  - `participation.user_id` (integer)
    The ID of the user that wants to participate in the project.

  - `participation.permissions` (string)
    Permission for the user in the workspace. It must be any combination of "edit", "view_only", "view_and_post",
"can_edit", "can_post", "can_edit_expense", "can_edit_time", "can_invite", "can_schedule_their_hours", or
"can_schedule_team_hours" delimited by commas. ex. "can_post,can_edit_time"

If "can_invite", "can_schedule_their_hours", or "can_schedule_team_hours" are not set—either via the individual
fields or the `permissions` string—they will inherit the default values defined in the account's Project Permissions Defaults.

  - `participation.external_reference` (object)
    Typically populated programmatically by a third party system via an integration, this is an optional
object that holds data from an external system. It connects objects in an external system with objects in
Kantata OX (for example, to connect a Jira issue to a Kantata OX Project).

  - `participation.external_reference.service_name` (string, required)
    The provider name of the integration. If you are adding multiple external references to the same object, the `service_name` must be unique.

  - `participation.external_reference.service_model` (string, required)
    The object type of the external object this external reference belongs to.

  - `participation.external_reference.service_model_ref` (string, required)
    The object ID of the external object this external reference belongs to.

  - `participation.external_reference.status` (string)
    The status of the integration. Options are `successful`, `pending`,  or `failed`.

  - `participation.external_reference.external_message` (string)
    The message on the external object.

  - `participation.external_reference.external_link` (string)
    The link to the external object.

  - `participation.external_reference.external_status` (string)
    The status of the external object in the external system.

  - `participation.external_reference.locked` (boolean)
    Whether the subject is locked.

## Response 200 fields (application/json):

  - `count` (integer)

  - `meta` (object)

  - `meta.count` (integer)

  - `meta.page_count` (integer)

  - `meta.page_number` (integer)

  - `meta.page_size` (integer)

  - `results` (array)

  - `results.key` (string)

  - `results.id` (string)

## Response 400 fields (application/json):

  - `errors` (array)

  - `errors.type` (string)

  - `errors.message` (string)

## Response 401 fields (application/json):

  - `errors` (array)

  - `errors.type` (string)

  - `errors.message` (string)

## Response 403 fields (application/json):

  - `errors` (array)

  - `errors.type` (string)

  - `errors.message` (string)

## Response 404 fields (application/json):

  - `errors` (array)

  - `errors.type` (string)

  - `errors.message` (string)

## Response 422 fields (application/json):

  - `errors` (array)

  - `errors.type` (string)

  - `errors.message` (string)

## Response 503 fields (application/json):

  - `errors` (array)

  - `errors.type` (string)

  - `errors.message` (string)

