ION Factory OS
  • Welcome to ION
  • Features
    • Procedures
      • Steps
        • Content
        • Datagrid
        • Fields
        • Attributes
      • Dependencies
      • Part-Procedure Relationship
      • Attributes
      • Standard Steps
      • Installation Requirements (Beta)
      • Nested Steps and Nested Standard Steps
      • Procedure Best Practices
    • Runs
      • Run Execution Overview
      • Runs And Step States
      • Batching Runs
        • Batching 2.0 Changes
      • Workcenter execution
      • Split Inventory on a Run
      • Redlines
      • Export run data
      • Scheduling runs
      • Time Tracking
      • Attributes
      • Outside Processing
      • Runs Best Practices
    • Parts Library
      • As-built Bill of Materials (aBOM)
        • Editing aBOM build requirements
        • aBOM Beta Changes
          • aBOM actions for developers
      • Inventory
        • Inventory status
        • Inventory splitting
        • Inventory merging
        • Inventory scrapping
        • Kitting
        • Inventory Movement Automations
      • Manufacturing bill of materials (mBOM)
        • mBOM versions
        • Made on Assembly (MOA)
        • Part Substitutes
        • Reference designators
      • Part Attributes
      • Part revision interchangeability
      • Supplier Part Numbers & Purchase Unit Conversions
    • Kitting and Inventory Fulfilment
      • Kit Statuses and Workflows
      • Inventory requests
      • Kitting and runs
      • Fulfilling Multiple Kits
      • Kanban Kitting
    • Purchasing
      • Purchase Orders
        • Types of Purchases
        • Purchase Order Approvals
        • Purchase Order FAQs
        • Supplier Part Numbers & Unit Conversions
        • PO Requirements, Terms, and Quality Clauses
      • Receiving/Inspection
      • Outside Processing
      • Consigned Parts
    • Barcode Labels
      • Templating
        • ION barcode minimum sizes
        • Sample templates
      • Printing
        • Configuring Zebra Browser Print
        • Server Based Barcode Printing (PrintNode)
      • Scanning
        • Scan barcodes from other systems
    • Quality
      • Issues
      • Further Actions - CAPA
      • Issues States, Dispositions, and Resolutions
      • Quality Best Practices
    • Tools
    • Locations
    • Attributes
    • Labels
      • Deleting labels
    • Notifications
    • Search
    • Settings
      • Role based access control
        • Full Glossary of ION Permissions
    • ION Actions
      • ION Actions examples for Quality
      • ION Actions examples for Runs and Procedures
      • ION ACTIONS examples for Supply Chain
  • Analytics
    • Inventory valuation
    • Part impact analysis
    • Users, Roles, Teams
    • Analytics FAQ
    • Data Connector
    • Data Products
  • Plans and Autoplan
    • Autoplan
    • Autoplan glossary
    • Preparing to use Autoplan
    • Clear to build reporting
    • Running Autoplan on a schedule
    • Firm and blocked plan items
    • Location constraints
    • Autoplan suggested suppliers and procedures
    • Reorder point
    • Plan input serial numbers
    • Applying a calendar
    • Plan Reservations
    • Independent schedules
    • Drive demand from kits
    • Drive demand below buy parts configuration
    • Group plan items with the same date
    • Manualy Changing Autoplan Status
  • API
    • How to create an App with ION
    • Access Tokens
    • About GraphQL
    • Interactive API explorer
    • API Keys
    • Examples
      • Notifications
      • Runs
      • Automatically updating fields in runs
      • Parts and Part Revisioning
      • mBOMs
      • Part Inventory and Kitting
      • aBOM (As-built Bill of Materials)
      • Edit time-tracking session data
    • Changelog
    • Webhooks
    • Pagination
  • Automations
    • Auto-checkout of Run Steps
    • Auto-Consumption of Lineside Inventory
    • Automatically Send Purchases to Suppliers
    • Set Close by Run Step on Issue Creation
    • Intent Management / Grade / Tier / Pedigree
      • Data Imprinting
      • ION Actions for Intent
    • Auto-Update mBOM Revision on Part Revision Update
    • Auto-approve part-procedure relationships
    • Purchase Order PDF and Versions
    • Auto Populate PO Line Attributes
    • Imprint Attributes from One Object to Another on a Desired Event
  • Integrations
    • Deploying Integrations and Automations
    • Arena
    • Cofactr
    • Datum
    • Duro
    • NetSuite
      • Purchasing in NetSuite, Receiving in ION
      • Work Order/Assembly Builds
    • Procurable
    • PDF Generator
    • Quickbooks
    • Ramp
    • Silkline Integration
    • Slack
    • Smartsheet
    • SOLIDWORKS
    • Teamcenter
  • Training
    • Standard Operating Procedures
      • Cycle Counting
      • Tool Utilization
    • Guided Flows
    • ION Sandbox
    • Chat Support for ION
  • Troubleshooting
    • Resetting your password
    • Resetting your Multi-Factor Authentication
    • You have no roles... error
  • Changelog
  • Adminstration
    • Security
      • Backups and Security FAQ
      • Single Sign-On (SSO)
        • Okta SAML connection setup
      • Export Control
      • Report Generator Disclaimer
    • Browser and Device Compatibility
    • Authentication
      • My company is new to ION, logging in for the first time.
      • I'm told I'm not authorized to access the application
      • My account has been deactivated
    • Login Page
  • Tickets Portal
Powered by GitBook
On this page
  • Parts:
  • Query Parts
  • Create Part
  • Update Part
  • Create Part Revision
  • Delete Part
  • Custom Part Revision Scheme
  • Update Part Revision Scheme
  • Converting the Revision Scheme of an Existing Part

