js7-client-python 2.0.12__py3-none-any.whl → 2.0.13__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,30 @@
1
+ from dataclasses import dataclass
2
+
3
+ from ......service.http_service import HTTPService
4
+ from ......model.private.http.joc.joc_v_2_6_5 import NoteIdentifier, NoteResponse
5
+
6
+
7
+ @dataclass
8
+ class EndpointCall:
9
+ http_service: HTTPService
10
+ access_token: str
11
+ payload: NoteIdentifier
12
+
13
+
14
+ def note(call: EndpointCall) -> NoteResponse:
15
+ if not call.access_token:
16
+ raise ValueError("'access_token' is required in function call.")
17
+
18
+ body = call.payload.model_dump_json(by_alias=True, exclude_none=True)
19
+
20
+ with call.http_service as http:
21
+ resp = http.post(
22
+ path="/joc/api/note",
23
+ body=body,
24
+ headers={
25
+ "X-Access-Token": call.access_token,
26
+ "Accept": "application/json"
27
+ }
28
+ )
29
+
30
+ return NoteResponse.model_validate_json(resp)
@@ -0,0 +1,30 @@
1
+ from dataclasses import dataclass
2
+
3
+ from .......service.http_service import HTTPService
4
+ from .......model.private.http.joc.joc_v_2_6_5 import AddPost, NoteResponse
5
+
6
+
7
+ @dataclass
8
+ class EndpointCall:
9
+ http_service: HTTPService
10
+ access_token: str
11
+ payload: AddPost
12
+
13
+
14
+ def add(call: EndpointCall) -> NoteResponse:
15
+ if not call.access_token:
16
+ raise ValueError("'access_token' is required in function call.")
17
+
18
+ body = call.payload.model_dump_json(by_alias=True, exclude_none=True)
19
+
20
+ with call.http_service as http:
21
+ resp = http.post(
22
+ path="/joc/api/note/post/add",
23
+ body=body,
24
+ headers={
25
+ "X-Access-Token": call.access_token,
26
+ "Accept": "application/json"
27
+ }
28
+ )
29
+
30
+ return NoteResponse.model_validate_json(resp)
@@ -0,0 +1,30 @@
1
+ from dataclasses import dataclass
2
+
3
+ from ......service.http_service import HTTPService
4
+ from ......model.private.http.joc.joc_v_2_6_5 import OrderHistoryFilter, OrderLog
5
+
6
+
7
+ @dataclass
8
+ class EndpointCall:
9
+ http_service: HTTPService
10
+ access_token: str
11
+ payload: OrderHistoryFilter
12
+
13
+
14
+ def log(call: EndpointCall) -> OrderLog:
15
+ if not call.access_token:
16
+ raise ValueError("'access_token' is required in function call.")
17
+
18
+ body = call.payload.model_dump_json(by_alias=True, exclude_none=True)
19
+
20
+ with call.http_service as http:
21
+ resp = http.post(
22
+ path="/joc/api/order/log",
23
+ body=body,
24
+ headers={
25
+ "X-Access-Token": call.access_token,
26
+ "Accept": "application/json"
27
+ }
28
+ )
29
+
30
+ return OrderLog.model_validate_json(resp)
@@ -0,0 +1,30 @@
1
+ from dataclasses import dataclass
2
+
3
+ from .......service.http_service import HTTPService
4
+ from .......model.private.http.joc.joc_v_2_6_5 import OrdersFilter, OrdersOverView
5
+
6
+
7
+ @dataclass
8
+ class EndpointCall:
9
+ http_service: HTTPService
10
+ access_token: str
11
+ payload: OrdersFilter
12
+
13
+
14
+ def summary(call: EndpointCall) -> OrdersOverView:
15
+ if not call.access_token:
16
+ raise ValueError("'access_token' is required in function call.")
17
+
18
+ body = call.payload.model_dump_json(by_alias=True, exclude_none=True)
19
+
20
+ with call.http_service as http:
21
+ resp = http.post(
22
+ path="/joc/api/orders/overview/summary",
23
+ body=body,
24
+ headers={
25
+ "X-Access-Token": call.access_token,
26
+ "Accept": "application/json"
27
+ }
28
+ )
29
+
30
+ return OrdersOverView.model_validate_json(resp)
@@ -0,0 +1,30 @@
1
+ from dataclasses import dataclass
2
+
3
+ from ......service.http_service import HTTPService
4
+ from ......model.private.http.joc.joc_v_2_6_5 import WorkflowSearchFilter, ResponseSearch
5
+
6
+
7
+ @dataclass
8
+ class EndpointCall:
9
+ http_service: HTTPService
10
+ access_token: str
11
+ payload: WorkflowSearchFilter
12
+
13
+
14
+ def search(call: EndpointCall) -> ResponseSearch:
15
+ if not call.access_token:
16
+ raise ValueError("'access_token' is required in function call.")
17
+
18
+ body = call.payload.model_dump_json(by_alias=True, exclude_none=True)
19
+
20
+ with call.http_service as http:
21
+ resp = http.post(
22
+ path="/joc/api/workflows/search",
23
+ body=body,
24
+ headers={
25
+ "X-Access-Token": call.access_token,
26
+ "Accept": "application/json"
27
+ }
28
+ )
29
+
30
+ return ResponseSearch.model_validate_json(resp)
@@ -0,0 +1,50 @@
1
+ from typing import Any, Dict
2
+
3
+ from ...context import Context
4
+ from ....api.joc.http.v_2_6_5.note.note import note, EndpointCall
5
+ from ....util.version_to_tuple import version_to_tuple
6
+ from ....model.public.client.enum.object_types import ObjectType
7
+ from ....model.private.http.joc.joc_v_2_6_5 import (
8
+ NoteIdentifier as NoteIdentifier_V_2_6_5,
9
+ CommonConfigurationType as CommonConfigurationType_V_2_6_5
10
+ )
11
+
12
+
13
+ def get_note_action(
14
+ *,
15
+ context: Context,
16
+ name: str,
17
+ object_type: ObjectType
18
+ ) -> Dict[str, Any]:
19
+
20
+ if version_to_tuple(context.version) >= version_to_tuple("2.6.5"):
21
+ request_data = _build_v_2_6_5_request(
22
+ name=name,
23
+ object_type=object_type
24
+ )
25
+
26
+ result = note(EndpointCall(
27
+ http_service=context.http_service,
28
+ access_token=context.auth_provider.login(),
29
+ payload=request_data,
30
+ ))
31
+
32
+ return result.model_dump(mode="json").get("posts") or {}
33
+
34
+ raise RuntimeError(f"JOC Cockpit version {context.version} is not supported. Minimum required version is 2.6.5.")
35
+
36
+ def _build_v_2_6_5_request(
37
+ *,
38
+ name: str,
39
+ object_type: ObjectType
40
+ ) -> NoteIdentifier_V_2_6_5:
41
+
42
+ # Validate: controller_id
43
+ if not name:
44
+ raise ValueError("'name' is required.")
45
+
46
+ # Result
47
+ return NoteIdentifier_V_2_6_5(
48
+ name=name,
49
+ object_type=CommonConfigurationType_V_2_6_5(object_type.value) # Raises ValueError() if invalid.
50
+ )
@@ -0,0 +1,80 @@
1
+ from typing import Any, Dict, Literal, Optional
2
+
3
+ from ...context import Context
4
+ from ....api.joc.http.v_2_6_5.note.post.add import add, EndpointCall
5
+ from ....util.version_to_tuple import version_to_tuple
6
+ from ....model.public.client.common.audit_log import AuditLog
7
+ from ....model.public.client.enum.object_types import ObjectType
8
+ from ....model.private.http.joc.joc_v_2_6_5 import (
9
+ CommonConfigurationType as CommonConfigurationType_V_2_6_5,
10
+ AddPost as AddPost_V_2_6_5,
11
+ AuditParams as AuditParams_V_2_6_5,
12
+ Severity as Severity_V_2_6_5
13
+ )
14
+
15
+
16
+ def post_to_note_action(
17
+ *,
18
+ context: Context,
19
+ name: str,
20
+ object_type: ObjectType,
21
+ content: str,
22
+ severity: Literal["INFO", "LOW", "NORMAL", "HIGH", "CRITICAL"],
23
+ audit_log: Optional[AuditLog]
24
+ ) -> Dict[str, Any]:
25
+
26
+ if version_to_tuple(context.version) >= version_to_tuple("2.6.5"):
27
+ request_data = _build_v_2_6_5_request(
28
+ name=name,
29
+ object_type=object_type,
30
+ content=content,
31
+ severity=severity,
32
+ audit_log=audit_log
33
+ )
34
+
35
+ result = add(EndpointCall(
36
+ http_service=context.http_service,
37
+ access_token=context.auth_provider.login(),
38
+ payload=request_data,
39
+ ))
40
+
41
+ return result.model_dump(mode="json").get("posts") or {}
42
+
43
+ raise RuntimeError(f"JOC Cockpit version {context.version} is not supported. Minimum required version is 2.6.5.")
44
+
45
+ def _build_v_2_6_5_request(
46
+ *,
47
+ name: str,
48
+ object_type: ObjectType,
49
+ content: str,
50
+ severity: Literal["INFO", "LOW", "NORMAL", "HIGH", "CRITICAL"],
51
+ audit_log: Optional[AuditLog]
52
+ ) -> AddPost_V_2_6_5:
53
+
54
+ # Validate: name
55
+ if not name:
56
+ raise ValueError("'name' is required.")
57
+
58
+ # Validate: content
59
+ if not content:
60
+ raise ValueError("'content' is required.")
61
+
62
+ # Validate: severity
63
+ if severity not in ("INFO", "LOW", "NORMAL", "HIGH", "CRITICAL"):
64
+ raise ValueError("'severity' must be 'INFO', 'LOW', 'NORMAL', 'HIGH' or 'CRITICAL'.")
65
+
66
+ # Build: audit_log
67
+ res_audit_log = AuditParams_V_2_6_5(
68
+ ticket_link=audit_log.ticket_link,
69
+ comment=audit_log.comment,
70
+ time_spent=audit_log.time_spent
71
+ ) if audit_log else None
72
+
73
+ # Result
74
+ return AddPost_V_2_6_5(
75
+ name=name,
76
+ object_type=CommonConfigurationType_V_2_6_5(object_type.value), # Raises ValueError() if invalid.
77
+ content=content,
78
+ severity=Severity_V_2_6_5(severity), # Raises ValueError() if invalid.
79
+ audit_log=res_audit_log
80
+ )
@@ -0,0 +1,48 @@
1
+ from typing import Any, Dict
2
+
3
+ from ...context import Context
4
+ from ....api.joc.http.v_2_6_5.order.log import log, EndpointCall
5
+ from ....util.version_to_tuple import version_to_tuple
6
+ from ....model.private.http.joc.joc_v_2_6_5 import (
7
+ OrderHistoryFilter as OrderHistoryFilter_V_2_6_5
8
+ )
9
+
10
+
11
+ def get_order_log_action(
12
+ *,
13
+ context: Context,
14
+ controller_id: str,
15
+ history_id: int
16
+ ) -> Dict[str, Any]:
17
+
18
+ if version_to_tuple(context.version) >= version_to_tuple("2.6.5"):
19
+ request_data = _build_v_2_6_5_request(
20
+ controller_id=controller_id,
21
+ history_id=history_id
22
+ )
23
+
24
+ result = log(EndpointCall(
25
+ http_service=context.http_service,
26
+ access_token=context.auth_provider.login(),
27
+ payload=request_data,
28
+ ))
29
+
30
+ return result.model_dump(mode="json").get("log_events") or {}
31
+
32
+ raise RuntimeError(f"JOC Cockpit version {context.version} is not supported. Minimum required version is 2.6.5.")
33
+
34
+ def _build_v_2_6_5_request(
35
+ *,
36
+ controller_id: str,
37
+ history_id: int
38
+ ) -> OrderHistoryFilter_V_2_6_5:
39
+
40
+ # Validate: controller_id
41
+ if not controller_id:
42
+ raise ValueError("'controller_id' is required.")
43
+
44
+ # Result
45
+ return OrderHistoryFilter_V_2_6_5(
46
+ controller_id=controller_id,
47
+ history_id=history_id
48
+ )
@@ -0,0 +1,54 @@
1
+ from typing import Optional, Tuple
2
+
3
+ from ...context import Context
4
+ from ....api.joc.http.v_2_6_5.orders.overview.summary import summary, EndpointCall
5
+ from ....util.version_to_tuple import version_to_tuple
6
+ from ....model.private.http.joc.joc_v_2_6_5 import (
7
+ OrdersFilter as OrdersFilter_V_2_6_5
8
+ )
9
+
10
+
11
+ def get_orders_overview_action(
12
+ *,
13
+ context: Context,
14
+ controller_id: Optional[str],
15
+ date_from: Optional[str],
16
+ date_to: Optional[str]
17
+ ) -> Tuple[int, int]:
18
+
19
+ if version_to_tuple(context.version) >= version_to_tuple("2.6.5"):
20
+ request_data = _build_v_2_6_5_request(
21
+ controller_id=controller_id,
22
+ date_from=date_from,
23
+ date_to=date_to,
24
+ timezone=context.client_config.timezone
25
+ )
26
+
27
+ result = summary(EndpointCall(
28
+ http_service=context.http_service,
29
+ access_token=context.auth_provider.login(),
30
+ payload=request_data,
31
+ ))
32
+
33
+ successful = result.orders.successful or 0 if result.orders else 0
34
+ failed = result.orders.failed or 0 if result.orders else 0
35
+
36
+ return (successful, failed)
37
+
38
+ raise RuntimeError(f"JOC Cockpit version {context.version} is not supported. Minimum required version is 2.6.5.")
39
+
40
+ def _build_v_2_6_5_request(
41
+ *,
42
+ controller_id: Optional[str],
43
+ date_from: Optional[str],
44
+ date_to: Optional[str],
45
+ timezone: Optional[str]
46
+ ) -> OrdersFilter_V_2_6_5:
47
+
48
+ # Result
49
+ return OrdersFilter_V_2_6_5(
50
+ controller_id=controller_id,
51
+ date_from=date_from,
52
+ date_to=date_to,
53
+ time_zone=timezone
54
+ )
@@ -0,0 +1,50 @@
1
+ from typing import List
2
+
3
+ from ...context import Context
4
+ from ....api.joc.http.v_2_6_5.workflows.search import search as api_search, EndpointCall
5
+ from ....util.version_to_tuple import version_to_tuple
6
+ from ....model.private.http.joc.joc_v_2_6_5 import (
7
+ WorkflowSearchFilter as WorkflowSearchFilter_V_2_6_5,
8
+ )
9
+
10
+
11
+ # Returns: [Workflow Paths]
12
+ def search_workflows_action(*, context: Context, controller_id: str, search: str) -> List[str]:
13
+
14
+ if version_to_tuple(context.version) >= version_to_tuple("2.6.5"):
15
+ request_data = _build_v_2_6_5_request(
16
+ controller_id=controller_id,
17
+ search=search
18
+ )
19
+
20
+ result = api_search(EndpointCall(
21
+ http_service=context.http_service,
22
+ access_token=context.auth_provider.login(),
23
+ payload=request_data,
24
+ ))
25
+
26
+ wf_paths: List[str] = []
27
+
28
+ if result.results:
29
+ for r in result.results:
30
+ if r.path:
31
+ wf_paths.append(r.path)
32
+
33
+ return wf_paths
34
+
35
+ raise RuntimeError(f"JOC Cockpit version {context.version} is not supported. Minimum required version is 2.6.5.")
36
+
37
+
38
+ def _build_v_2_6_5_request(*, controller_id: str, search: str) -> WorkflowSearchFilter_V_2_6_5:
39
+ # Validate: controller_id
40
+ if not controller_id:
41
+ raise ValueError("'controller_id' is required.")
42
+
43
+ # Validate: search
44
+ if not search:
45
+ raise ValueError("'search' is required.")
46
+
47
+ return WorkflowSearchFilter_V_2_6_5(
48
+ controller_id=controller_id,
49
+ search=search
50
+ )
js7/client/client.py CHANGED
@@ -16,6 +16,7 @@ from .feature.workflow.workflow import Workflow
16
16
  from .feature.controller.controller import Controller
