Migrating from V2 to V3
Upgrading to Version 3 of the Manufacturing Data API brings significant improvements and changes. This guide provides step-by-step instructions to help you update your integrations and ensure a smooth transition.
API Endpoint Changes
The API endpoints have been updated in Version 3. Please update your integrations to use the new endpoint:
Key Changes and Migration Steps
Below are the major changes introduced in Version 3 and the steps required to migrate your existing integrations.
Change 1: Time-Based Data Model
What’s New:
Version 3 introduces a time-based data model. Instead of accessing objects by version (for example, componentVersion
or drawingVersion
), you now retrieve objects as they existed at a specific point in time using a time
parameter.
Migration Steps:
- Remove usage of
componentVersion
anddrawingVersion
. - Use the
time
argument oncomponent
ordrawing
queries to retrieve the object’s state at a specific timestamp.
Before:
query GetComponentVersion($componentVersionId: ID!) {
componentVersion(componentVersionId: $componentVersionId) {
name
}
}
After:
query GetComponentAtTime($componentId: ID!, $time: DateTime!) {
component(componentId: $componentId, time: $time) {
name
}
}
Change 2: Removal of ComponentVersion and DrawingVersion Types
The ComponentVersion
object has been removed from v3. Its fields have been moved to the Component
and Model
objects.
ComponentVersion
fields now available in Component
:
Field Name | Type | Notes |
---|---|---|
name | Property! | Now returns a Property object instead of a String |
partNumber | Property! | Now returns a Property object instead of a String |
description | Property! | Was partDescription , now description |
materialName | Property! | Now returns a Property object instead of a String |
baseProperties | Properties | Unchanged |
customProperties | Properties | Unchanged |
thumbnail | Thumbnail | Unchanged |
ComponentVersion
fields now available in Model
:
Field Name | Type | Notes |
---|---|---|
name | Property! | Now returns a Property object instead of a String |
materialName | Property! | Now returns a Property object instead of a String |
physicalProperties | PhysicalProperties | Unchanged |
isConfiguration | Boolean! | Now non-nullable (Boolean!) |
isRoot | Boolean! | Now non-nullable (Boolean!) |
thumbnail | Thumbnail | Unchanged |
The DrawingVersion
type has also been removed from v3. Its fields have been moved to the Drawing
object.
Migration Steps:
- Remove any fields referencing
ComponentVersion
orDrawingVersion
. - Refactor queries to use
component
,model
, ordrawing
.
Before:
query GetComponentVersion($componentVersionId: ID!) {
componentVersion(componentVersionId: $componentVersionId) {
materialName
}
}
After:
query GetModel($modelId: ID!) {
model(modelId: $modelId) {
materialName {
value
}
}
}
Change 3: Custom Property Type Updates
What’s New:
The dynamic
and dynamicAtVersion
property types have been removed. All dynamic properties have been migrated to a unified property model.
Migration Steps:
- Remove references to
dynamic
anddynamicAtVersion
property types. - Update your queries and data handling to use the new property model.
Change 4: name
Attribute is Now a Property Object
What’s New: The name attribute in several objects is no longer a string. It is now a Property object.
Migration Steps:
- Replace direct access to
name
withname.value
.
Before:
model {
name
}
After:
model {
name {
value
}
}
Other Notable Changes
- Deprecated fields have been removed or renamed for clarity and consistency.
- Field names have been aligned across objects.
Testing and Validation
- Use the MFG Data Model Explorer to test your updated queries and mutations.
- Validate your integration against the new schema to catch any breaking changes early.
Additional Resources
If you encounter any challenges during migration, please reach out to our support team for personalized assistance.