Was this helpful?

  1. API
  2. Examples

Parts and Part Revisioning

PreviousAutomatically updating fields in runsNextmBOMs

Last updated 1 month ago

Was this helpful?

Parts:

Part objects in ION represent abstractions that carry information about a particular part, while the physical parts themselves are . 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

runs

mbom

Query Parts

The queries below specify how to list parts by a filter or get a specific part.

query GetParts($filters: PartsInputFilters) {
    parts(filters: $filters) {
        edges {
            node {
                id partNumber description thumbnail { s3Key s3Bucket url }
                fileAttachments { url } quantity
            }
        }
    }
}
{
    "filters": {
        "partNumber": {
            "eq": "ion-12"
        }
    }
}
query GetPart{
    part(id: 1) {
        id partNumber description quantity
    }
}

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.

mutation CreatePart($input: CreatePartInput!) {
    createPart(input: $input) {
        part {
            id revision partNumber description
        }
    }
}
{
    "input": {
        "partNumber": "ion-12",
        "description": "Part for API docs.",
        "revision": "C"
    }
}

Mutation to create part object

If the part you are creating contains custom attributes we highly recommend that the attributes are declared when the part is created even if the attribute contains no value.

mutation CreatePart($input: CreatePartInput!) {
    createPart(input: $input) {
        part {
            id revision partNumber description attributes
        }
    }
}
{
    "input": {
        "partNumber": "ion-12",
        "description": "Part for API docs.",
        "revision": "C",
        "attributes": [
            {
                "key": "Attribute 1"
            },
            {
                "key": "Attribute 2",
                "value": "Value for attribute 2"
            }
        ]
    }
}

Mutation to create part object with attributes

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.

mutation UpdatePart($input: UpdatePartInput!) {
    updatePart(input: $input) {
        part { id partNumber description revision }
    }
}
{
    "input": {
        "id": 1,
        "etag": "etag1",
        "partNumber": "ion-13",
        "description": "Updated part for API docs."
    }
}

Mutation to update part object

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. For example if our part "ion-13" has existing revisions A and B, then a third revision C can be generated from either existing revision A or B. All information in the new revision is copied over from the old revision unless explicitly overriden in the mutation input. 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.

mutation CreatePartRevision($input: CreatePartRevisionInput!) {
    createPartRevision(input: $input) {
        part {
            id partNumber revision
        }
    }
}
{
    "input": {
        "id": 1,
        "etag": "etag1",
        "description": "New revision for part in API docs."
    }
}

Mutation to create a part revision

Delete Part

Delete a part object. This will delete not only the part object itself but also cascade and delete the MBOM and MBOM substitutes associated with this part. A part which has existing inventory or was used within a run cannot be deleted. Returns the ID of the deleted part.

mutation DeletePart($id: ID!, $etag: String!) {
    deletePart(id: $id, etag: $etag) {
        id
    }
}
{
    "id": 1,
    "etag": "etag1"
}

Mutation to delete part object

Query to retrieve parts

Custom Part Revision Scheme

ION allows users to define custom schemes for part revisioning. These schemes are defined within an organization's settings, the mutation below demonstrates how to create a new scheme. First a user needs the ID and etag of the organization before its settings can be updated. Following that there are four additional variables which define a part revision scheme.

  • name (string): The name of the new revision scheme

  • default (boolean): If true all newly created parts will inherit this revision scheme

  • allowOverflow (boolean): Defines whether an error should be raised when the max iteration of a revision scheme is reached, or if it should overflow to the next available value.

  • format (array[string]): The format is an array of strings which defines how the values of a revision scheme should appear. The string values in the array can be either NUMERIC, ALPHABETICAL, or single character length constants. The format below would define part revisions like 00-1 or 95-7.

mutation CreateOrganizationPartRevisionScheme(
        $input: CreatePartRevisionSchemeSettingInput!) {
    createOrganizationPartRevisionScheme(input: $input) {
        organization {
            id settings {
                parts {
                    revisionSchemes {
                        default name allowOverflow format } } }
        }
    }
}
{
    "id": 1,
    "name": "new scheme",
    "default": true,
    "format": ["NUMERIC", "NUMERIC", "-", "NUMERIC"],
    "etag": "etag1",
    "allowOverflow": true
}

Update Part Revision Scheme

Once a part revision scheme exists in an organization's settings it can subsequently be updated. Currently the only allowable updates to a part revision scheme are the fields allowOverflow and default.

mutation UpdateOrganizationPartRevisionScheme(
        $input: UpdatePartRevisionSchemeSettingInput!) {
    updateOrganizationPartRevisionScheme(input: $input) {
        organization {
            id settings {
                parts {
                    revisionSchemes {
                        default name allowOverflow format } } }
        }
    }
}
{
    "id": 1,
    "name": "new scheme",
    "default": false,
    "etag": "etag1",
    "allow_overflow": false
}

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. The revisionScheme should be set to the name of one of the schemes in the organization's settings.

  • Setting the revisionScheme in the updatePart mutation casts the part's revision. For example if a part currently has revision D and we update that part to use the revisionScheme "new scheme" which we created above then the revision will be set to 00-4

  • Setting the revisionScheme in the createPartRevision mutation resets the parts revision, starting it over from the initial revision of the new scheme. If a part has revision D and we update the part's revisionScheme in the createPartRevision mutation it will be set to 00-1.

List of objects related to a part

List of related to part

List of which describe the BOM of a part

runs
part inventory objects
inventory
MBOM item