# BuildRecord

One attempt to validate or deploy a project into a namespace, recorded whatever its outcome: who, when, how long, what was sent (a list of files with hashes, and the files themselves up to a limit), the build log, and what a deploy produced. Its `id` is the `buildId` the build returned. Records are kept for 90 days.

Every list and text is capped in size; the `…Truncated` flags say when a cap applied. The counts and totals are always exact.

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

## Fields

Every field is present in a response; empty ones are `null`.

| Field | Type | Description |
|---|---|---|
| `namespaceName` | `string` | The namespace named in the route (at most 256 characters). |
| `namespaceId` | `uuid \| null` | The namespace's id when it existed once the build finished (a first deploy creates it); else null. |
| `userDisplayName` | `string \| null` | The caller's name when the build ran (a snapshot: a later rename does not change it). |
| `userEmailAddress` | `string \| null` | The caller's e-mail address when the build ran (a snapshot). |
| `authenticationMethod` | [`BuildAuthenticationMethod`](https://docs.maitento.com/reference/types/build-authentication-method.md) | How the caller authenticated. |
| `apiKeyId` | `uuid \| null` | The id of the API key the build was sent with (never the key itself); null for a bearer token. |
| `isDeploy` | `boolean` | Whether the request asked to deploy rather than only validate. |
| `isDeployed` | `boolean` | Whether the definitions were deployed (a successful build with `isDeploy`). |
| `outcome` | [`BuildOutcome`](https://docs.maitento.com/reference/types/build-outcome.md) | How the build ended. |
| `isFaulted` | `boolean` | Whether the build stopped on an unexpected error (a 5xx) rather than failing with a log; `outcome` is then `Failed`. |
| `durationMilliseconds` | `integer` | How long the build took on the server, in milliseconds. |
| `counts` | [`BuildRecordCounts`](https://docs.maitento.com/reference/types/build-record-counts.md) | How many files of each kind the request carried. |
| `errorCount` | `integer` | Error entries in the full build log (exact, even when `diagnostics` is truncated). |
| `warningCount` | `integer` | Warning entries in the full build log (exact). |
| `itemCount` | `integer` | Source files the request carried (exact, even when `items` is truncated). |
| `sourcesBytes` | `integer` | Total UTF-8 size of every source file the request carried (exact). |
| `items` | [`BuildRecordItem`](https://docs.maitento.com/reference/types/build-record-item.md)`[]` | Every source file in request order, with its size and hash, up to 2,000. |
| `itemsTruncated` | `boolean` | Whether `items` was cut short at its limit. |
| `sources` | [`BuildRecordSource`](https://docs.maitento.com/reference/types/build-record-source.md)`[]` | The source files' text, whole files only, up to 2 MiB in total (text plus names). Files that do not fit are left out (their item reads `sourceStored: false`) and `sourcesTruncated` is set. |
| `sourcesTruncated` | `boolean` | Whether some source files were left out of `sources` to keep within its limit. |
| `diagnostics` | [`BuildRecordDiagnostic`](https://docs.maitento.com/reference/types/build-record-diagnostic.md)`[]` | The build log as the response carried it, in order. Capped at 1,000 entries and 1 MiB of text; when the cap applies, errors are kept before warnings, then information, then debug entries. |
| `diagnosticsTruncated` | `boolean` | Whether `diagnostics` was cut short at its limit. |
| `deployed` | [`BuildRecordDeployedResource`](https://docs.maitento.com/reference/types/build-record-deployed-resource.md)`[]` | What a deploy created, updated or left unchanged (empty for a validation), up to 2,000. |
| `deployedTruncated` | `boolean` | Whether `deployed` was cut short at its limit. |
| `validationFailures` | [`BuildRecordValidationFailure`](https://docs.maitento.com/reference/types/build-record-validation-failure.md)`[]` | Why a `Rejected` build was refused (the 400's failures, up to 20); empty otherwise. |
| `userCreatedById` | `uuid` | The id of the user who created it. A call made with an API key is recorded as the key's user. |
| `tenantId` | `uuid` | The id of the tenant it belongs to. |
| `id` | `uuid` | The unique id. Use it in `by-id` routes and wherever another object refers to this one. |
| `dateCreated` | `datetime` | When it was created, in UTC. |
| `dateUpdated` | `datetime` | When it was last changed, in UTC. |

## Example

```json
{
  "namespaceName": "...",
  "namespaceId": "3f2b8c1e-5d4a-4e6b-9c7d-2a1b0c9d8e7f",
  "userDisplayName": "...",
  "userEmailAddress": "...",
  "authenticationMethod": "Bearer",
  "apiKeyId": "3f2b8c1e-5d4a-4e6b-9c7d-2a1b0c9d8e7f",
  "isDeploy": false,
  "isDeployed": false,
  "outcome": "Succeeded",
  "isFaulted": false,
  "durationMilliseconds": 0,
  "counts": {
    "agents": 0,
    "capsules": 0,
    "connectors": 0,
    "externalOperations": 0,
    "interactions": 0,
    "apps": 0,
    "codePipelines": 0,
    "codePipelineHooks": 0,
    "prompts": 0,
    "json": 0,
    "looms": 0
  },
  "errorCount": 0,
  "warningCount": 0,
  "itemCount": 0,
  "sourcesBytes": 0,
  "items": [
    {
      "kind": "Agent",
      "name": "...",
      "fileName": "...",
      "sizeBytes": 0,
      "sha256": "...",
      "sourceStored": false
    }
  ],
  "itemsTruncated": false,
  "sources": [
    {
      "kind": "Agent",
      "name": "...",
      "fileName": "...",
      "content": "..."
    }
  ],
  "sourcesTruncated": false,
  "diagnostics": [
    {
      "text": "...",
      "date": "2026-10-26T12:00:00.0000000Z",
      "logLevel": "Debug",
      "filename": "...",
      "lineNumber": 0,
      "character": 0
    }
  ],
  "diagnosticsTruncated": false,
  "deployed": [
    {
      "kind": "Agent",
      "id": "3f2b8c1e-5d4a-4e6b-9c7d-2a1b0c9d8e7f",
      "name": "...",
      "version": 0,
      "mode": "Created"
    }
  ],
  "deployedTruncated": false,
  "validationFailures": [
    {
      "errorCode": "...",
      "memberName": "...",
      "message": "..."
    }
  ],
  "userCreatedById": "3f2b8c1e-5d4a-4e6b-9c7d-2a1b0c9d8e7f",
  "tenantId": "3f2b8c1e-5d4a-4e6b-9c7d-2a1b0c9d8e7f",
  "id": "3f2b8c1e-5d4a-4e6b-9c7d-2a1b0c9d8e7f",
  "dateCreated": "2026-10-26T12:00:00.0000000Z",
  "dateUpdated": "2026-10-26T12:00:00.0000000Z"
}
```

## Where it's used

- [`builds.get`](https://docs.maitento.com/reference/api/builds.md) (`GET /builds/by-id/{id}`)