17
17
  from .feature.iam.iam import IAM
18
18
  from .feature.daily_plan.daily_plan import DailyPlan
19
+ from .feature.note.note import Note
19
20
 
20
21
  from .action.helper.encrypt_action import encrypt_action
21
22
  from .action.helper.decrypt_action import decrypt_action
@@ -90,6 +91,10 @@ class Client:
90
91
  @cached_property
91
92
  def daily_plan(self) -> DailyPlan:
92
93
  return DailyPlan(context=self._ctx)
94
+
95
+ @cached_property
96
+ def note(self) -> Note:
97
+ return Note(context=self._ctx)
93
98
 
94
99
  def login(self, auth_config: Optional[AuthConfiguration] = None, force_server_login: bool = False) -> str:
95
100
  """
@@ -0,0 +1,92 @@
1
+ from typing import Any, Dict, Literal, Optional
2
+
3
+ from js7.model.public.client.common.audit_log import AuditLog
4
+
5
+ from ....model.public.client.enum.object_types import ObjectType
6
+
7
+ from ...context import Context
8
+
9
+ from ...action.note.get_note_action import get_note_action
10
+ from ...action.note.post_to_note_action import post_to_note_action
11
+
12
+
13
+ class Manage:
14
+ def __init__(self, context: Context):
15
+ self._ctx = context
16
+
17
+ def get_note(
18
+ self,
19
+ name: str,
20
+ object_type: ObjectType
21
+ ) -> Dict[str, Any]:
22
+ """
23
+ Gets a note.
24
+
25
+ Args:
26
+ name (str):
27
+ Object name of the configuration item.
28
+
29
+ object_type (ObjectType):
30
+ Object type of the configuration item.
31
+
32
+ Returns:
33
+ Dict[str, Any]:
34
+ A list of posts.
35
+
36
+ Raises:
37
+ ValueError:
38
+ If required arguments are missing or invalid.
39
+
40
+ RuntimeError:
41
+ If the operation fails or the server version is incompatible.
42
+ """
43
+
44
+ return get_note_action(context=self._ctx, name=name, object_type=object_type)
45
+
46
+ def post_to_note(
47
+ self,
48
+ name: str,
49
+ object_type: ObjectType,
50
+ content: str,
51
+ severity: Literal["INFO", "LOW", "NORMAL", "HIGH", "CRITICAL"] = "NORMAL",
52
+ audit_log: Optional[AuditLog] = None
53
+ ) -> Dict[str, Any]:
54
+ """
55
+ Adds a post to a note and returns the updated note.
56
+
57
+ Args:
58
+ name (str):
59
+ Object name of the configuration item.
60
+
61
+ object_type (ObjectType):
62
+ Object type of the configuration item.
63
+
64
+ content (str):
65
+ Content of a post in markdown format.
66
+
67
+ severity (Literal["INFO", "LOW", "NORMAL", "HIGH", "CRITICAL"]):
68
+ Severity of a post.
69
+
70
+ audit_log (Optional[AuditLog]):
71
+ Creates an audit log entry for this operation.
72
+
73
+ Returns:
74
+ Dict[str, Any]:
75
+ A list of posts.
76
+
77
+ Raises:
78
+ ValueError:
79
+ If required arguments are missing or invalid.
80
+
81
+ RuntimeError:
82
+ If the operation fails or the server version is incompatible.
83
+ """
84
+
85
+ return post_to_note_action(
86
+ context=self._ctx,
87
+ name=name,
88
+ object_type=object_type,
89
+ content=content,
90
+ severity=severity,
91
+ audit_log=audit_log
92
+ )
@@ -0,0 +1,13 @@
1
+ from functools import cached_property
2
+
3
+ from ...context import Context
4
+ from .manage import Manage
5
+
6
+
7
+ class Note:
8
+ def __init__(self, context: Context):
9
+ self._ctx = context
10
+
11
+ @cached_property
12
+ def manage(self) -> Manage:
13
+ return Manage(context=self._ctx)
@@ -1,4 +1,4 @@
1
- from typing import Any, Dict, List
1
+ from typing import Any, Dict, List, Optional, Tuple
2
2
 
3
3
  from ...context import Context
4
4
  from ....model.public.client.filter.order_history_filter import OrderHistoryFilter
@@ -7,6 +7,8 @@ from ....model.public.client.input.add_order import Order
7
7
 
8
8
  from ...action.order.get_order_history_action import get_order_history_action
9
9
  from ...action.order.get_orders_action import get_orders_action
10
+ from ...action.order.get_orders_overview_action import get_orders_overview_action
11
+ from ...action.order.get_order_log_action import get_order_log_action
10
12
 
11
13
 
12
14
  class Manage:
@@ -76,4 +78,87 @@ class Manage:
76
78
  filter=filter
77
79
  )
78
80
 
79
-
81
+ def get_orders_overview(
82
+ self,
83
+ controller_id: Optional[str] = None,
84
+ date_from: Optional[str] = None,
85
+ date_to: Optional[str] = None
86
+ ) -> Tuple[int, int]:
87
+ """
88
+ Summary with number of successful and failed orders.
89
+
90
+ Args:
91
+ controller_id (Optional[str]):
92
+ The ID of the controller from which the orders should be retrieved.
93
+
94
+ date_from (Optional[str]):
95
+ The value has multiple formats
96
+ Filters items starting from a date.
97
+ an ISO 8601 date format with the time offset and milliseconds being optional, e.g.
98
+ - YYYY-MM-DDThh:mm:ss[.s][Z (Z means +00)]
99
+ - YYYY-MM-DDThh:mm:ss[.s][+01:00]
100
+ - YYYY-MM-DDThh:mm:ss[.s][+0100]
101
+ - YYYY-MM-DDThh:mm:ss[.s][+01]
102
+ - a format for a period relative to the current time, e.g. 6h, 12h, 1d, 1w that specifies the quantity followed by a qualifier:
103
+ - s (seconds)
104
+ - m (minutes)
105
+ - h (hours)
106
+ - d (days)
107
+ - w (weeks)
108
+ - M (months)
109
+ - y (years)
110
+ - a time offset is optional (e.g. 2d+02:00)
111
+ - the value 0 indicates the current time
112
+
113
+ date_to (Optional[str]):
114
+ The value has multiple formats similiar to the dateFrom parameter
115
+ - Filters items ending before a date.
116
+
117
+ Returns:
118
+ Tuple[int, int]:
119
+ Position 1: Successfull Orders, Position 2: Failed orders
120
+
121
+ Raises:
122
+ RuntimeError:
123
+ If the operation fails or the server version is incompatible.
124
+ """
125
+
126
+ return get_orders_overview_action(
127
+ context=self._ctx,
128
+ controller_id=controller_id,
129
+ date_from=date_from,
130
+ date_to=date_to
131
+ )
132
+
133
+ def get_order_log(
134
+ self,
135
+ controller_id: str,
136
+ history_id: int
137
+ ) -> Dict[str, Any]:
138
+ """
139
+ Returns the log of an executed order.
140
+
141
+ Args:
142
+ controller_id (str):
143
+ The ID of the controller from which the order log should be retrieved.
144
+
145
+ history_id (int):
146
+ The history id of an order.
147
+
148
+ Returns:
149
+ Dict[str, Any]:
150
+ Array of logEvents.
151
+
152
+ Raises:
153
+ ValueError:
154
+ If required arguments are missing or invalid.
155
+
156
+ RuntimeError:
157
+ If the operation fails or the server version is incompatible.
158
+ """
159
+
160
+ return get_order_log_action(
161
+ context=self._ctx,
162
+ controller_id=controller_id,
163
+ history_id=history_id
164
+ )
@@ -1,9 +1,9 @@
1
- from typing import Dict, Optional
1
+ from typing import Dict, List, Optional
2
2
 
3
3
  from ....client.context import Context
4
-
5
4
  from ....model.public.client.common.audit_log import AuditLog
6
5
 
6
+ from ...action.workflow.search_workflows_action import search_workflows_action
7
7
  from ...action.workflow.get_workflow_versions_action import get_workflow_versions_action
8
8
  from ...action.workflow.set_workflow_version_as_current_action import set_workflow_version_as_current_action
9
9
 
@@ -99,4 +99,33 @@ class Manage:
99
99
  audit_log=audit_log
100
100
  )
101
101
 
102
-
102
+ def search_workflows(self, controller_id: str, search: str) -> List[str]:
103
+ """
104
+ Searches deployed workflows.
105
+
106
+ Args:
107
+ controller_id (str):
108
+ The ID of the controller on which the operation should be executed.
109
+
110
+ search (str):
111
+ Limits result to a specified glob pattern that supports `*` and `?` as wildcards
112
+ where `*` match zero or more characters and `?` match any single character.
113
+
114
+ Returns:
115
+ List[str]:
116
+ Returns a list of workflow paths.
117
+
118
+ Raises:
119
+ ValueError:
120
+ If required arguments such as `controller_id` or `search` are missing or invalid.
121
+
122
+ RuntimeError:
123
+ If the server version is not compatible or if an
124
+ unexpected response is returned.
125
+ """
126
+
127
+ return search_workflows_action(
128
+ context=self._ctx,
129
+ controller_id=controller_id,
130
+ search=search
131
+ )
@@ -2217,7 +2217,7 @@ class DeploySubagentClusters(BaseModel):
2217
2217
  controller_id: Optional[str] = None
2218
2218
  subagent_cluster_ids: Optional[List[str]] = None
2219
2219
 
2220
-
2220
+
2221
2221
  class OrdersFilterV(BaseModel):
2222
2222
  compact: Optional[bool] = None
2223
2223
  """controls if the object's data is compact or detailed"""
