# CodePipelineCreateRequest

A code pipeline's definition, to create a pipeline or add a version to one. Most pipelines are deployed from a project folder instead (`code-pipelines/<name>/pipeline-definition.json`).

**Kind:** an object, used in requests.

## Fields

| Field | Type | Required | Description |
|---|---|---|---|
| `name` | `string` | yes | The pipeline's name, unique within its namespace. At most 128 characters. Constraints: maxLength: 128, required (empty or whitespace-only strings are rejected). |
| `agents` | [`CodePipelineAgentInput`](https://docs.maitento.com/reference/types/code-pipeline-agent.md#in-a-request)`[]` | yes | The pipeline's agents. At least one. Constraints: minLength: 1, required (empty or whitespace-only strings are rejected). |
| `phases` | [`CodePipelinePhaseDefinitionInput`](https://docs.maitento.com/reference/types/code-pipeline-phase-definition.md#in-a-request)`[]` | yes | The pipeline's phases, each a group of steps. At least one. Constraints: minLength: 1, required (empty or whitespace-only strings are rejected). |
| `externalOperationsMcp` | [`McpExternalOperationBindingInput`](https://docs.maitento.com/reference/types/mcp-external-operation-binding.md#in-a-request)`[]` |  | MCP tools every agent of the pipeline may use. |
| `externalOperationsOpenApi` | [`OpenApiExternalOperationBindingInput`](https://docs.maitento.com/reference/types/open-api-external-operation-binding.md#in-a-request)`[]` |  | OpenAPI tools every agent of the pipeline may use. |
| `authenticationSecretInputs` | [`ConnectorAuthenticationSecretInputInput`](https://docs.maitento.com/reference/types/connector-authentication-secret-input.md#in-a-request)`[]` |  | Inputs a run supplies as secrets for the tools' authentication. |
| `bindingInputs` | [`ConnectorBindingInputInput`](https://docs.maitento.com/reference/types/connector-binding-input.md#in-a-request)`[]` |  | Inputs a run supplies as values bound into the tools' calls. |
| `promptInputs` | [`PromptInputInput`](https://docs.maitento.com/reference/types/prompt-input.md#in-a-request)`[]` |  | Inputs a run supplies for the step prompts (`%%input:name%%`). |
| `vfsBindings` | [`CodePipelineVfsBindingInput`](https://docs.maitento.com/reference/types/code-pipeline-vfs-binding.md#in-a-request)`[]` |  | File systems the pipeline declares for its agents. A run mounts only the file systems in its own `vfsMounts`. |
| `cogniscriptAppId` | `uuid \| null` |  | The app that holds the pipeline's hooks (its Cogniscript methods). Null: no hooks. |
| `systemPrompts` | `string[] \| null` |  | System prompts every agent of the pipeline gets. |
| `systemPromptMode` | [`CodePipelineSystemPromptMode`](https://docs.maitento.com/reference/types/code-pipeline-system-prompt-mode.md)`\| null` |  | How the pipeline's `systemPrompts` combine with the ones before them. Null: `Additional`. |
| `resumeVfsNamespace` | `string \| null` |  | The namespace of a file system to save the agents' sessions in, so a resumed or restarted run carries on from them. Null: sessions are not saved. |
| `resumeVfsName` | `string \| null` |  | The name of that file system, within `resumeVfsNamespace`. Null: `default`. |
| `durationWarning` | `timespan \| null` |  | Not used by code pipeline runs. |
| `durationAutoTermination` | `timespan \| null` |  | The longest any step may run, for steps whose step and phase set no `durationAutoTermination`. Null: Maitento's default. |
| `durationActivityTimeout` | `timespan \| null` |  | How long any step may go without activity before it is stopped, for steps whose step and phase set no `durationActivityTimeout`. Null: Maitento's default. |
| `hookDurationLimit` | `timespan \| null` |  | The longest one hook may run. Null: 30 seconds. |
| `includeEnvironmentInfo` | `boolean` |  | Not used by code pipeline runs. |
| `allowHumanInteraction` | `boolean` |  | Whether the agents may stop and ask a person a question. The run then waits in `HumanInteractionRequired` until it is answered. |
| `allowWebTools` | `boolean` |  | Whether the pipeline's agents get Maitento's web search and fetch tools. Off by default. |
| `onErrorHook` | `string \| null` |  | The name of a hook to run when the run hits an infrastructure error, such as a failed clone or push. |
| `maxFixIterations` | `integer \| null` |  | The most review-and-fix rounds a hook's fix loop may run. Null: 3. Capped at 5. |
| `confidenceThreshold` | `number \| null` |  | For a fix loop that ends on the agents' own confidence: the confidence, from 0 to 1, at which it stops. Null: 0.8. |
| `maxInjectedPhases` | `integer \| null` |  | The most phases hooks may add to one run in total. Null: 24. |
| `maxParallelSteps` | `integer \| null` |  | How many of a phase's steps may run at once. Null: 6. Between 1 and 16. |
| `credentialStack` | `string \| null` |  | The credential stack the pipeline's runs use, by id or name, when their start doesn't name one: its API keys and coding-agent sign-ins serve the engines, and Maitento's own keys never do. Null: the namespace's default stack, then your tenant's. |

## Example

```json
{
  "name": "...",
  "agents": [
    {
      "name": "...",
      "defaultEngine": "Claude",
      "role": "Architect",
      "tags": [],
      "defaultModel": "...",
      "systemPrompts": [],
      "enginePrompts": [],
      "systemPromptMode": "Additional",
      "externalOperationsMcp": [],
      "externalOperationsOpenApi": [],
      "allowWebTools": false
    }
  ],
  "phases": [
    {
      "name": "...",
      "dependsOn": [],
      "steps": [],
      "preHook": "...",
      "postHook": "...",
      "onFailHook": "...",
      "durationWarning": "00:05:00",
      "durationAutoTermination": "00:05:00",
      "durationActivityTimeout": "00:05:00"
    }
  ],
  "externalOperationsMcp": [
    {
      "name": "...",
      "externalOperationId": "3f2b8c1e-5d4a-4e6b-9c7d-2a1b0c9d8e7f",
      "externalOperationVersion": 0,
      "requestBindings": [],
      "authenticationHeader": {},
      "promptGuidance": "...",
      "isTerminal": false
    }
  ],
  "externalOperationsOpenApi": [
    {
      "pathBindings": [],
      "queryBindings": [],
      "name": "...",
      "externalOperationId": "3f2b8c1e-5d4a-4e6b-9c7d-2a1b0c9d8e7f",
      "externalOperationVersion": 0,
      "requestBindings": [],
      "authenticationHeader": {},
      "promptGuidance": "...",
      "isTerminal": false
    }
  ],
  "authenticationSecretInputs": [
    {
      "externalOperationId": "3f2b8c1e-5d4a-4e6b-9c7d-2a1b0c9d8e7f",
      "agentId": "3f2b8c1e-5d4a-4e6b-9c7d-2a1b0c9d8e7f",
      "defaultSecretId": "3f2b8c1e-5d4a-4e6b-9c7d-2a1b0c9d8e7f",
      "headerName": "...",
      "name": "...",
      "description": "...",
      "isRequired": false
    }
  ],
  "bindingInputs": [
    {
      "externalOperationId": "3f2b8c1e-5d4a-4e6b-9c7d-2a1b0c9d8e7f",
      "agentId": "3f2b8c1e-5d4a-4e6b-9c7d-2a1b0c9d8e7f",
      "target": "...",
      "defaultValue": "...",
      "type": "Request",
      "name": "...",
      "description": "...",
      "isRequired": false
    }
  ],
  "promptInputs": [
    {
      "dataType": "String",
      "name": "...",
      "description": "...",
      "isRequired": false
    }
  ],
  "vfsBindings": [
    {
      "name": "...",
      "vfsId": "3f2b8c1e-5d4a-4e6b-9c7d-2a1b0c9d8e7f",
      "mode": "ReadOnly",
      "context": "..."
    }
  ],
  "cogniscriptAppId": "3f2b8c1e-5d4a-4e6b-9c7d-2a1b0c9d8e7f",
  "systemPrompts": [
    "..."
  ],
  "systemPromptMode": "Additional",
  "resumeVfsNamespace": "...",
  "resumeVfsName": "...",
  "durationWarning": "00:05:00",
  "durationAutoTermination": "00:05:00",
  "durationActivityTimeout": "00:05:00",
  "hookDurationLimit": "00:05:00",
  "includeEnvironmentInfo": false,
  "allowHumanInteraction": false,
  "allowWebTools": false,
  "onErrorHook": "...",
  "maxFixIterations": 0,
  "confidenceThreshold": 0,
  "maxInjectedPhases": 0,
  "maxParallelSteps": 0,
  "credentialStack": "..."
}
```

## Where it's used

- [`pipelines.create`](https://docs.maitento.com/reference/api/pipelines.md) (`POST /namespaces/{namespaceName}/code-pipelines`)
