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

# Build an aBOM

> Build an as-built bill of materials (aBOM) with the ION API: install parts and manage build requirements.

An as-built bill of materials (aBOM) tracks the build process of parts in a hierarchical tree. The aBOM records which part instances and lots are used to create parts, subsystems, and systems. The aBOM is a more detailed version of the mBOM, with relations to physical inventory rather than to parts.

## Set up part inventory

To create an aBOM, you need inventory. For details on creating inventory, see [Manage part inventory and kitting](/api-reference/guides/part-inventory-and-kitting). A part with inventory has a part number, and that part should have an mBOM. ION uses this mBOM to create the aBOM.

When you first create the part inventory, it has only empty build requirements. Build requirements define the parameters for what parts you can install.

## Install parts

You install a part by creating an aBOM installation. An aBOM installation links inventory to `buildRequirements`. To uninstall a part, delete its aBOM installation.

Create the aBOM installation with this mutation:

```graphql theme={null}
mutation CreateABomInstallation($input: CreateABomInstallationInput!) {
    createAbomInstallation(input: $input) {
        abomInstallation {
            buildRequirementId
            buildRequirementReferenceDesignatorId
            partInventoryId
            quantity
        }
    }
}
```

Set the variables:

```json theme={null}
{
    "input": {
        "buildRequirementId": 1,
        "partInventoryId": 3,
        "quantity": 1
    }
}
```

## Edit build requirements

You can add build requirements to an inventory that don't originate from the mBOM.

Create the build requirement with this mutation:

```graphql theme={null}
mutation CreateBuildRequirement($input: CreateBuildRequirementInput!) {
  createBuildRequirement(input: $input) {
    buildRequirement {
      fixedQuantityPerBuildRequirement
      id
      madeOnAssembly
      originMbomItemId
      partId
      partInventories {
        id
      }
      quantityPerParentPartInventory
    }
  }
}
```

Set the variables:

```json theme={null}
{
  "input": {
    "partId": 1,
    "partInventoryId": 484,
    "quantityPerParentPartInventory": 5,
    "madeOnAssembly": false
  }
}
```

Update the build requirement with this mutation:

```graphql theme={null}
mutation UpdateBuildRequirement($input: UpdateBuildRequirementInput!) {
    updateBuildRequirement(input: $input) {
        buildRequirement {
            fixedQuantityPerBuildRequirement
            id
        }
    }
}
```

Set the variables:

```json theme={null}
{
  "input": {
    "id": 1031,
    "etag": "dca4e886ecce4a499d15411006a6d82a",
    "quantityPerParentPartInventory": 8
  }
}
```

This example changes the `quantityPerParentPartInventory` of the `buildRequirement`. You can also change the fixed quantity, made-on-assembly designation, substitutes, and reference designators.

## Related

* [Manage part inventory and kitting](/api-reference/guides/part-inventory-and-kitting)
* [Manage mBOM items](/api-reference/guides/mboms)