@@ -3657,4 +3657,297 @@ class DeleteNotices(ModifyNotice):
3657
3657
 
3658
3658
  notice_board_path: Optional[str] = None
3659
3659
  notice_ids: Optional[List[str]] = None
3660
- notices: Optional[List[Notice]] = None
3660
+ notices: Optional[List[Notice]] = None
3661
+
3662
+
3663
+ class Advanced(BaseModel):
3664
+ """com.sos.joc.model.inventory.search.RequestSearchAdvancedItem"""
3665
+
3666
+ agent_name: Optional[str] = None
3667
+ argument_name: Optional[str] = None
3668
+ argument_value: Optional[str] = None
3669
+ calendar: Optional[str] = None
3670
+ env_name: Optional[str] = None
3671
+ env_value: Optional[str] = None
3672
+ file_order_source: Optional[str] = None
3673
+ include_script: Optional[str] = None
3674
+ job_count_from: Optional[int] = None
3675
+ job_count_to: Optional[int] = None
3676
+ job_criticality: Optional[JobCriticality] = None
3677
+ job_name: Optional[str] = None
3678
+ job_name_exact_match: Optional[bool] = None
3679
+ job_resource: Optional[str] = None
3680
+ job_script: Optional[str] = None
3681
+ job_template: Optional[str] = None
3682
+ lock: Optional[str] = None
3683
+ notice_board: Optional[str] = None
3684
+ schedule: Optional[str] = None
3685
+ workflow: Optional[str] = None
3686
+
3687
+
3688
+ class RequestBaseSearchFilter(BaseModel):
3689
+ """com.sos.joc.model.inventory.search.RequestBaseSearchFilter"""
3690
+
3691
+ advanced: Optional[Advanced] = None
3692
+ folders: Optional[List[str]] = None
3693
+ search: Optional[str] = None
3694
+ """pattern with wildcards '*' and '?' where '*' match zero or more characters and '?' match
3695
+ any single character
3696
+ """
3697
+ tags: Optional[List[str]] = None
3698
+
3699
+
3700
+ class WorkflowSearchFilter(RequestBaseSearchFilter):
3701
+ """com.sos.joc.model.workflow.search.WorkflowSearchFilter"""
3702
+
3703
+ controller_id: Optional[str] = None
3704
+ instruction_states: Optional[List[SearchInstructionStateText]] = None
3705
+ states: Optional[List[SyncStateText]] = None
3706
+
3707
+
3708
+ class ResponseBaseSearchItem(BaseModel):
3709
+ """com.sos.joc.model.inventory.search.ResponseBaseSearchItem"""
3710
+
3711
+ group: Optional[str] = None
3712
+ name: Optional[str] = None
3713
+ object_type: Optional[CommonConfigurationType] = None
3714
+ ordering: Optional[int] = None
3715
+ path: Optional[str] = None
3716
+ """absolute path of an object."""
3717
+
3718
+
3719
+ class ResponseSearchItem(ResponseBaseSearchItem):
3720
+ """com.sos.joc.model.inventory.search.ResponseSearchItem"""
3721
+
3722
+ controller_id: Optional[str] = None
3723
+ deleted: Optional[bool] = None
3724
+ deployed: Optional[bool] = None
3725
+ has_deployments: Optional[bool] = None
3726
+ has_releases: Optional[bool] = None
3727
+ id: Optional[float] = None
3728
+ permitted: Optional[bool] = None
3729
+ released: Optional[bool] = None
3730
+ title: Optional[str] = None
3731
+ valid: Optional[bool] = None
3732
+
3733
+
3734
+ class ResponseSearch(BaseModel):
3735
+ """com.sos.joc.model.inventory.search.ResponseSearch"""
3736
+
3737
+ delivery_date: Optional[datetime] = None
3738
+ """Value is UTC timestamp in ISO 8601 YYYY-MM-DDThh:mm:ss.sZ or empty"""
3739
+
3740
+ results: Optional[List[ResponseSearchItem]] = None
3741
+
3742
+
3743
+ class OrdersHistoricSummary(BaseModel):
3744
+ """com.sos.joc.model.order.OrdersHistoricSummary"""
3745
+
3746
+ failed: Optional[int] = None
3747
+ successful: Optional[int] = None
3748
+
3749
+
3750
+ class OrdersOverView(BaseModel):
3751
+ """com.sos.joc.model.order.OrdersOverView"""
3752
+
3753
+ delivery_date: Optional[datetime] = None
3754
+ """Value is UTC timestamp in ISO 8601 YYYY-MM-DDThh:mm:ss.sZ or empty"""
3755
+
3756
+ orders: Optional[OrdersHistoricSummary] = None
3757
+ survey_date: Optional[datetime] = None
3758
+ """Value is UTC timestamp in ISO 8601 YYYY-MM-DDThh:mm:ss.sZ or empty"""
3759
+
3760
+
3761
+ class NoteIdentifier(BaseModel):
3762
+ """com.sos.joc.model.note.common.NoteIdentifier"""
3763
+
3764
+ name: Optional[str] = None
3765
+ object_type: Optional[CommonConfigurationType] = None
3766
+
3767
+
3768
+ class CreatedBy(BaseModel):
3769
+ user_name: Optional[str] = None
3770
+
3771
+
3772
+ class DisplayPreferences(BaseModel):
3773
+ """com.sos.joc.model.note.common.DisplayPreferences"""
3774
+
3775
+ height: Optional[int] = None
3776
+ width: Optional[int] = None
3777
+
3778
+
3779
+ class ModifiedBy(BaseModel):
3780
+ user_name: Optional[str] = None
3781
+
3782
+
3783
+ class Metadata(BaseModel):
3784
+ """com.sos.joc.model.note.common.Metadata"""
3785
+
3786
+ created: Optional[datetime] = None
3787
+ """Value is UTC timestamp in ISO 8601 YYYY-MM-DDThh:mm:ss.sZ or empty"""
3788
+
3789
+ created_by: Optional[CreatedBy] = None
3790
+ display_preferences: Optional[DisplayPreferences] = None
3791
+ modified: Optional[datetime] = None
3792
+ """Value is UTC timestamp in ISO 8601 YYYY-MM-DDThh:mm:ss.sZ or empty"""
3793
+
3794
+ modified_by: Optional[ModifiedBy] = None
3795
+ participant_count: Optional[int] = None
3796
+ post_count: Optional[int] = None
3797
+ severity: Optional[Severity] = None
3798
+
3799
+
3800
+ class Participant(BaseModel):
3801
+ modified: Optional[datetime] = None
3802
+ """Value is UTC timestamp in ISO 8601 YYYY-MM-DDThh:mm:ss.sZ or empty"""
3803
+
3804
+ post_count: Optional[int] = None
3805
+
3806
+
3807
+ class Author(BaseModel):
3808
+ user_name: Optional[str] = None
3809
+
3810
+
3811
+ class Post(BaseModel):
3812
+ """com.sos.joc.model.note.common.Post"""
3813
+
3814
+ author: Optional[Author] = None
3815
+ content: Optional[str] = None
3816
+ posted: Optional[datetime] = None
3817
+ """Value is UTC timestamp in ISO 8601 YYYY-MM-DDThh:mm:ss.sZ or empty"""
3818
+
3819
+ post_id: Optional[int] = None
3820
+ severity: Optional[Severity] = None
3821
+
3822
+
3823
+ class Note(NoteIdentifier):
3824
+ """com.sos.joc.model.note.common.Note"""
3825
+
3826
+ metadata: Optional[Metadata] = None
3827
+ note_id: Optional[float] = None
3828
+ participants: Optional[List[Participant]] = None
3829
+ path: Optional[str] = None
3830
+ """absolute path of an object."""
3831
+
3832
+ posts: Optional[List[Post]] = None
3833
+
3834
+
3835
+ class NoteResponse(Note):
3836
+ """com.sos.joc.model.note.NoteResponse"""
3837
+
3838
+ delivery_date: Optional[datetime] = None
3839
+ """Value is UTC timestamp in ISO 8601 YYYY-MM-DDThh:mm:ss.sZ or empty"""
3840
+
3841
+
3842
+ class ModifyRequest(NoteIdentifier):
3843
+ """com.sos.joc.model.note.common.ModifyRequest"""
3844
+
3845
+ audit_log: Optional[AuditParams] = None
3846
+
3847
+
3848
+ class AddPost(ModifyRequest):
3849
+ """com.sos.joc.model.note.AddPost"""
3850
+
3851
+ content: Optional[str] = None
3852
+ severity: Optional[Severity] = None
3853
+
3854
+
3855
+ class OrderHistoryFilter(BaseModel):
3856
+ """com.sos.joc.model.order.OrderHistoryFilter"""
3857
+
3858
+ controller_id: Optional[str] = None
3859
+ history_id: Optional[int] = None
3860
+ order_id: Optional[str] = None
3861
+
3862
+
3863
+ class EventType(str, Enum):
3864
+ """com.sos.controller.model.event.EventType"""
3865
+
3866
+ VERSION_ADDED = "VersionAdded"
3867
+ FILE_BASED_CHANGED = "FileBasedChanged"
3868
+ CONTROLLER_READY = "ControllerReady"
3869
+ AGENT_READY = "AgentReady"
3870
+ ORDER_ADDED = "OrderAdded"
3871
+ ORDER_ATTACHABLE = "OrderAttachable"
3872
+ ORDER_STARTED = "OrderStarted"
3873
+ ORDER_TRANSFERRED_TO_AGENT = "OrderTransferredToAgent"
3874
+ ORDER_PROCESSING_STARTED = "OrderProcessingStarted"
3875
+ ORDER_STDOUT_WRITTEN = "OrderStdoutWritten"
3876
+ ORDER_STDERR_WRITTEN = "OrderStderrWritten"
3877
+ ORDER_PROCESSED = "OrderProcessed"
3878
+ ORDER_RESUMED = "OrderResumed"
3879
+ ORDER_RESUME_MARKED = "OrderResumeMarked"
3880
+ ORDER_FORKED = "OrderForked"
3881
+ ORDER_JOINED = "OrderJoined"
3882
+ ORDER_OFFERED = "OrderOffered"
3883
+ ORDER_RETRYING = "OrderRetrying"
3884
+ ORDER_AWAITING = "OrderAwaiting"
3885
+ ORDER_MOVED = "OrderMoved"
3886
+ ORDER_DETACHABLE = "OrderDetachable"
3887
+ ORDER_DETACHED = "OrderDetached"
3888
+ ORDER_FAILED = "OrderFailed"
3889
+ ORDER_CATCHED = "OrderCatched"
3890
+ ORDER_AWOKE = "OrderAwoke"
3891
+ ORDER_FAILED_IN_FORK = "OrderFailedinFork"
3892
+ ORDER_SUSPENDED = "OrderSuspended"
3893
+ ORDER_SUSPEND_MARKED = "OrderSuspendMarked"
3894
+ ORDER_BROKEN = "OrderBroken"
3895
+ ORDER_CANCELLED = "OrderCancelled"
3896
+ ORDER_FINISHED = "OrderFinished"
3897
+ ORDER_LOCK_ACQUIRED = "OrderLockAcquired"
3898
+ ORDER_LOCK_QUEUED = "OrderLockQueued"
3899
+ ORDER_LOCK_RELEASED = "OrderLockReleased"
3900
+
3901
+
3902
+ class OrderLogEntryError(BaseModel):
3903
+ """com.sos.joc.model.history.order.OrderLogEntryError"""
3904
+
3905
+ error_state: Optional[str] = None
3906
+ error_reason: Optional[str] = None
3907
+ error_code: Optional[str] = None
3908
+ error_text: Optional[str] = None
3909
+
3910
+
3911
+ class LockState(BaseModel):
3912
+ """com.sos.joc.model.history.order.LockState"""
3913
+
3914
+ order_ids: Optional[str] = None
3915
+ queued_order_ids: Optional[str] = None
3916
+
3917
+
3918
+ class Lock(BaseModel):
3919
+ """com.sos.joc.model.history.order.Lock"""
3920
+
3921
+ lock_name: Optional[str] = None
3922
+ limit: Optional[int] = None
3923
+ count: Optional[int] = None
3924
+ lock_state: Optional[LockState] = None
3925
+
3926
+
3927
+ class OrderLogEntry(BaseModel):
3928
+ """com.sos.joc.model.history.order.OrderLogEntry"""
3929
+
3930
+ controller_datetime: Optional[str] = None
3931
+ agent_datetime: Optional[str] = None
3932
+ order_id: Optional[str] = None
3933
+ log_level: Optional[str] = None
3934
+ log_event: Optional[EventType] = None
3935
+ position: Optional[str] = None
3936
+ agent_id: Optional[str] = None
3937
+ agent_name: Optional[str] = None
3938
+ agent_url: Optional[str] = None
3939
+ subagent_cluster_id: Optional[str] = None
3940
+ job: Optional[str] = None
3941
+ task_id: Optional[float] = None
3942
+ return_code: Optional[float] = None
3943
+ error: Optional[OrderLogEntryError] = None
3944
+ lock: Optional[Lock] = None
3945
+
3946
+
3947
+ class OrderLog(BaseModel):
3948
+ """com.sos.joc.model.order.OrderLog"""
3949
+
3950
+ complete: Optional[bool] = None
3951
+ event_id: Optional[float] = None
3952
+ history_id: Optional[float] = None
3953
+ log_events: Optional[List[OrderLogEntry]] = None
@@ -3,10 +3,10 @@ from typing import Tuple
3
3
 
