> ## Documentation Index
> Fetch the complete documentation index at: https://developer.box.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Shuttle resources

Endpoints for managing Box Shuttle, the service that migrates content into Box from external sources. Use these endpoints to manage the systems that Shuttle migrates content from and the migration jobs that Shuttle runs.

## Shuttle agent credentials

The installation credentials issued for a Windows shuttle system. The registration token is pasted into the Windows agent installer to register the agent with its system.

> **Attributes and example**
>
> | Property | Type | Required | Description |
> | - | - | - | - |
> | `registration_token` | `string` | Yes | The installation token to paste into the Windows agent installer to register the agent. |
> | `expires_at` | `string` | Yes | When the registration token expires and can no longer be used. |
>
> ```json Example theme={null}
> {
>   "registration_token": "eyJhbGciOi...",
>   "expires_at": "2026-03-16T12:00:00Z"
> }
> ```

## Shuttle discovered subject

A subject discovered on the source system during a scan, with an optional suggested Box target.

> **Attributes and example**
>
> | Property | Type | Required | Description |
> | - | - | - | - |
> | `id` | `string` | Yes | The unique identifier for the discovered subject. |
> | `type` | `enum<string>` | Yes | The value will always be `shuttle_discovered_subject`. Available options: `shuttle_discovered_subject`. |
> | `job_id` | `string` | Yes | The unique identifier of the shuttle job this subject belongs to. |
> | `revision` | `integer` | Yes | The scan revision this discovered subject belongs to. |
> | `source` | [Shuttle subject](#shuttle-subject) | Yes | The source subject as discovered. |
> | `suggested_target` | [Shuttle target subject](#shuttle-target-subject) | No | A suggested Box target inferred during the scan. `null` when no suggestion was made. Can be `null`. |
>
> ```json Example theme={null}
> {
>   "id": "6a315c0754833bfc5df067bf",
>   "type": "shuttle_discovered_subject",
>   "job_id": "6a3ba68e810d9156194530a1",
>   "revision": 3,
>   "source": {
>     "type": "user",
>     "id": "sp-user-001",
>     "email": "user@example.com",
>     "name": "Jane Doe",
>     "roles": [
>       "owner"
>     ]
>   },
>   "suggested_target": {
>     "type": "user",
>     "id": "12345678",
>     "email": "user@example.com",
>     "name": "Jane Doe"
>   }
> }
> ```

## Shuttle discovered subjects

A paginated list of subjects discovered on the source system.

> **Attributes and example**
>
> | Property | Type | Required | Description |
> | - | - | - | - |
> | `entries` | array of [Shuttle discovered subject](#shuttle-discovered-subject) | Yes | A list of discovered subjects. |
> | `limit` | `integer` | No | The limit that was used for these entries. This will be the same as the `limit` query parameter unless that value exceeded the maximum value allowed. The maximum value varies by API. |
> | `next_marker` | `string` | No | The marker for the start of the next page of results. Can be `null`. |
> | `prev_marker` | `string` | No | The marker for the start of the previous page of results. Can be `null`. |
>
> ```json Example theme={null}
> {
>   "entries": [
>     {
>       "id": "6a315c0754833bfc5df067bf",
>       "type": "shuttle_discovered_subject",
>       "job_id": "6a3ba68e810d9156194530a1",
>       "revision": 3,
>       "source": {
>         "type": "user",
>         "id": "sp-user-001",
>         "email": "user@example.com",
>         "name": "Jane Doe",
>         "roles": [
>           "owner"
>         ]
>       },
>       "suggested_target": {
>         "type": "user",
>         "id": "12345678",
>         "email": "user@example.com",
>         "name": "Jane Doe"
>       }
>     }
>   ],
>   "limit": 1000,
>   "next_marker": "JV9IRGZmieiBasejOG9yDCRNgd2ymoZIbjsxbJMjIs3kioVii",
>   "prev_marker": "JV9IRGZmieiBasejOG9yDCRNgd2ymoZIbjsxbJMjIs3kioVih"
> }
> ```

## Shuttle job

A standard representation of a shuttle job. A shuttle job describes a migration of content from a source system into Box, including its current state, mapping-preparation state, and mapping configuration.

> **Attributes and example**
>
> | Property | Type | Required | Description |
> | - | - | - | - |
> | `id` | `string` | Yes | The unique identifier for the shuttle job. |
> | `type` | `enum<string>` | Yes | The value will always be `shuttle_job`. Available options: `shuttle_job`. |
> | `name` | `string` | Yes | The human-readable name of the shuttle job. |
> | `comment` | `string` | No | An optional free-form comment describing the shuttle job. Can be `null`. |
> | `job_type` | `enum<string>` | Yes | The type of work the shuttle job performs. Available options: `transfer`, `analysis`. |
> | `state` | `string` | Yes | The current state of the shuttle job. This is an open string whose set of values is expected to grow; the currently documented values include `created`, `started`, `stopped`, `completed`, `failed`, `invalid`, and `unknown`. Clients should treat any value they do not recognize as `unknown`. |
> | `mapping_state` | `string` | Yes | The current mapping-preparation state of the job. This is an open string whose set of values is expected to grow; the currently documented values include `awaiting_path_mapping`, `importing_paths`, `paths_import_rejected`, `paths_invalid`, `paths_ready`, `scanning_source`, `source_scan_failed`, `source_scan_out_of_date`, `awaiting_subject_mapping`, `importing_subjects`, `subjects_import_rejected`, `mapping_complete`, `building_map`, `map_build_failed`, `map_out_of_date`, and `ready`. `paths_import_rejected` means the last path-mapping spreadsheet was rejected or failed and the path mappings have not been changed since; it clears on the next import or the next manual path-mapping change. `subjects_import_rejected` means the last subject-mapping spreadsheet was rejected or failed and the subject mappings have not been changed since; it clears on the next import or the next manual subject-mapping change. |
> | `source_system` | `object` | Yes | The source system the shuttle job migrates content from. |
> | `account_mapping` | `object` | No | The account mapping configuration that controls how source identities and permissions are translated into Box. |
> | `tags` | array of `string` | No | A list of free-form tags associated with the shuttle job. |
> | `settings` | `object` | No | The tunable settings that control how the shuttle job runs. |
>
> ```json Example theme={null}
> {
>   "id": "6a3ba68e810d9156194530a1",
>   "type": "shuttle_job",
>   "name": "Q4 SharePoint to Box",
>   "comment": "Migrating the finance department archives.",
>   "job_type": "transfer",
>   "state": "created",
>   "mapping_state": "awaiting_path_mapping",
>   "source_system": {
>     "type": "shuttle_system",
>     "id": "6a3ba68e810d9156194530a1",
>     "name": "SharePoint"
>   },
>   "account_mapping": {
>     "is_enabled": true,
>     "permission_conflict_strategy": "preserve_structure_restrict_sharing",
>     "are_external_shares_mapped": false,
>     "are_permissions_mapped": true
>   },
>   "tags": [
>     "q4",
>     "hr"
>   ],
>   "settings": {
>     "bandwidth_limit_bytes_per_sec": 10485760,
>     "are_deletions_mirrored": false,
>     "are_file_versions_synced": true,
>     "max_file_versions": 10,
>     "is_overwrite_enabled": false,
>     "are_completed_mappings_skipped_on_rerun": true,
>     "is_content_scanning_enabled": false,
>     "include_shared_source_folders": true,
>     "include_shared_destination_folders": false
>   }
> }
> ```

## Shuttle job create request

The request body used to create a new shuttle job.

> **Attributes and example**
>
> | Property | Type | Required | Description |
> | - | - | - | - |
> | `name` | `string` | Yes | The human-readable name of the shuttle job. |
> | `job_type` | `enum<string>` | Yes | The type of work the shuttle job performs. Available options: `transfer`, `analysis`. |
> | `source_system_id` | `string` | Yes | The unique identifier of the source system to migrate from. |
> | `comment` | `string` | No | An optional free-form comment describing the shuttle job. |
> | `tags` | array of `string` | No | A list of free-form tags associated with the shuttle job. |
> | `account_mapping` | `object` | No | The account mapping configuration that controls how source identities and permissions are translated into Box. When this object is omitted, the job is created with `is_enabled` set to `false`. |
> | `settings` | `object` | No | The tunable settings that control how the shuttle job runs. |
>
> ```json Example theme={null}
> {
>   "name": "Q4 SharePoint to Box",
>   "job_type": "transfer",
>   "source_system_id": "6a3ba68e810d9156194530a1",
>   "comment": "Migrating the finance department archives.",
>   "tags": [
>     "q4",
>     "hr"
>   ],
>   "account_mapping": {
>     "is_enabled": true,
>     "permission_conflict_strategy": "preserve_structure_restrict_sharing",
>     "are_external_shares_mapped": false,
>     "are_permissions_mapped": true
>   },
>   "settings": {
>     "bandwidth_limit_bytes_per_sec": 10485760,
>     "are_deletions_mirrored": false,
>     "are_file_versions_synced": true,
>     "max_file_versions": 10,
>     "is_overwrite_enabled": false,
>     "are_completed_mappings_skipped_on_rerun": true,
>     "is_content_scanning_enabled": false,
>     "include_shared_source_folders": true,
>     "include_shared_destination_folders": false
>   }
> }
> ```

## Shuttle job permission conflict strategy

The strategy used to resolve permission conflicts.

> **Attributes and example**
>
> ```json Example theme={null}
> "preserve_structure_restrict_sharing"
> ```

## Shuttle job schedule

A schedule that starts runs of a shuttle job. A schedule is either time-based or triggered by another job's run. Schedules cannot start a run in `scan` mode.

> **Attributes and example**
>
> | Property | Type | Required | Description |
> | - | - | - | - |
> | `id` | `string` | Yes | The unique identifier for the shuttle job schedule. |
> | `type` | `enum<string>` | Yes | The value will always be `shuttle_job_schedule`. Available options: `shuttle_job_schedule`. |
> | `job_id` | `string` | Yes | The unique identifier of the shuttle job this schedule belongs to. |
> | `state` | `enum<string>` | Yes | Whether the schedule is active. Available options: `enabled`, `paused`. |
> | `run_mode` | `enum<string>` | Yes | The kind of run the schedule starts. `scan` is not a valid schedule run mode. Available options: `transfer`, `simulation`, `analysis`. |
> | `description` | `string` | No | An optional human-readable description of the schedule. Can be `null`. |
> | `last_attempt_at` | `string` | No | When the schedule last attempted to start a run. `null` when the schedule has never started a run. Can be `null`. |
> | `trigger` | [Shuttle job schedule trigger](#shuttle-job-schedule-trigger) | Yes | |
>
> ```json Example theme={null}
> {
>   "id": "7c1ba68e810d9156194530b2",
>   "type": "shuttle_job_schedule",
>   "job_id": "6a3ba68e810d9156194530a1",
>   "state": "enabled",
>   "run_mode": "transfer",
>   "description": "Nightly finance share replay.",
>   "last_attempt_at": "2026-03-16T09:00:12Z",
>   "trigger": {
>     "type": "by_time",
>     "start_at": "2026-03-16T09:00:00",
>     "time_zone": "America/Los_Angeles",
>     "repeat": "daily"
>   }
> }
> ```

## Shuttle job schedule create request

The request body used to create a shuttle job schedule.

> **Attributes and example**
>
> | Property | Type | Required | Description |
> | - | - | - | - |
> | `job_id` | `string` | Yes | The unique identifier of the shuttle job this schedule belongs to. |
> | `run_mode` | `enum<string>` | Yes | The kind of run the schedule starts. `scan` is not a valid schedule run mode. Available options: `transfer`, `simulation`, `analysis`. |
> | `state` | `enum<string>` | No | Whether the schedule is active. When omitted, defaults to `enabled`. Available options: `enabled`, `paused`. |
> | `description` | `string` | No | An optional human-readable description of the schedule. Can be `null`. |
> | `trigger` | [Shuttle job schedule trigger](#shuttle-job-schedule-trigger) | Yes | |
>
> ```json Example theme={null}
> {
>   "job_id": "6a3ba68e810d9156194530a1",
>   "run_mode": "transfer",
>   "state": "enabled",
>   "description": "Nightly finance share replay.",
>   "trigger": {
>     "type": "by_time",
>     "start_at": "2026-03-16T09:00:00",
>     "time_zone": "America/Los_Angeles",
>     "repeat": "daily"
>   }
> }
> ```

## Shuttle job schedule trigger

When a shuttle job schedule should start a run. Exactly one trigger variant is present, discriminated by `type`.

> **Attributes and example**
>
> ```json Example theme={null}
> {
>   "type": "by_time",
>   "start_at": "2026-03-16T09:00:00",
>   "time_zone": "America/Los_Angeles",
>   "repeat": "daily"
> }
> ```

## Shuttle job schedule trigger by job

A job-based trigger that starts this schedule after another shuttle job's run meets a condition.

> **Attributes and example**
>
> | Property | Type | Required | Description |
> | - | - | - | - |
> | `type` | `enum<string>` | Yes | The value will always be `by_job`. Available options: `by_job`. |
> | `triggered_by_job_id` | `string` | Yes | The unique identifier of the shuttle job whose run starts this schedule. |
> | `last_run_condition` | `enum<string>` | Yes | When this schedule should start a run relative to the last run of the triggering job. Available options: `always`, `on_success`, `on_finish`. |
>
> ```json Example theme={null}
> {
>   "type": "by_job",
>   "triggered_by_job_id": "8d2ca68e810d9156194530c3",
>   "last_run_condition": "on_success"
> }
> ```

## Shuttle job schedule trigger by time

A time-based trigger that starts the schedule at a wall-clock time and optionally repeats.

> **Attributes and example**
>
> | Property | Type | Required | Description |
> | - | - | - | - |
> | `type` | `enum<string>` | Yes | The value will always be `by_time`. Available options: `by_time`. |
> | `start_at` | `string` | Yes | The local wall-clock time when the schedule should first start a run, without an offset or `Z` suffix. Combined with `time_zone` to determine the instant, including DST. |
> | `time_zone` | `string` | Yes | The IANA time zone that gives `start_at` its calendar meaning (for example `America/Los_Angeles`). Recurrence and DST transitions are evaluated in this zone. |
> | `repeat` | `enum<string>` | Yes | How often the schedule repeats after `start_at`. Available options: `none`, `daily`, `weekly`, `weekdays`, `weekends`. |
>
> ```json Example theme={null}
> {
>   "type": "by_time",
>   "start_at": "2026-03-16T09:00:00",
>   "time_zone": "America/Los_Angeles",
>   "repeat": "daily"
> }
> ```

## Shuttle job schedule update request

The request body used to update an existing shuttle job schedule. Only the fields supplied in the request body are changed.

> **Attributes and example**
>
> | Property | Type | Required | Description |
> | - | - | - | - |
> | `state` | `enum<string>` | No | Whether the schedule is active. Available options: `enabled`, `paused`. |
> | `run_mode` | `enum<string>` | No | The kind of run the schedule starts. `scan` is not a valid schedule run mode. Available options: `transfer`, `simulation`, `analysis`. |
> | `description` | `string` | No | An optional human-readable description of the schedule. Can be `null`. |
> | `trigger` | [Shuttle job schedule trigger](#shuttle-job-schedule-trigger) | No | |
>
> ```json Example theme={null}
> {
>   "state": "paused",
>   "run_mode": "simulation",
>   "description": "Nightly finance share replay.",
>   "trigger": {
>     "type": "by_time",
>     "start_at": "2026-03-16T09:00:00",
>     "time_zone": "America/Los_Angeles",
>     "repeat": "daily"
>   }
> }
> ```

## Shuttle job schedules

A paginated list of shuttle job schedules.

> **Attributes and example**
>
> | Property | Type | Required | Description |
> | - | - | - | - |
> | `entries` | array of [Shuttle job schedule](#shuttle-job-schedule) | Yes | A list of shuttle job schedules. |
> | `limit` | `integer` | No | The limit that was used for these entries. This will be the same as the `limit` query parameter unless that value exceeded the maximum value allowed. The maximum value varies by API. |
> | `next_marker` | `string` | No | The marker for the start of the next page of results. Can be `null`. |
> | `prev_marker` | `string` | No | The marker for the start of the previous page of results. Can be `null`. |
>
> ```json Example theme={null}
> {
>   "entries": [
>     {
>       "id": "7c1ba68e810d9156194530b2",
>       "type": "shuttle_job_schedule",
>       "job_id": "6a3ba68e810d9156194530a1",
>       "state": "enabled",
>       "run_mode": "transfer",
>       "description": "Nightly finance share replay.",
>       "last_attempt_at": "2026-03-16T09:00:12Z",
>       "trigger": {
>         "type": "by_time",
>         "start_at": "2026-03-16T09:00:00",
>         "time_zone": "America/Los_Angeles",
>         "repeat": "daily"
>       }
>     }
>   ],
>   "limit": 1000,
>   "next_marker": "JV9IRGZmieiBasejOG9yDCRNgd2ymoZIbjsxbJMjIs3kioVii",
>   "prev_marker": "JV9IRGZmieiBasejOG9yDCRNgd2ymoZIbjsxbJMjIs3kioVih"
> }
> ```

## Shuttle job start request

The request body used to start a shuttle job.

> **Attributes and example**
>
> | Property | Type | Required | Description |
> | - | - | - | - |
> | `mode` | `enum<string>` | No | The run mode. Defaults to simulation when omitted. Available options: `transfer`, `simulation`, `scan`, `analysis`. |
>
> ```json Example theme={null}
> {
>   "mode": "simulation"
> }
> ```

## Shuttle job update request

The request body used to update an existing shuttle job. Only the fields supplied in the request body are changed.

> **Attributes and example**
>
> | Property | Type | Required | Description |
> | - | - | - | - |
> | `name` | `string` | No | The human-readable name of the shuttle job. |
> | `comment` | `string` | No | An optional free-form comment describing the shuttle job. Can be `null`. |
> | `tags` | array of `string` | No | A list of free-form tags associated with the shuttle job. |
> | `account_mapping` | `object` | No | The account mapping configuration that controls how source identities and permissions are translated into Box. |
> | `settings` | `object` | No | The tunable settings that control how the shuttle job runs. |
>
> ```json Example theme={null}
> {
>   "name": "Q4 SharePoint to Box",
>   "comment": "Migrating the finance department archives.",
>   "tags": [
>     "q4",
>     "hr"
>   ],
>   "account_mapping": {
>     "is_enabled": true,
>     "permission_conflict_strategy": "preserve_structure_restrict_sharing",
>     "are_external_shares_mapped": false,
>     "are_permissions_mapped": true
>   },
>   "settings": {
>     "bandwidth_limit_bytes_per_sec": 10485760,
>     "are_deletions_mirrored": false,
>     "are_file_versions_synced": true,
>     "max_file_versions": 10,
>     "is_overwrite_enabled": false,
>     "are_completed_mappings_skipped_on_rerun": true,
>     "is_content_scanning_enabled": false,
>     "include_shared_source_folders": true,
>     "include_shared_destination_folders": false
>   }
> }
> ```

## Shuttle jobs

A paginated list of shuttle jobs.

> **Attributes and example**
>
> | Property | Type | Required | Description |
> | - | - | - | - |
> | `entries` | array of [Shuttle job](#shuttle-job) | Yes | A list of shuttle jobs. |
> | `limit` | `integer` | No | The limit that was used for these entries. This will be the same as the `limit` query parameter unless that value exceeded the maximum value allowed. The maximum value varies by API. |
> | `next_marker` | `string` | No | The marker for the start of the next page of results. Can be `null`. |
> | `prev_marker` | `string` | No | The marker for the start of the previous page of results. Can be `null`. |
>
> ```json Example theme={null}
> {
>   "entries": [
>     {
>       "id": "6a3ba68e810d9156194530a1",
>       "type": "shuttle_job",
>       "name": "Q4 SharePoint to Box",
>       "comment": "Migrating the finance department archives.",
>       "job_type": "transfer",
>       "state": "created",
>       "mapping_state": "awaiting_path_mapping",
>       "source_system": {
>         "type": "shuttle_system",
>         "id": "6a3ba68e810d9156194530a1",
>         "name": "SharePoint"
>       },
>       "account_mapping": {
>         "is_enabled": true,
>         "permission_conflict_strategy": "preserve_structure_restrict_sharing",
>         "are_external_shares_mapped": false,
>         "are_permissions_mapped": true
>       },
>       "tags": [
>         "q4",
>         "hr"
>       ],
>       "settings": {
>         "bandwidth_limit_bytes_per_sec": 10485760,
>         "are_deletions_mirrored": false,
>         "are_file_versions_synced": true,
>         "max_file_versions": 10,
>         "is_overwrite_enabled": false,
>         "are_completed_mappings_skipped_on_rerun": true,
>         "is_content_scanning_enabled": false,
>         "include_shared_source_folders": true,
>         "include_shared_destination_folders": false
>       }
>     }
>   ],
>   "limit": 1000,
>   "next_marker": "JV9IRGZmieiBasejOG9yDCRNgd2ymoZIbjsxbJMjIs3kioVii",
>   "prev_marker": "JV9IRGZmieiBasejOG9yDCRNgd2ymoZIbjsxbJMjIs3kioVih"
> }
> ```

## Shuttle mapping error

A problem encountered while preparing path, subject, or permission mappings for a shuttle job.

> **Attributes and example**
>
> | Property | Type | Required | Description |
> | - | - | - | - |
> | `id` | `string` | Yes | The unique identifier for the mapping error. |
> | `type` | `enum<string>` | Yes | The value will always be `shuttle_mapping_error`. Available options: `shuttle_mapping_error`. |
> | `job_id` | `string` | Yes | The unique identifier of the shuttle job this error belongs to. |
> | `revision` | `integer` | Yes | The mapping revision this error belongs to. |
> | `category` | `string` | Yes | The category of mapping work that produced the error. This is an open string whose set of values can grow. |
> | `path` | `string` | Yes | The path or subject that the mapping error refers to. |
> | `messages` | array of `string` | Yes | Human-readable messages describing the mapping error. |
>
> ```json Example theme={null}
> {
>   "id": "6a3ba7c02ea17bc9461eeacf",
>   "type": "shuttle_mapping_error",
>   "job_id": "6a3ba68e810d9156194530a1",
>   "revision": 3,
>   "category": "path",
>   "path": "/Shared Documents/Projects",
>   "messages": [
>     "The source path could not be resolved."
>   ]
> }
> ```

## Shuttle mapping errors

A paginated list of shuttle mapping errors.

> **Attributes and example**
>
> | Property | Type | Required | Description |
> | - | - | - | - |
> | `entries` | array of [Shuttle mapping error](#shuttle-mapping-error) | Yes | A list of shuttle mapping errors. |
> | `limit` | `integer` | No | The limit that was used for these entries. This will be the same as the `limit` query parameter unless that value exceeded the maximum value allowed. The maximum value varies by API. |
> | `next_marker` | `string` | No | The marker for the start of the next page of results. Can be `null`. |
> | `prev_marker` | `string` | No | The marker for the start of the previous page of results. Can be `null`. |
>
> ```json Example theme={null}
> {
>   "entries": [
>     {
>       "id": "6a3ba7c02ea17bc9461eeacf",
>       "type": "shuttle_mapping_error",
>       "job_id": "6a3ba68e810d9156194530a1",
>       "revision": 3,
>       "category": "path",
>       "path": "/Shared Documents/Projects",
>       "messages": [
>         "The source path could not be resolved."
>       ]
>     }
>   ],
>   "limit": 1000,
>   "next_marker": "JV9IRGZmieiBasejOG9yDCRNgd2ymoZIbjsxbJMjIs3kioVii",
>   "prev_marker": "JV9IRGZmieiBasejOG9yDCRNgd2ymoZIbjsxbJMjIs3kioVih"
> }
> ```

## Shuttle path entries

A paginated list of shuttle path entries.

> **Attributes and example**
>
> | Property | Type | Required | Description |
> | - | - | - | - |
> | `entries` | array of [Shuttle path entry](#shuttle-path-entry) | Yes | A list of shuttle path entries. |
> | `limit` | `integer` | No | The limit that was used for these entries. This will be the same as the `limit` query parameter unless that value exceeded the maximum value allowed. The maximum value varies by API. |
> | `next_marker` | `string` | No | The marker for the start of the next page of results. Can be `null`. |
> | `prev_marker` | `string` | No | The marker for the start of the previous page of results. Can be `null`. |
>
> ```json Example theme={null}
> {
>   "entries": [
>     {
>       "id": "6a3ba7c02ea17bc9461eeacf",
>       "type": "shuttle_path_entry",
>       "name": "Projects",
>       "path": "/Shared Documents/Projects",
>       "path_id": "01ABCDEF23456789",
>       "parent_path": "/Shared Documents",
>       "scope": {
>         "type": "shared_space",
>         "space": "HR Team Site"
>       },
>       "is_directory": true,
>       "can_map": true
>     }
>   ],
>   "limit": 1000,
>   "next_marker": "JV9IRGZmieiBasejOG9yDCRNgd2ymoZIbjsxbJMjIs3kioVii",
>   "prev_marker": "JV9IRGZmieiBasejOG9yDCRNgd2ymoZIbjsxbJMjIs3kioVih"
> }
> ```

## Shuttle path entry

A browsable entry on the source or target system used to build shuttle path mappings. Shared fields describe the node. `scope` is a discriminated object that identifies the mapping namespace so a path mapping can be created from this row without extra browse state.

> **Attributes and example**
>
> | Property | Type | Required | Description |
> | - | - | - | - |
> | `id` | `string` | Yes | The unique identifier of this browse row. This is not the account identifier; when `scope.type` is `account`, the account identifier is `scope.id`. |
> | `type` | `enum<string>` | Yes | The value will always be `shuttle_path_entry`. Available options: `shuttle_path_entry`. |
> | `name` | `string` | Yes | The display name of the path entry. |
> | `path` | `string` | Yes | The human-readable path of the entry. |
> | `path_id` | `string` | No | The system-native identifier of the path. `null` when the selected system does not provide one. Maps to `path_id` on a path mapping location. Can be `null`. |
> | `parent_path` | `string` | No | The human-readable path of the parent entry, or `null` for a root entry. Can be `null`. |
> | `scope` | [Shuttle path entry scope](#shuttle-path-entry-scope) | Yes | The mapping namespace of this entry. Exactly one variant is present, discriminated by `type`. An `account` scope is the owning account flattened onto the object. A `shared_space` scope carries the container name. Whether the entry is a file or a folder is indicated by `is_directory`, not by `scope`. |
> | `is_directory` | `boolean` | Yes | Whether the entry is a directory (`true`) or a single file (`false`). Maps to `is_directory` on a path mapping location. |
> | `can_map` | `boolean` | Yes | Whether the entry can be selected in a path mapping. |
>
> ```json Example theme={null}
> {
>   "id": "6a3ba7c02ea17bc9461eeacf",
>   "type": "shuttle_path_entry",
>   "name": "Projects",
>   "path": "/Shared Documents/Projects",
>   "path_id": "01ABCDEF23456789",
>   "parent_path": "/Shared Documents",
>   "scope": {
>     "type": "shared_space",
>     "space": "HR Team Site"
>   },
>   "is_directory": true,
>   "can_map": true
> }
> ```

## Shuttle path entry account scope

The mapping scope of a path entry that lives under a user or service account. `type` is the discriminator. The remaining fields are the account itself, flattened onto this object — they are not a nested `account` wrapper. `id` here is the account identifier, not the path entry `id`. Copy these fields onto `account` when creating an account-scoped path mapping.

> **Attributes and example**
>
> | Property | Type | Required | Description |
> | - | - | - | - |
> | `type` | `enum<string>` | Yes | The value will always be `account`. Available options: `account`. |
> | `id` | `string` | No | The platform-native identifier of the account that owns this entry. `null` when the system does not provide one. This is not the path entry `id`. Maps to `account.id` on an account-scoped path mapping location. Can be `null`. |
> | `email` | `string` | No | The email of the account that owns this entry. This is a system-native identifier and is not always an RFC 5322 address. `null` when unknown. Maps to `account.email` on an account-scoped path mapping location. Can be `null`. |
> | `name` | `string` | No | The display name of the account that owns this entry. `null` when unknown. Maps to `account.name` on an account-scoped path mapping location. Can be `null`. |
>
> ```json Example theme={null}
> {
>   "type": "account",
>   "id": "123456",
>   "email": "user@example.com",
>   "name": "Jane Doe"
> }
> ```

## Shuttle path entry scope

Which mapping namespace this path entry belongs to. Discriminated by `type`: `account` flattens the owning account onto the object; `shared_space` carries the shared container name. File versus folder is not part of scope. Use `is_directory` on the path entry.

> **Attributes and example**
>
> ```json Example theme={null}
> {
>   "type": "account",
>   "id": "123456",
>   "email": "user@example.com",
>   "name": "Jane Doe"
> }
> ```

## Shuttle path entry shared space scope

The mapping scope of a path entry that lives under a shared container such as a site, team drive, bucket, or file share. `type` is the discriminator. Copy `space` onto a shared-space path mapping location when creating a mapping from this row.

> **Attributes and example**
>
> | Property | Type | Required | Description |
> | - | - | - | - |
> | `type` | `enum<string>` | Yes | The value will always be `shared_space`. Available options: `shared_space`. |
> | `space` | `string` | No | The display name of the shared container this entry belongs to. `null` when the system has a single implicit container. Maps to `space` on a shared-space path mapping location. Can be `null`. |
>
> ```json Example theme={null}
> {
>   "type": "shared_space",
>   "space": "HR Team Site"
> }
> ```

## Shuttle path mapping

A standard representation of a shuttle path mapping. A path mapping connects a source location on the migrated system to a destination in Box, or marks the source path as skipped.

> **Attributes and example**
>
> | Property | Type | Required | Description |
> | - | - | - | - |
> | `id` | `string` | Yes | The unique identifier for the shuttle path mapping. |
> | `type` | `enum<string>` | Yes | The value will always be `shuttle_path_mapping`. Available options: `shuttle_path_mapping`. |
> | `job_id` | `string` | Yes | The unique identifier of the shuttle job this mapping belongs to. |
> | `is_path_skipped` | `boolean` | Yes | Whether this source path is skipped during the migration. |
> | `source` | [Shuttle path mapping location](#shuttle-path-mapping-location) | Yes | The source location being mapped. |
> | `target` | [Shuttle path mapping location](#shuttle-path-mapping-location) | No | The destination location. `null` when the source path is skipped or the job has no destination, such as an analysis job. Can be `null`. |
>
> ```json Example theme={null}
> {
>   "id": "6a3ba7a24ea17bc9461eeacd",
>   "type": "shuttle_path_mapping",
>   "job_id": "6a3ba68e810d9156194530a1",
>   "is_path_skipped": false,
>   "source": {
>     "type": "account",
>     "path": "/HR Migration",
>     "path_id": "1234567890",
>     "account": {
>       "id": "123456",
>       "email": "admin@company.box.com",
>       "name": "Box Admin"
>     },
>     "is_directory": true
>   },
>   "target": {
>     "type": "account",
>     "path": "/HR Migration",
>     "path_id": "1234567890",
>     "account": {
>       "id": "123456",
>       "email": "admin@company.box.com",
>       "name": "Box Admin"
>     },
>     "is_directory": true
>   }
> }
> ```

## Shuttle path mapping account

The account that owns an account-scoped path mapping location.

> **Attributes and example**
>
> | Property | Type | Required | Description |
> | - | - | - | - |
> | `id` | `string` | No | The platform-native identifier of the account. `null` when the system does not provide one. Can be `null`. |
> | `email` | `string` | No | The email address of the account. `null` when unknown. Can be `null`. |
> | `name` | `string` | No | The display name of the account. `null` when unknown. Can be `null`. |
>
> ```json Example theme={null}
> {
>   "id": "123456",
>   "email": "admin@company.box.com",
>   "name": "Box Admin"
> }
> ```

## Shuttle path mapping account input

The account that owns an account-scoped path mapping location. Provide at least one of `id` or `email`.

> **Attributes and example**
>
> | Property | Type | Required | Description |
> | - | - | - | - |
> | `id` | `string` | No | The platform-native identifier of the account. |
> | `email` | `string` | No | The email address of the account. |
>
> ```json Example theme={null}
> {
>   "id": "123456",
>   "email": "admin@company.box.com"
> }
> ```

## Shuttle path mapping account location

A path mapping location scoped to a user or service account.

> **Attributes and example**
>
> | Property | Type | Required | Description |
> | - | - | - | - |
> | `type` | `enum<string>` | Yes | The value will always be `account`. Available options: `account`. |
> | `path` | `string` | Yes | The human-readable path relative to the account root. |
> | `path_id` | `string` | No | The stable identifier of the location. `null` when the system does not provide one. Can be `null`. |
> | `account` | [Shuttle path mapping account](#shuttle-path-mapping-account) | No | The account that owns this location. |
> | `is_directory` | `boolean` | No | Whether the location is a directory. `null` when unknown. Can be `null`. |
>
> ```json Example theme={null}
> {
>   "type": "account",
>   "path": "/HR Migration",
>   "path_id": "1234567890",
>   "account": {
>     "id": "123456",
>     "email": "admin@company.box.com",
>     "name": "Box Admin"
>   },
>   "is_directory": true
> }
> ```

## Shuttle path mapping account location input

An account-scoped source location supplied when creating or updating a path mapping.

> **Attributes and example**
>
> | Property | Type | Required | Description |
> | - | - | - | - |
> | `type` | `enum<string>` | Yes | The value will always be `account`. Available options: `account`. |
> | `path` | `string` | Yes | The human-readable path relative to the account root. |
> | `path_id` | `string` | No | An optional stable identifier of the location, when obtained from browsing. |
> | `account` | [Shuttle path mapping account input](#shuttle-path-mapping-account-input) | Yes | The account that owns this location. Provide at least one of `id` or `email`. |
> | `is_directory` | `boolean` | No | Whether the location is a directory. When set, the destination must be the same kind of object. |
>
> ```json Example theme={null}
> {
>   "type": "account",
>   "path": "/Shared Documents",
>   "path_id": "sp-folder-001",
>   "account": {
>     "id": "123456",
>     "email": "admin@company.box.com"
>   },
>   "is_directory": true
> }
> ```

## Shuttle path mapping account location target input

An account-scoped destination location supplied when creating or updating a path mapping.

> **Attributes and example**
>
> | Property | Type | Required | Description |
> | - | - | - | - |
> | `type` | `enum<string>` | Yes | The value will always be `account`. Available options: `account`. |
> | `path` | `string` | Yes | The human-readable path relative to the account root. |
> | `path_id` | `string` | No | An optional stable identifier of the location, when obtained from browsing. |
> | `account` | [Shuttle path mapping account input](#shuttle-path-mapping-account-input) | Yes | The account that owns this location. Provide at least one of `id` or `email`. |
>
> ```json Example theme={null}
> {
>   "type": "account",
>   "path": "/HR Migration",
>   "path_id": "1234567890",
>   "account": {
>     "id": "123456",
>     "email": "admin@company.box.com"
>   }
> }
> ```

## Shuttle path mapping create request

The request body used to create a new shuttle path mapping.

> **Attributes and example**
>
> | Property | Type | Required | Description |
> | - | - | - | - |
> | `job_id` | `string` | Yes | The unique identifier of the shuttle job this mapping belongs to. |
> | `is_path_skipped` | `boolean` | No | Whether this source path should be skipped during the migration. Defaults to `false`. |
> | `source` | [Shuttle path mapping location input](#shuttle-path-mapping-location-input) | Yes | The source location to migrate from. |
> | `target` | [Shuttle path mapping target location input](#shuttle-path-mapping-target-location-input) | No | The destination location to migrate to. Omit or set to `null` when the source path is skipped. Can be `null`. |
>
> ```json Example theme={null}
> {
>   "job_id": "6a3ba68e810d9156194530a1",
>   "is_path_skipped": false,
>   "source": {
>     "type": "account",
>     "path": "/Shared Documents",
>     "path_id": "sp-folder-001",
>     "account": {
>       "id": "123456",
>       "email": "admin@company.box.com"
>     },
>     "is_directory": true
>   },
>   "target": {
>     "type": "account",
>     "path": "/HR Migration",
>     "account": {
>       "email": "admin@company.box.com"
>     }
>   }
> }
> ```

## Shuttle path mapping import create request

The request body used to import a shuttle job's path mappings from a spreadsheet already stored in Box.

> **Attributes and example**
>
> | Property | Type | Required | Description |
> | - | - | - | - |
> | `job_id` | `string` | Yes | The unique identifier of the shuttle job whose path mappings are replaced. |
> | `file_id` | `string` | Yes | The unique identifier of the Box file holding the mapping workbook. The file is read as the calling user, so it must live somewhere that user can download from. |
>
> ```json Example theme={null}
> {
>   "job_id": "6a3ba68e810d9156194530a1",
>   "file_id": "12345678901"
> }
> ```

## Shuttle path mapping location

One side of a path mapping. The object shape is determined by `type`.

> **Attributes and example**
>
> ```json Example theme={null}
> {
>   "type": "account",
>   "path": "/HR Migration",
>   "path_id": "1234567890",
>   "account": {
>     "id": "123456",
>     "email": "admin@company.box.com",
>     "name": "Box Admin"
>   },
>   "is_directory": true
> }
> ```

## Shuttle path mapping location input

A source location supplied when creating or updating a path mapping. The object shape is determined by `type`.

> **Attributes and example**
>
> ```json Example theme={null}
> {
>   "type": "account",
>   "path": "/Shared Documents",
>   "path_id": "sp-folder-001",
>   "account": {
>     "id": "123456",
>     "email": "admin@company.box.com"
>   },
>   "is_directory": true
> }
> ```

## Shuttle path mapping shared space location

A path mapping location scoped to a shared container such as a site, team drive, bucket, or file share.

> **Attributes and example**
>
> | Property | Type | Required | Description |
> | - | - | - | - |
> | `type` | `enum<string>` | Yes | The value will always be `shared_space`. Available options: `shared_space`. |
> | `space` | `string` | No | The display name of the shared container. `null` when the system has a single implicit container. Can be `null`. |
> | `path` | `string` | Yes | The human-readable path relative to the shared container. |
> | `path_id` | `string` | No | The stable identifier of the location. `null` when the system does not provide one. Can be `null`. |
> | `is_directory` | `boolean` | No | Whether the location is a directory. `null` when unknown. Can be `null`. |
>
> ```json Example theme={null}
> {
>   "type": "shared_space",
>   "space": "HR Team Site",
>   "path": "/Shared Documents",
>   "path_id": "sp-folder-001",
>   "is_directory": true
> }
> ```

## Shuttle path mapping shared space location input

A shared-container source location supplied when creating or updating a path mapping.

> **Attributes and example**
>
> | Property | Type | Required | Description |
> | - | - | - | - |
> | `type` | `enum<string>` | Yes | The value will always be `shared_space`. Available options: `shared_space`. |
> | `space` | `string` | No | The display name of the shared container. Required for systems with multiple containers. |
> | `path` | `string` | Yes | The human-readable path relative to the shared container. |
> | `path_id` | `string` | No | An optional stable identifier of the location, when obtained from browsing. |
> | `is_directory` | `boolean` | No | Whether the location is a directory. When set, the destination must be the same kind of object. |
>
> ```json Example theme={null}
> {
>   "type": "shared_space",
>   "space": "HR Team Site",
>   "path": "/Shared Documents",
>   "path_id": "sp-folder-001",
>   "is_directory": true
> }
> ```

## Shuttle path mapping shared space location target input

A shared-container destination location supplied when creating or updating a path mapping.

> **Attributes and example**
>
> | Property | Type | Required | Description |
> | - | - | - | - |
> | `type` | `enum<string>` | Yes | The value will always be `shared_space`. Available options: `shared_space`. |
> | `space` | `string` | No | The display name of the shared container. Required for systems with multiple containers. |
> | `path` | `string` | Yes | The human-readable path relative to the shared container. |
> | `path_id` | `string` | No | An optional stable identifier of the location, when obtained from browsing. |
>
> ```json Example theme={null}
> {
>   "type": "shared_space",
>   "space": "HR Team Site",
>   "path": "/HR Migration",
>   "path_id": "1234567890"
> }
> ```

## Shuttle path mapping target location input

A destination location supplied when creating or updating a path mapping. The object shape is determined by `type`. Destination input does not include `is_directory`; that flag is taken from the source.

> **Attributes and example**
>
> ```json Example theme={null}
> {
>   "type": "account",
>   "path": "/HR Migration",
>   "path_id": "1234567890",
>   "account": {
>     "id": "123456",
>     "email": "admin@company.box.com"
>   }
> }
> ```

## Shuttle path mapping update request

The request body used to update an existing shuttle path mapping. Only the fields supplied in the request body are changed. `job_id`, `id`, and `type` are immutable.

> **Attributes and example**
>
> | Property | Type | Required | Description |
> | - | - | - | - |
> | `is_path_skipped` | `boolean` | No | Whether this source path should be skipped during the migration. |
> | `source` | [Shuttle path mapping location input](#shuttle-path-mapping-location-input) | No | The source location to migrate from. |
> | `target` | [Shuttle path mapping target location input](#shuttle-path-mapping-target-location-input) | No | The destination location to migrate to. Set to `null` to clear the destination, for example when skipping the source path. Can be `null`. |
>
> ```json Example theme={null}
> {
>   "is_path_skipped": true,
>   "source": {
>     "type": "account",
>     "path": "/Shared Documents",
>     "path_id": "sp-folder-001",
>     "account": {
>       "id": "123456",
>       "email": "admin@company.box.com"
>     },
>     "is_directory": true
>   },
>   "target": {
>     "type": "account",
>     "path": "/HR Migration",
>     "account": {
>       "email": "admin@company.box.com"
>     }
>   }
> }
> ```

## Shuttle path mappings

A paginated list of shuttle path mappings.

> **Attributes and example**
>
> | Property | Type | Required | Description |
> | - | - | - | - |
> | `entries` | array of [Shuttle path mapping](#shuttle-path-mapping) | Yes | A list of shuttle path mappings. |
> | `limit` | `integer` | No | The limit that was used for these entries. This will be the same as the `limit` query parameter unless that value exceeded the maximum value allowed. The maximum value varies by API. |
> | `next_marker` | `string` | No | The marker for the start of the next page of results. Can be `null`. |
> | `prev_marker` | `string` | No | The marker for the start of the previous page of results. Can be `null`. |
>
> ```json Example theme={null}
> {
>   "entries": [
>     {
>       "id": "6a3ba7a24ea17bc9461eeacd",
>       "type": "shuttle_path_mapping",
>       "job_id": "6a3ba68e810d9156194530a1",
>       "is_path_skipped": false,
>       "source": {
>         "type": "account",
>         "path": "/HR Migration",
>         "path_id": "1234567890",
>         "account": {
>           "id": "123456",
>           "email": "admin@company.box.com",
>           "name": "Box Admin"
>         },
>         "is_directory": true
>       },
>       "target": {
>         "type": "account",
>         "path": "/HR Migration",
>         "path_id": "1234567890",
>         "account": {
>           "id": "123456",
>           "email": "admin@company.box.com",
>           "name": "Box Admin"
>         },
>         "is_directory": true
>       }
>     }
>   ],
>   "limit": 1000,
>   "next_marker": "JV9IRGZmieiBasejOG9yDCRNgd2ymoZIbjsxbJMjIs3kioVii",
>   "prev_marker": "JV9IRGZmieiBasejOG9yDCRNgd2ymoZIbjsxbJMjIs3kioVih"
> }
> ```

## Shuttle report

A report generated asynchronously for a shuttle job run. Keep polling while `status` is `pending` or `processing`. Stop when `status` is `complete`, `failed`, `canceled`, or `unknown`. The generated Box file or folder is `null` until generation finishes.

> **Attributes and example**
>
> | Property | Type | Required | Description |
> | - | - | - | - |
> | `id` | `string` | Yes | The unique identifier for the shuttle report. |
> | `type` | `enum<string>` | Yes | The value will always be `shuttle_report`. Available options: `shuttle_report`. |
> | `run_id` | `string` | Yes | The unique identifier of the shuttle run this report was generated for. |
> | `status` | `string` | Yes | The generation status of the report. This is an open string whose set of values is expected to grow; the currently documented values include `pending`, `processing`, `complete`, `failed`, `canceled`, and `unknown`. Keep polling `pending` and `processing`. Stop on `complete`, `failed`, `canceled`, and `unknown`. Treat any value that is not recognized the same as `unknown`: do not fail parsing, and do not keep polling. |
> | `format` | `enum<string>` | Yes | The output file format of the report. Available options: `xlsx`, `csv`. |
> | `sections` | array of `string` | No | The sections included in the report. Echoes the sections requested on create. This is an open list whose set of values is expected to grow; the currently documented values include `files_and_folders`, `event_log`, `transfer_overview`, `source_users`, `target_users`, `source_collaborators`, `target_collaborators`, `source_collaborations`, and `target_collaborations`. Omitted on older reports that have no stored section list. New reports always include this field. |
> | `users_scope` | `enum<string>` | No | Which users are included in user-related report sections. Available options: `migrated`, `all`. |
> | `output` | [Shuttle report output](#shuttle-report-output) | Yes | The generated Box file or folder. Always present; `null` until `status` is `complete`. Can be `null`. |
> | `created_at` | `string` | No | When report generation was requested. |
> | `completed_at` | `string` | Yes | When report generation finished. Always present; `null` while generation is still in progress. Can be `null`. |
>
> ```json Example theme={null}
> {
>   "id": "6a3ba8d14f2c91e8370b4d12",
>   "type": "shuttle_report",
>   "run_id": "6a3ba68e810d9156194530a1:42",
>   "status": "complete",
>   "format": "xlsx",
>   "sections": [
>     "event_log",
>     "transfer_overview"
>   ],
>   "users_scope": "migrated",
>   "output": {
>     "id": "12345678",
>     "type": "file"
>   },
>   "created_at": "2026-03-15T06:35:00Z",
>   "completed_at": "2026-03-15T06:36:12Z"
> }
> ```

## Shuttle report create request

The request body used to generate a report for a shuttle run. Generation is asynchronous: the created report is returned immediately in `pending` or `processing` status. Poll `GET /shuttle_reports/{shuttle_report_id}` while `status` is `pending` or `processing`. Stop when `status` is `complete`, `failed`, `canceled`, or `unknown`. Repeating this request with the same parameters reuses the existing report instead of creating a duplicate.

> **Attributes and example**
>
> | Property | Type | Required | Description |
> | - | - | - | - |
> | `run_id` | `string` | Yes | The unique identifier of the shuttle run to generate a report for. |
> | `format` | `enum<string>` | Yes | The output file format of the report. Available options: `xlsx`, `csv`. |
> | `sections` | array of `string` | Yes | The sections to include in the report. Must be a non-empty subset of the run's `available_report_sections`. This is an open list whose set of values is expected to grow; the currently documented values include `files_and_folders`, `event_log`, `transfer_overview`, `source_users`, `target_users`, `source_collaborators`, `target_collaborators`, `source_collaborations`, and `target_collaborations`. |
> | `users_scope` | `enum<string>` | No | Which users to include in user-related report sections. Defaults to `migrated` when omitted. Available options: `migrated`, `all`. |
>
> ```json Example theme={null}
> {
>   "run_id": "6a3ba68e810d9156194530a1:42",
>   "format": "xlsx",
>   "sections": [
>     "event_log",
>     "transfer_overview"
>   ],
>   "users_scope": "migrated"
> }
> ```

## Shuttle report output

A reference to the generated Box file or folder.

> **Attributes and example**
>
> | Property | Type | Required | Description |
> | - | - | - | - |
> | `id` | `string` | Yes | The unique identifier of the generated Box file or folder. |
> | `type` | `enum<string>` | Yes | The Box object type of the generated file or folder. Available options: `file`, `folder`. |
>
> ```json Example theme={null}
> {
>   "id": "12345678",
>   "type": "file"
> }
> ```

## Shuttle reports

A paginated list of shuttle reports.

> **Attributes and example**
>
> | Property | Type | Required | Description |
> | - | - | - | - |
> | `entries` | array of [Shuttle report](#shuttle-report) | Yes | A list of shuttle reports. |
> | `limit` | `integer` | No | The limit that was used for these entries. This will be the same as the `limit` query parameter unless that value exceeded the maximum value allowed. The maximum value varies by API. |
> | `next_marker` | `string` | No | The marker for the start of the next page of results. Can be `null`. |
> | `prev_marker` | `string` | No | The marker for the start of the previous page of results. Can be `null`. |
>
> ```json Example theme={null}
> {
>   "entries": [
>     {
>       "id": "6a3ba8d14f2c91e8370b4d12",
>       "type": "shuttle_report",
>       "run_id": "6a3ba68e810d9156194530a1:42",
>       "status": "complete",
>       "format": "xlsx",
>       "sections": [
>         "event_log",
>         "transfer_overview"
>       ],
>       "users_scope": "migrated",
>       "output": {
>         "id": "12345678",
>         "type": "file"
>       },
>       "created_at": "2026-03-15T06:35:00Z",
>       "completed_at": "2026-03-15T06:36:12Z"
>     }
>   ],
>   "limit": 1000,
>   "next_marker": "JV9IRGZmieiBasejOG9yDCRNgd2ymoZIbjsxbJMjIs3kioVii",
>   "prev_marker": "JV9IRGZmieiBasejOG9yDCRNgd2ymoZIbjsxbJMjIs3kioVih"
> }
> ```

## Shuttle run

A historical instance of a shuttle job run. A run is created each time a job is started. Run IDs have the form `{job_id}:{run_number}`.

> **Attributes and example**
>
> | Property | Type | Required | Description |
> | - | - | - | - |
> | `id` | `string` | Yes | The unique identifier for the shuttle run, in the form `{job_id}:{run_number}`. |
> | `type` | `enum<string>` | Yes | The value will always be `shuttle_run`. Available options: `shuttle_run`. |
> | `job_id` | `string` | Yes | The unique identifier of the shuttle job this run belongs to. |
> | `run_mode` | `string` | Yes | The mode the run was started in. This is an open string whose set of values is expected to grow; the currently documented values include `transfer`, `simulation`, `analysis`, `scan`, and `unknown`. Clients should treat any value they do not recognize as `unknown`. |
> | `state` | `string` | Yes | The current state of the shuttle run. This is an open string whose set of values is expected to grow; the currently documented values include `running`, `stopping`, `completed`, `completed_with_errors`, `stopped`, `failed`, `timed_out`, and `unknown`. Clients should treat any value they do not recognize as `unknown`. |
> | `started_at` | `string` | No | When the run started. |
> | `ended_at` | `string` | No | When the run ended. `null` while the run is still in progress. Can be `null`. |
> | `duration_seconds` | `integer` | No | Total duration of the run in seconds. `null` while the run is still in progress. Can be `null`. |
> | `stats` | `object` | No | Transfer statistics collected during the run. |
> | `created_by` | `User (Base)` | No | The user who started the run. `null` for schedule- or system-initiated runs. Can be `null`. |
> | `available_report_sections` | array of `string` | No | Report sections that can be requested for this run. This is an open list whose set of values is expected to grow; the currently documented values include `files_and_folders`, `event_log`, `transfer_overview`, `source_users`, `target_users`, `source_collaborators`, `target_collaborators`, `source_collaborations`, and `target_collaborations`. |
>
> ```json Example theme={null}
> {
>   "id": "6a3ba68e810d9156194530a1:42",
>   "type": "shuttle_run",
>   "job_id": "6a3ba68e810d9156194530a1",
>   "run_mode": "transfer",
>   "state": "completed",
>   "started_at": "2026-03-15T02:00:00Z",
>   "ended_at": "2026-03-15T06:30:00Z",
>   "duration_seconds": 16200,
>   "stats": {
>     "bytes_sent": 1073741824,
>     "files_sent": 4200,
>     "folders_created": 350,
>     "is_estimated": false
>   },
>   "created_by": {
>     "id": "11446498",
>     "type": "user"
>   },
>   "available_report_sections": [
>     "event_log",
>     "files_and_folders"
>   ]
> }
> ```

## Shuttle runs

A paginated list of shuttle runs.

> **Attributes and example**
>
> | Property | Type | Required | Description |
> | - | - | - | - |
> | `entries` | array of [Shuttle run](#shuttle-run) | Yes | A list of shuttle runs. |
> | `limit` | `integer` | No | The limit that was used for these entries. This will be the same as the `limit` query parameter unless that value exceeded the maximum value allowed. The maximum value varies by API. |
> | `next_marker` | `string` | No | The marker for the start of the next page of results. Can be `null`. |
> | `prev_marker` | `string` | No | The marker for the start of the previous page of results. Can be `null`. |
>
> ```json Example theme={null}
> {
>   "entries": [
>     {
>       "id": "6a3ba68e810d9156194530a1:42",
>       "type": "shuttle_run",
>       "job_id": "6a3ba68e810d9156194530a1",
>       "run_mode": "transfer",
>       "state": "completed",
>       "started_at": "2026-03-15T02:00:00Z",
>       "ended_at": "2026-03-15T06:30:00Z",
>       "duration_seconds": 16200,
>       "stats": {
>         "bytes_sent": 1073741824,
>         "files_sent": 4200,
>         "folders_created": 350,
>         "is_estimated": false
>       },
>       "created_by": {
>         "id": "11446498",
>         "type": "user"
>       },
>       "available_report_sections": [
>         "event_log",
>         "files_and_folders"
>       ]
>     }
>   ],
>   "limit": 1000,
>   "next_marker": "JV9IRGZmieiBasejOG9yDCRNgd2ymoZIbjsxbJMjIs3kioVii",
>   "prev_marker": "JV9IRGZmieiBasejOG9yDCRNgd2ymoZIbjsxbJMjIs3kioVih"
> }
> ```

## Shuttle subject

A subject discovered on the source migration system, such as a user or group.

> **Attributes and example**
>
> | Property | Type | Required | Description |
> | - | - | - | - |
> | `type` | `enum<string>` | Yes | Whether this subject is a user or a group. Available options: `user`, `group`. |
> | `id` | `string` | No | The platform-native identifier of the subject. `null` when the system does not provide one. Can be `null`. |
> | `email` | `string` | No | The email address of the subject. `null` when unknown. Can be `null`. |
> | `name` | `string` | No | The display name of the subject. `null` when unknown. Can be `null`. |
> | `roles` | array of `Shuttle subject role` | No | Roles this subject holds on the source. `null` when no roles are known. Can be `null`. |
>
> ```json Example theme={null}
> {
>   "type": "user",
>   "id": "sp-user-001",
>   "email": "user@example.com",
>   "name": "Jane Doe",
>   "roles": [
>     "owner"
>   ]
> }
> ```

## Shuttle subject mapping

A standard representation of a shuttle subject mapping. A subject mapping connects a discovered source subject to a Box user or group, or marks the subject as skipped.

> **Attributes and example**
>
> | Property | Type | Required | Description |
> | - | - | - | - |
> | `id` | `string` | Yes | The unique identifier for the shuttle subject mapping. |
> | `type` | `enum<string>` | Yes | The value will always be `shuttle_subject_mapping`. Available options: `shuttle_subject_mapping`. |
> | `job_id` | `string` | Yes | The unique identifier of the shuttle job this mapping belongs to. |
> | `discovered_subject_id` | `string` | No | The unique identifier of the discovered subject this mapping applies to. `null` for legacy mappings created before this field was tracked. Can be `null`. |
> | `revision` | `integer` | No | The discovery-requirements revision this mapping was resolved against. `null` for legacy mappings. Can be `null`. |
> | `is_subject_skipped` | `boolean` | Yes | Whether this subject is skipped during the migration. |
> | `source` | [Shuttle subject](#shuttle-subject) | Yes | The source subject being mapped. |
> | `target` | [Shuttle target subject](#shuttle-target-subject) | No | The Box target subject. `null` when the subject is skipped or not yet assigned. Can be `null`. |
>
> ```json Example theme={null}
> {
>   "id": "6a3ba7b12ea17bc9461eeace",
>   "type": "shuttle_subject_mapping",
>   "job_id": "6a3ba68e810d9156194530a1",
>   "discovered_subject_id": "6a3ba7c02ea17bc9461eeacf",
>   "revision": 3,
>   "is_subject_skipped": false,
>   "source": {
>     "type": "user",
>     "id": "sp-user-001",
>     "email": "user@example.com",
>     "name": "Jane Doe",
>     "roles": [
>       "owner"
>     ]
>   },
>   "target": {
>     "type": "user",
>     "id": "12345678",
>     "email": "jane.doe@company.box.com",
>     "name": "Jane Doe"
>   }
> }
> ```

## Shuttle subject mapping create request

The request body used to create a new shuttle subject mapping.

> **Attributes and example**
>
> | Property | Type | Required | Description |
> | - | - | - | - |
> | `job_id` | `string` | Yes | The unique identifier of the shuttle job this mapping belongs to. |
> | `discovered_subject_id` | `string` | Yes | The unique identifier of the discovered subject to map. |
> | `revision` | `integer` | No | The discovery-requirements revision to resolve against. Omit to use the latest revision. |
> | `is_subject_skipped` | `boolean` | No | Whether this subject should be skipped during the migration. Defaults to `false`. |
> | `target` | [Shuttle target subject input](#shuttle-target-subject-input) | No | The Box target to map to. Omit or set to `null` when the subject is skipped. Can be `null`. |
>
> ```json Example theme={null}
> {
>   "job_id": "6a3ba68e810d9156194530a1",
>   "discovered_subject_id": "6a3ba7c02ea17bc9461eeacf",
>   "revision": 3,
>   "is_subject_skipped": false,
>   "target": {
>     "type": "user",
>     "id": "12345678"
>   }
> }
> ```

## Shuttle subject mapping import create request

The request body used to import a shuttle job's subject mappings from a spreadsheet already stored in Box.

> **Attributes and example**
>
> | Property | Type | Required | Description |
> | - | - | - | - |
> | `job_id` | `string` | Yes | The unique identifier of the shuttle job whose subject mappings are replaced. |
> | `file_id` | `string` | Yes | The unique identifier of the Box file holding the mapping workbook. The file is read as the calling user, so it must live somewhere that user can download from. |
>
> ```json Example theme={null}
> {
>   "job_id": "6a3ba68e810d9156194530a1",
>   "file_id": "12345678901"
> }
> ```

## Shuttle subject mapping update request

The request body used to update an existing shuttle subject mapping. Only the fields supplied in the request body are changed. `job_id`, `id`, `type`, `source`, `discovered_subject_id`, and `revision` are immutable.

> **Attributes and example**
>
> | Property | Type | Required | Description |
> | - | - | - | - |
> | `is_subject_skipped` | `boolean` | No | Whether this subject should be skipped during the migration. |
> | `target` | [Shuttle target subject input](#shuttle-target-subject-input) | No | The Box target to map to. Set to `null` only for a skipped subject. Setting it to `null` while the mapping is active fails validation. Updating `is_subject_skipped` alone preserves the existing target. Can be `null`. |
>
> ```json Example theme={null}
> {
>   "is_subject_skipped": true,
>   "target": {
>     "type": "user",
>     "id": "12345678"
>   }
> }
> ```

## Shuttle subject mappings

A paginated list of shuttle subject mappings.

> **Attributes and example**
>
> | Property | Type | Required | Description |
> | - | - | - | - |
> | `entries` | array of [Shuttle subject mapping](#shuttle-subject-mapping) | Yes | A list of shuttle subject mappings. |
> | `limit` | `integer` | No | The limit that was used for these entries. This will be the same as the `limit` query parameter unless that value exceeded the maximum value allowed. The maximum value varies by API. |
> | `next_marker` | `string` | No | The marker for the start of the next page of results. Can be `null`. |
> | `prev_marker` | `string` | No | The marker for the start of the previous page of results. Can be `null`. |
>
> ```json Example theme={null}
> {
>   "entries": [
>     {
>       "id": "6a3ba7b12ea17bc9461eeace",
>       "type": "shuttle_subject_mapping",
>       "job_id": "6a3ba68e810d9156194530a1",
>       "discovered_subject_id": "6a3ba7c02ea17bc9461eeacf",
>       "revision": 3,
>       "is_subject_skipped": false,
>       "source": {
>         "type": "user",
>         "id": "sp-user-001",
>         "email": "user@example.com",
>         "name": "Jane Doe",
>         "roles": [
>           "owner"
>         ]
>       },
>       "target": {
>         "type": "user",
>         "id": "12345678",
>         "email": "jane.doe@company.box.com",
>         "name": "Jane Doe"
>       }
>     }
>   ],
>   "limit": 1000,
>   "next_marker": "JV9IRGZmieiBasejOG9yDCRNgd2ymoZIbjsxbJMjIs3kioVii",
>   "prev_marker": "JV9IRGZmieiBasejOG9yDCRNgd2ymoZIbjsxbJMjIs3kioVih"
> }
> ```

## Shuttle system

A standard representation of a shuttle system. A shuttle system describes a source or destination that Shuttle can migrate content to or from, along with its current connection state.

> **Attributes and example**
>
> | Property | Type | Required | Description |
> | - | - | - | - |
> | `id` | `string` | Yes | The unique identifier for the shuttle system. |
> | `type` | `enum<string>` | Yes | The value will always be `shuttle_system`. Available options: `shuttle_system`. |
> | `name` | `string` | Yes | The display name of the shuttle system. |
> | `system_type` | `string` | Yes | Identifies the kind of source or destination this system represents, for example `box`, `windows`, `sharepoint`, or `amazon_s3`. New system types are added over time, so clients must tolerate values they do not recognize rather than treating this as a fixed set. |
> | `label` | `string` | No | A server-computed display label for the system. |
> | `state` | `enum<string>` | Yes | The current connection state of the shuttle system. Available options: `connected`, `disconnected`, `unknown`. |
>
> ```json Example theme={null}
> {
>   "id": "6a315c0754833bfc5df067bf",
>   "type": "shuttle_system",
>   "name": "BoxProd",
>   "system_type": "box",
>   "label": "Box (Production)",
>   "state": "connected"
> }
> ```

## Shuttle system create request

The request body for creating a shuttle system. Only Windows agent systems can be created through the public API, so `system_type` must be `windows`.

> **Attributes and example**
>
> | Property | Type | Required | Description |
> | - | - | - | - |
> | `name` | `string` | Yes | The display name for the new shuttle system. |
> | `system_type` | `enum<string>` | Yes | The public system type identifier for the new shuttle system. Only `windows` is currently supported through the public API. Available options: `windows`. |
>
> ```json Example theme={null}
> {
>   "name": "NYC File Server",
>   "system_type": "windows"
> }
> ```

## Shuttle system update request

The request body for updating a shuttle system. Only the fields supplied are changed.

> **Attributes and example**
>
> | Property | Type | Required | Description |
> | - | - | - | - |
> | `name` | `string` | No | The updated display name for the shuttle system. |
>
> ```json Example theme={null}
> {
>   "name": "NYC File Server (Primary)"
> }
> ```

## Shuttle systems

A paginated list of shuttle systems.

> **Attributes and example**
>
> | Property | Type | Required | Description |
> | - | - | - | - |
> | `entries` | array of [Shuttle system](#shuttle-system) | Yes | A list of shuttle systems. |
> | `limit` | `integer` | No | The limit that was used for these entries. This will be the same as the `limit` query parameter unless that value exceeded the maximum value allowed. The maximum value varies by API. |
> | `next_marker` | `string` | No | The marker for the start of the next page of results. Can be `null`. |
> | `prev_marker` | `string` | No | The marker for the start of the previous page of results. Can be `null`. |
>
> ```json Example theme={null}
> {
>   "entries": [
>     {
>       "id": "6a315c0754833bfc5df067bf",
>       "type": "shuttle_system",
>       "name": "BoxProd",
>       "system_type": "box",
>       "label": "Box (Production)",
>       "state": "connected"
>     }
>   ],
>   "limit": 1000,
>   "next_marker": "JV9IRGZmieiBasejOG9yDCRNgd2ymoZIbjsxbJMjIs3kioVii",
>   "prev_marker": "JV9IRGZmieiBasejOG9yDCRNgd2ymoZIbjsxbJMjIs3kioVih"
> }
> ```

## Shuttle target subject

A Box user or group that a source subject is mapped to.

> **Attributes and example**
>
> | Property | Type | Required | Description |
> | - | - | - | - |
> | `type` | `enum<string>` | Yes | Whether the Box target is a user or a group. Available options: `user`, `group`. |
> | `id` | `string` | No | The Box user or group ID. `null` when the mapping was not created through this API and is identified by email (user) or name (group) instead. Skip is represented by `target: null`, not a missing `id`. Create and update always send `id`. Can be `null`. |
> | `email` | `string` | No | The email address of the target. `null` when unknown. Can be `null`. |
> | `name` | `string` | No | The display name of the target. `null` when unknown. Can be `null`. |
>
> ```json Example theme={null}
> {
>   "type": "user",
>   "id": "12345678",
>   "email": "user@example.com",
>   "name": "Jane Doe"
> }
> ```

## Shuttle target subject input

A Box user or group to map a source subject to.

> **Attributes and example**
>
> | Property | Type | Required | Description |
> | - | - | - | - |
> | `type` | `enum<string>` | Yes | Whether the Box target is a user or a group. Available options: `user`, `group`. |
> | `id` | `string` | Yes | The identifier of the target Box subject. |
>
> ```json Example theme={null}
> {
>   "type": "user",
>   "id": "12345678"
> }
> ```
