From c70a65de8dcbbd93a67af64fb126b46fe525e4c4 Mon Sep 17 00:00:00 2001 From: Patrick Vu Date: Wed, 10 Jun 2026 17:39:48 +0700 Subject: [PATCH 1/2] fix depends type in some operation metadata --- src/keria/app/specing.py | 36 +++++++-------- src/keria/core/optypes.py | 94 +++++++++++++++++++++------------------ 2 files changed, 67 insertions(+), 63 deletions(-) diff --git a/src/keria/app/specing.py b/src/keria/app/specing.py index fd3eeebf..d0cacecb 100644 --- a/src/keria/app/specing.py +++ b/src/keria/app/specing.py @@ -881,18 +881,6 @@ def __init__(self, app, title, version="1.0.1", openapi_version="3.1.0"): {"$ref": "#/components/schemas/ACDC_V_2"}, ] } - self.spec.components.schemas["CredentialOperationMetadata"]["properties"][ - "depends" - ] = { - "oneOf": [ - {"$ref": "#/components/schemas/ROT_V_1"}, - {"$ref": "#/components/schemas/ROT_V_2"}, - {"$ref": "#/components/schemas/DRT_V_1"}, - {"$ref": "#/components/schemas/DRT_V_2"}, - {"$ref": "#/components/schemas/IXN_V_1"}, - {"$ref": "#/components/schemas/IXN_V_2"}, - ] - } self.spec.components.schema( "CredentialOperationResponse", schema=marshmallow_dataclass.class_schema( @@ -968,13 +956,7 @@ def __init__(self, app, title, version="1.0.1", openapi_version="3.1.0"): ) self.spec.components.schemas["DelegatorOperationMetadata"]["properties"][ "depends" - ] = { - "oneOf": [ - {"$ref": "#/components/schemas/GroupOperation"}, - {"$ref": "#/components/schemas/WitnessOperation"}, - {"$ref": "#/components/schemas/DoneOperation"}, - ] - } + ] = {"$ref": "#/components/schemas/KelOperation"} self.spec.components.schema( "PendingDelegatorOperation", @@ -1002,6 +984,22 @@ def __init__(self, app, title, version="1.0.1", openapi_version="3.1.0"): ] } + self.spec.components.schemas["KelOperation"] = { + "oneOf": [ + {"$ref": "#/components/schemas/GroupOperation"}, + {"$ref": "#/components/schemas/WitnessOperation"}, + {"$ref": "#/components/schemas/DoneOperation"}, + {"$ref": "#/components/schemas/DelegationOperation"}, + {"$ref": "#/components/schemas/SubmitOperation"}, + ] + } + self.spec.components.schemas["RegistryOperationMetadata"]["properties"][ + "depends" + ] = {"$ref": "#/components/schemas/KelOperation"} + self.spec.components.schemas["CredentialOperationMetadata"]["properties"][ + "depends" + ] = {"$ref": "#/components/schemas/KelOperation"} + self.spec.components.schemas["Operation"] = { "oneOf": [ {"$ref": "#/components/schemas/OOBIOperation"}, diff --git a/src/keria/core/optypes.py b/src/keria/core/optypes.py index e89ac299..6bc2a4f4 100644 --- a/src/keria/core/optypes.py +++ b/src/keria/core/optypes.py @@ -334,44 +334,42 @@ class FailedGroupOperation(BaseGroupOperation, FailedOperation): @dataclass -class DelegatorOperationMetadata: +class SubmitOperationMetadata: pre: str - teepre: str - anchor: credentialing.Anchor = field( - default_factory=credentialing.Anchor, - metadata={ - "marshmallow_field": fields.Nested( - class_schema(credentialing.Anchor), required=False - ) - }, - ) - depends: Union["GroupOperation", "WitnessOperation", "DoneOperation"] = None # type: ignore + sn: int @dataclass -class BaseDelegatorOperation: - metadata: DelegatorOperationMetadata = field( - default_factory=DelegatorOperationMetadata, +class BaseSubmitOperation: + metadata: SubmitOperationMetadata = field( + default_factory=SubmitOperationMetadata, metadata={ "marshmallow_field": fields.Nested( - class_schema(DelegatorOperationMetadata), required=False + class_schema(SubmitOperationMetadata), required=False ) }, ) @dataclass -class PendingDelegatorOperation(BaseDelegatorOperation, PendingOperation): +class PendingSubmitOperation(BaseSubmitOperation, PendingOperation): pass @dataclass(kw_only=True) -class CompletedDelegatorOperation(BaseDelegatorOperation, CompletedOperation): - response: str +class CompletedSubmitOperation(BaseSubmitOperation, CompletedOperation): + response: KeyStateRecord = field( + default=None, + metadata={ + "marshmallow_field": fields.Nested( + class_schema(KeyStateRecord), required=True + ) + }, + ) @dataclass(kw_only=True) -class FailedDelegatorOperation(BaseDelegatorOperation, FailedOperation): +class FailedSubmitOperation(BaseSubmitOperation, FailedOperation): error: OperationStatus = field( default=None, metadata={ @@ -382,48 +380,58 @@ class FailedDelegatorOperation(BaseDelegatorOperation, FailedOperation): ) -DelegatorOperation = Union[ - PendingDelegatorOperation, CompletedDelegatorOperation, FailedDelegatorOperation +SubmitOperation = Union[ + PendingSubmitOperation, CompletedSubmitOperation, FailedSubmitOperation +] + +KelOperation = Union[ + "GroupOperation", + "WitnessOperation", + "DoneOperation", + "DelegationOperation", + "SubmitOperation", ] @dataclass -class SubmitOperationMetadata: +class DelegatorOperationMetadata: pre: str - sn: int + teepre: str + anchor: credentialing.Anchor = field( + default_factory=credentialing.Anchor, + metadata={ + "marshmallow_field": fields.Nested( + class_schema(credentialing.Anchor), required=False + ) + }, + ) + depends: KelOperation = None # type: ignore @dataclass -class BaseSubmitOperation: - metadata: SubmitOperationMetadata = field( - default_factory=SubmitOperationMetadata, +class BaseDelegatorOperation: + metadata: DelegatorOperationMetadata = field( + default_factory=DelegatorOperationMetadata, metadata={ "marshmallow_field": fields.Nested( - class_schema(SubmitOperationMetadata), required=False + class_schema(DelegatorOperationMetadata), required=False ) }, ) @dataclass -class PendingSubmitOperation(BaseSubmitOperation, PendingOperation): +class PendingDelegatorOperation(BaseDelegatorOperation, PendingOperation): pass @dataclass(kw_only=True) -class CompletedSubmitOperation(BaseSubmitOperation, CompletedOperation): - response: KeyStateRecord = field( - default=None, - metadata={ - "marshmallow_field": fields.Nested( - class_schema(KeyStateRecord), required=True - ) - }, - ) +class CompletedDelegatorOperation(BaseDelegatorOperation, CompletedOperation): + response: str @dataclass(kw_only=True) -class FailedSubmitOperation(BaseSubmitOperation, FailedOperation): +class FailedDelegatorOperation(BaseDelegatorOperation, FailedOperation): error: OperationStatus = field( default=None, metadata={ @@ -434,8 +442,8 @@ class FailedSubmitOperation(BaseSubmitOperation, FailedOperation): ) -SubmitOperation = Union[ - PendingSubmitOperation, CompletedSubmitOperation, FailedSubmitOperation +DelegatorOperation = Union[ + PendingDelegatorOperation, CompletedDelegatorOperation, FailedDelegatorOperation ] @@ -597,9 +605,7 @@ class FailedChallengeOperation(BaseChallengeOperation, FailedOperation): @dataclass class RegistryOperationMetadata: pre: str - depends: Union[ - "GroupOperation", "WitnessOperation", "DoneOperation", "DelegationOperation" - ] + depends: KelOperation = None # type: ignore anchor: Anchor = field( default_factory=Anchor, metadata={ @@ -667,7 +673,7 @@ class FailedRegistryOperation(BaseRegistryOperation, FailedOperation): @dataclass class CredentialOperationMetadata: ced: Union[ACDC_V_1, ACDC_V_2] # type: ignore - depends: Union[ROT_V_1, ROT_V_2, DRT_V_1, DRT_V_2, IXN_V_1, IXN_V_2] = None # type: ignore + depends: KelOperation = None # type: ignore @dataclass From f0ab7f46c7d8054439e9715bf9298a575a70bb58 Mon Sep 17 00:00:00 2001 From: Patrick Vu Date: Fri, 12 Jun 2026 18:21:20 +0700 Subject: [PATCH 2/2] remove SubmitOperation in KelOperation --- src/keria/app/specing.py | 1 - src/keria/core/optypes.py | 96 +++++++++++++++++++-------------------- 2 files changed, 48 insertions(+), 49 deletions(-) diff --git a/src/keria/app/specing.py b/src/keria/app/specing.py index d0cacecb..8368bcd6 100644 --- a/src/keria/app/specing.py +++ b/src/keria/app/specing.py @@ -990,7 +990,6 @@ def __init__(self, app, title, version="1.0.1", openapi_version="3.1.0"): {"$ref": "#/components/schemas/WitnessOperation"}, {"$ref": "#/components/schemas/DoneOperation"}, {"$ref": "#/components/schemas/DelegationOperation"}, - {"$ref": "#/components/schemas/SubmitOperation"}, ] } self.spec.components.schemas["RegistryOperationMetadata"]["properties"][ diff --git a/src/keria/core/optypes.py b/src/keria/core/optypes.py index 6bc2a4f4..d9092fb5 100644 --- a/src/keria/core/optypes.py +++ b/src/keria/core/optypes.py @@ -333,43 +333,53 @@ class FailedGroupOperation(BaseGroupOperation, FailedOperation): ] +KelOperation = Union[ + "GroupOperation", + "WitnessOperation", + "DoneOperation", + "DelegationOperation", +] + + @dataclass -class SubmitOperationMetadata: +class DelegatorOperationMetadata: pre: str - sn: int + teepre: str + anchor: credentialing.Anchor = field( + default_factory=credentialing.Anchor, + metadata={ + "marshmallow_field": fields.Nested( + class_schema(credentialing.Anchor), required=False + ) + }, + ) + depends: KelOperation = None # type: ignore @dataclass -class BaseSubmitOperation: - metadata: SubmitOperationMetadata = field( - default_factory=SubmitOperationMetadata, +class BaseDelegatorOperation: + metadata: DelegatorOperationMetadata = field( + default_factory=DelegatorOperationMetadata, metadata={ "marshmallow_field": fields.Nested( - class_schema(SubmitOperationMetadata), required=False + class_schema(DelegatorOperationMetadata), required=False ) }, ) @dataclass -class PendingSubmitOperation(BaseSubmitOperation, PendingOperation): +class PendingDelegatorOperation(BaseDelegatorOperation, PendingOperation): pass @dataclass(kw_only=True) -class CompletedSubmitOperation(BaseSubmitOperation, CompletedOperation): - response: KeyStateRecord = field( - default=None, - metadata={ - "marshmallow_field": fields.Nested( - class_schema(KeyStateRecord), required=True - ) - }, - ) +class CompletedDelegatorOperation(BaseDelegatorOperation, CompletedOperation): + response: str @dataclass(kw_only=True) -class FailedSubmitOperation(BaseSubmitOperation, FailedOperation): +class FailedDelegatorOperation(BaseDelegatorOperation, FailedOperation): error: OperationStatus = field( default=None, metadata={ @@ -380,58 +390,48 @@ class FailedSubmitOperation(BaseSubmitOperation, FailedOperation): ) -SubmitOperation = Union[ - PendingSubmitOperation, CompletedSubmitOperation, FailedSubmitOperation -] - -KelOperation = Union[ - "GroupOperation", - "WitnessOperation", - "DoneOperation", - "DelegationOperation", - "SubmitOperation", +DelegatorOperation = Union[ + PendingDelegatorOperation, CompletedDelegatorOperation, FailedDelegatorOperation ] @dataclass -class DelegatorOperationMetadata: +class SubmitOperationMetadata: pre: str - teepre: str - anchor: credentialing.Anchor = field( - default_factory=credentialing.Anchor, - metadata={ - "marshmallow_field": fields.Nested( - class_schema(credentialing.Anchor), required=False - ) - }, - ) - depends: KelOperation = None # type: ignore + sn: int @dataclass -class BaseDelegatorOperation: - metadata: DelegatorOperationMetadata = field( - default_factory=DelegatorOperationMetadata, +class BaseSubmitOperation: + metadata: SubmitOperationMetadata = field( + default_factory=SubmitOperationMetadata, metadata={ "marshmallow_field": fields.Nested( - class_schema(DelegatorOperationMetadata), required=False + class_schema(SubmitOperationMetadata), required=False ) }, ) @dataclass -class PendingDelegatorOperation(BaseDelegatorOperation, PendingOperation): +class PendingSubmitOperation(BaseSubmitOperation, PendingOperation): pass @dataclass(kw_only=True) -class CompletedDelegatorOperation(BaseDelegatorOperation, CompletedOperation): - response: str +class CompletedSubmitOperation(BaseSubmitOperation, CompletedOperation): + response: KeyStateRecord = field( + default=None, + metadata={ + "marshmallow_field": fields.Nested( + class_schema(KeyStateRecord), required=True + ) + }, + ) @dataclass(kw_only=True) -class FailedDelegatorOperation(BaseDelegatorOperation, FailedOperation): +class FailedSubmitOperation(BaseSubmitOperation, FailedOperation): error: OperationStatus = field( default=None, metadata={ @@ -442,8 +442,8 @@ class FailedDelegatorOperation(BaseDelegatorOperation, FailedOperation): ) -DelegatorOperation = Union[ - PendingDelegatorOperation, CompletedDelegatorOperation, FailedDelegatorOperation +SubmitOperation = Union[ + PendingSubmitOperation, CompletedSubmitOperation, FailedSubmitOperation ]