4
4
  def version_to_tuple(input: str) -> Tuple[int, int, int]:
5
5
  try:
6
- check = input.split("-", 1)[0]
7
- check = ".".join(check.split(".")[:3])
6
+ version = input.split("-", 1)[0]
7
+ version = ".".join(version.split(".")[:3])
8
8
 
9
- ep_major, ep_minor, ep_patch = input.split(".")
9
+ ep_major, ep_minor, ep_patch = version.split(".")
10
10
  return int(ep_major), int(ep_minor), int(ep_patch)
11
11
  except Exception as e:
12
12
  raise ValueError(f"Invalid version string '{input}'. Error: {e}")
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: js7-client-python
3
- Version: 2.0.12
3
+ Version: 2.0.13
4
4
  Summary: Python Client for the JOC Cockpit REST API
5
5
  Author: Marcel Kerth
6
6
  License: GNU GENERAL PUBLIC LICENSE
@@ -123,6 +123,9 @@ js7/api/joc/http/v_2_6_5/joc/cluster/restart.py,sha256=tH9ZtM-9Hwb6HSk29g2pVcChF
123
123
  js7/api/joc/http/v_2_6_5/joc/cluster/run.py,sha256=Ey0uqnERoxZkEhNeKix35OxkNA3Fi3ubZDKAIKONcGA,880
