Change data model

Updated:

A change request, order or notice

View field support, webhooks, and list parameters for each integration on the Supported Integrations page.

FieldTypeRequiredDescription
idstringNo
created_atstring (date-time)No(ISO-8601 / YYYY-MM-DDTHH:MM:SSZ format)
updated_atstring (date-time)No(ISO-8601 / YYYY-MM-DDTHH:MM:SSZ format)
numberstringNoChange number, e.g. ECO-0042
namestringNo
descriptionstringNo
typeenumNoValues: REQUEST, ORDER, NOTICE, DEVIATION, OTHER
category_idstringNoThe PlmCategory the change is filed under (reference to AccountingCategory)
statusenumNoValues: OPEN, IN_REVIEW, APPROVED, IMPLEMENTED, REJECTED, CANCELLED
prioritystringNoVendor priority value
affected_itemsPlmAffectedItem[]No
affected_items[].part_idstringNo
affected_items[].document_idstringNo
affected_items[].from_revisionstringNo
affected_items[].to_revisionstringNo
affected_items[].new_lifecycle_statestringNo
affected_items[].dispositionstringNoWhat to do with existing stock or work in progress
effective_atstring (date-time)No(ISO-8601 / YYYY-MM-DDTHH:MM:SSZ format)
expires_atstring (date-time)NoWhen a temporary change (deviation) expires (ISO-8601 / YYYY-MM-DDTHH:MM:SSZ format)
user_idstringNoOriginator (reference to HrisEmployee)
approved_atstring (date-time)No(ISO-8601 / YYYY-MM-DDTHH:MM:SSZ format)
implemented_atstring (date-time)No(ISO-8601 / YYYY-MM-DDTHH:MM:SSZ format)
urlstringNo
metadataPlmMetadata[]No
metadata[].idstringNoThe ID of the custom field definition (from the metadata/metadata endpoint).
metadata[].slugstringNoThe integration's API name (key) of an existing custom field.
metadata[].valueobjectNoThe field's value, typed by format.
metadata[].namespacestringNo
metadata[].formatenumNoThe data type of the custom field, which determines how value is formatted. Values: TEXT, NUMBER, DATE, BOOLEAN, FILE, TEXTAREA, SINGLE_SELECT, MULTIPLE_SELECT, MEASUREMENT, PRICE, YES_NO, CURRENCY, URL
metadata[].extra_dataobjectNo

TypeScript

TypeScript
export type PlmChange = {
	id?: string;
	created_at?: string-time; // (ISO-8601 / YYYY-MM-DDTHH:MM:SSZ format)
	updated_at?: string-time; // (ISO-8601 / YYYY-MM-DDTHH:MM:SSZ format)
	number?: string; // Change number, e.g. ECO-0042
	name?: string;
	description?: string;
	type?: 'REQUEST' | 'ORDER' | 'NOTICE' | 'DEVIATION' | 'OTHER';
	category_id?: string; // The PlmCategory the change is filed under (reference to AccountingCategory)
	status?: 'OPEN' | 'IN_REVIEW' | 'APPROVED' | 'IMPLEMENTED' | 'REJECTED' | 'CANCELLED';
	priority?: string; // Vendor priority value
	affected_items?: [];
	effective_at?: string-time; // (ISO-8601 / YYYY-MM-DDTHH:MM:SSZ format)
	expires_at?: string-time; // When a temporary change (deviation) expires (ISO-8601 / YYYY-MM-DDTHH:MM:SSZ format)
	user_id?: string; // Originator (reference to HrisEmployee)
	approved_at?: string-time; // (ISO-8601 / YYYY-MM-DDTHH:MM:SSZ format)
	implemented_at?: string-time; // (ISO-8601 / YYYY-MM-DDTHH:MM:SSZ format)
	url?: string;
	metadata?: [];
	raw?: any; // Raw data from integration
} 

Zod

Zod
import { z } from 'zod';

