parts and part revisioning.md
Parts and Part Revisioning
Parts:
Part objects in ION represent abstractions that carry information about a particular part, while the physical parts themselves are part inventory objects. The part objects dictate the MBOM, revision, supplier part number, tracking type and other additional attributes about a part.
Below is a list of part attributes and their description. For a more complete list of part fields use the graphiql editor to view the part object.
| Part Object | Description |
|---|---|
| id | Unique identifier of Part object |
| partNumber | parts must have a unique partNumber and revision |
| revision | Revision for part, defaults to A |
| trackingType | If set enforces all inventory for part to match tracking type. Can be either "serial" or "lot" |
| quantity | The summed quantity of all inventory for a part |
| partsInventory | List of inventory objects related to a part |
| runs | List of runs related to part |
| mbom | List of MBOM item which describe the BOM of a part |
Query Parts
The queries below specify how to list parts by a filter or get a specific part.
{% tabs %} {% tab title="List" %}
query GetParts($filters: PartsInputFilters) {
parts(filters: $filters) {
edges {
node {
id partNumber description thumbnail { s3Key s3Bucket url }
fileAttachments { url } quantity
}
}
}
}
{% endtab %}
{% tab title="Filter Inputs" %}
{
"filters": {
"partNumber": {
"eq": "ion-12"
}
}
}
{% endtab %}
{% tab title="Get" %}
query GetPart{
part(id: 1) {
id partNumber description quantity
}
}
{% endtab %} {% endtabs %}
Create Part
Creates a part object with a particular part number. Part number and revision must be unique, if no revision is supplied in the create mutation then the part defaults to revision A. Once created the revision of a part cannot be updated, instead the createPartRevision mutation must be used to iterate a part's revision. Returns the new part.
{% tabs %} {% tab title="Mutation" %}
mutation CreatePart($input: CreatePartInput!) {
createPart(input: $input) {
part {
id revision partNumber description
}
}
}
{% endtab %}
{% tab title="Inputs" %}
{
"input": {
"partNumber": "ion-12",
"description": "Part for API docs.",
"revision": "C"
}
}
{% endtab %} {% endtabs %}
Update Part
Updates a part object. Tracking type can only be updated to either "serial" or "lot" if all existing inventory objects related to this part conform to the new tracking type. Returns the updated part object.
{% tabs %} {% tab title="Mutation" %}
mutation UpdatePart($input: UpdatePartInput!) {
updatePart(input: $input) {
part { id partNumber description revision }
}
}
{% endtab %}
{% tab title="Inputs" %}
{
"input": {
"id": 1,
"etag": "etag1",
"partNumber": "ion-13",
"description": "Updated part for API docs."
}
}
{% endtab %} {% endtabs %}
Create Part Revision
Creates a new revision for a particular part. A revision can be generated from any part, there are no restrictions requiring the revision to be generated from the current latest revision. The new revision will be the next valid alphabetic character from the part's latest revision. If the part's latest revision is C, then the new revision will be D. If the part's latest revision is Z, then the new revision will be AA. Returns the newly created part object with the updated revision.
{% tabs %} {% tab title="Mutation" %}
mutation CreatePartRevision($input: CreatePartRevisionInput!) {
createPartRevision(input: $input) {
part {
id partNumber revision
}
}
}
{% endtab %}
{% tab title="Inputs" %}
{
"input": {
"id": 1,
"etag": "etag1",
"description": "New revision for part in API docs."
}
}
{% endtab %} {% endtabs %}
Delete Part
Delete a part object. Returns the ID of the deleted part.
{% tabs %} {% tab title="Mutation" %}
mutation DeletePart($id: ID!, $etag: String!) {
deletePart(id: $id, etag: $etag) {
id
}
}
{% endtab %}
{% tab title="Inputs" %}
{
"id": 1,
"etag": "etag1"
}
{% endtab %} {% endtabs %}
Custom Part Revision Scheme
ION allows users to define custom schemes for part revisioning.
{% tabs %} {% tab title="Mutation" %}
mutation CreateOrganizationPartRevisionScheme(
$input: CreatePartRevisionSchemeSettingInput!) {
createOrganizationPartRevisionScheme(input: $input) {
organization {
id settings {
parts {
revisionSchemes {
default name allowOverflow format } } }
}
}
}
{% endtab %}
{% tab title="Inputs" %}
{
"id": 1,
"name": "new scheme",
"default": true,
"format": ["NUMERIC", "NUMERIC", "-", "NUMERIC"],
"etag": "etag1",
"allowOverflow": true
}
{% endtab %} {% endtabs %}
Update Part Revision Scheme
Once a part revision scheme exists in an organization's settings it can subsequently be updated.
{% tabs %} {% tab title="Mutation" %}
mutation UpdateOrganizationPartRevisionScheme(
$input: UpdatePartRevisionSchemeSettingInput!) {
updateOrganizationPartRevisionScheme(input: $input) {
organization {
id settings {
parts {
revisionSchemes {
default name allowOverflow format } } }
}
}
}
{% endtab %}
{% tab title="Inputs" %}
{
"id": 1,
"name": "new scheme",
"default": false,
"etag": "etag1",
"allow_overflow": false
}
{% endtab %} {% endtabs %}
Converting the Revision Scheme of an Existing Part
There are two strategies for changing the revision scheme of an existing part. Both involve setting the revisionScheme for a part in either the updatePart or createPartRevision mutations above.