124
124
  js7/api/joc/http/v_2_6_5/joc/cluster/switch_member.py,sha256=azx0tcsWo1P2OIBwh1TgSRlTVKMFAWKH7Q6XQNHLZcs,904
125
125
  js7/api/joc/http/v_2_6_5/joc/proxies/restart.py,sha256=7caLRS08KAMasIYdFueKAKV2mzZtQVkguCOoA4d0l38,843
126
+ js7/api/joc/http/v_2_6_5/note/note.py,sha256=6u0Wo4DNVoBAK7xue8dOv_qXdEc8OU3jacbP44xX0AA,851
127
+ js7/api/joc/http/v_2_6_5/note/post/add.py,sha256=H7yTVHIQM5chP0LH5Fcym4inzJSGajUTCd2XiossxP8,847
128
+ js7/api/joc/http/v_2_6_5/order/log.py,sha256=64yEuKdlIRLVU_KkAhUGiioNjmpaesO9rthKAtwp6fU,839
126
129
  js7/api/joc/http/v_2_6_5/orders/add.py,sha256=2a-kMylkPhPpw3QnP6wRs6L25zY3ZDSR7y6WL2fYy9g,834
127
130
  js7/api/joc/http/v_2_6_5/orders/cancel.py,sha256=P9wfBiLibv1GbqZbsZdtw5P_pe7Y2fO_ju1ylNyenz0,832
