From 9774cd4beb47366918d13f524db26eb058c75d2f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jens=20K=C3=BCrten?= Date: Thu, 9 Jul 2026 11:36:17 +0200 Subject: [PATCH 1/8] Feat: add part_created and document_created events Add PartCreatedEvent and DocumentCreatedEvent, fired after a part or document has been created (POST create). Wire them into the event unions, exports, JSON schema and reference docs. Co-Authored-By: Claude Opus 4.8 (1M context) --- csfunctions/events/__init__.py | 14 +++- csfunctions/events/base.py | 2 + csfunctions/events/document_created.py | 17 ++++ csfunctions/events/part_created.py | 17 ++++ docs/reference/events.md | 36 +++++++++ docs/release_notes.md | 3 + json_schemas/request.json | 108 +++++++++++++++++++++++++ 7 files changed, 195 insertions(+), 2 deletions(-) create mode 100644 csfunctions/events/document_created.py create mode 100644 csfunctions/events/part_created.py diff --git a/csfunctions/events/__init__.py b/csfunctions/events/__init__.py index 2429600..b8e5912 100644 --- a/csfunctions/events/__init__.py +++ b/csfunctions/events/__init__.py @@ -19,6 +19,7 @@ ) from .dialog_data import DocumentReleasedDialogData, PartReleasedDialogData from .document_create_check import DocumentCreateCheckData, DocumentCreateCheckEvent +from .document_created import DocumentCreatedData, DocumentCreatedEvent from .document_field_calculation import DocumentFieldCalculationData, DocumentFieldCalculationEvent from .document_modify_check import DocumentModifyCheckData, DocumentModifyCheckEvent from .document_release_check import DocumentReleaseCheckData, DocumentReleaseCheckEvent @@ -33,6 +34,7 @@ from .engineering_change_status_changed import EngineeringChangeStatusChangedData, EngineeringChangeStatusChangedEvent from .field_value_calculation import FieldValueCalculationData, FieldValueCalculationEvent from .part_create_check import PartCreateCheckData, PartCreateCheckEvent +from .part_created import PartCreatedData, PartCreatedEvent from .part_field_calculation import PartFieldCalculationData, PartFieldCalculationEvent from .part_modify_check import PartModifyCheckData, PartModifyCheckEvent from .part_release_check import PartReleaseCheckData, PartReleaseCheckEvent @@ -40,9 +42,11 @@ from .workflow_task_trigger import WorkflowTaskTriggerEvent, WorkflowTaskTriggerEventData Event = Annotated[ - DocumentReleasedEvent + DocumentCreatedEvent + | DocumentReleasedEvent | DocumentReleaseCheckEvent | DocumentFieldCalculationEvent + | PartCreatedEvent | PartReleasedEvent | PartReleaseCheckEvent | PartFieldCalculationEvent @@ -71,9 +75,11 @@ Field(discriminator="name"), ] EventData = ( - DocumentReleasedData + DocumentCreatedData + | DocumentReleasedData | DocumentReleaseCheckData | DocumentFieldCalculationData + | PartCreatedData | PartReleasedData | PartReleaseCheckData | PartFieldCalculationData @@ -102,9 +108,11 @@ ) __all__ = [ + "DocumentCreatedEvent", "DocumentReleasedEvent", "DocumentReleaseCheckEvent", "DocumentFieldCalculationEvent", + "PartCreatedEvent", "PartReleasedEvent", "PartReleaseCheckEvent", "PartFieldCalculationEvent", @@ -124,9 +132,11 @@ "ChangeRequestStatusChangedEvent", "ChangeRequestStatusChangeCheckEvent", "WorkflowTaskTriggerEvent", + "DocumentCreatedData", "DocumentReleasedData", "DocumentReleaseCheckData", "DocumentFieldCalculationData", + "PartCreatedData", "PartReleasedData", "PartReleaseCheckData", "BOMItemFieldCalculationData", diff --git a/csfunctions/events/base.py b/csfunctions/events/base.py index 2134469..0aedb8c 100644 --- a/csfunctions/events/base.py +++ b/csfunctions/events/base.py @@ -5,9 +5,11 @@ class EventNames(str, Enum): DUMMY = "dummy" + DOCUMENT_CREATED = "document_created" DOCUMENT_RELEASED = "document_released" DOCUMENT_RELEASE_CHECK = "document_release_check" DOCUMENT_FIELD_CALCULATION = "document_field_calculation" + PART_CREATED = "part_created" PART_RELEASED = "part_released" PART_RELEASE_CHECK = "part_release_check" PART_FIELD_CALCULATION = "part_field_calculation" diff --git a/csfunctions/events/document_created.py b/csfunctions/events/document_created.py new file mode 100644 index 0000000..768f40b --- /dev/null +++ b/csfunctions/events/document_created.py @@ -0,0 +1,17 @@ +from typing import Literal + +from pydantic import BaseModel, Field + +from csfunctions.objects import Document, Part + +from .base import BaseEvent, EventNames + + +class DocumentCreatedData(BaseModel): + documents: list[Document] = Field(..., description="List of documents that were created.") + parts: list[Part] = Field(..., description="List of parts that belong to the documents.") + + +class DocumentCreatedEvent(BaseEvent): + name: Literal[EventNames.DOCUMENT_CREATED] = EventNames.DOCUMENT_CREATED + data: DocumentCreatedData diff --git a/csfunctions/events/part_created.py b/csfunctions/events/part_created.py new file mode 100644 index 0000000..b6fa180 --- /dev/null +++ b/csfunctions/events/part_created.py @@ -0,0 +1,17 @@ +from typing import Literal + +from pydantic import BaseModel, Field + +from csfunctions.objects import Document, Part + +from .base import BaseEvent, EventNames + + +class PartCreatedData(BaseModel): + parts: list[Part] = Field(..., description="List of parts that were created.") + documents: list[Document] = Field(..., description="List of documents that are referenced by the parts.") + + +class PartCreatedEvent(BaseEvent): + name: Literal[EventNames.PART_CREATED] = EventNames.PART_CREATED + data: PartCreatedData diff --git a/docs/reference/events.md b/docs/reference/events.md index 5260134..acb96c9 100644 --- a/docs/reference/events.md +++ b/docs/reference/events.md @@ -20,6 +20,24 @@ The event is triggered before any field calculations are performed. | documents | list[[Document](objects.md#document)] | List of documents that are about to be created. | | parts | list[[Part](objects.md#part)] | List of parts that belong to the documents. | +## DocumentCreatedEvent +`csfunctions.events.DocumentCreatedEvent` + +This event is fired **after** a document has been created. Raising an exception thus can not prevent the creation. + +**Supported actions:** + +- [StartWorkflowAction](actions.md#startworkflowaction) + +**DocumentCreatedEvent.name:** document_created + +**DocumentCreatedEvent.data:** + +| Attribute | Type | Description | +| --------- | ------------------------------------- | ------------------------------------------- | +| documents | list[[Document](objects.md#document)] | List of documents that were created. | +| parts | list[[Part](objects.md#part)] | List of parts that belong to the documents. | + ## DocumentModifyCheckEvent `csfunctions.events.DocumentModifyCheckEvent` @@ -331,6 +349,24 @@ The event is triggered before any field calculations are performed. | parts | list[[Part](objects.md#part)] | List of parts that are about to be created. | | documents | list[[Document](objects.md#document)] | List of documents that are referenced by the parts. | +## PartCreatedEvent +`csfunctions.events.PartCreatedEvent` + +This event is fired **after** a part has been created. Raising an exception thus can not prevent the creation. + +**Supported actions:** + +- [StartWorkflowAction](actions.md#startworkflowaction) + +**PartCreatedEvent.name:** part_created + +**PartCreatedEvent.data:** + +| Attribute | Type | Description | +| --------- | ------------------------------------- | --------------------------------------------------- | +| parts | list[[Part](objects.md#part)] | List of parts that were created. | +| documents | list[[Document](objects.md#document)] | List of documents that are referenced by the parts. | + ## PartModifyCheckEvent `csfunctions.events.PartModifyCheckEvent` diff --git a/docs/release_notes.md b/docs/release_notes.md index 1a0cede..71b60d7 100644 --- a/docs/release_notes.md +++ b/docs/release_notes.md @@ -3,6 +3,9 @@ hide: - toc --- +### Version 0.25.0 +- Feat: Add part_created and document_created events + ### Version 0.24.0 - Feat: Add maturity levels diff --git a/json_schemas/request.json b/json_schemas/request.json index fa0ca78..2eb5612 100644 --- a/json_schemas/request.json +++ b/json_schemas/request.json @@ -7077,6 +7077,56 @@ "title": "DocumentCreateCheckEvent", "type": "object" }, + "DocumentCreatedData": { + "properties": { + "documents": { + "description": "List of documents that were created.", + "items": { + "$ref": "#/$defs/Document" + }, + "title": "Documents", + "type": "array" + }, + "parts": { + "description": "List of parts that belong to the documents.", + "items": { + "$ref": "#/$defs/Part" + }, + "title": "Parts", + "type": "array" + } + }, + "required": [ + "documents", + "parts" + ], + "title": "DocumentCreatedData", + "type": "object" + }, + "DocumentCreatedEvent": { + "properties": { + "name": { + "const": "document_created", + "default": "document_created", + "title": "Name", + "type": "string" + }, + "event_id": { + "description": "unique identifier", + "title": "Event Id", + "type": "string" + }, + "data": { + "$ref": "#/$defs/DocumentCreatedData" + } + }, + "required": [ + "event_id", + "data" + ], + "title": "DocumentCreatedEvent", + "type": "object" + }, "DocumentFieldCalculationData": { "properties": { "document": { @@ -10671,6 +10721,56 @@ "title": "PartCreateCheckEvent", "type": "object" }, + "PartCreatedData": { + "properties": { + "parts": { + "description": "List of parts that were created.", + "items": { + "$ref": "#/$defs/Part" + }, + "title": "Parts", + "type": "array" + }, + "documents": { + "description": "List of documents that are referenced by the parts.", + "items": { + "$ref": "#/$defs/Document" + }, + "title": "Documents", + "type": "array" + } + }, + "required": [ + "parts", + "documents" + ], + "title": "PartCreatedData", + "type": "object" + }, + "PartCreatedEvent": { + "properties": { + "name": { + "const": "part_created", + "default": "part_created", + "title": "Name", + "type": "string" + }, + "event_id": { + "description": "unique identifier", + "title": "Event Id", + "type": "string" + }, + "data": { + "$ref": "#/$defs/PartCreatedData" + } + }, + "required": [ + "event_id", + "data" + ], + "title": "PartCreatedEvent", + "type": "object" + }, "PartFieldCalculationData": { "properties": { "part": { @@ -11135,6 +11235,7 @@ "custom_operation_document": "#/$defs/CustomOperationDocumentEvent", "custom_operation_part": "#/$defs/CustomOperationPartEvent", "document_create_check": "#/$defs/DocumentCreateCheckEvent", + "document_created": "#/$defs/DocumentCreatedEvent", "document_field_calculation": "#/$defs/DocumentFieldCalculationEvent", "document_modify_check": "#/$defs/DocumentModifyCheckEvent", "document_release_check": "#/$defs/DocumentReleaseCheckEvent", @@ -11146,6 +11247,7 @@ "engineering_change_status_changed": "#/$defs/EngineeringChangeStatusChangedEvent", "field_value_calculation": "#/$defs/FieldValueCalculationEvent", "part_create_check": "#/$defs/PartCreateCheckEvent", + "part_created": "#/$defs/PartCreatedEvent", "part_field_calculation": "#/$defs/PartFieldCalculationEvent", "part_modify_check": "#/$defs/PartModifyCheckEvent", "part_release_check": "#/$defs/PartReleaseCheckEvent", @@ -11155,6 +11257,9 @@ "propertyName": "name" }, "oneOf": [ + { + "$ref": "#/$defs/DocumentCreatedEvent" + }, { "$ref": "#/$defs/DocumentReleasedEvent" }, @@ -11164,6 +11269,9 @@ { "$ref": "#/$defs/DocumentFieldCalculationEvent" }, + { + "$ref": "#/$defs/PartCreatedEvent" + }, { "$ref": "#/$defs/PartReleasedEvent" }, From c9e4d01c823b54a014c50a4e35c8f8ffe0c6f452 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jens=20K=C3=BCrten?= Date: Thu, 9 Jul 2026 11:38:10 +0200 Subject: [PATCH 2/8] fix: release notes --- docs/release_notes.md | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/docs/release_notes.md b/docs/release_notes.md index 71b60d7..3743a7e 100644 --- a/docs/release_notes.md +++ b/docs/release_notes.md @@ -3,9 +3,12 @@ hide: - toc --- -### Version 0.25.0 +### Version 0.26.0 - Feat: Add part_created and document_created events +### Version 0.25.0 +- Feat: Add events and objects needed for new ECM + ### Version 0.24.0 - Feat: Add maturity levels From 1b230fa5d8a2e1c81e8555fe585e396cce93513b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jens=20K=C3=BCrten?= Date: Fri, 10 Jul 2026 07:44:43 +0200 Subject: [PATCH 3/8] Feat: add part_indexed and document_indexed events Add PartIndexedEvent and DocumentIndexedEvent, fired after a part or document has been indexed (a new version created). Wire them into the event unions, exports, JSON schema and reference docs. Co-Authored-By: Claude Opus 4.8 (1M context) --- csfunctions/events/__init__.py | 10 +++ csfunctions/events/base.py | 2 + csfunctions/events/document_indexed.py | 19 +++++ csfunctions/events/part_indexed.py | 17 ++++ docs/reference/events.md | 36 +++++++++ docs/release_notes.md | 1 + json_schemas/request.json | 108 +++++++++++++++++++++++++ 7 files changed, 193 insertions(+) create mode 100644 csfunctions/events/document_indexed.py create mode 100644 csfunctions/events/part_indexed.py diff --git a/csfunctions/events/__init__.py b/csfunctions/events/__init__.py index b8e5912..a68074b 100644 --- a/csfunctions/events/__init__.py +++ b/csfunctions/events/__init__.py @@ -21,6 +21,7 @@ from .document_create_check import DocumentCreateCheckData, DocumentCreateCheckEvent from .document_created import DocumentCreatedData, DocumentCreatedEvent from .document_field_calculation import DocumentFieldCalculationData, DocumentFieldCalculationEvent +from .document_indexed import DocumentIndexedData, DocumentIndexedEvent from .document_modify_check import DocumentModifyCheckData, DocumentModifyCheckEvent from .document_release_check import DocumentReleaseCheckData, DocumentReleaseCheckEvent from .document_released import DocumentReleasedData, DocumentReleasedEvent @@ -36,6 +37,7 @@ from .part_create_check import PartCreateCheckData, PartCreateCheckEvent from .part_created import PartCreatedData, PartCreatedEvent from .part_field_calculation import PartFieldCalculationData, PartFieldCalculationEvent +from .part_indexed import PartIndexedData, PartIndexedEvent from .part_modify_check import PartModifyCheckData, PartModifyCheckEvent from .part_release_check import PartReleaseCheckData, PartReleaseCheckEvent from .part_released import PartReleasedData, PartReleasedEvent @@ -43,10 +45,12 @@ Event = Annotated[ DocumentCreatedEvent + | DocumentIndexedEvent | DocumentReleasedEvent | DocumentReleaseCheckEvent | DocumentFieldCalculationEvent | PartCreatedEvent + | PartIndexedEvent | PartReleasedEvent | PartReleaseCheckEvent | PartFieldCalculationEvent @@ -76,10 +80,12 @@ ] EventData = ( DocumentCreatedData + | DocumentIndexedData | DocumentReleasedData | DocumentReleaseCheckData | DocumentFieldCalculationData | PartCreatedData + | PartIndexedData | PartReleasedData | PartReleaseCheckData | PartFieldCalculationData @@ -109,10 +115,12 @@ __all__ = [ "DocumentCreatedEvent", + "DocumentIndexedEvent", "DocumentReleasedEvent", "DocumentReleaseCheckEvent", "DocumentFieldCalculationEvent", "PartCreatedEvent", + "PartIndexedEvent", "PartReleasedEvent", "PartReleaseCheckEvent", "PartFieldCalculationEvent", @@ -133,10 +141,12 @@ "ChangeRequestStatusChangeCheckEvent", "WorkflowTaskTriggerEvent", "DocumentCreatedData", + "DocumentIndexedData", "DocumentReleasedData", "DocumentReleaseCheckData", "DocumentFieldCalculationData", "PartCreatedData", + "PartIndexedData", "PartReleasedData", "PartReleaseCheckData", "BOMItemFieldCalculationData", diff --git a/csfunctions/events/base.py b/csfunctions/events/base.py index 0aedb8c..dd4f247 100644 --- a/csfunctions/events/base.py +++ b/csfunctions/events/base.py @@ -6,10 +6,12 @@ class EventNames(str, Enum): DUMMY = "dummy" DOCUMENT_CREATED = "document_created" + DOCUMENT_INDEXED = "document_indexed" DOCUMENT_RELEASED = "document_released" DOCUMENT_RELEASE_CHECK = "document_release_check" DOCUMENT_FIELD_CALCULATION = "document_field_calculation" PART_CREATED = "part_created" + PART_INDEXED = "part_indexed" PART_RELEASED = "part_released" PART_RELEASE_CHECK = "part_release_check" PART_FIELD_CALCULATION = "part_field_calculation" diff --git a/csfunctions/events/document_indexed.py b/csfunctions/events/document_indexed.py new file mode 100644 index 0000000..83c35a2 --- /dev/null +++ b/csfunctions/events/document_indexed.py @@ -0,0 +1,19 @@ +from typing import Literal + +from pydantic import BaseModel, Field + +from csfunctions.objects import Document, Part + +from .base import BaseEvent, EventNames + + +class DocumentIndexedData(BaseModel): + documents: list[Document] = Field( + ..., description="List of documents that were indexed (a new version was created)." + ) + parts: list[Part] = Field(..., description="List of parts that belong to the documents.") + + +class DocumentIndexedEvent(BaseEvent): + name: Literal[EventNames.DOCUMENT_INDEXED] = EventNames.DOCUMENT_INDEXED + data: DocumentIndexedData diff --git a/csfunctions/events/part_indexed.py b/csfunctions/events/part_indexed.py new file mode 100644 index 0000000..fe579cc --- /dev/null +++ b/csfunctions/events/part_indexed.py @@ -0,0 +1,17 @@ +from typing import Literal + +from pydantic import BaseModel, Field + +from csfunctions.objects import Document, Part + +from .base import BaseEvent, EventNames + + +class PartIndexedData(BaseModel): + parts: list[Part] = Field(..., description="List of parts that were indexed (a new version was created).") + documents: list[Document] = Field(..., description="List of documents that are referenced by the parts.") + + +class PartIndexedEvent(BaseEvent): + name: Literal[EventNames.PART_INDEXED] = EventNames.PART_INDEXED + data: PartIndexedData diff --git a/docs/reference/events.md b/docs/reference/events.md index acb96c9..008ac5b 100644 --- a/docs/reference/events.md +++ b/docs/reference/events.md @@ -38,6 +38,24 @@ This event is fired **after** a document has been created. Raising an exception | documents | list[[Document](objects.md#document)] | List of documents that were created. | | parts | list[[Part](objects.md#part)] | List of parts that belong to the documents. | +## DocumentIndexedEvent +`csfunctions.events.DocumentIndexedEvent` + +This event is fired **after** a document has been indexed (a new version was created). Raising an exception thus can not prevent the indexing. + +**Supported actions:** + +- [StartWorkflowAction](actions.md#startworkflowaction) + +**DocumentIndexedEvent.name:** document_indexed + +**DocumentIndexedEvent.data:** + +| Attribute | Type | Description | +| --------- | ------------------------------------- | ------------------------------------------- | +| documents | list[[Document](objects.md#document)] | List of documents that were indexed. | +| parts | list[[Part](objects.md#part)] | List of parts that belong to the documents. | + ## DocumentModifyCheckEvent `csfunctions.events.DocumentModifyCheckEvent` @@ -367,6 +385,24 @@ This event is fired **after** a part has been created. Raising an exception thus | parts | list[[Part](objects.md#part)] | List of parts that were created. | | documents | list[[Document](objects.md#document)] | List of documents that are referenced by the parts. | +## PartIndexedEvent +`csfunctions.events.PartIndexedEvent` + +This event is fired **after** a part has been indexed (a new version was created). Raising an exception thus can not prevent the indexing. + +**Supported actions:** + +- [StartWorkflowAction](actions.md#startworkflowaction) + +**PartIndexedEvent.name:** part_indexed + +**PartIndexedEvent.data:** + +| Attribute | Type | Description | +| --------- | ------------------------------------- | --------------------------------------------------- | +| parts | list[[Part](objects.md#part)] | List of parts that were indexed. | +| documents | list[[Document](objects.md#document)] | List of documents that are referenced by the parts. | + ## PartModifyCheckEvent `csfunctions.events.PartModifyCheckEvent` diff --git a/docs/release_notes.md b/docs/release_notes.md index 3743a7e..cce391c 100644 --- a/docs/release_notes.md +++ b/docs/release_notes.md @@ -5,6 +5,7 @@ hide: ### Version 0.26.0 - Feat: Add part_created and document_created events +- Feat: Add part_indexed and document_indexed events ### Version 0.25.0 - Feat: Add events and objects needed for new ECM diff --git a/json_schemas/request.json b/json_schemas/request.json index 2eb5612..12692ab 100644 --- a/json_schemas/request.json +++ b/json_schemas/request.json @@ -7185,6 +7185,56 @@ "title": "DocumentFieldCalculationEvent", "type": "object" }, + "DocumentIndexedData": { + "properties": { + "documents": { + "description": "List of documents that were indexed (a new version was created).", + "items": { + "$ref": "#/$defs/Document" + }, + "title": "Documents", + "type": "array" + }, + "parts": { + "description": "List of parts that belong to the documents.", + "items": { + "$ref": "#/$defs/Part" + }, + "title": "Parts", + "type": "array" + } + }, + "required": [ + "documents", + "parts" + ], + "title": "DocumentIndexedData", + "type": "object" + }, + "DocumentIndexedEvent": { + "properties": { + "name": { + "const": "document_indexed", + "default": "document_indexed", + "title": "Name", + "type": "string" + }, + "event_id": { + "description": "unique identifier", + "title": "Event Id", + "type": "string" + }, + "data": { + "$ref": "#/$defs/DocumentIndexedData" + } + }, + "required": [ + "event_id", + "data" + ], + "title": "DocumentIndexedEvent", + "type": "object" + }, "DocumentModifyCheckData": { "properties": { "documents": { @@ -10829,6 +10879,56 @@ "title": "PartFieldCalculationEvent", "type": "object" }, + "PartIndexedData": { + "properties": { + "parts": { + "description": "List of parts that were indexed (a new version was created).", + "items": { + "$ref": "#/$defs/Part" + }, + "title": "Parts", + "type": "array" + }, + "documents": { + "description": "List of documents that are referenced by the parts.", + "items": { + "$ref": "#/$defs/Document" + }, + "title": "Documents", + "type": "array" + } + }, + "required": [ + "parts", + "documents" + ], + "title": "PartIndexedData", + "type": "object" + }, + "PartIndexedEvent": { + "properties": { + "name": { + "const": "part_indexed", + "default": "part_indexed", + "title": "Name", + "type": "string" + }, + "event_id": { + "description": "unique identifier", + "title": "Event Id", + "type": "string" + }, + "data": { + "$ref": "#/$defs/PartIndexedData" + } + }, + "required": [ + "event_id", + "data" + ], + "title": "PartIndexedEvent", + "type": "object" + }, "PartModifyCheckData": { "properties": { "parts": { @@ -11237,6 +11337,7 @@ "document_create_check": "#/$defs/DocumentCreateCheckEvent", "document_created": "#/$defs/DocumentCreatedEvent", "document_field_calculation": "#/$defs/DocumentFieldCalculationEvent", + "document_indexed": "#/$defs/DocumentIndexedEvent", "document_modify_check": "#/$defs/DocumentModifyCheckEvent", "document_release_check": "#/$defs/DocumentReleaseCheckEvent", "document_released": "#/$defs/DocumentReleasedEvent", @@ -11249,6 +11350,7 @@ "part_create_check": "#/$defs/PartCreateCheckEvent", "part_created": "#/$defs/PartCreatedEvent", "part_field_calculation": "#/$defs/PartFieldCalculationEvent", + "part_indexed": "#/$defs/PartIndexedEvent", "part_modify_check": "#/$defs/PartModifyCheckEvent", "part_release_check": "#/$defs/PartReleaseCheckEvent", "part_released": "#/$defs/PartReleasedEvent", @@ -11260,6 +11362,9 @@ { "$ref": "#/$defs/DocumentCreatedEvent" }, + { + "$ref": "#/$defs/DocumentIndexedEvent" + }, { "$ref": "#/$defs/DocumentReleasedEvent" }, @@ -11272,6 +11377,9 @@ { "$ref": "#/$defs/PartCreatedEvent" }, + { + "$ref": "#/$defs/PartIndexedEvent" + }, { "$ref": "#/$defs/PartReleasedEvent" }, From c17bd23a7e67a05a9993bc12354de34575cb3f27 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jens=20K=C3=BCrten?= Date: Fri, 10 Jul 2026 12:41:39 +0200 Subject: [PATCH 4/8] remove reference to new version created --- csfunctions/events/document_indexed.py | 4 +--- csfunctions/events/part_indexed.py | 2 +- docs/reference/events.md | 4 ++-- json_schemas/request.json | 4 ++-- 4 files changed, 6 insertions(+), 8 deletions(-) diff --git a/csfunctions/events/document_indexed.py b/csfunctions/events/document_indexed.py index 83c35a2..59784c4 100644 --- a/csfunctions/events/document_indexed.py +++ b/csfunctions/events/document_indexed.py @@ -8,9 +8,7 @@ class DocumentIndexedData(BaseModel): - documents: list[Document] = Field( - ..., description="List of documents that were indexed (a new version was created)." - ) + documents: list[Document] = Field(..., description="List of documents that were indexed.") parts: list[Part] = Field(..., description="List of parts that belong to the documents.") diff --git a/csfunctions/events/part_indexed.py b/csfunctions/events/part_indexed.py index fe579cc..635f4c1 100644 --- a/csfunctions/events/part_indexed.py +++ b/csfunctions/events/part_indexed.py @@ -8,7 +8,7 @@ class PartIndexedData(BaseModel): - parts: list[Part] = Field(..., description="List of parts that were indexed (a new version was created).") + parts: list[Part] = Field(..., description="List of parts that were indexed.") documents: list[Document] = Field(..., description="List of documents that are referenced by the parts.") diff --git a/docs/reference/events.md b/docs/reference/events.md index 008ac5b..ff927a2 100644 --- a/docs/reference/events.md +++ b/docs/reference/events.md @@ -41,7 +41,7 @@ This event is fired **after** a document has been created. Raising an exception ## DocumentIndexedEvent `csfunctions.events.DocumentIndexedEvent` -This event is fired **after** a document has been indexed (a new version was created). Raising an exception thus can not prevent the indexing. +This event is fired **after** a document has been indexed. Raising an exception thus can not prevent the indexing. **Supported actions:** @@ -388,7 +388,7 @@ This event is fired **after** a part has been created. Raising an exception thus ## PartIndexedEvent `csfunctions.events.PartIndexedEvent` -This event is fired **after** a part has been indexed (a new version was created). Raising an exception thus can not prevent the indexing. +This event is fired **after** a part has been indexed. Raising an exception thus can not prevent the indexing. **Supported actions:** diff --git a/json_schemas/request.json b/json_schemas/request.json index bd57a8e..65ff82a 100644 --- a/json_schemas/request.json +++ b/json_schemas/request.json @@ -7396,7 +7396,7 @@ "DocumentIndexedData": { "properties": { "documents": { - "description": "List of documents that were indexed (a new version was created).", + "description": "List of documents that were indexed.", "items": { "$ref": "#/$defs/Document" }, @@ -11220,7 +11220,7 @@ "PartIndexedData": { "properties": { "parts": { - "description": "List of parts that were indexed (a new version was created).", + "description": "List of parts that were indexed.", "items": { "$ref": "#/$defs/Part" }, From a66129b67488d945caf3cd7924d7cf6b45ad5ba5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jens=20K=C3=BCrten?= Date: Tue, 14 Jul 2026 14:24:50 +0200 Subject: [PATCH 5/8] Refactor: clean up objects documentation and consolidate change order/request sections --- docs/reference/objects.md | 58 ++++++--------------------------------- 1 file changed, 8 insertions(+), 50 deletions(-) diff --git a/docs/reference/objects.md b/docs/reference/objects.md index 60f05a9..e7c75e9 100644 --- a/docs/reference/objects.md +++ b/docs/reference/objects.md @@ -5,7 +5,6 @@ |Attribute|Type|Description| |-|-|-| |cdb_object_id|str \| None|Object ID| -|cdb_object_id|str \| None|Object ID| |baugruppe|str \| None|Assembly| |b_index|str \| None|Assembly Index| |component_materialnr_erp|str \| None|Material Number ERP Component| @@ -144,7 +143,8 @@ ## Briefcase `csfunctions.objects.Briefcase` -Briefcases are used by Workflows and can contain parts, documents, engineering changes, change orders or change requests. +Briefcases are used by Workflows and can contain parts, documents, engineering changes, +change orders or change requests. |Attribute|Type|Description| |-|-|-| @@ -158,56 +158,14 @@ Briefcases are used by Workflows and can contain parts, documents, engineering c |parts|list[[Part](objects.md#part)]|| |documents|list[[Document](objects.md#document)]|| |engineering_changes|list[[EngineeringChange](objects.md#engineeringchange)]|| -|change_orders|list[[ChangeOrder](objects.md#changeorder)]|| -|change_requests|list[[ChangeRequest](objects.md#changerequest)]|| - -## ChangeOrder -`csfunctions.objects.ChangeOrder` - -A change order of the ECM module. Shares all attributes of its base class `csfunctions.objects.Change`. - -|Attribute|Type|Description| -|-|-|-| -|cs_change_id|str|Change ID| -|cdb_project_id|str \| None|Project ID| -|product_object_oid|str \| None|Product object ID| -|end_time_plan|datetime \| None|Planned end time| -|status|int|Status| -|title_de|str \| None|Title (de)| -|title_en|str \| None|Title (en)| -|title_ja|str \| None|Title (ja)| -|title_zh|str \| None|Title (zh)| -|cdb_object_id|str \| None|Object ID| -|change_type|str \| None|Change Type| -|cs_ecm_change_description_de|str \| None|Description (de)| -|cs_ecm_change_description_en|str \| None|Description (en)| -|cs_ecm_change_description_ja|str \| None|Description (ja)| -|cs_ecm_change_description_zh|str \| None|Description (zh)| -|c_event|str \| None|Event| -|change_reason_de|str \| None|Reason (de)| -|change_reason_en|str \| None|Reason (en)| -|change_reason_ja|str \| None|Reason (ja)| -|change_reason_zh|str \| None|Reason (zh)| -|c_source|str \| None|Source| -|part_ids|list[str]|List of part IDs, that were changed. (teilenummer@t_index)| -|document_ids|list[str]|List of document IDs, that were changed. (z_nummer@z_index)| -|affected_part_ids|list[str]|List of part IDs, that were planned to be changed. (teilenummer@t_index)| -|affected_document_ids|list[str]|List of document IDs, that were planned to be changed. (z_nummer@z_index)| -|accompanying_document_ids|list[str]|List of document IDs, that accompany the change. (z_nummer@z_index)| -|parts|list[[Part](objects.md#part)]|| -|documents|list[[Document](objects.md#document)]|| -|affected_parts|list[[Part](objects.md#part)]|| -|affected_documents|list[[Document](objects.md#document)]|| -|accompanying_documents|list[[Document](objects.md#document)]|| -|cdb_cpersno|str \| None|Created by| -|cdb_cdate|datetime \| None|Created on| -|cdb_mpersno|str|Last Modified by| -|cdb_mdate|datetime \| None|Last Modified on| +|change_orders|list[[Change](objects.md#change)Order]|| +|change_requests|list[[Change](objects.md#change)Request]|| -## ChangeRequest -`csfunctions.objects.ChangeRequest` +## Change +`csfunctions.objects.Change` -A change request of the ECM module. Shares all attributes of its base class `csfunctions.objects.Change`. +Base class for changes of the ECM module (change orders and change requests). +Use the concrete subclasses :class:`ChangeOrder` and :class:`ChangeRequest`. |Attribute|Type|Description| |-|-|-| From a9d5f19d0684c25cb0055f44c67e48992af123eb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jens=20K=C3=BCrten?= Date: Tue, 14 Jul 2026 14:30:03 +0200 Subject: [PATCH 6/8] revert unintended change --- docs/reference/objects.md | 54 ++++++++++++++++++++++++++++++++++----- 1 file changed, 48 insertions(+), 6 deletions(-) diff --git a/docs/reference/objects.md b/docs/reference/objects.md index e7c75e9..82bcdc5 100644 --- a/docs/reference/objects.md +++ b/docs/reference/objects.md @@ -158,14 +158,56 @@ change orders or change requests. |parts|list[[Part](objects.md#part)]|| |documents|list[[Document](objects.md#document)]|| |engineering_changes|list[[EngineeringChange](objects.md#engineeringchange)]|| -|change_orders|list[[Change](objects.md#change)Order]|| -|change_requests|list[[Change](objects.md#change)Request]|| +|change_orders|list[[ChangeOrder](objects.md#changeorder)]|| +|change_requests|list[[ChangeRequest](objects.md#changerequest)]|| -## Change -`csfunctions.objects.Change` +## ChangeOrder +`csfunctions.objects.ChangeOrder` -Base class for changes of the ECM module (change orders and change requests). -Use the concrete subclasses :class:`ChangeOrder` and :class:`ChangeRequest`. +A change order of the ECM module. Shares all attributes of its base class `csfunctions.objects.Change`. + +|Attribute|Type|Description| +|-|-|-| +|cs_change_id|str|Change ID| +|cdb_project_id|str \| None|Project ID| +|product_object_oid|str \| None|Product object ID| +|end_time_plan|datetime \| None|Planned end time| +|status|int|Status| +|title_de|str \| None|Title (de)| +|title_en|str \| None|Title (en)| +|title_ja|str \| None|Title (ja)| +|title_zh|str \| None|Title (zh)| +|cdb_object_id|str \| None|Object ID| +|change_type|str \| None|Change Type| +|cs_ecm_change_description_de|str \| None|Description (de)| +|cs_ecm_change_description_en|str \| None|Description (en)| +|cs_ecm_change_description_ja|str \| None|Description (ja)| +|cs_ecm_change_description_zh|str \| None|Description (zh)| +|c_event|str \| None|Event| +|change_reason_de|str \| None|Reason (de)| +|change_reason_en|str \| None|Reason (en)| +|change_reason_ja|str \| None|Reason (ja)| +|change_reason_zh|str \| None|Reason (zh)| +|c_source|str \| None|Source| +|part_ids|list[str]|List of part IDs, that were changed. (teilenummer@t_index)| +|document_ids|list[str]|List of document IDs, that were changed. (z_nummer@z_index)| +|affected_part_ids|list[str]|List of part IDs, that were planned to be changed. (teilenummer@t_index)| +|affected_document_ids|list[str]|List of document IDs, that were planned to be changed. (z_nummer@z_index)| +|accompanying_document_ids|list[str]|List of document IDs, that accompany the change. (z_nummer@z_index)| +|parts|list[[Part](objects.md#part)]|| +|documents|list[[Document](objects.md#document)]|| +|affected_parts|list[[Part](objects.md#part)]|| +|affected_documents|list[[Document](objects.md#document)]|| +|accompanying_documents|list[[Document](objects.md#document)]|| +|cdb_cpersno|str \| None|Created by| +|cdb_cdate|datetime \| None|Created on| +|cdb_mpersno|str|Last Modified by| +|cdb_mdate|datetime \| None|Last Modified on| + +## ChangeRequest +`csfunctions.objects.ChangeRequest` + +A change request of the ECM module. Shares all attributes of its base class `csfunctions.objects.Change`. |Attribute|Type|Description| |-|-|-| From 77cd36ac7bc8d068688bf24bca97e5ff2cfcd4f3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jens=20K=C3=BCrten?= Date: Tue, 14 Jul 2026 14:32:44 +0200 Subject: [PATCH 7/8] revert unintended change --- docs/reference/objects.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/docs/reference/objects.md b/docs/reference/objects.md index 82bcdc5..4ba5fa4 100644 --- a/docs/reference/objects.md +++ b/docs/reference/objects.md @@ -143,8 +143,7 @@ ## Briefcase `csfunctions.objects.Briefcase` -Briefcases are used by Workflows and can contain parts, documents, engineering changes, -change orders or change requests. +Briefcases are used by Workflows and can contain parts, documents, engineering changes, change orders or change requests. |Attribute|Type|Description| |-|-|-| From b151fa67f1f2f399f70d21c09859d27f1e10f527 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jens=20K=C3=BCrten?= Date: Tue, 14 Jul 2026 14:35:04 +0200 Subject: [PATCH 8/8] update release notes --- docs/release_notes.md | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/docs/release_notes.md b/docs/release_notes.md index e627f74..5aa8f57 100644 --- a/docs/release_notes.md +++ b/docs/release_notes.md @@ -3,14 +3,12 @@ hide: - toc --- -### Version next -- Feat: Add part_created and document_created events -- Feat: Add part_indexed and document_indexed events - ### Version 0.26.0 - Feat: Extend all multi-language object fields with Japanese (ja) and Chinese (zh) variants - Feat: Add part_blocked and document_blocked events - Feat: Add reviewers field to PartReleaseCheckEvent and DocumentReleaseCheckEvent, populated for express releases +- Feat: Add part_created and document_created events +- Feat: Add part_indexed and document_indexed events ### Version 0.25.0 - Feat: Add change objects (ChangeOrder and ChangeRequest) with their release and status change events