export const ZodPlmChange = z.object({
	id: z.string().optional(),
	created_at: z.string-time().optional().describe("(ISO-8601 / YYYY-MM-DDTHH:MM:SSZ format)"),
	updated_at: z.string-time().optional().describe("(ISO-8601 / YYYY-MM-DDTHH:MM:SSZ format)"),
	number: z.string().optional().describe("Change number, e.g. ECO-0042"),
	name: z.string().optional(),
	description: z.string().optional(),
	type: z.enum("REQUEST", "ORDER", "NOTICE", "DEVIATION", "OTHER").optional(),
	category_id: z.string().optional().describe("The PlmCategory the change is filed under (reference to AccountingCategory)"),
	status: z.enum("OPEN", "IN_REVIEW", "APPROVED", "IMPLEMENTED", "REJECTED", "CANCELLED").optional(),
	priority: z.string().optional().describe("Vendor priority value"),
	affected_items: z.array().optional(),
	effective_at: z.string-time().optional().describe("(ISO-8601 / YYYY-MM-DDTHH:MM:SSZ format)"),
	expires_at: z.string-time().optional().describe("When a temporary change (deviation) expires (ISO-8601 / YYYY-MM-DDTHH:MM:SSZ format)"),
	user_id: z.string().optional().describe("Originator (reference to HrisEmployee)"),
	approved_at: z.string-time().optional().describe("(ISO-8601 / YYYY-MM-DDTHH:MM:SSZ format)"),
	implemented_at: z.string-time().optional().describe("(ISO-8601 / YYYY-MM-DDTHH:MM:SSZ format)"),
	url: z.string().optional(),
	metadata: z.array().optional(),

});

Python

Python
import dataclasses

@dataclasses.dataclass
class PlmChangeType(str, Enum):
	REQUEST = 'REQUEST'
	ORDER = 'ORDER'
	NOTICE = 'NOTICE'
	DEVIATION = 'DEVIATION'
	OTHER = 'OTHER'

@dataclasses.dataclass
class PlmChangeStatus(str, Enum):
	OPEN = 'OPEN'
	IN_REVIEW = 'IN_REVIEW'
	APPROVED = 'APPROVED'
	IMPLEMENTED = 'IMPLEMENTED'
	REJECTED = 'REJECTED'
	CANCELLED = 'CANCELLED'

@dataclasses.dataclass
class PlmChange:
	id: Optional[str]
	"""(ISO-8601 / YYYY-MM-DDTHH:MM:SSZ format)"""
	created_at: Optional[str]
	"""(ISO-8601 / YYYY-MM-DDTHH:MM:SSZ format)"""
	updated_at: Optional[str]
	"""Change number, e.g. ECO-0042"""
	number: Optional[str]
	name: Optional[str]
	description: Optional[str]
	type: Optional[PlmChangeType]
	"""The PlmCategory the change is filed under (reference to AccountingCategory)"""
	category_id: Optional[str]
	status: Optional[PlmChangeStatus]
	"""Vendor priority value"""
	priority: Optional[str]
	affected_items: Optional[PropertyPlmChangeAffected_items]
	"""(ISO-8601 / YYYY-MM-DDTHH:MM:SSZ format)"""
	effective_at: Optional[str]
	"""When a temporary change (deviation) expires (ISO-8601 / YYYY-MM-DDTHH:MM:SSZ format)"""
	expires_at: Optional[str]
	"""Originator (reference to HrisEmployee)"""
	user_id: Optional[str]
	"""(ISO-8601 / YYYY-MM-DDTHH:MM:SSZ format)"""
	approved_at: Optional[str]
	"""(ISO-8601 / YYYY-MM-DDTHH:MM:SSZ format)"""
	implemented_at: Optional[str]
	url: Optional[str]
	metadata: Optional[PropertyPlmChangeMetadata]
Are we missing anything? Let us know
Was this page helpful?