128
131
  js7/api/joc/http/v_2_6_5/orders/confirm.py,sha256=vDv17-8dX3jIeDdr3dRZeyZoflAs-UFxOVIttgDFAWE,836
@@ -132,19 +135,21 @@ js7/api/joc/http/v_2_6_5/orders/orders.py,sha256=0q5tEyuHOqNkK3X3gbf4ljPw-eEpC8t
132
135
  js7/api/joc/http/v_2_6_5/orders/remove_when_terminated.py,sha256=QZiBKZT7f6iUm4uo--NDrkPYtCDyYLUOXV8QQUo-ooc,872
133
136
  js7/api/joc/http/v_2_6_5/orders/resume.py,sha256=ur-UzOp02KV5I9bswpLlq1pJg7zyTQRX9hvYlyA_or0,830
134
137
  js7/api/joc/http/v_2_6_5/orders/suspend.py,sha256=ZqPKZ-BIXhpGsH3_LcucjKroTwVJdBrsHGV67VII72E,838
138
+ js7/api/joc/http/v_2_6_5/orders/overview/summary.py,sha256=-8RvrB7EMhkz0ik32fXsrm4aL5Jc5ICi4QqiyMXew_E,877
135
139
  js7/api/joc/http/v_2_6_5/settings/settings.py,sha256=nINVNzDomFEs28iyyIR6dgs6S0fbFMDVHTz-yafOy2M,745
136
140
  js7/api/joc/http/v_2_6_5/settings/store.py,sha256=OjZ--sutdkgmLkkgRt3wTtSX5YzRrWr3b5k9hvr4LXI,839
137
141
  js7/api/joc/http/v_2_6_5/tasks/history.py,sha256=Z5-VmzDJlusltGs-AqvSMrPfrUps94GBUaXTy7YlL94,854
138
142
  js7/api/joc/http/v_2_6_5/workflow/transition.py,sha256=-AL_8tLXkmCqldFeVmVriIMn1H0oQPzVhn9xat-yLEY,845
139
143
  js7/api/joc/http/v_2_6_5/workflow/workflow.py,sha256=lWOlKBRHL6PycROWa1Bm2UheBrV0MqGsjzK1qUau1n8,850
140
144
  js7/api/joc/http/v_2_6_5/workflows/resume.py,sha256=FcwSYCOyLyj4jAdv9wvQ-8ddRn4wR_Gr5CSdpjGCtJc,838
145
+ js7/api/joc/http/v_2_6_5/workflows/search.py,sha256=4DjC9RBIvc4o3tlIFW_CdxdhGnlTFmjjjxdibTHOsqg,880
141
146
  js7/api/joc/http/v_2_6_5/workflows/skip.py,sha256=L2AzRfD1lFbPzjavgOFrjyA9R9ptbeLKzP4a8PTctM0,844
142
147
  js7/api/joc/http/v_2_6_5/workflows/stop.py,sha256=1KZZTe9wZEsyB0pQkm6RXAthY-_opfb8RA7aiR8tRhI,850
143
148
  js7/api/joc/http/v_2_6_5/workflows/suspend.py,sha256=tJza-y10p-QWOqXNtGYekhrHGrNMbOI2xu2llVsFccQ,840
144
149
  js7/api/joc/http/v_2_6_5/workflows/unskip.py,sha256=hGPAPAMjekg31zUGST5tX6WTetICsq_DgtzSlORFNZI,848
145
150
  js7/api/joc/http/v_2_6_5/workflows/unstop.py,sha256=4z5GQjKLg69JZerTkYQSv7dOQ1GHs8K0oo1ouIWBb7M,854
146
151
  js7/api/joc/http/v_2_6_5/workflows/workflows.py,sha256=zxCZgU2JQ8ywgSvcQWyEfrAVRlrpZdfmuibmZNs6KtU,856
147
- js7/client/client.py,sha256=qi65uu-sghASCCLLTTTyOm7T70BiiaMIN29KfukS37Y,8648
152
+ js7/client/client.py,sha256=jkZKoGXHDqxzmlPzeJIXWGusQYSrsjHyRMRiywlmZrs,8777
148
153
  js7/client/context.py,sha256=aGdVHPDAiAm9Tbic2M1qOEJAs6t240yVO_lVlgIn1yE,1363
149
154
  js7/client/action/agent/confirm_node_loss_agent_action.py,sha256=GVdT0VD0k7ti5wC_QNXiYCv6YzYMZe5686IPbewNZeY,1894
150
155
  js7/client/action/agent/delete_subagent_action.py,sha256=O3mEjMaj-iZDK24GYfRRxQQ7xXz4FC1qoHMiVLtW_Kk,1943
@@ -266,18 +271,23 @@ js7/client/action/joc/restart_service_action.py,sha256=DelYWUzHf4jHkwB1rJ40T_Ry-
266
271
  js7/client/action/joc/run_service_action.py,sha256=3MCTHCXn8aTzN8z3VY_z2N9oE5GBB-9V3C-7fMo4kew,2292
267
272
  js7/client/action/joc/store_settings_action.py,sha256=Y9AVxbPTJoG2hYwVunKbCp3idPTt356Z8NmxdFzZVHI,1662
268
273
  js7/client/action/joc/switch_over_action.py,sha256=UEw4b0i4TiM1zvyEHE-3FrKvD6lFyFc3mOTpTEhaEKw,2523
274
+ js7/client/action/note/get_note_action.py,sha256=xmsuDCN5GRj7QpD56UcIo0xDBdf7JIDP5MGLq0uJ1n0,1484
275
+ js7/client/action/note/post_to_note_action.py,sha256=mMQT6TsbjzRsQUVo2ZBdMqtcXWY2Tyi79q0RKyPFyXc,2590
269
276
  js7/client/action/order/add_orders_action.py,sha256=HbSSy7hKqANT2QvAnJBbTYsKgNdaOGQM55uW0xPjavk,3381
270
277
  js7/client/action/order/cancel_orders_action.py,sha256=-bXqqabOm2Pqd3c4uaNKYDA-227NcK81BSMeuBGHlIY,2658
271
278
  js7/client/action/order/confirm_orders_action.py,sha256=5fVDjSYvKsxvMKrYU554SdwQnp46DF1ZkpNyJiodC2U,2386
272
279
  js7/client/action/order/continue_orders_action.py,sha256=8OWESo1QGqa1xvlfLYNiFXQLgxwat4WuqOp2kFlCOVk,2378
273
280
  js7/client/action/order/get_order_history_action.py,sha256=d7mY5KEPmI_04b5Jc0J_53ODJRl4TzTkqtvrsP5WeiA,2446
281
+ js7/client/action/order/get_order_log_action.py,sha256=A42PA1fRbVS5WMbromQzeyWz4nWCLUNQfZQBV00rL8M,1359
274
282
  js7/client/action/order/get_orders_action.py,sha256=bMJTeVpOyfHOQtLtG3EaWsiuePdmDVuU8rI3-cifLMM,2967
283
+ js7/client/action/order/get_orders_overview_action.py,sha256=6664h63y-zeBrCMC5XFCcQ5CIvcnwFsq8G5MY4IIpx0,1628
275
284
  js7/client/action/order/remove_terminated_orders_action.py,sha256=Zg8437q8X16LdMTs18aoZGVMqKLIDpVSEVHeLB4oBUE,2425
276
285
  js7/client/action/order/resume_orders_action.py,sha256=MpCfQaHfAdRQERaLl2fnCYuqfzE7_hT8qKHhlMa9LSw,2785
277
286
  js7/client/action/order/suspend_orders_action.py,sha256=m_gREeCkKKcimm2PispX5AUkRMgwzyTEg5DBhIE4tVs,2782
278
287
  js7/client/action/task/get_task_history_info_action.py,sha256=1hDRGCn5QHkhmXizf2sYFAR1OOM18EYKrW39ZCy1DAo,2841
279
288
  js7/client/action/workflow/get_workflow_versions_action.py,sha256=ig0ExrOQEBhYmPr2z6LN25STV0l9lowo2Coi1UrQxCo,3452
280
289
  js7/client/action/workflow/resume_workflows_action.py,sha256=Kq5pQuuLDHfqzlpiX-efpyOtUcOI9cKeM55-4z7VTr4,1982
290
+ js7/client/action/workflow/search_workflows_action.py,sha256=bxoZ-19ZzaAk7dMc6nXhzCl1SL_flGOwUxeM5XYRo-8,1592
281
291
  js7/client/action/workflow/set_workflow_version_as_current_action.py,sha256=dmBxfvNnE582WcEykobnVXa9fO474fCJslCLQjyKppg,2300
282
292
  js7/client/action/workflow/skip_job_instructions_action.py,sha256=a0VCWaMuKXJno3Es6c2TqO6fMt0UYijCW5GRl4LIv6Y,2146
283
293
  js7/client/action/workflow/stop_job_instructions_action.py,sha256=H9NZ3amiqj0y_mEJHUYwTNVPIKiSctMeYS9PraJurRY,2316
@@ -306,11 +316,13 @@ js7/client/feature/inventory/manage_repository.py,sha256=DMbrRcQ5hMNJ_-JNZ_hpe3k
306
316
  js7/client/feature/joc/joc.py,sha256=kO4J5lb2GK4okmSedO4TFL_9_mx-olKswmDDipgdaNs,417
307
317
  js7/client/feature/joc/manage.py,sha256=MsUkFkds1TltZhQJu29nSXKuWl4CpZG1nsbxr8lQrvk,4231
308
318
  js7/client/feature/joc/operate.py,sha256=NAqcGD-0q-if3uUm59-N7C3VKc_-0Je9-ZNJ4KiNuMs,4416
309
- js7/client/feature/order/manage.py,sha256=Bngo8F-PZSrpv4jbAgkFdWHHT7eyAY2z5GfyOMR6zsU,2410
319
+ js7/client/feature/note/manage.py,sha256=ZAzLJ5XE8OEwBRKoQxHro_zoJSmYZZDwTIlwITXCf_8,2678
320
+ js7/client/feature/note/note.py,sha256=YI7v7NYGFPUtVlvudwOrZpilXxqKs-UelSXzMv20rWQ,288
321
+ js7/client/feature/order/manage.py,sha256=p9zEBa_gJ-R5jjeiqInr1YEx_0V04Y_7IC6VUzo-uBI,5464
310
322
  js7/client/feature/order/operate.py,sha256=3xqTAVVQ-xEvFAu6BdpN74oz_itRcRmCuhmoc5gdtqY,11070
311
323
  js7/client/feature/order/order.py,sha256=NgRKZvFI_PLm4VDXbyTmSqSWpFDn6ZU9nXaurWTM_Sc,420
312
324
  js7/client/feature/task/task.py,sha256=5cyCcrqsjyFejLNK-u5ycOTOXccFbWo5ebI6NBwJPQQ,1450
313
- js7/client/feature/workflow/manage.py,sha256=Sk3itbh8bMU7mOyWib6GFDMCuBmXvvfS7pW1bV7CbH0,3352
325
+ js7/client/feature/workflow/manage.py,sha256=h8iu8h2HQRQ62HQlFuxTwSz6k8XYOv2QyANIILIL18Q,4499
314
326
  js7/client/feature/workflow/operate.py,sha256=pHz-WARh8HlIn9LL2FSGQqEct_OkY6FjHTRnvqwPrYA,9279
315
327
  js7/client/feature/workflow/workflow.py,sha256=hWp3VfPuJpnxR95pmcImSPkgWnHsTWoexrwiXgnICi4,427
316
328
  js7/java/lib/3rd-party/bcpg-jdk15to18-1.78.1.jar,sha256=Xh5JK2j6Y_tri2Tc_q3BSz6U0tt7WvR1_RD6kk_7TjI,494219
@@ -340,7 +352,7 @@ js7/model/configuration/auth_configuration.py,sha256=PkTW-Iz_Ass6U9k2oG-ohkfp75t
340
352
  js7/model/configuration/client_configuration.py,sha256=cGSsUee0Gws1ZR-3YvzpmadRyWztIM4YERD0CIqSpr0,176
341
353
  js7/model/configuration/http_configuration.py,sha256=NJOL8vNWok-uFbEl8xcCHDLi1S35Th1RD5_oZMnHMHk,230
342
354
  js7/model/error/http/joc_exceptions.py,sha256=VX4LTZHAlHEHFnOVJ3bNdbAouye0ns2GTmrMDGwyZsc,3605
343
- js7/model/private/http/joc/joc_v_2_6_5.py,sha256=kFLk8BVk4QOA3mgpzNp1yt2YSDpQv_p-WAnHxYtKidk,111340
355
+ js7/model/private/http/joc/joc_v_2_6_5.py,sha256=CJcCK02jlSRuBQPi3l4u-eYnXgHBd1HkZq-u3BoF5ZE,120254
344
356
  js7/model/public/client/common/__init__.py,sha256=-DE3i42ya-kFv7vs43z0IYaL-VB2rUg1fmuB56Z-W_Q,823
345
357
  js7/model/public/client/common/accounts.py,sha256=EuRXwRPYk05-3vlsXqxJaKmrpg-btuohTe8X-cnjDa4,574
346
358
  js7/model/public/client/common/audit_log.py,sha256=kd5LXYGwjkRnOGzHXYIVjFN52a0-iV-UYkBzQWN3azI,201
@@ -372,7 +384,7 @@ js7/model/public/client/input/__init__.py,sha256=OCHWnjdXgRWu88YcSAdROxCZXCQMSrE
372
384
  js7/model/public/client/input/add_order.py,sha256=06Xz4VlLO9KD8fvIosfs8ZemhqaZC7ukBshPidnvQb4,1865
373
385
  js7/service/http_service.py,sha256=WLt4f68z55QZnTDzKQJXixk31C8gVYU4BlVBqMMtQT4,7238
374
386
  js7/util/detect_archive_type.py,sha256=hbuFJ_7Rn-S1XZ9rT3fncQZ5GPDcNyIJjRE--m0a3Fo,933
375
- js7/util/version_to_tuple.py,sha256=T_6q3zRR3y3n_Td39w2PUveKjC9R46X-FbQxWMpTtXM,400
387
+ js7/util/version_to_tuple.py,sha256=-1gzXgbjDz21Ka47hcENefOb7oak_zIwywuC7f7sqPs,408
376
388
  js7/util/bytes_converter/bytes_to_archive_bytes.py,sha256=wSzAyl-gdTPXP-jnvyIGawaZHmoMPOwOJnmz9OB47E4,1509
377
389
  js7/util/bytes_converter/bytes_to_file.py,sha256=49fZ_HtbBujTZnQIk0Wv4t5hHA8V-JauMj7ncQqzIpk,287
378
390
  js7/util/bytes_converter/files_to_bytes.py,sha256=TI9RM17E_7AMWElMPFOTfKJpVXs4Xfb4vRUtt7tMnPU,1421
@@ -380,8 +392,8 @@ js7/util/bytes_converter/read_bytes_archive_files_to_bytes.py,sha256=I_l3aNwSQEI
380
392
  js7/util/bytes_converter/sign_to_bytes.py,sha256=0YviV01F5GkuA51tJegP5F015qNjtu_IVo-vBYUhI7M,3165
381
393
  js7/util/str_converter/order_id_to_order_name.py,sha256=dt8yCGvvWrYZQwfvo0cS6xGxRoTPcMDCoRFP4nUqrWU,170
382
394
  js7/validator/http/joc_http_status_validator.py,sha256=sSaSrN-mKHpqL2E_FHcDHaWfIjsGOUvgchAnTbZT6HE,4292
383
- js7_client_python-2.0.12.dist-info/licenses/LICENSE,sha256=OXLcl0T2SZ8Pmy2_dmlvKuetivmyPd5m1q-Gyd-zaYY,35149
384
- js7_client_python-2.0.12.dist-info/METADATA,sha256=iv98qu4PLHK89Nd02Rl1gTPrYylOtV-_bJLR0tJAmL8,44068
385
- js7_client_python-2.0.12.dist-info/WHEEL,sha256=aeYiig01lYGDzBgS8HxWXOg3uV61G9ijOsup-k9o1sk,91
386
- js7_client_python-2.0.12.dist-info/top_level.txt,sha256=tnksxOjnJy3n300w-75S3QPBW3CKJJ-jKZmzG2pioXU,4
387
- js7_client_python-2.0.12.dist-info/RECORD,,
395
+ js7_client_python-2.0.13.dist-info/licenses/LICENSE,sha256=OXLcl0T2SZ8Pmy2_dmlvKuetivmyPd5m1q-Gyd-zaYY,35149
396
+ js7_client_python-2.0.13.dist-info/METADATA,sha256=I8m-Tt3Q7J_4hZx_U2eDjNHYSzGjLuPjoUy7Fn1hal0,44068
397
+ js7_client_python-2.0.13.dist-info/WHEEL,sha256=aeYiig01lYGDzBgS8HxWXOg3uV61G9ijOsup-k9o1sk,91
398
+ js7_client_python-2.0.13.dist-info/top_level.txt,sha256=tnksxOjnJy3n300w-75S3QPBW3CKJJ-jKZmzG2pioXU,4
399
+ js7_client_python-2.0.13.dist-info/RECORD,,