diff --git a/.gitignore b/.gitignore index f716c20a..2c0cdd59 100644 --- a/.gitignore +++ b/.gitignore @@ -162,3 +162,5 @@ cython_debug/ # and can be added to the global gitignore or merged into this file. For a more nuclear # option (not recommended) you can uncomment the following to ignore the entire idea folder. #.idea/ + +playground/ diff --git a/nominal/_api/combined/__init__.py b/nominal/_api/combined/__init__.py index 16da804e..fd00852c 100644 --- a/nominal/_api/combined/__init__.py +++ b/nominal/_api/combined/__init__.py @@ -11,6 +11,7 @@ 'datasource_logset_api', 'datasource_pagination_api', 'event', + 'ingest_api', 'openapi', 'scout', 'scout_api', @@ -22,9 +23,11 @@ 'scout_chartdefinition_api', 'scout_checklistexecution_api', 'scout_checks_api', + 'scout_comparisonnotebook_api', 'scout_comparisonrun_api', 'scout_compute_api', 'scout_compute_api_deprecated', + 'scout_compute_representation_api', 'scout_compute_resolved_api', 'scout_dataexport_api', 'scout_datareview_api', @@ -58,9 +61,10 @@ 'timeseries_logicalseries_api', 'timeseries_seriescache', 'timeseries_seriescache_api', + 'upload_api', ] __conjure_generator_version__ = "4.9.0" -__version__ = "0.373.0+46.g8cf0464" +__version__ = "0.407.0+3.ga82f7fe" diff --git a/nominal/_api/combined/_impl.py b/nominal/_api/combined/_impl.py index d1acbc12..0ccf0d84 100644 --- a/nominal/_api/combined/_impl.py +++ b/nominal/_api/combined/_impl.py @@ -986,37 +986,6 @@ def update_my_settings(self, auth_header: str, user_settings: "authentication_ap _decoder = ConjureDecoder() return _decoder.decode(_response.json(), authentication_api_UserSettings, self._return_none_for_unknown_union_types) - def get_my_org(self, auth_header: str) -> "authentication_api_OrgV2": - """ - Gets the org of the authenticated user. - """ - - _headers: Dict[str, Any] = { - 'Accept': 'application/json', - 'Authorization': auth_header, - } - - _params: Dict[str, Any] = { - } - - _path_params: Dict[str, Any] = { - } - - _json: Any = None - - _path = '/authentication/v2/org' - _path = _path.format(**_path_params) - - _response: Response = self._request( - 'GET', - self._uri + _path, - params=_params, - headers=_headers, - json=_json) - - _decoder = ConjureDecoder() - return _decoder.decode(_response.json(), authentication_api_OrgV2, self._return_none_for_unknown_union_types) - def get_my_org_settings(self, auth_header: str) -> "authentication_api_OrgSettings": """ Gets the settings of the org of the authenticated user. @@ -1228,47 +1197,6 @@ def default_time_range_type(self) -> Optional["authentication_api_DefaultTimeRan authentication_api_OrgSettings.__module__ = "scout_service_api.authentication_api" -class authentication_api_OrgV2(ConjureBeanType): - - @builtins.classmethod - def _fields(cls) -> Dict[str, ConjureFieldDefinition]: - return { - 'rid': ConjureFieldDefinition('rid', authentication_api_OrgRid), - 'name': ConjureFieldDefinition('name', str), - 'display_name': ConjureFieldDefinition('displayName', str), - 'logo_url': ConjureFieldDefinition('logoUrl', str) - } - - __slots__: List[str] = ['_rid', '_name', '_display_name', '_logo_url'] - - def __init__(self, display_name: str, logo_url: str, name: str, rid: str) -> None: - self._rid = rid - self._name = name - self._display_name = display_name - self._logo_url = logo_url - - @builtins.property - def rid(self) -> str: - return self._rid - - @builtins.property - def name(self) -> str: - return self._name - - @builtins.property - def display_name(self) -> str: - return self._display_name - - @builtins.property - def logo_url(self) -> str: - return self._logo_url - - -authentication_api_OrgV2.__name__ = "OrgV2" -authentication_api_OrgV2.__qualname__ = "OrgV2" -authentication_api_OrgV2.__module__ = "scout_service_api.authentication_api" - - class authentication_api_SearchUsersResponse(ConjureBeanType): @builtins.classmethod @@ -1298,6 +1226,24 @@ def total(self) -> int: authentication_api_SearchUsersResponse.__module__ = "scout_service_api.authentication_api" +class authentication_api_TimezoneSetting(ConjureEnumType): + + LOCAL = 'LOCAL' + '''LOCAL''' + UTC = 'UTC' + '''UTC''' + UNKNOWN = 'UNKNOWN' + '''UNKNOWN''' + + def __reduce_ex__(self, proto): + return self.__class__, (self.name,) + + +authentication_api_TimezoneSetting.__name__ = "TimezoneSetting" +authentication_api_TimezoneSetting.__qualname__ = "TimezoneSetting" +authentication_api_TimezoneSetting.__module__ = "scout_service_api.authentication_api" + + class authentication_api_UpdateMyProfileRequest(ConjureBeanType): @builtins.classmethod @@ -1327,14 +1273,16 @@ class authentication_api_UserSettings(ConjureBeanType): def _fields(cls) -> Dict[str, ConjureFieldDefinition]: return { 'default_time_range_type': ConjureFieldDefinition('defaultTimeRangeType', OptionalTypeWrapper[authentication_api_DefaultTimeRangeTypeSetting]), - 'appearance': ConjureFieldDefinition('appearance', OptionalTypeWrapper[authentication_api_AppearanceSetting]) + 'appearance': ConjureFieldDefinition('appearance', OptionalTypeWrapper[authentication_api_AppearanceSetting]), + 'timezone': ConjureFieldDefinition('timezone', OptionalTypeWrapper[authentication_api_TimezoneSetting]) } - __slots__: List[str] = ['_default_time_range_type', '_appearance'] + __slots__: List[str] = ['_default_time_range_type', '_appearance', '_timezone'] - def __init__(self, appearance: Optional["authentication_api_AppearanceSetting"] = None, default_time_range_type: Optional["authentication_api_DefaultTimeRangeTypeSetting"] = None) -> None: + def __init__(self, appearance: Optional["authentication_api_AppearanceSetting"] = None, default_time_range_type: Optional["authentication_api_DefaultTimeRangeTypeSetting"] = None, timezone: Optional["authentication_api_TimezoneSetting"] = None) -> None: self._default_time_range_type = default_time_range_type self._appearance = appearance + self._timezone = timezone @builtins.property def default_time_range_type(self) -> Optional["authentication_api_DefaultTimeRangeTypeSetting"]: @@ -1344,6 +1292,10 @@ def default_time_range_type(self) -> Optional["authentication_api_DefaultTimeRan def appearance(self) -> Optional["authentication_api_AppearanceSetting"]: return self._appearance + @builtins.property + def timezone(self) -> Optional["authentication_api_TimezoneSetting"]: + return self._timezone + authentication_api_UserSettings.__name__ = "UserSettings" authentication_api_UserSettings.__qualname__ = "UserSettings" @@ -1358,18 +1310,16 @@ def _fields(cls) -> Dict[str, ConjureFieldDefinition]: 'rid': ConjureFieldDefinition('rid', authentication_api_UserRid), 'org_rid': ConjureFieldDefinition('orgRid', authentication_api_OrgRid), 'email': ConjureFieldDefinition('email', str), - 'email_verified': ConjureFieldDefinition('emailVerified', bool), 'display_name': ConjureFieldDefinition('displayName', str), 'avatar_url': ConjureFieldDefinition('avatarUrl', str) } - __slots__: List[str] = ['_rid', '_org_rid', '_email', '_email_verified', '_display_name', '_avatar_url'] + __slots__: List[str] = ['_rid', '_org_rid', '_email', '_display_name', '_avatar_url'] - def __init__(self, avatar_url: str, display_name: str, email: str, email_verified: bool, org_rid: str, rid: str) -> None: + def __init__(self, avatar_url: str, display_name: str, email: str, org_rid: str, rid: str) -> None: self._rid = rid self._org_rid = org_rid self._email = email - self._email_verified = email_verified self._display_name = display_name self._avatar_url = avatar_url @@ -1385,10 +1335,6 @@ def org_rid(self) -> str: def email(self) -> str: return self._email - @builtins.property - def email_verified(self) -> bool: - return self._email_verified - @builtins.property def display_name(self) -> str: return self._display_name @@ -1406,6 +1352,35 @@ def avatar_url(self) -> str: authentication_api_UserV2.__module__ = "scout_service_api.authentication_api" +class authorization_AppendOrgAssignmentRulesRequest(ConjureBeanType): + + @builtins.classmethod + def _fields(cls) -> Dict[str, ConjureFieldDefinition]: + return { + 'rules': ConjureFieldDefinition('rules', List[authorization_OrgAssignmentRule]), + 'last_version': ConjureFieldDefinition('lastVersion', int) + } + + __slots__: List[str] = ['_rules', '_last_version'] + + def __init__(self, last_version: int, rules: List["authorization_OrgAssignmentRule"]) -> None: + self._rules = rules + self._last_version = last_version + + @builtins.property + def rules(self) -> List["authorization_OrgAssignmentRule"]: + return self._rules + + @builtins.property + def last_version(self) -> int: + return self._last_version + + +authorization_AppendOrgAssignmentRulesRequest.__name__ = "AppendOrgAssignmentRulesRequest" +authorization_AppendOrgAssignmentRulesRequest.__qualname__ = "AppendOrgAssignmentRulesRequest" +authorization_AppendOrgAssignmentRulesRequest.__module__ = "scout_service_api.authorization" + + class authorization_AuthorizationRequest(ConjureBeanType): @builtins.classmethod @@ -1532,332 +1507,45 @@ def check_admin(self, auth_header: str) -> None: return - -authorization_AuthorizationService.__name__ = "AuthorizationService" -authorization_AuthorizationService.__qualname__ = "AuthorizationService" -authorization_AuthorizationService.__module__ = "scout_service_api.authorization" - - -class authorization_RegistrationRequest(ConjureBeanType): - - @builtins.classmethod - def _fields(cls) -> Dict[str, ConjureFieldDefinition]: - return { - 'rids': ConjureFieldDefinition('rids', List[str]), - 'organization_rid': ConjureFieldDefinition('organizationRid', OptionalTypeWrapper[str]) - } - - __slots__: List[str] = ['_rids', '_organization_rid'] - - def __init__(self, rids: List[str], organization_rid: Optional[str] = None) -> None: - self._rids = rids - self._organization_rid = organization_rid - - @builtins.property - def rids(self) -> List[str]: - return self._rids - - @builtins.property - def organization_rid(self) -> Optional[str]: - """ - If omitted, will use the user's organizationRid. - """ - return self._organization_rid - - -authorization_RegistrationRequest.__name__ = "RegistrationRequest" -authorization_RegistrationRequest.__qualname__ = "RegistrationRequest" -authorization_RegistrationRequest.__module__ = "scout_service_api.authorization" - - -class comments_api_Comment(ConjureBeanType): - - @builtins.classmethod - def _fields(cls) -> Dict[str, ConjureFieldDefinition]: - return { - 'rid': ConjureFieldDefinition('rid', comments_api_CommentRid), - 'parent': ConjureFieldDefinition('parent', comments_api_CommentParent), - 'author_rid': ConjureFieldDefinition('authorRid', str), - 'created_at': ConjureFieldDefinition('createdAt', str), - 'edited_at': ConjureFieldDefinition('editedAt', OptionalTypeWrapper[str]), - 'deleted_at': ConjureFieldDefinition('deletedAt', OptionalTypeWrapper[str]), - 'content': ConjureFieldDefinition('content', str), - 'pinned_by': ConjureFieldDefinition('pinnedBy', OptionalTypeWrapper[str]), - 'pinned_at': ConjureFieldDefinition('pinnedAt', OptionalTypeWrapper[str]), - 'reactions': ConjureFieldDefinition('reactions', List[comments_api_Reaction]) - } - - __slots__: List[str] = ['_rid', '_parent', '_author_rid', '_created_at', '_edited_at', '_deleted_at', '_content', '_pinned_by', '_pinned_at', '_reactions'] - - def __init__(self, author_rid: str, content: str, created_at: str, parent: "comments_api_CommentParent", reactions: List["comments_api_Reaction"], rid: str, deleted_at: Optional[str] = None, edited_at: Optional[str] = None, pinned_at: Optional[str] = None, pinned_by: Optional[str] = None) -> None: - self._rid = rid - self._parent = parent - self._author_rid = author_rid - self._created_at = created_at - self._edited_at = edited_at - self._deleted_at = deleted_at - self._content = content - self._pinned_by = pinned_by - self._pinned_at = pinned_at - self._reactions = reactions - - @builtins.property - def rid(self) -> str: - """ - Unique resource identifier for the comment - """ - return self._rid - - @builtins.property - def parent(self) -> "comments_api_CommentParent": - """ - The parent of the comment. It can be a resource or another comment. - """ - return self._parent - - @builtins.property - def author_rid(self) -> str: - """ - The user who authored the comment - """ - return self._author_rid - - @builtins.property - def created_at(self) -> str: - """ - The time the comment was created - """ - return self._created_at - - @builtins.property - def edited_at(self) -> Optional[str]: - """ - The time the comment was edited. Empty if the comment has not been edited. - """ - return self._edited_at - - @builtins.property - def deleted_at(self) -> Optional[str]: - """ - The time the comment was deleted. Empty if the comment has not been deleted. - """ - return self._deleted_at - - @builtins.property - def content(self) -> str: - """ - The markdown content of the comment. - """ - return self._content - - @builtins.property - def pinned_by(self) -> Optional[str]: - """ - The user who pinned the comment. Empty if the comment is not pinned. - """ - return self._pinned_by - - @builtins.property - def pinned_at(self) -> Optional[str]: - """ - The time the comment was pinned. Empty if the comment is not pinned. - """ - return self._pinned_at - - @builtins.property - def reactions(self) -> List["comments_api_Reaction"]: - """ - The reactions on the comment - """ - return self._reactions - - -comments_api_Comment.__name__ = "Comment" -comments_api_Comment.__qualname__ = "Comment" -comments_api_Comment.__module__ = "scout_service_api.comments_api" - - -class comments_api_CommentParent(ConjureUnionType): - """The parent of a comment. It can be a resource or another comment in the case of a reply.""" - _resource: Optional["comments_api_CommentParentResource"] = None - _comment: Optional["comments_api_CommentParentComment"] = None - - @builtins.classmethod - def _options(cls) -> Dict[str, ConjureFieldDefinition]: - return { - 'resource': ConjureFieldDefinition('resource', comments_api_CommentParentResource), - 'comment': ConjureFieldDefinition('comment', comments_api_CommentParentComment) - } - - def __init__( - self, - resource: Optional["comments_api_CommentParentResource"] = None, - comment: Optional["comments_api_CommentParentComment"] = None, - type_of_union: Optional[str] = None - ) -> None: - if type_of_union is None: - if (resource is not None) + (comment is not None) != 1: - raise ValueError('a union must contain a single member') - - if resource is not None: - self._resource = resource - self._type = 'resource' - if comment is not None: - self._comment = comment - self._type = 'comment' - - elif type_of_union == 'resource': - if resource is None: - raise ValueError('a union value must not be None') - self._resource = resource - self._type = 'resource' - elif type_of_union == 'comment': - if comment is None: - raise ValueError('a union value must not be None') - self._comment = comment - self._type = 'comment' - - @builtins.property - def resource(self) -> Optional["comments_api_CommentParentResource"]: - return self._resource - - @builtins.property - def comment(self) -> Optional["comments_api_CommentParentComment"]: - return self._comment - - def accept(self, visitor) -> Any: - if not isinstance(visitor, comments_api_CommentParentVisitor): - raise ValueError('{} is not an instance of comments_api_CommentParentVisitor'.format(visitor.__class__.__name__)) - if self._type == 'resource' and self.resource is not None: - return visitor._resource(self.resource) - if self._type == 'comment' and self.comment is not None: - return visitor._comment(self.comment) - - -comments_api_CommentParent.__name__ = "CommentParent" -comments_api_CommentParent.__qualname__ = "CommentParent" -comments_api_CommentParent.__module__ = "scout_service_api.comments_api" - - -class comments_api_CommentParentVisitor: - - @abstractmethod - def _resource(self, resource: "comments_api_CommentParentResource") -> Any: - pass - - @abstractmethod - def _comment(self, comment: "comments_api_CommentParentComment") -> Any: - pass - - -comments_api_CommentParentVisitor.__name__ = "CommentParentVisitor" -comments_api_CommentParentVisitor.__qualname__ = "CommentParentVisitor" -comments_api_CommentParentVisitor.__module__ = "scout_service_api.comments_api" - - -class comments_api_CommentParentComment(ConjureBeanType): - - @builtins.classmethod - def _fields(cls) -> Dict[str, ConjureFieldDefinition]: - return { - 'comment_rid': ConjureFieldDefinition('commentRid', comments_api_CommentRid) - } - - __slots__: List[str] = ['_comment_rid'] - - def __init__(self, comment_rid: str) -> None: - self._comment_rid = comment_rid - - @builtins.property - def comment_rid(self) -> str: - """ - The resource identifier for the comment that the comment is replying to - """ - return self._comment_rid - - -comments_api_CommentParentComment.__name__ = "CommentParentComment" -comments_api_CommentParentComment.__qualname__ = "CommentParentComment" -comments_api_CommentParentComment.__module__ = "scout_service_api.comments_api" - - -class comments_api_CommentParentResource(ConjureBeanType): - - @builtins.classmethod - def _fields(cls) -> Dict[str, ConjureFieldDefinition]: - return { - 'resource_type': ConjureFieldDefinition('resourceType', comments_api_ResourceType), - 'resource_rid': ConjureFieldDefinition('resourceRid', comments_api_ResourceRid) - } - - __slots__: List[str] = ['_resource_type', '_resource_rid'] - - def __init__(self, resource_rid: str, resource_type: "comments_api_ResourceType") -> None: - self._resource_type = resource_type - self._resource_rid = resource_rid - - @builtins.property - def resource_type(self) -> "comments_api_ResourceType": - """ - The type of resource that the comment is associated with - """ - return self._resource_type - - @builtins.property - def resource_rid(self) -> str: - """ - The resource identifier for the resource that the comment is associated with. For example, a run or a workbook. - """ - return self._resource_rid - - -comments_api_CommentParentResource.__name__ = "CommentParentResource" -comments_api_CommentParentResource.__qualname__ = "CommentParentResource" -comments_api_CommentParentResource.__module__ = "scout_service_api.comments_api" - - -class comments_api_CommentsService(Service): - """ - Comments service manages conversations about resources. - """ - - def get_conversation(self, auth_header: str, resource_rid: str, resource_type: "comments_api_ResourceType") -> "comments_api_Conversation": + def get_access_token(self, request: "authorization_GetAccessTokenRequest") -> "authorization_GetAccessTokenResponse": """ - A conversation is a fully resolved comment tree. It includes all comments for the given resource -and all the nested comments/replies to those comments. + Provide an OIDC ID and access token to get a Nominal access token, +suitable for making API requests. Its expiry will match that of the +input access token, capped at 24h. +Throws NotAuthorized if either token is invalid or if the OIDC provider +is not known. """ _headers: Dict[str, Any] = { 'Accept': 'application/json', - 'Authorization': auth_header, + 'Content-Type': 'application/json', } _params: Dict[str, Any] = { } _path_params: Dict[str, Any] = { - 'resourceType': resource_type, - 'resourceRid': resource_rid, } - _json: Any = None + _json: Any = ConjureEncoder().default(request) - _path = '/comments/v1/conversations/{resourceType}/{resourceRid}' + _path = '/authorization/v1/access-token' _path = _path.format(**_path_params) _response: Response = self._request( - 'GET', + 'POST', self._uri + _path, params=_params, headers=_headers, json=_json) _decoder = ConjureDecoder() - return _decoder.decode(_response.json(), comments_api_Conversation, self._return_none_for_unknown_union_types) + return _decoder.decode(_response.json(), authorization_GetAccessTokenResponse, self._return_none_for_unknown_union_types) - def get_conversation_count(self, auth_header: str, resource_rid: str, resource_type: "comments_api_ResourceType", include_deleted: Optional[bool] = None) -> int: + def get_org_assignment_rules(self, auth_header: str) -> "authorization_OrgAssignmentRulesResponse": """ - Returns the number of comments in a conversation. + Gets the current org assignment rules. +Throws if the caller is not an admin. """ _headers: Dict[str, Any] = { @@ -1866,17 +1554,14 @@ def get_conversation_count(self, auth_header: str, resource_rid: str, resource_t } _params: Dict[str, Any] = { - 'includeDeleted': include_deleted, } _path_params: Dict[str, Any] = { - 'resourceType': resource_type, - 'resourceRid': resource_rid, } _json: Any = None - _path = '/comments/v1/conversations/{resourceType}/{resourceRid}/count' + _path = '/authorization/v1/org-assignment-rules' _path = _path.format(**_path_params) _response: Response = self._request( @@ -1887,15 +1572,18 @@ def get_conversation_count(self, auth_header: str, resource_rid: str, resource_t json=_json) _decoder = ConjureDecoder() - return _decoder.decode(_response.json(), int, self._return_none_for_unknown_union_types) + return _decoder.decode(_response.json(), authorization_OrgAssignmentRulesResponse, self._return_none_for_unknown_union_types) - def get_comment(self, auth_header: str, comment_rid: str) -> "comments_api_Comment": + def set_all_org_assignment_rules(self, auth_header: str, request: "authorization_SetOrgAssignmentRulesRequest") -> "authorization_OrgAssignmentRulesResponse": """ - Get a comment identified by its RID + Sets the org assignment rules, requiring the last known version +to avoid race conditions. +Throws if the caller is not an admin. """ _headers: Dict[str, Any] = { 'Accept': 'application/json', + 'Content-Type': 'application/json', 'Authorization': auth_header, } @@ -1903,27 +1591,28 @@ def get_comment(self, auth_header: str, comment_rid: str) -> "comments_api_Comme } _path_params: Dict[str, Any] = { - 'commentRid': comment_rid, } - _json: Any = None + _json: Any = ConjureEncoder().default(request) - _path = '/comments/v1/comments/{commentRid}' + _path = '/authorization/v1/org-assignment-rules/set-all' _path = _path.format(**_path_params) _response: Response = self._request( - 'GET', + 'POST', self._uri + _path, params=_params, headers=_headers, json=_json) _decoder = ConjureDecoder() - return _decoder.decode(_response.json(), comments_api_Comment, self._return_none_for_unknown_union_types) + return _decoder.decode(_response.json(), authorization_OrgAssignmentRulesResponse, self._return_none_for_unknown_union_types) - def create_comment(self, auth_header: str, request: "comments_api_CreateCommentRequest") -> "comments_api_Comment": + def append_org_assignment_rules(self, auth_header: str, request: "authorization_AppendOrgAssignmentRulesRequest") -> "authorization_OrgAssignmentRulesResponse": """ - Create a comment on a resource + Appends new org assignment rules to the current rules. +Pass the last known version to avoid race condition. +Throws if the caller is not an admin. """ _headers: Dict[str, Any] = { @@ -1940,7 +1629,7 @@ def create_comment(self, auth_header: str, request: "comments_api_CreateCommentR _json: Any = ConjureEncoder().default(request) - _path = '/comments/v1/comments' + _path = '/authorization/v1/org-assignment-rules/append' _path = _path.format(**_path_params) _response: Response = self._request( @@ -1951,16 +1640,16 @@ def create_comment(self, auth_header: str, request: "comments_api_CreateCommentR json=_json) _decoder = ConjureDecoder() - return _decoder.decode(_response.json(), comments_api_Comment, self._return_none_for_unknown_union_types) + return _decoder.decode(_response.json(), authorization_OrgAssignmentRulesResponse, self._return_none_for_unknown_union_types) - def edit_comment(self, auth_header: str, comment_rid: str, request: "comments_api_EditCommentRequest") -> "comments_api_Comment": + def get_user_filters(self, auth_header: str) -> "authorization_UserFiltersResponse": """ - Edit an existing comment + Gets the user filters. +Throws if the caller is not an admin. """ _headers: Dict[str, Any] = { 'Accept': 'application/json', - 'Content-Type': 'application/json', 'Authorization': auth_header, } @@ -1968,31 +1657,34 @@ def edit_comment(self, auth_header: str, comment_rid: str, request: "comments_ap } _path_params: Dict[str, Any] = { - 'commentRid': comment_rid, } - _json: Any = ConjureEncoder().default(request) + _json: Any = None - _path = '/comments/v1/comments/{commentRid}' + _path = '/authorization/v1/user-filters' _path = _path.format(**_path_params) _response: Response = self._request( - 'PUT', + 'GET', self._uri + _path, params=_params, headers=_headers, json=_json) _decoder = ConjureDecoder() - return _decoder.decode(_response.json(), comments_api_Comment, self._return_none_for_unknown_union_types) + return _decoder.decode(_response.json(), authorization_UserFiltersResponse, self._return_none_for_unknown_union_types) - def delete_comment(self, auth_header: str, comment_rid: str) -> "comments_api_Comment": + def set_user_filter_for_one_org(self, auth_header: str, request: "authorization_SetUserFilterForOneOrgRequest") -> "authorization_UserFiltersResponse": """ - Delete an existing comment + Sets the user filters for the specified org, overwriting +any existing filter. Requires the last known version to avoid +race conditions. +Throws if the caller is not an admin. """ _headers: Dict[str, Any] = { 'Accept': 'application/json', + 'Content-Type': 'application/json', 'Authorization': auth_header, } @@ -2000,31 +1692,33 @@ def delete_comment(self, auth_header: str, comment_rid: str) -> "comments_api_Co } _path_params: Dict[str, Any] = { - 'commentRid': comment_rid, } - _json: Any = None + _json: Any = ConjureEncoder().default(request) - _path = '/comments/v1/comments/{commentRid}' + _path = '/authorization/v1/user-filters/set-one' _path = _path.format(**_path_params) _response: Response = self._request( - 'DELETE', + 'POST', self._uri + _path, params=_params, headers=_headers, json=_json) _decoder = ConjureDecoder() - return _decoder.decode(_response.json(), comments_api_Comment, self._return_none_for_unknown_union_types) + return _decoder.decode(_response.json(), authorization_UserFiltersResponse, self._return_none_for_unknown_union_types) - def pin_comment(self, auth_header: str, comment_rid: str) -> "comments_api_Comment": + def remove_user_filter_for_one_org(self, auth_header: str, request: "authorization_RemoveUserFilterForOneOrgRequest") -> "authorization_UserFiltersResponse": """ - Pin a comment to the top of the conversation + Removes the user filter for an org. Requires the last known +version to avoid race conditions. +Throws if the caller is not an admin. """ _headers: Dict[str, Any] = { 'Accept': 'application/json', + 'Content-Type': 'application/json', 'Authorization': auth_header, } @@ -2032,12 +1726,11 @@ def pin_comment(self, auth_header: str, comment_rid: str) -> "comments_api_Comme } _path_params: Dict[str, Any] = { - 'commentRid': comment_rid, } - _json: Any = None + _json: Any = ConjureEncoder().default(request) - _path = '/comments/v1/comments/{commentRid}/pin' + _path = '/authorization/v1/user-filters/remove-one' _path = _path.format(**_path_params) _response: Response = self._request( @@ -2048,1013 +1741,857 @@ def pin_comment(self, auth_header: str, comment_rid: str) -> "comments_api_Comme json=_json) _decoder = ConjureDecoder() - return _decoder.decode(_response.json(), comments_api_Comment, self._return_none_for_unknown_union_types) + return _decoder.decode(_response.json(), authorization_UserFiltersResponse, self._return_none_for_unknown_union_types) - def unpin_comment(self, auth_header: str, comment_rid: str) -> "comments_api_Comment": - """ - Unpin a comment from the top of the conversation - """ - _headers: Dict[str, Any] = { - 'Accept': 'application/json', - 'Authorization': auth_header, - } +authorization_AuthorizationService.__name__ = "AuthorizationService" +authorization_AuthorizationService.__qualname__ = "AuthorizationService" +authorization_AuthorizationService.__module__ = "scout_service_api.authorization" - _params: Dict[str, Any] = { - } - _path_params: Dict[str, Any] = { - 'commentRid': comment_rid, +class authorization_Condition(ConjureUnionType): + """A condition to be evaluated on the ID token's claims""" + _or_: Optional[List["authorization_Condition"]] = None + _and_: Optional[List["authorization_Condition"]] = None + _not_: Optional["authorization_Condition"] = None + _exact: Optional["authorization_ExactClaimCondition"] = None + _regex: Optional["authorization_RegexClaimCondition"] = None + _contains: Optional["authorization_ContainsClaimCondition"] = None + + @builtins.classmethod + def _options(cls) -> Dict[str, ConjureFieldDefinition]: + return { + 'or_': ConjureFieldDefinition('or', List[authorization_Condition]), + 'and_': ConjureFieldDefinition('and', List[authorization_Condition]), + 'not_': ConjureFieldDefinition('not', authorization_Condition), + 'exact': ConjureFieldDefinition('exact', authorization_ExactClaimCondition), + 'regex': ConjureFieldDefinition('regex', authorization_RegexClaimCondition), + 'contains': ConjureFieldDefinition('contains', authorization_ContainsClaimCondition) } - _json: Any = None + def __init__( + self, + or_: Optional[List["authorization_Condition"]] = None, + and_: Optional[List["authorization_Condition"]] = None, + not_: Optional["authorization_Condition"] = None, + exact: Optional["authorization_ExactClaimCondition"] = None, + regex: Optional["authorization_RegexClaimCondition"] = None, + contains: Optional["authorization_ContainsClaimCondition"] = None, + type_of_union: Optional[str] = None + ) -> None: + if type_of_union is None: + if (or_ is not None) + (and_ is not None) + (not_ is not None) + (exact is not None) + (regex is not None) + (contains is not None) != 1: + raise ValueError('a union must contain a single member') - _path = '/comments/v1/comments/{commentRid}/pin' - _path = _path.format(**_path_params) + if or_ is not None: + self._or_ = or_ + self._type = 'or' + if and_ is not None: + self._and_ = and_ + self._type = 'and' + if not_ is not None: + self._not_ = not_ + self._type = 'not' + if exact is not None: + self._exact = exact + self._type = 'exact' + if regex is not None: + self._regex = regex + self._type = 'regex' + if contains is not None: + self._contains = contains + self._type = 'contains' - _response: Response = self._request( - 'DELETE', - self._uri + _path, - params=_params, - headers=_headers, - json=_json) + elif type_of_union == 'or': + if or_ is None: + raise ValueError('a union value must not be None') + self._or_ = or_ + self._type = 'or' + elif type_of_union == 'and': + if and_ is None: + raise ValueError('a union value must not be None') + self._and_ = and_ + self._type = 'and' + elif type_of_union == 'not': + if not_ is None: + raise ValueError('a union value must not be None') + self._not_ = not_ + self._type = 'not' + elif type_of_union == 'exact': + if exact is None: + raise ValueError('a union value must not be None') + self._exact = exact + self._type = 'exact' + elif type_of_union == 'regex': + if regex is None: + raise ValueError('a union value must not be None') + self._regex = regex + self._type = 'regex' + elif type_of_union == 'contains': + if contains is None: + raise ValueError('a union value must not be None') + self._contains = contains + self._type = 'contains' - _decoder = ConjureDecoder() - return _decoder.decode(_response.json(), comments_api_Comment, self._return_none_for_unknown_union_types) + @builtins.property + def or_(self) -> Optional[List["authorization_Condition"]]: + return self._or_ - def add_reaction(self, auth_header: str, comment_rid: str, type: "comments_api_ReactionType") -> "comments_api_Comment": - """ - Create a reaction on a comment - """ + @builtins.property + def and_(self) -> Optional[List["authorization_Condition"]]: + return self._and_ - _headers: Dict[str, Any] = { - 'Accept': 'application/json', - 'Authorization': auth_header, - } + @builtins.property + def not_(self) -> Optional["authorization_Condition"]: + return self._not_ - _params: Dict[str, Any] = { - } + @builtins.property + def exact(self) -> Optional["authorization_ExactClaimCondition"]: + return self._exact - _path_params: Dict[str, Any] = { - 'commentRid': comment_rid, - 'type': type, - } + @builtins.property + def regex(self) -> Optional["authorization_RegexClaimCondition"]: + return self._regex - _json: Any = None + @builtins.property + def contains(self) -> Optional["authorization_ContainsClaimCondition"]: + return self._contains - _path = '/comments/v1/comments/{commentRid}/reactions/{type}' - _path = _path.format(**_path_params) + def accept(self, visitor) -> Any: + if not isinstance(visitor, authorization_ConditionVisitor): + raise ValueError('{} is not an instance of authorization_ConditionVisitor'.format(visitor.__class__.__name__)) + if self._type == 'or' and self.or_ is not None: + return visitor._or(self.or_) + if self._type == 'and' and self.and_ is not None: + return visitor._and(self.and_) + if self._type == 'not' and self.not_ is not None: + return visitor._not(self.not_) + if self._type == 'exact' and self.exact is not None: + return visitor._exact(self.exact) + if self._type == 'regex' and self.regex is not None: + return visitor._regex(self.regex) + if self._type == 'contains' and self.contains is not None: + return visitor._contains(self.contains) - _response: Response = self._request( - 'PUT', - self._uri + _path, - params=_params, - headers=_headers, - json=_json) - _decoder = ConjureDecoder() - return _decoder.decode(_response.json(), comments_api_Comment, self._return_none_for_unknown_union_types) +authorization_Condition.__name__ = "Condition" +authorization_Condition.__qualname__ = "Condition" +authorization_Condition.__module__ = "scout_service_api.authorization" - def remove_reaction(self, auth_header: str, comment_rid: str, type: "comments_api_ReactionType") -> "comments_api_Comment": - """ - Create a reaction on a comment - """ - _headers: Dict[str, Any] = { - 'Accept': 'application/json', - 'Authorization': auth_header, - } +class authorization_ConditionVisitor: - _params: Dict[str, Any] = { - } + @abstractmethod + def _or(self, or_: List["authorization_Condition"]) -> Any: + pass - _path_params: Dict[str, Any] = { - 'commentRid': comment_rid, - 'type': type, - } + @abstractmethod + def _and(self, and_: List["authorization_Condition"]) -> Any: + pass - _json: Any = None + @abstractmethod + def _not(self, not_: "authorization_Condition") -> Any: + pass - _path = '/comments/v1/comments/{commentRid}/reactions/{type}' - _path = _path.format(**_path_params) + @abstractmethod + def _exact(self, exact: "authorization_ExactClaimCondition") -> Any: + pass - _response: Response = self._request( - 'DELETE', - self._uri + _path, - params=_params, - headers=_headers, - json=_json) + @abstractmethod + def _regex(self, regex: "authorization_RegexClaimCondition") -> Any: + pass - _decoder = ConjureDecoder() - return _decoder.decode(_response.json(), comments_api_Comment, self._return_none_for_unknown_union_types) + @abstractmethod + def _contains(self, contains: "authorization_ContainsClaimCondition") -> Any: + pass -comments_api_CommentsService.__name__ = "CommentsService" -comments_api_CommentsService.__qualname__ = "CommentsService" -comments_api_CommentsService.__module__ = "scout_service_api.comments_api" +authorization_ConditionVisitor.__name__ = "ConditionVisitor" +authorization_ConditionVisitor.__qualname__ = "ConditionVisitor" +authorization_ConditionVisitor.__module__ = "scout_service_api.authorization" -class comments_api_Conversation(ConjureBeanType): +class authorization_ContainsClaimCondition(ConjureBeanType): + """ + Returns true if the claim's value (expected to be an array) +contains the given value. + """ @builtins.classmethod def _fields(cls) -> Dict[str, ConjureFieldDefinition]: return { - 'resource_rid': ConjureFieldDefinition('resourceRid', comments_api_ResourceRid), - 'resource_type': ConjureFieldDefinition('resourceType', comments_api_ResourceType), - 'comments': ConjureFieldDefinition('comments', List[comments_api_ConversationNode]) + 'array_claim': ConjureFieldDefinition('arrayClaim', str), + 'value': ConjureFieldDefinition('value', str) } - __slots__: List[str] = ['_resource_rid', '_resource_type', '_comments'] - - def __init__(self, comments: List["comments_api_ConversationNode"], resource_rid: str, resource_type: "comments_api_ResourceType") -> None: - self._resource_rid = resource_rid - self._resource_type = resource_type - self._comments = comments + __slots__: List[str] = ['_array_claim', '_value'] - @builtins.property - def resource_rid(self) -> str: - """ - RID for the resource that the conversation is associated with. - """ - return self._resource_rid + def __init__(self, array_claim: str, value: str) -> None: + self._array_claim = array_claim + self._value = value @builtins.property - def resource_type(self) -> "comments_api_ResourceType": - """ - The type of the resource that the conversation is associated with. - """ - return self._resource_type + def array_claim(self) -> str: + return self._array_claim @builtins.property - def comments(self) -> List["comments_api_ConversationNode"]: - """ - The comments on the conversation ordered by creation time. -Empty if the comment has no replies. - """ - return self._comments + def value(self) -> str: + return self._value -comments_api_Conversation.__name__ = "Conversation" -comments_api_Conversation.__qualname__ = "Conversation" -comments_api_Conversation.__module__ = "scout_service_api.comments_api" +authorization_ContainsClaimCondition.__name__ = "ContainsClaimCondition" +authorization_ContainsClaimCondition.__qualname__ = "ContainsClaimCondition" +authorization_ContainsClaimCondition.__module__ = "scout_service_api.authorization" -class comments_api_ConversationNode(ConjureBeanType): +class authorization_ExactClaimCondition(ConjureBeanType): + """ + Returns true if the claim's value matches the given value + """ @builtins.classmethod def _fields(cls) -> Dict[str, ConjureFieldDefinition]: return { - 'comment': ConjureFieldDefinition('comment', comments_api_Comment), - 'replies': ConjureFieldDefinition('replies', List[comments_api_ConversationNode]) + 'claim': ConjureFieldDefinition('claim', str), + 'value': ConjureFieldDefinition('value', str) } - __slots__: List[str] = ['_comment', '_replies'] + __slots__: List[str] = ['_claim', '_value'] - def __init__(self, comment: "comments_api_Comment", replies: List["comments_api_ConversationNode"]) -> None: - self._comment = comment - self._replies = replies + def __init__(self, claim: str, value: str) -> None: + self._claim = claim + self._value = value @builtins.property - def comment(self) -> "comments_api_Comment": - """ - The comment - """ - return self._comment + def claim(self) -> str: + return self._claim @builtins.property - def replies(self) -> List["comments_api_ConversationNode"]: - """ - The comments on (aka replies to) the comment ordered by creation time. Empty if the comment has no replies. - """ - return self._replies + def value(self) -> str: + return self._value -comments_api_ConversationNode.__name__ = "ConversationNode" -comments_api_ConversationNode.__qualname__ = "ConversationNode" -comments_api_ConversationNode.__module__ = "scout_service_api.comments_api" +authorization_ExactClaimCondition.__name__ = "ExactClaimCondition" +authorization_ExactClaimCondition.__qualname__ = "ExactClaimCondition" +authorization_ExactClaimCondition.__module__ = "scout_service_api.authorization" -class comments_api_CreateCommentRequest(ConjureBeanType): +class authorization_GetAccessTokenRequest(ConjureBeanType): @builtins.classmethod def _fields(cls) -> Dict[str, ConjureFieldDefinition]: return { - 'parent': ConjureFieldDefinition('parent', comments_api_CommentParent), - 'content': ConjureFieldDefinition('content', str) + 'id_token': ConjureFieldDefinition('idToken', str), + 'access_token': ConjureFieldDefinition('accessToken', str) } - __slots__: List[str] = ['_parent', '_content'] - - def __init__(self, content: str, parent: "comments_api_CommentParent") -> None: - self._parent = parent - self._content = content + __slots__: List[str] = ['_id_token', '_access_token'] - @builtins.property - def parent(self) -> "comments_api_CommentParent": - return self._parent + def __init__(self, access_token: str, id_token: str) -> None: + self._id_token = id_token + self._access_token = access_token @builtins.property - def content(self) -> str: - """ - The content of the comment. Markdown supported. - """ - return self._content - - -comments_api_CreateCommentRequest.__name__ = "CreateCommentRequest" -comments_api_CreateCommentRequest.__qualname__ = "CreateCommentRequest" -comments_api_CreateCommentRequest.__module__ = "scout_service_api.comments_api" - - -class comments_api_EditCommentRequest(ConjureBeanType): - - @builtins.classmethod - def _fields(cls) -> Dict[str, ConjureFieldDefinition]: - return { - 'content': ConjureFieldDefinition('content', str) - } - - __slots__: List[str] = ['_content'] - - def __init__(self, content: str) -> None: - self._content = content + def id_token(self) -> str: + return self._id_token @builtins.property - def content(self) -> str: + def access_token(self) -> str: """ - The content of the comment. Markdown supported. + The access token's audience must be for the Nominal API. """ - return self._content + return self._access_token -comments_api_EditCommentRequest.__name__ = "EditCommentRequest" -comments_api_EditCommentRequest.__qualname__ = "EditCommentRequest" -comments_api_EditCommentRequest.__module__ = "scout_service_api.comments_api" +authorization_GetAccessTokenRequest.__name__ = "GetAccessTokenRequest" +authorization_GetAccessTokenRequest.__qualname__ = "GetAccessTokenRequest" +authorization_GetAccessTokenRequest.__module__ = "scout_service_api.authorization" -class comments_api_Reaction(ConjureBeanType): +class authorization_GetAccessTokenResponse(ConjureBeanType): @builtins.classmethod def _fields(cls) -> Dict[str, ConjureFieldDefinition]: return { - 'rid': ConjureFieldDefinition('rid', comments_api_ReactionRid), - 'user_rid': ConjureFieldDefinition('userRid', str), - 'created_at': ConjureFieldDefinition('createdAt', str), - 'type': ConjureFieldDefinition('type', comments_api_ReactionType) + 'access_token': ConjureFieldDefinition('accessToken', str), + 'expires_at_seconds': ConjureFieldDefinition('expiresAtSeconds', int), + 'user_uuid': ConjureFieldDefinition('userUuid', str), + 'org_uuid': ConjureFieldDefinition('orgUuid', str) } - __slots__: List[str] = ['_rid', '_user_rid', '_created_at', '_type'] + __slots__: List[str] = ['_access_token', '_expires_at_seconds', '_user_uuid', '_org_uuid'] - def __init__(self, created_at: str, rid: str, type: "comments_api_ReactionType", user_rid: str) -> None: - self._rid = rid - self._user_rid = user_rid - self._created_at = created_at - self._type = type + def __init__(self, access_token: str, expires_at_seconds: int, org_uuid: str, user_uuid: str) -> None: + self._access_token = access_token + self._expires_at_seconds = expires_at_seconds + self._user_uuid = user_uuid + self._org_uuid = org_uuid @builtins.property - def rid(self) -> str: - """ - Unique resource identifier for the reaction - """ - return self._rid + def access_token(self) -> str: + return self._access_token @builtins.property - def user_rid(self) -> str: - """ - The user who authored the reaction - """ - return self._user_rid + def expires_at_seconds(self) -> int: + return self._expires_at_seconds @builtins.property - def created_at(self) -> str: - """ - The time the reaction was created - """ - return self._created_at + def user_uuid(self) -> str: + return self._user_uuid @builtins.property - def type(self) -> "comments_api_ReactionType": - """ - The type of reaction - """ - return self._type - - -comments_api_Reaction.__name__ = "Reaction" -comments_api_Reaction.__qualname__ = "Reaction" -comments_api_Reaction.__module__ = "scout_service_api.comments_api" - + def org_uuid(self) -> str: + return self._org_uuid -class comments_api_ReactionType(ConjureEnumType): - LIKE = 'LIKE' - '''LIKE''' - DISLIKE = 'DISLIKE' - '''DISLIKE''' - HEART = 'HEART' - '''HEART''' - HOORAY = 'HOORAY' - '''HOORAY''' - ROCKET = 'ROCKET' - '''ROCKET''' - EYES = 'EYES' - '''EYES''' - UNKNOWN = 'UNKNOWN' - '''UNKNOWN''' +authorization_GetAccessTokenResponse.__name__ = "GetAccessTokenResponse" +authorization_GetAccessTokenResponse.__qualname__ = "GetAccessTokenResponse" +authorization_GetAccessTokenResponse.__module__ = "scout_service_api.authorization" - def __reduce_ex__(self, proto): - return self.__class__, (self.name,) +class authorization_OrgAssignmentRule(ConjureBeanType): -comments_api_ReactionType.__name__ = "ReactionType" -comments_api_ReactionType.__qualname__ = "ReactionType" -comments_api_ReactionType.__module__ = "scout_service_api.comments_api" + @builtins.classmethod + def _fields(cls) -> Dict[str, ConjureFieldDefinition]: + return { + 'condition': ConjureFieldDefinition('condition', authorization_Condition), + 'org_rid': ConjureFieldDefinition('orgRid', authorization_OrgRid) + } + __slots__: List[str] = ['_condition', '_org_rid'] -class comments_api_ResourceType(ConjureEnumType): + def __init__(self, condition: "authorization_Condition", org_rid: str) -> None: + self._condition = condition + self._org_rid = org_rid - RUN = 'RUN' - '''RUN''' - UNKNOWN = 'UNKNOWN' - '''UNKNOWN''' + @builtins.property + def condition(self) -> "authorization_Condition": + return self._condition - def __reduce_ex__(self, proto): - return self.__class__, (self.name,) + @builtins.property + def org_rid(self) -> str: + return self._org_rid -comments_api_ResourceType.__name__ = "ResourceType" -comments_api_ResourceType.__qualname__ = "ResourceType" -comments_api_ResourceType.__module__ = "scout_service_api.comments_api" +authorization_OrgAssignmentRule.__name__ = "OrgAssignmentRule" +authorization_OrgAssignmentRule.__qualname__ = "OrgAssignmentRule" +authorization_OrgAssignmentRule.__module__ = "scout_service_api.authorization" -class datasource_Property(ConjureBeanType): +class authorization_OrgAssignmentRulesResponse(ConjureBeanType): @builtins.classmethod def _fields(cls) -> Dict[str, ConjureFieldDefinition]: return { - 'name': ConjureFieldDefinition('name', datasource_PropertyName), - 'value': ConjureFieldDefinition('value', datasource_PropertyValue) + 'rules': ConjureFieldDefinition('rules', List[authorization_OrgAssignmentRule]), + 'version': ConjureFieldDefinition('version', int) } - __slots__: List[str] = ['_name', '_value'] + __slots__: List[str] = ['_rules', '_version'] - def __init__(self, name: str, value: str) -> None: - self._name = name - self._value = value + def __init__(self, rules: List["authorization_OrgAssignmentRule"], version: int) -> None: + self._rules = rules + self._version = version @builtins.property - def name(self) -> str: - return self._name + def rules(self) -> List["authorization_OrgAssignmentRule"]: + """ + The first rule that matches will be used to assign a user to an org. +If a user does not match any rule, they will be rejected. + """ + return self._rules @builtins.property - def value(self) -> str: - return self._value + def version(self) -> int: + return self._version -datasource_Property.__name__ = "Property" -datasource_Property.__qualname__ = "Property" -datasource_Property.__module__ = "scout_service_api.datasource" +authorization_OrgAssignmentRulesResponse.__name__ = "OrgAssignmentRulesResponse" +authorization_OrgAssignmentRulesResponse.__qualname__ = "OrgAssignmentRulesResponse" +authorization_OrgAssignmentRulesResponse.__module__ = "scout_service_api.authorization" -class datasource_Timestamp(ConjureBeanType): +class authorization_RegexClaimCondition(ConjureBeanType): + """ + Returns true if the claim's value matches the given regex + """ @builtins.classmethod def _fields(cls) -> Dict[str, ConjureFieldDefinition]: return { - 'seconds': ConjureFieldDefinition('seconds', int), - 'nanos': ConjureFieldDefinition('nanos', int) + 'claim': ConjureFieldDefinition('claim', str), + 'regex': ConjureFieldDefinition('regex', str) } - __slots__: List[str] = ['_seconds', '_nanos'] + __slots__: List[str] = ['_claim', '_regex'] - def __init__(self, nanos: int, seconds: int) -> None: - self._seconds = seconds - self._nanos = nanos + def __init__(self, claim: str, regex: str) -> None: + self._claim = claim + self._regex = regex @builtins.property - def seconds(self) -> int: - return self._seconds + def claim(self) -> str: + return self._claim @builtins.property - def nanos(self) -> int: - return self._nanos - - -datasource_Timestamp.__name__ = "Timestamp" -datasource_Timestamp.__qualname__ = "Timestamp" -datasource_Timestamp.__module__ = "scout_service_api.datasource" - - -class datasource_TimestampType(ConjureEnumType): - - RELATIVE = 'RELATIVE' - '''RELATIVE''' - ABSOLUTE = 'ABSOLUTE' - '''ABSOLUTE''' - UNKNOWN = 'UNKNOWN' - '''UNKNOWN''' + def regex(self) -> str: + return self._regex - def __reduce_ex__(self, proto): - return self.__class__, (self.name,) - -datasource_TimestampType.__name__ = "TimestampType" -datasource_TimestampType.__qualname__ = "TimestampType" -datasource_TimestampType.__module__ = "scout_service_api.datasource" +authorization_RegexClaimCondition.__name__ = "RegexClaimCondition" +authorization_RegexClaimCondition.__qualname__ = "RegexClaimCondition" +authorization_RegexClaimCondition.__module__ = "scout_service_api.authorization" -class datasource_api_BatchGetChannelPrefixTreeRequest(ConjureBeanType): +class authorization_RegistrationRequest(ConjureBeanType): @builtins.classmethod def _fields(cls) -> Dict[str, ConjureFieldDefinition]: return { - 'data_source_rids': ConjureFieldDefinition('dataSourceRids', List[datasource_api_DataSourceRid]) + 'rids': ConjureFieldDefinition('rids', List[str]), + 'organization_rid': ConjureFieldDefinition('organizationRid', OptionalTypeWrapper[str]) } - __slots__: List[str] = ['_data_source_rids'] + __slots__: List[str] = ['_rids', '_organization_rid'] - def __init__(self, data_source_rids: List[str]) -> None: - self._data_source_rids = data_source_rids + def __init__(self, rids: List[str], organization_rid: Optional[str] = None) -> None: + self._rids = rids + self._organization_rid = organization_rid @builtins.property - def data_source_rids(self) -> List[str]: - return self._data_source_rids + def rids(self) -> List[str]: + return self._rids + + @builtins.property + def organization_rid(self) -> Optional[str]: + """ + If omitted, will use the user's organizationRid. + """ + return self._organization_rid -datasource_api_BatchGetChannelPrefixTreeRequest.__name__ = "BatchGetChannelPrefixTreeRequest" -datasource_api_BatchGetChannelPrefixTreeRequest.__qualname__ = "BatchGetChannelPrefixTreeRequest" -datasource_api_BatchGetChannelPrefixTreeRequest.__module__ = "scout_service_api.datasource_api" +authorization_RegistrationRequest.__name__ = "RegistrationRequest" +authorization_RegistrationRequest.__qualname__ = "RegistrationRequest" +authorization_RegistrationRequest.__module__ = "scout_service_api.authorization" -class datasource_api_BatchGetChannelPrefixTreeResponse(ConjureBeanType): - """ - If the tree for a data source has not been indexed, it will be omitted from the map. - """ +class authorization_RemoveUserFilterForOneOrgRequest(ConjureBeanType): @builtins.classmethod def _fields(cls) -> Dict[str, ConjureFieldDefinition]: return { - 'channel_prefix_trees': ConjureFieldDefinition('channelPrefixTrees', Dict[datasource_api_DataSourceRid, datasource_api_ChannelPrefixTree]) + 'org_rid': ConjureFieldDefinition('orgRid', authorization_OrgRid), + 'last_version': ConjureFieldDefinition('lastVersion', int) } - __slots__: List[str] = ['_channel_prefix_trees'] + __slots__: List[str] = ['_org_rid', '_last_version'] - def __init__(self, channel_prefix_trees: Dict[str, "datasource_api_ChannelPrefixTree"]) -> None: - self._channel_prefix_trees = channel_prefix_trees + def __init__(self, last_version: int, org_rid: str) -> None: + self._org_rid = org_rid + self._last_version = last_version @builtins.property - def channel_prefix_trees(self) -> Dict[str, "datasource_api_ChannelPrefixTree"]: - return self._channel_prefix_trees + def org_rid(self) -> str: + return self._org_rid + @builtins.property + def last_version(self) -> int: + return self._last_version -datasource_api_BatchGetChannelPrefixTreeResponse.__name__ = "BatchGetChannelPrefixTreeResponse" -datasource_api_BatchGetChannelPrefixTreeResponse.__qualname__ = "BatchGetChannelPrefixTreeResponse" -datasource_api_BatchGetChannelPrefixTreeResponse.__module__ = "scout_service_api.datasource_api" +authorization_RemoveUserFilterForOneOrgRequest.__name__ = "RemoveUserFilterForOneOrgRequest" +authorization_RemoveUserFilterForOneOrgRequest.__qualname__ = "RemoveUserFilterForOneOrgRequest" +authorization_RemoveUserFilterForOneOrgRequest.__module__ = "scout_service_api.authorization" -class datasource_api_ChannelMetadata(ConjureBeanType): + +class authorization_SetOrgAssignmentRulesRequest(ConjureBeanType): @builtins.classmethod def _fields(cls) -> Dict[str, ConjureFieldDefinition]: return { - 'name': ConjureFieldDefinition('name', datasource_api_Channel), - 'data_source': ConjureFieldDefinition('dataSource', datasource_api_DataSourceRid), - 'unit': ConjureFieldDefinition('unit', OptionalTypeWrapper[datasource_api_Unit]), - 'description': ConjureFieldDefinition('description', OptionalTypeWrapper[str]), - 'data_type': ConjureFieldDefinition('dataType', OptionalTypeWrapper[datasource_api_SeriesDataType]), - 'series_rid': ConjureFieldDefinition('seriesRid', datasource_api_SeriesArchetypeRidOrLogicalSeriesRid) + 'rules': ConjureFieldDefinition('rules', List[authorization_OrgAssignmentRule]), + 'last_version': ConjureFieldDefinition('lastVersion', int) } - __slots__: List[str] = ['_name', '_data_source', '_unit', '_description', '_data_type', '_series_rid'] - - def __init__(self, data_source: str, name: str, series_rid: "datasource_api_SeriesArchetypeRidOrLogicalSeriesRid", data_type: Optional["datasource_api_SeriesDataType"] = None, description: Optional[str] = None, unit: Optional["datasource_api_Unit"] = None) -> None: - self._name = name - self._data_source = data_source - self._unit = unit - self._description = description - self._data_type = data_type - self._series_rid = series_rid - - @builtins.property - def name(self) -> str: - return self._name - - @builtins.property - def data_source(self) -> str: - return self._data_source - - @builtins.property - def unit(self) -> Optional["datasource_api_Unit"]: - return self._unit + __slots__: List[str] = ['_rules', '_last_version'] - @builtins.property - def description(self) -> Optional[str]: - return self._description + def __init__(self, last_version: int, rules: List["authorization_OrgAssignmentRule"]) -> None: + self._rules = rules + self._last_version = last_version @builtins.property - def data_type(self) -> Optional["datasource_api_SeriesDataType"]: - return self._data_type + def rules(self) -> List["authorization_OrgAssignmentRule"]: + return self._rules @builtins.property - def series_rid(self) -> "datasource_api_SeriesArchetypeRidOrLogicalSeriesRid": - return self._series_rid + def last_version(self) -> int: + return self._last_version -datasource_api_ChannelMetadata.__name__ = "ChannelMetadata" -datasource_api_ChannelMetadata.__qualname__ = "ChannelMetadata" -datasource_api_ChannelMetadata.__module__ = "scout_service_api.datasource_api" +authorization_SetOrgAssignmentRulesRequest.__name__ = "SetOrgAssignmentRulesRequest" +authorization_SetOrgAssignmentRulesRequest.__qualname__ = "SetOrgAssignmentRulesRequest" +authorization_SetOrgAssignmentRulesRequest.__module__ = "scout_service_api.authorization" -class datasource_api_ChannelOrPrefix(ConjureUnionType): - _channel: Optional["datasource_api_ChannelMetadata"] = None - _prefix: Optional["datasource_api_DataSourcePrefixNode"] = None +class authorization_SetUserFilterForOneOrgRequest(ConjureBeanType): @builtins.classmethod - def _options(cls) -> Dict[str, ConjureFieldDefinition]: + def _fields(cls) -> Dict[str, ConjureFieldDefinition]: return { - 'channel': ConjureFieldDefinition('channel', datasource_api_ChannelMetadata), - 'prefix': ConjureFieldDefinition('prefix', datasource_api_DataSourcePrefixNode) + 'org_rid': ConjureFieldDefinition('orgRid', authorization_OrgRid), + 'user_filter': ConjureFieldDefinition('userFilter', authorization_UserFilter), + 'last_version': ConjureFieldDefinition('lastVersion', int) } - def __init__( - self, - channel: Optional["datasource_api_ChannelMetadata"] = None, - prefix: Optional["datasource_api_DataSourcePrefixNode"] = None, - type_of_union: Optional[str] = None - ) -> None: - if type_of_union is None: - if (channel is not None) + (prefix is not None) != 1: - raise ValueError('a union must contain a single member') - - if channel is not None: - self._channel = channel - self._type = 'channel' - if prefix is not None: - self._prefix = prefix - self._type = 'prefix' + __slots__: List[str] = ['_org_rid', '_user_filter', '_last_version'] - elif type_of_union == 'channel': - if channel is None: - raise ValueError('a union value must not be None') - self._channel = channel - self._type = 'channel' - elif type_of_union == 'prefix': - if prefix is None: - raise ValueError('a union value must not be None') - self._prefix = prefix - self._type = 'prefix' + def __init__(self, last_version: int, org_rid: str, user_filter: "authorization_UserFilter") -> None: + self._org_rid = org_rid + self._user_filter = user_filter + self._last_version = last_version @builtins.property - def channel(self) -> Optional["datasource_api_ChannelMetadata"]: - return self._channel + def org_rid(self) -> str: + return self._org_rid @builtins.property - def prefix(self) -> Optional["datasource_api_DataSourcePrefixNode"]: - return self._prefix - - def accept(self, visitor) -> Any: - if not isinstance(visitor, datasource_api_ChannelOrPrefixVisitor): - raise ValueError('{} is not an instance of datasource_api_ChannelOrPrefixVisitor'.format(visitor.__class__.__name__)) - if self._type == 'channel' and self.channel is not None: - return visitor._channel(self.channel) - if self._type == 'prefix' and self.prefix is not None: - return visitor._prefix(self.prefix) - - -datasource_api_ChannelOrPrefix.__name__ = "ChannelOrPrefix" -datasource_api_ChannelOrPrefix.__qualname__ = "ChannelOrPrefix" -datasource_api_ChannelOrPrefix.__module__ = "scout_service_api.datasource_api" + def user_filter(self) -> "authorization_UserFilter": + return self._user_filter - -class datasource_api_ChannelOrPrefixVisitor: - - @abstractmethod - def _channel(self, channel: "datasource_api_ChannelMetadata") -> Any: - pass - - @abstractmethod - def _prefix(self, prefix: "datasource_api_DataSourcePrefixNode") -> Any: - pass + @builtins.property + def last_version(self) -> int: + return self._last_version -datasource_api_ChannelOrPrefixVisitor.__name__ = "ChannelOrPrefixVisitor" -datasource_api_ChannelOrPrefixVisitor.__qualname__ = "ChannelOrPrefixVisitor" -datasource_api_ChannelOrPrefixVisitor.__module__ = "scout_service_api.datasource_api" +authorization_SetUserFilterForOneOrgRequest.__name__ = "SetUserFilterForOneOrgRequest" +authorization_SetUserFilterForOneOrgRequest.__qualname__ = "SetUserFilterForOneOrgRequest" +authorization_SetUserFilterForOneOrgRequest.__module__ = "scout_service_api.authorization" -class datasource_api_ChannelPrefixTree(ConjureBeanType): +class authorization_UserFilter(ConjureBeanType): @builtins.classmethod def _fields(cls) -> Dict[str, ConjureFieldDefinition]: return { - 'roots': ConjureFieldDefinition('roots', List[datasource_api_ChannelPrefixTreeNode]), - 'delimiter': ConjureFieldDefinition('delimiter', str) + 'condition': ConjureFieldDefinition('condition', authorization_Condition) } - __slots__: List[str] = ['_roots', '_delimiter'] - - def __init__(self, delimiter: str, roots: List["datasource_api_ChannelPrefixTreeNode"]) -> None: - self._roots = roots - self._delimiter = delimiter + __slots__: List[str] = ['_condition'] - @builtins.property - def roots(self) -> List["datasource_api_ChannelPrefixTreeNode"]: - return self._roots + def __init__(self, condition: "authorization_Condition") -> None: + self._condition = condition @builtins.property - def delimiter(self) -> str: - return self._delimiter + def condition(self) -> "authorization_Condition": + return self._condition -datasource_api_ChannelPrefixTree.__name__ = "ChannelPrefixTree" -datasource_api_ChannelPrefixTree.__qualname__ = "ChannelPrefixTree" -datasource_api_ChannelPrefixTree.__module__ = "scout_service_api.datasource_api" +authorization_UserFilter.__name__ = "UserFilter" +authorization_UserFilter.__qualname__ = "UserFilter" +authorization_UserFilter.__module__ = "scout_service_api.authorization" -class datasource_api_ChannelPrefixTreeNode(ConjureBeanType): +class authorization_UserFiltersResponse(ConjureBeanType): @builtins.classmethod def _fields(cls) -> Dict[str, ConjureFieldDefinition]: return { - 'part': ConjureFieldDefinition('part', str), - 'children': ConjureFieldDefinition('children', List[datasource_api_ChannelPrefixTreeNode]) + 'user_filters_by_org': ConjureFieldDefinition('userFiltersByOrg', Dict[authorization_OrgRid, authorization_UserFilter]), + 'version': ConjureFieldDefinition('version', int) } - __slots__: List[str] = ['_part', '_children'] + __slots__: List[str] = ['_user_filters_by_org', '_version'] - def __init__(self, children: List["datasource_api_ChannelPrefixTreeNode"], part: str) -> None: - self._part = part - self._children = children + def __init__(self, user_filters_by_org: Dict[str, "authorization_UserFilter"], version: int) -> None: + self._user_filters_by_org = user_filters_by_org + self._version = version @builtins.property - def part(self) -> str: + def user_filters_by_org(self) -> Dict[str, "authorization_UserFilter"]: """ - Should be combined with the ancestor parts and the delimiter to form the full prefix. + If a user is assigned to an org, they must pass the filter or else be rejected. +If there is no filter for an org, all users assigned to that org are accepted. """ - return self._part + return self._user_filters_by_org @builtins.property - def children(self) -> List["datasource_api_ChannelPrefixTreeNode"]: - return self._children + def version(self) -> int: + return self._version -datasource_api_ChannelPrefixTreeNode.__name__ = "ChannelPrefixTreeNode" -datasource_api_ChannelPrefixTreeNode.__qualname__ = "ChannelPrefixTreeNode" -datasource_api_ChannelPrefixTreeNode.__module__ = "scout_service_api.datasource_api" +authorization_UserFiltersResponse.__name__ = "UserFiltersResponse" +authorization_UserFiltersResponse.__qualname__ = "UserFiltersResponse" +authorization_UserFiltersResponse.__module__ = "scout_service_api.authorization" -class datasource_api_DataSourcePrefixNode(ConjureBeanType): +class comments_api_Comment(ConjureBeanType): @builtins.classmethod def _fields(cls) -> Dict[str, ConjureFieldDefinition]: return { - 'part': ConjureFieldDefinition('part', str), - 'data_source': ConjureFieldDefinition('dataSource', datasource_api_DataSourceRid) + 'rid': ConjureFieldDefinition('rid', comments_api_CommentRid), + 'parent': ConjureFieldDefinition('parent', comments_api_CommentParent), + 'author_rid': ConjureFieldDefinition('authorRid', str), + 'created_at': ConjureFieldDefinition('createdAt', str), + 'edited_at': ConjureFieldDefinition('editedAt', OptionalTypeWrapper[str]), + 'deleted_at': ConjureFieldDefinition('deletedAt', OptionalTypeWrapper[str]), + 'content': ConjureFieldDefinition('content', str), + 'pinned_by': ConjureFieldDefinition('pinnedBy', OptionalTypeWrapper[str]), + 'pinned_at': ConjureFieldDefinition('pinnedAt', OptionalTypeWrapper[str]), + 'reactions': ConjureFieldDefinition('reactions', List[comments_api_Reaction]), + 'attachments': ConjureFieldDefinition('attachments', List[str]) } - __slots__: List[str] = ['_part', '_data_source'] - - def __init__(self, data_source: str, part: str) -> None: - self._part = part - self._data_source = data_source + __slots__: List[str] = ['_rid', '_parent', '_author_rid', '_created_at', '_edited_at', '_deleted_at', '_content', '_pinned_by', '_pinned_at', '_reactions', '_attachments'] - @builtins.property - def part(self) -> str: - """ - Should be combined with the ancestor parts and the delimiter to form the full prefix. - """ - return self._part - - @builtins.property - def data_source(self) -> str: - return self._data_source - - -datasource_api_DataSourcePrefixNode.__name__ = "DataSourcePrefixNode" -datasource_api_DataSourcePrefixNode.__qualname__ = "DataSourcePrefixNode" -datasource_api_DataSourcePrefixNode.__module__ = "scout_service_api.datasource_api" - - -class datasource_api_IndexChannelPrefixTreeRequest(ConjureBeanType): - - @builtins.classmethod - def _fields(cls) -> Dict[str, ConjureFieldDefinition]: - return { - 'data_source_rid': ConjureFieldDefinition('dataSourceRid', datasource_api_DataSourceRid), - 'delimiter': ConjureFieldDefinition('delimiter', str) - } - - __slots__: List[str] = ['_data_source_rid', '_delimiter'] - - def __init__(self, data_source_rid: str, delimiter: str) -> None: - self._data_source_rid = data_source_rid - self._delimiter = delimiter - - @builtins.property - def data_source_rid(self) -> str: - return self._data_source_rid - - @builtins.property - def delimiter(self) -> str: - return self._delimiter - - -datasource_api_IndexChannelPrefixTreeRequest.__name__ = "IndexChannelPrefixTreeRequest" -datasource_api_IndexChannelPrefixTreeRequest.__qualname__ = "IndexChannelPrefixTreeRequest" -datasource_api_IndexChannelPrefixTreeRequest.__module__ = "scout_service_api.datasource_api" - - -class datasource_api_SearchChannelsRequest(ConjureBeanType): - - @builtins.classmethod - def _fields(cls) -> Dict[str, ConjureFieldDefinition]: - return { - 'fuzzy_search_text': ConjureFieldDefinition('fuzzySearchText', str), - 'prefix': ConjureFieldDefinition('prefix', OptionalTypeWrapper[str]), - 'exact_match': ConjureFieldDefinition('exactMatch', List[str]), - 'data_sources': ConjureFieldDefinition('dataSources', List[datasource_api_DataSourceRid]), - 'previously_selected_channels': ConjureFieldDefinition('previouslySelectedChannels', Dict[datasource_api_DataSourceRid, List[datasource_api_Channel]]), - 'next_page_token': ConjureFieldDefinition('nextPageToken', OptionalTypeWrapper[datasource_Token]), - 'page_size': ConjureFieldDefinition('pageSize', OptionalTypeWrapper[int]) - } - - __slots__: List[str] = ['_fuzzy_search_text', '_prefix', '_exact_match', '_data_sources', '_previously_selected_channels', '_next_page_token', '_page_size'] - - def __init__(self, data_sources: List[str], exact_match: List[str], fuzzy_search_text: str, previously_selected_channels: Dict[str, List[str]], next_page_token: Optional[str] = None, page_size: Optional[int] = None, prefix: Optional[str] = None) -> None: - self._fuzzy_search_text = fuzzy_search_text - self._prefix = prefix - self._exact_match = exact_match - self._data_sources = data_sources - self._previously_selected_channels = previously_selected_channels - self._next_page_token = next_page_token - self._page_size = page_size - - @builtins.property - def fuzzy_search_text(self) -> str: - return self._fuzzy_search_text + def __init__(self, attachments: List[str], author_rid: str, content: str, created_at: str, parent: "comments_api_CommentParent", reactions: List["comments_api_Reaction"], rid: str, deleted_at: Optional[str] = None, edited_at: Optional[str] = None, pinned_at: Optional[str] = None, pinned_by: Optional[str] = None) -> None: + self._rid = rid + self._parent = parent + self._author_rid = author_rid + self._created_at = created_at + self._edited_at = edited_at + self._deleted_at = deleted_at + self._content = content + self._pinned_by = pinned_by + self._pinned_at = pinned_at + self._reactions = reactions + self._attachments = attachments @builtins.property - def prefix(self) -> Optional[str]: - return self._prefix + def rid(self) -> str: + """ + Unique resource identifier for the comment + """ + return self._rid @builtins.property - def exact_match(self) -> List[str]: + def parent(self) -> "comments_api_CommentParent": """ - Will return only channels that contain all strings specified as exact matches (case insensitive). + The parent of the comment. It can be a resource or another comment. """ - return self._exact_match + return self._parent @builtins.property - def data_sources(self) -> List[str]: - return self._data_sources + def author_rid(self) -> str: + """ + The user who authored the comment + """ + return self._author_rid @builtins.property - def previously_selected_channels(self) -> Dict[str, List[str]]: + def created_at(self) -> str: """ - Data sources with the channels that were previously selected will be weighted more heavily. The previously -selected channel names will also factor into the similarity score. + The time the comment was created """ - return self._previously_selected_channels + return self._created_at @builtins.property - def next_page_token(self) -> Optional[str]: - return self._next_page_token + def edited_at(self) -> Optional[str]: + """ + The time the comment was edited. Empty if the comment has not been edited. + """ + return self._edited_at @builtins.property - def page_size(self) -> Optional[int]: + def deleted_at(self) -> Optional[str]: """ - Defaults to 1000. Will throw if larger than 10000. + The time the comment was deleted. Empty if the comment has not been deleted. """ - return self._page_size - - -datasource_api_SearchChannelsRequest.__name__ = "SearchChannelsRequest" -datasource_api_SearchChannelsRequest.__qualname__ = "SearchChannelsRequest" -datasource_api_SearchChannelsRequest.__module__ = "scout_service_api.datasource_api" - - -class datasource_api_SearchChannelsResponse(ConjureBeanType): - - @builtins.classmethod - def _fields(cls) -> Dict[str, ConjureFieldDefinition]: - return { - 'results': ConjureFieldDefinition('results', List[datasource_api_ChannelMetadata]), - 'next_page_token': ConjureFieldDefinition('nextPageToken', OptionalTypeWrapper[datasource_Token]) - } - - __slots__: List[str] = ['_results', '_next_page_token'] - - def __init__(self, results: List["datasource_api_ChannelMetadata"], next_page_token: Optional[str] = None) -> None: - self._results = results - self._next_page_token = next_page_token + return self._deleted_at @builtins.property - def results(self) -> List["datasource_api_ChannelMetadata"]: - return self._results + def content(self) -> str: + """ + The markdown content of the comment. + """ + return self._content @builtins.property - def next_page_token(self) -> Optional[str]: - return self._next_page_token - - -datasource_api_SearchChannelsResponse.__name__ = "SearchChannelsResponse" -datasource_api_SearchChannelsResponse.__qualname__ = "SearchChannelsResponse" -datasource_api_SearchChannelsResponse.__module__ = "scout_service_api.datasource_api" - - -class datasource_api_SearchHierarchicalChannelsRequest(ConjureBeanType): - - @builtins.classmethod - def _fields(cls) -> Dict[str, ConjureFieldDefinition]: - return { - 'parent': ConjureFieldDefinition('parent', List[str]), - 'data_sources': ConjureFieldDefinition('dataSources', List[datasource_api_DataSourceRid]) - } - - __slots__: List[str] = ['_parent', '_data_sources'] - - def __init__(self, data_sources: List[str], parent: List[str]) -> None: - self._parent = parent - self._data_sources = data_sources + def pinned_by(self) -> Optional[str]: + """ + The user who pinned the comment. Empty if the comment is not pinned. + """ + return self._pinned_by @builtins.property - def parent(self) -> List[str]: + def pinned_at(self) -> Optional[str]: """ - The parent (represented as a list of parts) to search under. If empty, will return all top-level channels. + The time the comment was pinned. Empty if the comment is not pinned. """ - return self._parent + return self._pinned_at @builtins.property - def data_sources(self) -> List[str]: - return self._data_sources - - -datasource_api_SearchHierarchicalChannelsRequest.__name__ = "SearchHierarchicalChannelsRequest" -datasource_api_SearchHierarchicalChannelsRequest.__qualname__ = "SearchHierarchicalChannelsRequest" -datasource_api_SearchHierarchicalChannelsRequest.__module__ = "scout_service_api.datasource_api" - - -class datasource_api_SearchHierarchicalChannelsResponse(ConjureBeanType): - - @builtins.classmethod - def _fields(cls) -> Dict[str, ConjureFieldDefinition]: - return { - 'results': ConjureFieldDefinition('results', List[datasource_api_ChannelOrPrefix]) - } - - __slots__: List[str] = ['_results'] - - def __init__(self, results: List["datasource_api_ChannelOrPrefix"]) -> None: - self._results = results + def reactions(self) -> List["comments_api_Reaction"]: + """ + The reactions on the comment + """ + return self._reactions @builtins.property - def results(self) -> List["datasource_api_ChannelOrPrefix"]: - return self._results + def attachments(self) -> List[str]: + """ + The comment's attachments + """ + return self._attachments -datasource_api_SearchHierarchicalChannelsResponse.__name__ = "SearchHierarchicalChannelsResponse" -datasource_api_SearchHierarchicalChannelsResponse.__qualname__ = "SearchHierarchicalChannelsResponse" -datasource_api_SearchHierarchicalChannelsResponse.__module__ = "scout_service_api.datasource_api" +comments_api_Comment.__name__ = "Comment" +comments_api_Comment.__qualname__ = "Comment" +comments_api_Comment.__module__ = "scout_service_api.comments_api" -class datasource_api_SeriesArchetypeRidOrLogicalSeriesRid(ConjureUnionType): - _series_archetype: Optional[str] = None - _logical_series: Optional[str] = None +class comments_api_CommentParent(ConjureUnionType): + """The parent of a comment. It can be a resource or another comment in the case of a reply.""" + _resource: Optional["comments_api_CommentParentResource"] = None + _comment: Optional["comments_api_CommentParentComment"] = None @builtins.classmethod def _options(cls) -> Dict[str, ConjureFieldDefinition]: return { - 'series_archetype': ConjureFieldDefinition('seriesArchetype', datasource_api_SeriesArchetypeRid), - 'logical_series': ConjureFieldDefinition('logicalSeries', datasource_api_LogicalSeriesRid) + 'resource': ConjureFieldDefinition('resource', comments_api_CommentParentResource), + 'comment': ConjureFieldDefinition('comment', comments_api_CommentParentComment) } def __init__( self, - series_archetype: Optional[str] = None, - logical_series: Optional[str] = None, + resource: Optional["comments_api_CommentParentResource"] = None, + comment: Optional["comments_api_CommentParentComment"] = None, type_of_union: Optional[str] = None ) -> None: if type_of_union is None: - if (series_archetype is not None) + (logical_series is not None) != 1: + if (resource is not None) + (comment is not None) != 1: raise ValueError('a union must contain a single member') - if series_archetype is not None: - self._series_archetype = series_archetype - self._type = 'seriesArchetype' - if logical_series is not None: - self._logical_series = logical_series - self._type = 'logicalSeries' + if resource is not None: + self._resource = resource + self._type = 'resource' + if comment is not None: + self._comment = comment + self._type = 'comment' - elif type_of_union == 'seriesArchetype': - if series_archetype is None: + elif type_of_union == 'resource': + if resource is None: raise ValueError('a union value must not be None') - self._series_archetype = series_archetype - self._type = 'seriesArchetype' - elif type_of_union == 'logicalSeries': - if logical_series is None: + self._resource = resource + self._type = 'resource' + elif type_of_union == 'comment': + if comment is None: raise ValueError('a union value must not be None') - self._logical_series = logical_series - self._type = 'logicalSeries' + self._comment = comment + self._type = 'comment' @builtins.property - def series_archetype(self) -> Optional[str]: - return self._series_archetype + def resource(self) -> Optional["comments_api_CommentParentResource"]: + return self._resource @builtins.property - def logical_series(self) -> Optional[str]: - return self._logical_series + def comment(self) -> Optional["comments_api_CommentParentComment"]: + return self._comment def accept(self, visitor) -> Any: - if not isinstance(visitor, datasource_api_SeriesArchetypeRidOrLogicalSeriesRidVisitor): - raise ValueError('{} is not an instance of datasource_api_SeriesArchetypeRidOrLogicalSeriesRidVisitor'.format(visitor.__class__.__name__)) - if self._type == 'seriesArchetype' and self.series_archetype is not None: - return visitor._series_archetype(self.series_archetype) - if self._type == 'logicalSeries' and self.logical_series is not None: - return visitor._logical_series(self.logical_series) + if not isinstance(visitor, comments_api_CommentParentVisitor): + raise ValueError('{} is not an instance of comments_api_CommentParentVisitor'.format(visitor.__class__.__name__)) + if self._type == 'resource' and self.resource is not None: + return visitor._resource(self.resource) + if self._type == 'comment' and self.comment is not None: + return visitor._comment(self.comment) -datasource_api_SeriesArchetypeRidOrLogicalSeriesRid.__name__ = "SeriesArchetypeRidOrLogicalSeriesRid" -datasource_api_SeriesArchetypeRidOrLogicalSeriesRid.__qualname__ = "SeriesArchetypeRidOrLogicalSeriesRid" -datasource_api_SeriesArchetypeRidOrLogicalSeriesRid.__module__ = "scout_service_api.datasource_api" +comments_api_CommentParent.__name__ = "CommentParent" +comments_api_CommentParent.__qualname__ = "CommentParent" +comments_api_CommentParent.__module__ = "scout_service_api.comments_api" -class datasource_api_SeriesArchetypeRidOrLogicalSeriesRidVisitor: +class comments_api_CommentParentVisitor: @abstractmethod - def _series_archetype(self, series_archetype: str) -> Any: + def _resource(self, resource: "comments_api_CommentParentResource") -> Any: pass @abstractmethod - def _logical_series(self, logical_series: str) -> Any: + def _comment(self, comment: "comments_api_CommentParentComment") -> Any: pass -datasource_api_SeriesArchetypeRidOrLogicalSeriesRidVisitor.__name__ = "SeriesArchetypeRidOrLogicalSeriesRidVisitor" -datasource_api_SeriesArchetypeRidOrLogicalSeriesRidVisitor.__qualname__ = "SeriesArchetypeRidOrLogicalSeriesRidVisitor" -datasource_api_SeriesArchetypeRidOrLogicalSeriesRidVisitor.__module__ = "scout_service_api.datasource_api" +comments_api_CommentParentVisitor.__name__ = "CommentParentVisitor" +comments_api_CommentParentVisitor.__qualname__ = "CommentParentVisitor" +comments_api_CommentParentVisitor.__module__ = "scout_service_api.comments_api" -class datasource_api_SeriesDataType(ConjureEnumType): +class comments_api_CommentParentComment(ConjureBeanType): - DOUBLE = 'DOUBLE' - '''DOUBLE''' - STRING = 'STRING' - '''STRING''' - UNKNOWN = 'UNKNOWN' - '''UNKNOWN''' + @builtins.classmethod + def _fields(cls) -> Dict[str, ConjureFieldDefinition]: + return { + 'comment_rid': ConjureFieldDefinition('commentRid', comments_api_CommentRid) + } - def __reduce_ex__(self, proto): - return self.__class__, (self.name,) + __slots__: List[str] = ['_comment_rid'] + def __init__(self, comment_rid: str) -> None: + self._comment_rid = comment_rid -datasource_api_SeriesDataType.__name__ = "SeriesDataType" -datasource_api_SeriesDataType.__qualname__ = "SeriesDataType" -datasource_api_SeriesDataType.__module__ = "scout_service_api.datasource_api" + @builtins.property + def comment_rid(self) -> str: + """ + The resource identifier for the comment that the comment is replying to + """ + return self._comment_rid -class datasource_api_Unit(ConjureBeanType): +comments_api_CommentParentComment.__name__ = "CommentParentComment" +comments_api_CommentParentComment.__qualname__ = "CommentParentComment" +comments_api_CommentParentComment.__module__ = "scout_service_api.comments_api" + + +class comments_api_CommentParentResource(ConjureBeanType): @builtins.classmethod def _fields(cls) -> Dict[str, ConjureFieldDefinition]: return { - 'name': ConjureFieldDefinition('name', str), - 'symbol': ConjureFieldDefinition('symbol', str) + 'resource_type': ConjureFieldDefinition('resourceType', comments_api_ResourceType), + 'resource_rid': ConjureFieldDefinition('resourceRid', comments_api_ResourceRid) } - __slots__: List[str] = ['_name', '_symbol'] + __slots__: List[str] = ['_resource_type', '_resource_rid'] - def __init__(self, name: str, symbol: str) -> None: - self._name = name - self._symbol = symbol + def __init__(self, resource_rid: str, resource_type: "comments_api_ResourceType") -> None: + self._resource_type = resource_type + self._resource_rid = resource_rid @builtins.property - def name(self) -> str: - return self._name + def resource_type(self) -> "comments_api_ResourceType": + """ + The type of resource that the comment is associated with + """ + return self._resource_type @builtins.property - def symbol(self) -> str: - return self._symbol + def resource_rid(self) -> str: + """ + The resource identifier for the resource that the comment is associated with. For example, a run or a workbook. + """ + return self._resource_rid -datasource_api_Unit.__name__ = "Unit" -datasource_api_Unit.__qualname__ = "Unit" -datasource_api_Unit.__module__ = "scout_service_api.datasource_api" +comments_api_CommentParentResource.__name__ = "CommentParentResource" +comments_api_CommentParentResource.__qualname__ = "CommentParentResource" +comments_api_CommentParentResource.__module__ = "scout_service_api.comments_api" -class datasource_logset_LogSetService(Service): +class comments_api_CommentsService(Service): """ - Log sets are a type of datasource which can be used to store log data. + Comments service manages conversations about resources. """ - def create(self, auth_header: str, request: "datasource_logset_api_CreateLogSetRequest") -> "datasource_logset_api_LogSetMetadata": + def get_conversation(self, auth_header: str, resource_rid: str, resource_type: "comments_api_ResourceType") -> "comments_api_Conversation": """ - Creates a log set, to which logs can be attached using `attach-and-finalize`. The logs within a logset are -not searchable until the logset is finalized. + A conversation is a fully resolved comment tree. It includes all comments for the given resource +and all the nested comments/replies to those comments. """ _headers: Dict[str, Any] = { 'Accept': 'application/json', - 'Content-Type': 'application/json', 'Authorization': auth_header, } @@ -3062,59 +2599,62 @@ def create(self, auth_header: str, request: "datasource_logset_api_CreateLogSetR } _path_params: Dict[str, Any] = { + 'resourceType': resource_type, + 'resourceRid': resource_rid, } - _json: Any = ConjureEncoder().default(request) + _json: Any = None - _path = '/data-source/log-set/v1/log-sets' + _path = '/comments/v1/conversations/{resourceType}/{resourceRid}' _path = _path.format(**_path_params) _response: Response = self._request( - 'POST', + 'GET', self._uri + _path, params=_params, headers=_headers, json=_json) _decoder = ConjureDecoder() - return _decoder.decode(_response.json(), datasource_logset_api_LogSetMetadata, self._return_none_for_unknown_union_types) + return _decoder.decode(_response.json(), comments_api_Conversation, self._return_none_for_unknown_union_types) - def attach_logs_and_finalize(self, auth_header: str, log_set_rid: str, request: "datasource_logset_api_AttachLogsAndFinalizeRequest") -> "datasource_logset_api_LogSetMetadata": + def get_conversation_count(self, auth_header: str, resource_rid: str, resource_type: "comments_api_ResourceType", include_deleted: Optional[bool] = None) -> int: """ - A logset is not considered readable until it has been finalized. Once finalized, the logset is immutable. + Returns the number of comments in a conversation. """ _headers: Dict[str, Any] = { 'Accept': 'application/json', - 'Content-Type': 'application/json', 'Authorization': auth_header, } _params: Dict[str, Any] = { + 'includeDeleted': include_deleted, } _path_params: Dict[str, Any] = { - 'logSetRid': log_set_rid, + 'resourceType': resource_type, + 'resourceRid': resource_rid, } - _json: Any = ConjureEncoder().default(request) + _json: Any = None - _path = '/data-source/log-set/v1/log-set/{logSetRid}/attach-and-finalize' + _path = '/comments/v1/conversations/{resourceType}/{resourceRid}/count' _path = _path.format(**_path_params) _response: Response = self._request( - 'POST', + 'GET', self._uri + _path, params=_params, headers=_headers, json=_json) _decoder = ConjureDecoder() - return _decoder.decode(_response.json(), datasource_logset_api_LogSetMetadata, self._return_none_for_unknown_union_types) + return _decoder.decode(_response.json(), int, self._return_none_for_unknown_union_types) - def get_log_set_metadata(self, auth_header: str, log_set_rid: str) -> "datasource_logset_api_LogSetMetadata": + def get_comment(self, auth_header: str, comment_rid: str) -> "comments_api_Comment": """ - Returns metadata about a log set. + Get a comment identified by its RID """ _headers: Dict[str, Any] = { @@ -3126,12 +2666,12 @@ def get_log_set_metadata(self, auth_header: str, log_set_rid: str) -> "datasourc } _path_params: Dict[str, Any] = { - 'logSetRid': log_set_rid, + 'commentRid': comment_rid, } _json: Any = None - _path = '/data-source/log-set/v1/log-set/{logSetRid}' + _path = '/comments/v1/comments/{commentRid}' _path = _path.format(**_path_params) _response: Response = self._request( @@ -3142,13 +2682,12 @@ def get_log_set_metadata(self, auth_header: str, log_set_rid: str) -> "datasourc json=_json) _decoder = ConjureDecoder() - return _decoder.decode(_response.json(), datasource_logset_api_LogSetMetadata, self._return_none_for_unknown_union_types) + return _decoder.decode(_response.json(), comments_api_Comment, self._return_none_for_unknown_union_types) - def batch_get_log_set_metadata(self, auth_header: str, request: List[str] = None) -> List["datasource_logset_api_LogSetMetadata"]: + def create_comment(self, auth_header: str, request: "comments_api_CreateCommentRequest") -> "comments_api_Comment": """ - Returns metadata about a set of log sets. + Create a comment on a resource """ - request = request if request is not None else [] _headers: Dict[str, Any] = { 'Accept': 'application/json', @@ -3164,7 +2703,7 @@ def batch_get_log_set_metadata(self, auth_header: str, request: List[str] = None _json: Any = ConjureEncoder().default(request) - _path = '/data-source/log-set/v1/log-set/multiple' + _path = '/comments/v1/comments' _path = _path.format(**_path_params) _response: Response = self._request( @@ -3175,11 +2714,11 @@ def batch_get_log_set_metadata(self, auth_header: str, request: List[str] = None json=_json) _decoder = ConjureDecoder() - return _decoder.decode(_response.json(), List[datasource_logset_api_LogSetMetadata], self._return_none_for_unknown_union_types) + return _decoder.decode(_response.json(), comments_api_Comment, self._return_none_for_unknown_union_types) - def search_log_sets(self, auth_header: str, request: "datasource_logset_api_SearchLogSetsRequest") -> "datasource_logset_api_SearchLogSetsResponse": + def edit_comment(self, auth_header: str, comment_rid: str, request: "comments_api_EditCommentRequest") -> "comments_api_Comment": """ - Searches all visible log sets based on log set metadata. + Edit an existing comment """ _headers: Dict[str, Any] = { @@ -3192,31 +2731,31 @@ def search_log_sets(self, auth_header: str, request: "datasource_logset_api_Sear } _path_params: Dict[str, Any] = { + 'commentRid': comment_rid, } _json: Any = ConjureEncoder().default(request) - _path = '/data-source/log-set/v1/log-sets/get' + _path = '/comments/v1/comments/{commentRid}' _path = _path.format(**_path_params) _response: Response = self._request( - 'POST', + 'PUT', self._uri + _path, params=_params, headers=_headers, json=_json) _decoder = ConjureDecoder() - return _decoder.decode(_response.json(), datasource_logset_api_SearchLogSetsResponse, self._return_none_for_unknown_union_types) + return _decoder.decode(_response.json(), comments_api_Comment, self._return_none_for_unknown_union_types) - def search_logs(self, auth_header: str, log_set_rid: str, request: "datasource_logset_api_SearchLogsRequest") -> "datasource_logset_api_SearchLogsResponse": + def delete_comment(self, auth_header: str, comment_rid: str) -> "comments_api_Comment": """ - Searches logs within a single log set. + Delete an existing comment """ _headers: Dict[str, Any] = { 'Accept': 'application/json', - 'Content-Type': 'application/json', 'Authorization': auth_header, } @@ -3224,1023 +2763,1074 @@ def search_logs(self, auth_header: str, log_set_rid: str, request: "datasource_l } _path_params: Dict[str, Any] = { - 'logSetRid': log_set_rid, + 'commentRid': comment_rid, } - _json: Any = ConjureEncoder().default(request) + _json: Any = None - _path = '/data-source/log-set/v1/log-set/{logSetRid}/logs' + _path = '/comments/v1/comments/{commentRid}' _path = _path.format(**_path_params) _response: Response = self._request( - 'POST', + 'DELETE', self._uri + _path, params=_params, headers=_headers, json=_json) _decoder = ConjureDecoder() - return _decoder.decode(_response.json(), datasource_logset_api_SearchLogsResponse, self._return_none_for_unknown_union_types) - - -datasource_logset_LogSetService.__name__ = "LogSetService" -datasource_logset_LogSetService.__qualname__ = "LogSetService" -datasource_logset_LogSetService.__module__ = "scout_service_api.datasource_logset" - + return _decoder.decode(_response.json(), comments_api_Comment, self._return_none_for_unknown_union_types) -class datasource_logset_api_AttachLogsAndFinalizeRequest(ConjureBeanType): + def pin_comment(self, auth_header: str, comment_rid: str) -> "comments_api_Comment": + """ + Pin a comment to the top of the conversation + """ - @builtins.classmethod - def _fields(cls) -> Dict[str, ConjureFieldDefinition]: - return { - 'logs': ConjureFieldDefinition('logs', List[datasource_logset_api_Log]) + _headers: Dict[str, Any] = { + 'Accept': 'application/json', + 'Authorization': auth_header, } - __slots__: List[str] = ['_logs'] + _params: Dict[str, Any] = { + } - def __init__(self, logs: List["datasource_logset_api_Log"]) -> None: - self._logs = logs + _path_params: Dict[str, Any] = { + 'commentRid': comment_rid, + } - @builtins.property - def logs(self) -> List["datasource_logset_api_Log"]: - return self._logs + _json: Any = None + _path = '/comments/v1/comments/{commentRid}/pin' + _path = _path.format(**_path_params) -datasource_logset_api_AttachLogsAndFinalizeRequest.__name__ = "AttachLogsAndFinalizeRequest" -datasource_logset_api_AttachLogsAndFinalizeRequest.__qualname__ = "AttachLogsAndFinalizeRequest" -datasource_logset_api_AttachLogsAndFinalizeRequest.__module__ = "scout_service_api.datasource_logset_api" + _response: Response = self._request( + 'PUT', + self._uri + _path, + params=_params, + headers=_headers, + json=_json) + _decoder = ConjureDecoder() + return _decoder.decode(_response.json(), comments_api_Comment, self._return_none_for_unknown_union_types) -class datasource_logset_api_BasicLogBody(ConjureBeanType): - """ - A largely unopinionated but very flexible format. - """ + def unpin_comment(self, auth_header: str, comment_rid: str) -> "comments_api_Comment": + """ + Unpin a comment from the top of the conversation + """ - @builtins.classmethod - def _fields(cls) -> Dict[str, ConjureFieldDefinition]: - return { - 'properties': ConjureFieldDefinition('properties', Dict[str, str]), - 'message': ConjureFieldDefinition('message', str) + _headers: Dict[str, Any] = { + 'Accept': 'application/json', + 'Authorization': auth_header, } - __slots__: List[str] = ['_properties', '_message'] + _params: Dict[str, Any] = { + } - def __init__(self, message: str, properties: Dict[str, str]) -> None: - self._properties = properties - self._message = message + _path_params: Dict[str, Any] = { + 'commentRid': comment_rid, + } - @builtins.property - def properties(self) -> Dict[str, str]: - return self._properties + _json: Any = None - @builtins.property - def message(self) -> str: - return self._message + _path = '/comments/v1/comments/{commentRid}/pin' + _path = _path.format(**_path_params) + _response: Response = self._request( + 'DELETE', + self._uri + _path, + params=_params, + headers=_headers, + json=_json) -datasource_logset_api_BasicLogBody.__name__ = "BasicLogBody" -datasource_logset_api_BasicLogBody.__qualname__ = "BasicLogBody" -datasource_logset_api_BasicLogBody.__module__ = "scout_service_api.datasource_logset_api" + _decoder = ConjureDecoder() + return _decoder.decode(_response.json(), comments_api_Comment, self._return_none_for_unknown_union_types) + def add_reaction(self, auth_header: str, comment_rid: str, type: "comments_api_ReactionType") -> "comments_api_Comment": + """ + Create a reaction on a comment + """ -class datasource_logset_api_CreateLogSetRequest(ConjureBeanType): + _headers: Dict[str, Any] = { + 'Accept': 'application/json', + 'Authorization': auth_header, + } - @builtins.classmethod - def _fields(cls) -> Dict[str, ConjureFieldDefinition]: - return { - 'name': ConjureFieldDefinition('name', str), - 'description': ConjureFieldDefinition('description', OptionalTypeWrapper[str]), - 'origin_metadata': ConjureFieldDefinition('originMetadata', Dict[str, str]), - 'timestamp_type': ConjureFieldDefinition('timestampType', datasource_TimestampType) + _params: Dict[str, Any] = { } - __slots__: List[str] = ['_name', '_description', '_origin_metadata', '_timestamp_type'] + _path_params: Dict[str, Any] = { + 'commentRid': comment_rid, + 'type': type, + } - def __init__(self, name: str, origin_metadata: Dict[str, str], timestamp_type: "datasource_TimestampType", description: Optional[str] = None) -> None: - self._name = name - self._description = description - self._origin_metadata = origin_metadata - self._timestamp_type = timestamp_type + _json: Any = None - @builtins.property - def name(self) -> str: - return self._name + _path = '/comments/v1/comments/{commentRid}/reactions/{type}' + _path = _path.format(**_path_params) - @builtins.property - def description(self) -> Optional[str]: - return self._description + _response: Response = self._request( + 'PUT', + self._uri + _path, + params=_params, + headers=_headers, + json=_json) - @builtins.property - def origin_metadata(self) -> Dict[str, str]: - return self._origin_metadata + _decoder = ConjureDecoder() + return _decoder.decode(_response.json(), comments_api_Comment, self._return_none_for_unknown_union_types) - @builtins.property - def timestamp_type(self) -> "datasource_TimestampType": - return self._timestamp_type + def remove_reaction(self, auth_header: str, comment_rid: str, type: "comments_api_ReactionType") -> "comments_api_Comment": + """ + Create a reaction on a comment + """ + _headers: Dict[str, Any] = { + 'Accept': 'application/json', + 'Authorization': auth_header, + } -datasource_logset_api_CreateLogSetRequest.__name__ = "CreateLogSetRequest" -datasource_logset_api_CreateLogSetRequest.__qualname__ = "CreateLogSetRequest" -datasource_logset_api_CreateLogSetRequest.__module__ = "scout_service_api.datasource_logset_api" + _params: Dict[str, Any] = { + } + + _path_params: Dict[str, Any] = { + 'commentRid': comment_rid, + 'type': type, + } + _json: Any = None + + _path = '/comments/v1/comments/{commentRid}/reactions/{type}' + _path = _path.format(**_path_params) + + _response: Response = self._request( + 'DELETE', + self._uri + _path, + params=_params, + headers=_headers, + json=_json) + + _decoder = ConjureDecoder() + return _decoder.decode(_response.json(), comments_api_Comment, self._return_none_for_unknown_union_types) -class datasource_logset_api_Log(ConjureBeanType): + +comments_api_CommentsService.__name__ = "CommentsService" +comments_api_CommentsService.__qualname__ = "CommentsService" +comments_api_CommentsService.__module__ = "scout_service_api.comments_api" + + +class comments_api_Conversation(ConjureBeanType): @builtins.classmethod def _fields(cls) -> Dict[str, ConjureFieldDefinition]: return { - 'time': ConjureFieldDefinition('time', datasource_Timestamp), - 'body': ConjureFieldDefinition('body', datasource_logset_api_LogBody) + 'resource_rid': ConjureFieldDefinition('resourceRid', comments_api_ResourceRid), + 'resource_type': ConjureFieldDefinition('resourceType', comments_api_ResourceType), + 'comments': ConjureFieldDefinition('comments', List[comments_api_ConversationNode]) } - __slots__: List[str] = ['_time', '_body'] + __slots__: List[str] = ['_resource_rid', '_resource_type', '_comments'] - def __init__(self, body: "datasource_logset_api_LogBody", time: "datasource_Timestamp") -> None: - self._time = time - self._body = body + def __init__(self, comments: List["comments_api_ConversationNode"], resource_rid: str, resource_type: "comments_api_ResourceType") -> None: + self._resource_rid = resource_rid + self._resource_type = resource_type + self._comments = comments @builtins.property - def time(self) -> "datasource_Timestamp": - return self._time + def resource_rid(self) -> str: + """ + RID for the resource that the conversation is associated with. + """ + return self._resource_rid @builtins.property - def body(self) -> "datasource_logset_api_LogBody": - return self._body + def resource_type(self) -> "comments_api_ResourceType": + """ + The type of the resource that the conversation is associated with. + """ + return self._resource_type + + @builtins.property + def comments(self) -> List["comments_api_ConversationNode"]: + """ + The comments on the conversation ordered by creation time. +Empty if the comment has no replies. + """ + return self._comments -datasource_logset_api_Log.__name__ = "Log" -datasource_logset_api_Log.__qualname__ = "Log" -datasource_logset_api_Log.__module__ = "scout_service_api.datasource_logset_api" +comments_api_Conversation.__name__ = "Conversation" +comments_api_Conversation.__qualname__ = "Conversation" +comments_api_Conversation.__module__ = "scout_service_api.comments_api" -class datasource_logset_api_LogBody(ConjureUnionType): - _basic: Optional["datasource_logset_api_BasicLogBody"] = None +class comments_api_ConversationNode(ConjureBeanType): @builtins.classmethod - def _options(cls) -> Dict[str, ConjureFieldDefinition]: + def _fields(cls) -> Dict[str, ConjureFieldDefinition]: return { - 'basic': ConjureFieldDefinition('basic', datasource_logset_api_BasicLogBody) + 'comment': ConjureFieldDefinition('comment', comments_api_Comment), + 'replies': ConjureFieldDefinition('replies', List[comments_api_ConversationNode]) } - def __init__( - self, - basic: Optional["datasource_logset_api_BasicLogBody"] = None, - type_of_union: Optional[str] = None - ) -> None: - if type_of_union is None: - if (basic is not None) != 1: - raise ValueError('a union must contain a single member') - - if basic is not None: - self._basic = basic - self._type = 'basic' + __slots__: List[str] = ['_comment', '_replies'] - elif type_of_union == 'basic': - if basic is None: - raise ValueError('a union value must not be None') - self._basic = basic - self._type = 'basic' + def __init__(self, comment: "comments_api_Comment", replies: List["comments_api_ConversationNode"]) -> None: + self._comment = comment + self._replies = replies @builtins.property - def basic(self) -> Optional["datasource_logset_api_BasicLogBody"]: - return self._basic - - def accept(self, visitor) -> Any: - if not isinstance(visitor, datasource_logset_api_LogBodyVisitor): - raise ValueError('{} is not an instance of datasource_logset_api_LogBodyVisitor'.format(visitor.__class__.__name__)) - if self._type == 'basic' and self.basic is not None: - return visitor._basic(self.basic) + def comment(self) -> "comments_api_Comment": + """ + The comment + """ + return self._comment + @builtins.property + def replies(self) -> List["comments_api_ConversationNode"]: + """ + The comments on (aka replies to) the comment ordered by creation time. Empty if the comment has no replies. + """ + return self._replies -datasource_logset_api_LogBody.__name__ = "LogBody" -datasource_logset_api_LogBody.__qualname__ = "LogBody" -datasource_logset_api_LogBody.__module__ = "scout_service_api.datasource_logset_api" +comments_api_ConversationNode.__name__ = "ConversationNode" +comments_api_ConversationNode.__qualname__ = "ConversationNode" +comments_api_ConversationNode.__module__ = "scout_service_api.comments_api" -class datasource_logset_api_LogBodyVisitor: - @abstractmethod - def _basic(self, basic: "datasource_logset_api_BasicLogBody") -> Any: - pass +class comments_api_CreateCommentRequest(ConjureBeanType): + @builtins.classmethod + def _fields(cls) -> Dict[str, ConjureFieldDefinition]: + return { + 'parent': ConjureFieldDefinition('parent', comments_api_CommentParent), + 'content': ConjureFieldDefinition('content', str), + 'attachments': ConjureFieldDefinition('attachments', List[str]) + } -datasource_logset_api_LogBodyVisitor.__name__ = "LogBodyVisitor" -datasource_logset_api_LogBodyVisitor.__qualname__ = "LogBodyVisitor" -datasource_logset_api_LogBodyVisitor.__module__ = "scout_service_api.datasource_logset_api" + __slots__: List[str] = ['_parent', '_content', '_attachments'] + def __init__(self, attachments: List[str], content: str, parent: "comments_api_CommentParent") -> None: + self._parent = parent + self._content = content + self._attachments = attachments -class datasource_logset_api_LogFormat(ConjureEnumType): + @builtins.property + def parent(self) -> "comments_api_CommentParent": + return self._parent - V1 = 'V1' - '''V1''' - UNKNOWN = 'UNKNOWN' - '''UNKNOWN''' + @builtins.property + def content(self) -> str: + """ + The content of the comment. Markdown supported. + """ + return self._content - def __reduce_ex__(self, proto): - return self.__class__, (self.name,) + @builtins.property + def attachments(self) -> List[str]: + """ + Attachments to the comment. + """ + return self._attachments -datasource_logset_api_LogFormat.__name__ = "LogFormat" -datasource_logset_api_LogFormat.__qualname__ = "LogFormat" -datasource_logset_api_LogFormat.__module__ = "scout_service_api.datasource_logset_api" +comments_api_CreateCommentRequest.__name__ = "CreateCommentRequest" +comments_api_CreateCommentRequest.__qualname__ = "CreateCommentRequest" +comments_api_CreateCommentRequest.__module__ = "scout_service_api.comments_api" -class datasource_logset_api_LogHandle(ConjureUnionType): - _s3: Optional["datasource_logset_api_S3LogHandle"] = None +class comments_api_EditCommentRequest(ConjureBeanType): @builtins.classmethod - def _options(cls) -> Dict[str, ConjureFieldDefinition]: + def _fields(cls) -> Dict[str, ConjureFieldDefinition]: return { - 's3': ConjureFieldDefinition('s3', datasource_logset_api_S3LogHandle) + 'content': ConjureFieldDefinition('content', str), + 'attachments': ConjureFieldDefinition('attachments', List[str]) } - def __init__( - self, - s3: Optional["datasource_logset_api_S3LogHandle"] = None, - type_of_union: Optional[str] = None - ) -> None: - if type_of_union is None: - if (s3 is not None) != 1: - raise ValueError('a union must contain a single member') - - if s3 is not None: - self._s3 = s3 - self._type = 's3' + __slots__: List[str] = ['_content', '_attachments'] - elif type_of_union == 's3': - if s3 is None: - raise ValueError('a union value must not be None') - self._s3 = s3 - self._type = 's3' + def __init__(self, attachments: List[str], content: str) -> None: + self._content = content + self._attachments = attachments @builtins.property - def s3(self) -> Optional["datasource_logset_api_S3LogHandle"]: - return self._s3 - - def accept(self, visitor) -> Any: - if not isinstance(visitor, datasource_logset_api_LogHandleVisitor): - raise ValueError('{} is not an instance of datasource_logset_api_LogHandleVisitor'.format(visitor.__class__.__name__)) - if self._type == 's3' and self.s3 is not None: - return visitor._s3(self.s3) - - -datasource_logset_api_LogHandle.__name__ = "LogHandle" -datasource_logset_api_LogHandle.__qualname__ = "LogHandle" -datasource_logset_api_LogHandle.__module__ = "scout_service_api.datasource_logset_api" - - -class datasource_logset_api_LogHandleVisitor: + def content(self) -> str: + """ + The content of the comment. Markdown supported. + """ + return self._content - @abstractmethod - def _s3(self, s3: "datasource_logset_api_S3LogHandle") -> Any: - pass + @builtins.property + def attachments(self) -> List[str]: + """ + Attachments to the comment. + """ + return self._attachments -datasource_logset_api_LogHandleVisitor.__name__ = "LogHandleVisitor" -datasource_logset_api_LogHandleVisitor.__qualname__ = "LogHandleVisitor" -datasource_logset_api_LogHandleVisitor.__module__ = "scout_service_api.datasource_logset_api" +comments_api_EditCommentRequest.__name__ = "EditCommentRequest" +comments_api_EditCommentRequest.__qualname__ = "EditCommentRequest" +comments_api_EditCommentRequest.__module__ = "scout_service_api.comments_api" -class datasource_logset_api_LogSetMetadata(ConjureBeanType): +class comments_api_Reaction(ConjureBeanType): @builtins.classmethod def _fields(cls) -> Dict[str, ConjureFieldDefinition]: return { - 'rid': ConjureFieldDefinition('rid', datasource_logset_api_LogSetRid), - 'created_by': ConjureFieldDefinition('createdBy', str), - 'name': ConjureFieldDefinition('name', str), - 'description': ConjureFieldDefinition('description', OptionalTypeWrapper[str]), - 'origin_metadata': ConjureFieldDefinition('originMetadata', Dict[str, str]), + 'rid': ConjureFieldDefinition('rid', comments_api_ReactionRid), + 'user_rid': ConjureFieldDefinition('userRid', str), 'created_at': ConjureFieldDefinition('createdAt', str), - 'updated_at': ConjureFieldDefinition('updatedAt', str), - 'log_count': ConjureFieldDefinition('logCount', int), - 'timestamp_type': ConjureFieldDefinition('timestampType', datasource_TimestampType) + 'type': ConjureFieldDefinition('type', comments_api_ReactionType) } - __slots__: List[str] = ['_rid', '_created_by', '_name', '_description', '_origin_metadata', '_created_at', '_updated_at', '_log_count', '_timestamp_type'] + __slots__: List[str] = ['_rid', '_user_rid', '_created_at', '_type'] - def __init__(self, created_at: str, created_by: str, log_count: int, name: str, origin_metadata: Dict[str, str], rid: str, timestamp_type: "datasource_TimestampType", updated_at: str, description: Optional[str] = None) -> None: + def __init__(self, created_at: str, rid: str, type: "comments_api_ReactionType", user_rid: str) -> None: self._rid = rid - self._created_by = created_by - self._name = name - self._description = description - self._origin_metadata = origin_metadata + self._user_rid = user_rid self._created_at = created_at - self._updated_at = updated_at - self._log_count = log_count - self._timestamp_type = timestamp_type + self._type = type @builtins.property def rid(self) -> str: + """ + Unique resource identifier for the reaction + """ return self._rid @builtins.property - def created_by(self) -> str: - return self._created_by - - @builtins.property - def name(self) -> str: - return self._name - - @builtins.property - def description(self) -> Optional[str]: - return self._description - - @builtins.property - def origin_metadata(self) -> Dict[str, str]: - return self._origin_metadata + def user_rid(self) -> str: + """ + The user who authored the reaction + """ + return self._user_rid @builtins.property def created_at(self) -> str: + """ + The time the reaction was created + """ return self._created_at @builtins.property - def updated_at(self) -> str: - return self._updated_at + def type(self) -> "comments_api_ReactionType": + """ + The type of reaction + """ + return self._type - @builtins.property - def log_count(self) -> int: - return self._log_count - @builtins.property - def timestamp_type(self) -> "datasource_TimestampType": - return self._timestamp_type +comments_api_Reaction.__name__ = "Reaction" +comments_api_Reaction.__qualname__ = "Reaction" +comments_api_Reaction.__module__ = "scout_service_api.comments_api" -datasource_logset_api_LogSetMetadata.__name__ = "LogSetMetadata" -datasource_logset_api_LogSetMetadata.__qualname__ = "LogSetMetadata" -datasource_logset_api_LogSetMetadata.__module__ = "scout_service_api.datasource_logset_api" +class comments_api_ReactionType(ConjureEnumType): + LIKE = 'LIKE' + '''LIKE''' + DISLIKE = 'DISLIKE' + '''DISLIKE''' + HEART = 'HEART' + '''HEART''' + HOORAY = 'HOORAY' + '''HOORAY''' + ROCKET = 'ROCKET' + '''ROCKET''' + EYES = 'EYES' + '''EYES''' + UNKNOWN = 'UNKNOWN' + '''UNKNOWN''' -class datasource_logset_api_S3LogHandle(ConjureBeanType): + def __reduce_ex__(self, proto): + return self.__class__, (self.name,) - @builtins.classmethod - def _fields(cls) -> Dict[str, ConjureFieldDefinition]: - return { - 'path': ConjureFieldDefinition('path', str), - 'format': ConjureFieldDefinition('format', datasource_logset_api_LogFormat) - } - __slots__: List[str] = ['_path', '_format'] +comments_api_ReactionType.__name__ = "ReactionType" +comments_api_ReactionType.__qualname__ = "ReactionType" +comments_api_ReactionType.__module__ = "scout_service_api.comments_api" - def __init__(self, format: "datasource_logset_api_LogFormat", path: str) -> None: - self._path = path - self._format = format - @builtins.property - def path(self) -> str: - return self._path +class comments_api_ResourceType(ConjureEnumType): - @builtins.property - def format(self) -> "datasource_logset_api_LogFormat": - return self._format + RUN = 'RUN' + '''RUN''' + UNKNOWN = 'UNKNOWN' + '''UNKNOWN''' + def __reduce_ex__(self, proto): + return self.__class__, (self.name,) -datasource_logset_api_S3LogHandle.__name__ = "S3LogHandle" -datasource_logset_api_S3LogHandle.__qualname__ = "S3LogHandle" -datasource_logset_api_S3LogHandle.__module__ = "scout_service_api.datasource_logset_api" + +comments_api_ResourceType.__name__ = "ResourceType" +comments_api_ResourceType.__qualname__ = "ResourceType" +comments_api_ResourceType.__module__ = "scout_service_api.comments_api" -class datasource_logset_api_SearchLogSetsRequest(ConjureBeanType): +class datasource_Property(ConjureBeanType): @builtins.classmethod def _fields(cls) -> Dict[str, ConjureFieldDefinition]: return { - 'token': ConjureFieldDefinition('token', OptionalTypeWrapper[datasource_logset_api_Token]), - 'page_size': ConjureFieldDefinition('pageSize', OptionalTypeWrapper[int]) + 'name': ConjureFieldDefinition('name', datasource_PropertyName), + 'value': ConjureFieldDefinition('value', datasource_PropertyValue) } - __slots__: List[str] = ['_token', '_page_size'] + __slots__: List[str] = ['_name', '_value'] - def __init__(self, page_size: Optional[int] = None, token: Optional[str] = None) -> None: - self._token = token - self._page_size = page_size + def __init__(self, name: str, value: str) -> None: + self._name = name + self._value = value @builtins.property - def token(self) -> Optional[str]: - return self._token + def name(self) -> str: + return self._name @builtins.property - def page_size(self) -> Optional[int]: - """ - The maximum allowed page size is 1000. Defaults to the maximum if not supplied. - """ - return self._page_size + def value(self) -> str: + return self._value -datasource_logset_api_SearchLogSetsRequest.__name__ = "SearchLogSetsRequest" -datasource_logset_api_SearchLogSetsRequest.__qualname__ = "SearchLogSetsRequest" -datasource_logset_api_SearchLogSetsRequest.__module__ = "scout_service_api.datasource_logset_api" +datasource_Property.__name__ = "Property" +datasource_Property.__qualname__ = "Property" +datasource_Property.__module__ = "scout_service_api.datasource" -class datasource_logset_api_SearchLogSetsResponse(ConjureBeanType): +class datasource_Timestamp(ConjureBeanType): @builtins.classmethod def _fields(cls) -> Dict[str, ConjureFieldDefinition]: return { - 'values': ConjureFieldDefinition('values', List[datasource_logset_api_LogSetMetadata]), - 'next_page_token': ConjureFieldDefinition('nextPageToken', OptionalTypeWrapper[datasource_logset_api_Token]) + 'seconds': ConjureFieldDefinition('seconds', int), + 'nanos': ConjureFieldDefinition('nanos', int) } - __slots__: List[str] = ['_values', '_next_page_token'] + __slots__: List[str] = ['_seconds', '_nanos'] - def __init__(self, values: List["datasource_logset_api_LogSetMetadata"], next_page_token: Optional[str] = None) -> None: - self._values = values - self._next_page_token = next_page_token + def __init__(self, nanos: int, seconds: int) -> None: + self._seconds = seconds + self._nanos = nanos @builtins.property - def values(self) -> List["datasource_logset_api_LogSetMetadata"]: - return self._values + def seconds(self) -> int: + return self._seconds @builtins.property - def next_page_token(self) -> Optional[str]: - return self._next_page_token - - -datasource_logset_api_SearchLogSetsResponse.__name__ = "SearchLogSetsResponse" -datasource_logset_api_SearchLogSetsResponse.__qualname__ = "SearchLogSetsResponse" -datasource_logset_api_SearchLogSetsResponse.__module__ = "scout_service_api.datasource_logset_api" + def nanos(self) -> int: + return self._nanos -class datasource_logset_api_SearchLogsRequest(ConjureBeanType): +datasource_Timestamp.__name__ = "Timestamp" +datasource_Timestamp.__qualname__ = "Timestamp" +datasource_Timestamp.__module__ = "scout_service_api.datasource" - @builtins.classmethod - def _fields(cls) -> Dict[str, ConjureFieldDefinition]: - return { - 'token': ConjureFieldDefinition('token', OptionalTypeWrapper[datasource_logset_api_Token]), - 'page_size': ConjureFieldDefinition('pageSize', OptionalTypeWrapper[int]) - } - __slots__: List[str] = ['_token', '_page_size'] +class datasource_TimestampType(ConjureEnumType): - def __init__(self, page_size: Optional[int] = None, token: Optional[str] = None) -> None: - self._token = token - self._page_size = page_size - - @builtins.property - def token(self) -> Optional[str]: - return self._token - - @builtins.property - def page_size(self) -> Optional[int]: - """ - The maximum allowed page size is 10000. Defaults to the maximum if not supplied. - """ - return self._page_size - - -datasource_logset_api_SearchLogsRequest.__name__ = "SearchLogsRequest" -datasource_logset_api_SearchLogsRequest.__qualname__ = "SearchLogsRequest" -datasource_logset_api_SearchLogsRequest.__module__ = "scout_service_api.datasource_logset_api" - - -class datasource_logset_api_SearchLogsResponse(ConjureBeanType): - - @builtins.classmethod - def _fields(cls) -> Dict[str, ConjureFieldDefinition]: - return { - 'logs': ConjureFieldDefinition('logs', List[datasource_logset_api_Log]), - 'next_page_token': ConjureFieldDefinition('nextPageToken', OptionalTypeWrapper[datasource_logset_api_Token]) - } - - __slots__: List[str] = ['_logs', '_next_page_token'] - - def __init__(self, logs: List["datasource_logset_api_Log"], next_page_token: Optional[str] = None) -> None: - self._logs = logs - self._next_page_token = next_page_token - - @builtins.property - def logs(self) -> List["datasource_logset_api_Log"]: - return self._logs + RELATIVE = 'RELATIVE' + '''RELATIVE''' + ABSOLUTE = 'ABSOLUTE' + '''ABSOLUTE''' + UNKNOWN = 'UNKNOWN' + '''UNKNOWN''' - @builtins.property - def next_page_token(self) -> Optional[str]: - return self._next_page_token + def __reduce_ex__(self, proto): + return self.__class__, (self.name,) -datasource_logset_api_SearchLogsResponse.__name__ = "SearchLogsResponse" -datasource_logset_api_SearchLogsResponse.__qualname__ = "SearchLogsResponse" -datasource_logset_api_SearchLogsResponse.__module__ = "scout_service_api.datasource_logset_api" +datasource_TimestampType.__name__ = "TimestampType" +datasource_TimestampType.__qualname__ = "TimestampType" +datasource_TimestampType.__module__ = "scout_service_api.datasource" -class datasource_pagination_api_PageRequest(ConjureBeanType): +class datasource_api_BatchGetChannelPrefixTreeRequest(ConjureBeanType): @builtins.classmethod def _fields(cls) -> Dict[str, ConjureFieldDefinition]: return { - 'page_token': ConjureFieldDefinition('pageToken', OptionalTypeWrapper[datasource_pagination_api_PageToken]), - 'page_size': ConjureFieldDefinition('pageSize', int) + 'data_source_rids': ConjureFieldDefinition('dataSourceRids', List[datasource_api_DataSourceRid]) } - __slots__: List[str] = ['_page_token', '_page_size'] - - def __init__(self, page_size: int, page_token: Optional[str] = None) -> None: - self._page_token = page_token - self._page_size = page_size + __slots__: List[str] = ['_data_source_rids'] - @builtins.property - def page_token(self) -> Optional[str]: - return self._page_token + def __init__(self, data_source_rids: List[str]) -> None: + self._data_source_rids = data_source_rids @builtins.property - def page_size(self) -> int: - return self._page_size + def data_source_rids(self) -> List[str]: + return self._data_source_rids -datasource_pagination_api_PageRequest.__name__ = "PageRequest" -datasource_pagination_api_PageRequest.__qualname__ = "PageRequest" -datasource_pagination_api_PageRequest.__module__ = "scout_service_api.datasource_pagination_api" +datasource_api_BatchGetChannelPrefixTreeRequest.__name__ = "BatchGetChannelPrefixTreeRequest" +datasource_api_BatchGetChannelPrefixTreeRequest.__qualname__ = "BatchGetChannelPrefixTreeRequest" +datasource_api_BatchGetChannelPrefixTreeRequest.__module__ = "scout_service_api.datasource_api" -class datasource_pagination_api_PageResponse(ConjureBeanType): +class datasource_api_BatchGetChannelPrefixTreeResponse(ConjureBeanType): + """ + If the tree for a data source has not been indexed, it will be omitted from the map. + """ @builtins.classmethod def _fields(cls) -> Dict[str, ConjureFieldDefinition]: return { - 'next_page_token': ConjureFieldDefinition('nextPageToken', OptionalTypeWrapper[datasource_pagination_api_PageToken]) + 'channel_prefix_trees': ConjureFieldDefinition('channelPrefixTrees', Dict[datasource_api_DataSourceRid, datasource_api_ChannelPrefixTree]) } - __slots__: List[str] = ['_next_page_token'] + __slots__: List[str] = ['_channel_prefix_trees'] - def __init__(self, next_page_token: Optional[str] = None) -> None: - self._next_page_token = next_page_token + def __init__(self, channel_prefix_trees: Dict[str, "datasource_api_ChannelPrefixTree"]) -> None: + self._channel_prefix_trees = channel_prefix_trees @builtins.property - def next_page_token(self) -> Optional[str]: - return self._next_page_token + def channel_prefix_trees(self) -> Dict[str, "datasource_api_ChannelPrefixTree"]: + return self._channel_prefix_trees -datasource_pagination_api_PageResponse.__name__ = "PageResponse" -datasource_pagination_api_PageResponse.__qualname__ = "PageResponse" -datasource_pagination_api_PageResponse.__module__ = "scout_service_api.datasource_pagination_api" +datasource_api_BatchGetChannelPrefixTreeResponse.__name__ = "BatchGetChannelPrefixTreeResponse" +datasource_api_BatchGetChannelPrefixTreeResponse.__qualname__ = "BatchGetChannelPrefixTreeResponse" +datasource_api_BatchGetChannelPrefixTreeResponse.__module__ = "scout_service_api.datasource_api" -class event_CreateEvent(ConjureBeanType): +class datasource_api_ChannelMetadata(ConjureBeanType): @builtins.classmethod def _fields(cls) -> Dict[str, ConjureFieldDefinition]: return { - 'associations': ConjureFieldDefinition('associations', List[str]), - 'dataset_rid': ConjureFieldDefinition('datasetRid', str), - 'timestamp': ConjureFieldDefinition('timestamp', event_Timestamp), - 'duration': ConjureFieldDefinition('duration', scout_run_api_Duration), - 'name': ConjureFieldDefinition('name', str), - 'type': ConjureFieldDefinition('type', OptionalTypeWrapper[event_EventType]) + 'name': ConjureFieldDefinition('name', datasource_api_Channel), + 'data_source': ConjureFieldDefinition('dataSource', datasource_api_DataSourceRid), + 'unit': ConjureFieldDefinition('unit', OptionalTypeWrapper[datasource_api_Unit]), + 'description': ConjureFieldDefinition('description', OptionalTypeWrapper[str]), + 'data_type': ConjureFieldDefinition('dataType', OptionalTypeWrapper[datasource_api_SeriesDataType]), + 'series_rid': ConjureFieldDefinition('seriesRid', datasource_api_SeriesArchetypeRidOrLogicalSeriesRid) } - __slots__: List[str] = ['_associations', '_dataset_rid', '_timestamp', '_duration', '_name', '_type'] + __slots__: List[str] = ['_name', '_data_source', '_unit', '_description', '_data_type', '_series_rid'] - def __init__(self, associations: List[str], dataset_rid: str, duration: "scout_run_api_Duration", name: str, timestamp: "event_Timestamp", type: Optional["event_EventType"] = None) -> None: - self._associations = associations - self._dataset_rid = dataset_rid - self._timestamp = timestamp - self._duration = duration + def __init__(self, data_source: str, name: str, series_rid: "datasource_api_SeriesArchetypeRidOrLogicalSeriesRid", data_type: Optional["datasource_api_SeriesDataType"] = None, description: Optional[str] = None, unit: Optional["datasource_api_Unit"] = None) -> None: self._name = name - self._type = type + self._data_source = data_source + self._unit = unit + self._description = description + self._data_type = data_type + self._series_rid = series_rid @builtins.property - def associations(self) -> List[str]: - return self._associations + def name(self) -> str: + return self._name @builtins.property - def dataset_rid(self) -> str: - return self._dataset_rid + def data_source(self) -> str: + return self._data_source @builtins.property - def timestamp(self) -> "event_Timestamp": - return self._timestamp + def unit(self) -> Optional["datasource_api_Unit"]: + return self._unit @builtins.property - def duration(self) -> "scout_run_api_Duration": - return self._duration + def description(self) -> Optional[str]: + return self._description @builtins.property - def name(self) -> str: - return self._name + def data_type(self) -> Optional["datasource_api_SeriesDataType"]: + return self._data_type @builtins.property - def type(self) -> Optional["event_EventType"]: - return self._type + def series_rid(self) -> "datasource_api_SeriesArchetypeRidOrLogicalSeriesRid": + return self._series_rid -event_CreateEvent.__name__ = "CreateEvent" -event_CreateEvent.__qualname__ = "CreateEvent" -event_CreateEvent.__module__ = "scout_service_api.event" +datasource_api_ChannelMetadata.__name__ = "ChannelMetadata" +datasource_api_ChannelMetadata.__qualname__ = "ChannelMetadata" +datasource_api_ChannelMetadata.__module__ = "scout_service_api.datasource_api" -class event_Event(ConjureBeanType): +class datasource_api_ChannelOrPrefix(ConjureUnionType): + _channel: Optional["datasource_api_ChannelMetadata"] = None + _prefix: Optional["datasource_api_DataSourcePrefixNode"] = None @builtins.classmethod - def _fields(cls) -> Dict[str, ConjureFieldDefinition]: + def _options(cls) -> Dict[str, ConjureFieldDefinition]: return { - 'uuid': ConjureFieldDefinition('uuid', str), - 'timestamp': ConjureFieldDefinition('timestamp', event_Timestamp), - 'duration': ConjureFieldDefinition('duration', scout_run_api_Duration), - 'name': ConjureFieldDefinition('name', str), - 'dataset_rid': ConjureFieldDefinition('datasetRid', str), - 'type': ConjureFieldDefinition('type', event_EventType) + 'channel': ConjureFieldDefinition('channel', datasource_api_ChannelMetadata), + 'prefix': ConjureFieldDefinition('prefix', datasource_api_DataSourcePrefixNode) } - __slots__: List[str] = ['_uuid', '_timestamp', '_duration', '_name', '_dataset_rid', '_type'] + def __init__( + self, + channel: Optional["datasource_api_ChannelMetadata"] = None, + prefix: Optional["datasource_api_DataSourcePrefixNode"] = None, + type_of_union: Optional[str] = None + ) -> None: + if type_of_union is None: + if (channel is not None) + (prefix is not None) != 1: + raise ValueError('a union must contain a single member') - def __init__(self, dataset_rid: str, duration: "scout_run_api_Duration", name: str, timestamp: "event_Timestamp", type: "event_EventType", uuid: str) -> None: - self._uuid = uuid - self._timestamp = timestamp - self._duration = duration - self._name = name - self._dataset_rid = dataset_rid - self._type = type + if channel is not None: + self._channel = channel + self._type = 'channel' + if prefix is not None: + self._prefix = prefix + self._type = 'prefix' - @builtins.property - def uuid(self) -> str: - return self._uuid + elif type_of_union == 'channel': + if channel is None: + raise ValueError('a union value must not be None') + self._channel = channel + self._type = 'channel' + elif type_of_union == 'prefix': + if prefix is None: + raise ValueError('a union value must not be None') + self._prefix = prefix + self._type = 'prefix' @builtins.property - def timestamp(self) -> "event_Timestamp": - return self._timestamp + def channel(self) -> Optional["datasource_api_ChannelMetadata"]: + return self._channel @builtins.property - def duration(self) -> "scout_run_api_Duration": - return self._duration + def prefix(self) -> Optional["datasource_api_DataSourcePrefixNode"]: + return self._prefix - @builtins.property - def name(self) -> str: - return self._name + def accept(self, visitor) -> Any: + if not isinstance(visitor, datasource_api_ChannelOrPrefixVisitor): + raise ValueError('{} is not an instance of datasource_api_ChannelOrPrefixVisitor'.format(visitor.__class__.__name__)) + if self._type == 'channel' and self.channel is not None: + return visitor._channel(self.channel) + if self._type == 'prefix' and self.prefix is not None: + return visitor._prefix(self.prefix) - @builtins.property - def dataset_rid(self) -> str: - return self._dataset_rid - @builtins.property - def type(self) -> "event_EventType": - return self._type +datasource_api_ChannelOrPrefix.__name__ = "ChannelOrPrefix" +datasource_api_ChannelOrPrefix.__qualname__ = "ChannelOrPrefix" +datasource_api_ChannelOrPrefix.__module__ = "scout_service_api.datasource_api" -event_Event.__name__ = "Event" -event_Event.__qualname__ = "Event" -event_Event.__module__ = "scout_service_api.event" +class datasource_api_ChannelOrPrefixVisitor: + @abstractmethod + def _channel(self, channel: "datasource_api_ChannelMetadata") -> Any: + pass -class event_EventService(Service): - """ - An Event is an annotated moment or time range. -The Event Service is responsible for creating and retrieving events for a particular data source. - """ + @abstractmethod + def _prefix(self, prefix: "datasource_api_DataSourcePrefixNode") -> Any: + pass - def create_event(self, auth_header: str, request: "event_CreateEvent") -> "event_Event": - """ - Creates an event - """ - _headers: Dict[str, Any] = { - 'Accept': 'application/json', - 'Content-Type': 'application/json', - 'Authorization': auth_header, - } +datasource_api_ChannelOrPrefixVisitor.__name__ = "ChannelOrPrefixVisitor" +datasource_api_ChannelOrPrefixVisitor.__qualname__ = "ChannelOrPrefixVisitor" +datasource_api_ChannelOrPrefixVisitor.__module__ = "scout_service_api.datasource_api" - _params: Dict[str, Any] = { - } - _path_params: Dict[str, Any] = { +class datasource_api_ChannelPrefixTree(ConjureBeanType): + + @builtins.classmethod + def _fields(cls) -> Dict[str, ConjureFieldDefinition]: + return { + 'roots': ConjureFieldDefinition('roots', List[datasource_api_ChannelPrefixTreeNode]), + 'delimiter': ConjureFieldDefinition('delimiter', str) } - _json: Any = ConjureEncoder().default(request) + __slots__: List[str] = ['_roots', '_delimiter'] - _path = '/event/v1/events' - _path = _path.format(**_path_params) + def __init__(self, delimiter: str, roots: List["datasource_api_ChannelPrefixTreeNode"]) -> None: + self._roots = roots + self._delimiter = delimiter - _response: Response = self._request( - 'POST', - self._uri + _path, - params=_params, - headers=_headers, - json=_json) + @builtins.property + def roots(self) -> List["datasource_api_ChannelPrefixTreeNode"]: + return self._roots - _decoder = ConjureDecoder() - return _decoder.decode(_response.json(), event_Event, self._return_none_for_unknown_union_types) + @builtins.property + def delimiter(self) -> str: + return self._delimiter - def get_events(self, auth_header: str, request: "event_GetEvents") -> List["event_Event"]: - """ - Gets a set of events by UUIDs - """ - _headers: Dict[str, Any] = { - 'Accept': 'application/json', - 'Content-Type': 'application/json', - 'Authorization': auth_header, - } +datasource_api_ChannelPrefixTree.__name__ = "ChannelPrefixTree" +datasource_api_ChannelPrefixTree.__qualname__ = "ChannelPrefixTree" +datasource_api_ChannelPrefixTree.__module__ = "scout_service_api.datasource_api" - _params: Dict[str, Any] = { - } - _path_params: Dict[str, Any] = { +class datasource_api_ChannelPrefixTreeNode(ConjureBeanType): + + @builtins.classmethod + def _fields(cls) -> Dict[str, ConjureFieldDefinition]: + return { + 'part': ConjureFieldDefinition('part', str), + 'children': ConjureFieldDefinition('children', List[datasource_api_ChannelPrefixTreeNode]) } - _json: Any = ConjureEncoder().default(request) + __slots__: List[str] = ['_part', '_children'] - _path = '/event/v1/get-events' - _path = _path.format(**_path_params) + def __init__(self, children: List["datasource_api_ChannelPrefixTreeNode"], part: str) -> None: + self._part = part + self._children = children - _response: Response = self._request( - 'POST', - self._uri + _path, - params=_params, - headers=_headers, - json=_json) + @builtins.property + def part(self) -> str: + """ + Should be combined with the ancestor parts and the delimiter to form the full prefix. + """ + return self._part - _decoder = ConjureDecoder() - return _decoder.decode(_response.json(), List[event_Event], self._return_none_for_unknown_union_types) + @builtins.property + def children(self) -> List["datasource_api_ChannelPrefixTreeNode"]: + return self._children -event_EventService.__name__ = "EventService" -event_EventService.__qualname__ = "EventService" -event_EventService.__module__ = "scout_service_api.event" +datasource_api_ChannelPrefixTreeNode.__name__ = "ChannelPrefixTreeNode" +datasource_api_ChannelPrefixTreeNode.__qualname__ = "ChannelPrefixTreeNode" +datasource_api_ChannelPrefixTreeNode.__module__ = "scout_service_api.datasource_api" -class event_EventType(ConjureEnumType): +class datasource_api_DataSourcePrefixNode(ConjureBeanType): - INFO = 'INFO' - '''INFO''' - FLAG = 'FLAG' - '''FLAG''' - ERROR = 'ERROR' - '''ERROR''' - SUCCESS = 'SUCCESS' - '''SUCCESS''' - UNKNOWN = 'UNKNOWN' - '''UNKNOWN''' + @builtins.classmethod + def _fields(cls) -> Dict[str, ConjureFieldDefinition]: + return { + 'part': ConjureFieldDefinition('part', str), + 'data_source': ConjureFieldDefinition('dataSource', datasource_api_DataSourceRid) + } - def __reduce_ex__(self, proto): - return self.__class__, (self.name,) + __slots__: List[str] = ['_part', '_data_source'] + def __init__(self, data_source: str, part: str) -> None: + self._part = part + self._data_source = data_source -event_EventType.__name__ = "EventType" -event_EventType.__qualname__ = "EventType" -event_EventType.__module__ = "scout_service_api.event" + @builtins.property + def part(self) -> str: + """ + Should be combined with the ancestor parts and the delimiter to form the full prefix. + """ + return self._part + + @builtins.property + def data_source(self) -> str: + return self._data_source -class event_GetEvents(ConjureBeanType): +datasource_api_DataSourcePrefixNode.__name__ = "DataSourcePrefixNode" +datasource_api_DataSourcePrefixNode.__qualname__ = "DataSourcePrefixNode" +datasource_api_DataSourcePrefixNode.__module__ = "scout_service_api.datasource_api" + + +class datasource_api_IndexChannelPrefixTreeRequest(ConjureBeanType): @builtins.classmethod def _fields(cls) -> Dict[str, ConjureFieldDefinition]: return { - 'uuids': ConjureFieldDefinition('uuids', List[str]) + 'data_source_rid': ConjureFieldDefinition('dataSourceRid', datasource_api_DataSourceRid), + 'delimiter': ConjureFieldDefinition('delimiter', str) } - __slots__: List[str] = ['_uuids'] + __slots__: List[str] = ['_data_source_rid', '_delimiter'] - def __init__(self, uuids: List[str]) -> None: - self._uuids = uuids + def __init__(self, data_source_rid: str, delimiter: str) -> None: + self._data_source_rid = data_source_rid + self._delimiter = delimiter @builtins.property - def uuids(self) -> List[str]: - return self._uuids + def data_source_rid(self) -> str: + return self._data_source_rid + + @builtins.property + def delimiter(self) -> str: + return self._delimiter -event_GetEvents.__name__ = "GetEvents" -event_GetEvents.__qualname__ = "GetEvents" -event_GetEvents.__module__ = "scout_service_api.event" +datasource_api_IndexChannelPrefixTreeRequest.__name__ = "IndexChannelPrefixTreeRequest" +datasource_api_IndexChannelPrefixTreeRequest.__qualname__ = "IndexChannelPrefixTreeRequest" +datasource_api_IndexChannelPrefixTreeRequest.__module__ = "scout_service_api.datasource_api" -class event_Timestamp(ConjureBeanType): - """ - agnostic of relative/absolute, that is stored on the time series - """ +class datasource_api_SearchChannelsRequest(ConjureBeanType): @builtins.classmethod def _fields(cls) -> Dict[str, ConjureFieldDefinition]: return { - 'seconds': ConjureFieldDefinition('seconds', int), - 'nanos': ConjureFieldDefinition('nanos', int) + 'fuzzy_search_text': ConjureFieldDefinition('fuzzySearchText', str), + 'prefix': ConjureFieldDefinition('prefix', OptionalTypeWrapper[str]), + 'exact_match': ConjureFieldDefinition('exactMatch', List[str]), + 'data_sources': ConjureFieldDefinition('dataSources', List[datasource_api_DataSourceRid]), + 'previously_selected_channels': ConjureFieldDefinition('previouslySelectedChannels', Dict[datasource_api_DataSourceRid, List[datasource_api_Channel]]), + 'next_page_token': ConjureFieldDefinition('nextPageToken', OptionalTypeWrapper[datasource_Token]), + 'page_size': ConjureFieldDefinition('pageSize', OptionalTypeWrapper[int]) } - __slots__: List[str] = ['_seconds', '_nanos'] + __slots__: List[str] = ['_fuzzy_search_text', '_prefix', '_exact_match', '_data_sources', '_previously_selected_channels', '_next_page_token', '_page_size'] - def __init__(self, nanos: int, seconds: int) -> None: - self._seconds = seconds - self._nanos = nanos + def __init__(self, data_sources: List[str], exact_match: List[str], fuzzy_search_text: str, previously_selected_channels: Dict[str, List[str]], next_page_token: Optional[str] = None, page_size: Optional[int] = None, prefix: Optional[str] = None) -> None: + self._fuzzy_search_text = fuzzy_search_text + self._prefix = prefix + self._exact_match = exact_match + self._data_sources = data_sources + self._previously_selected_channels = previously_selected_channels + self._next_page_token = next_page_token + self._page_size = page_size @builtins.property - def seconds(self) -> int: - return self._seconds + def fuzzy_search_text(self) -> str: + return self._fuzzy_search_text @builtins.property - def nanos(self) -> int: - return self._nanos + def prefix(self) -> Optional[str]: + return self._prefix + @builtins.property + def exact_match(self) -> List[str]: + """ + Will return only channels that contain all strings specified as exact matches (case insensitive). + """ + return self._exact_match -event_Timestamp.__name__ = "Timestamp" -event_Timestamp.__qualname__ = "Timestamp" -event_Timestamp.__module__ = "scout_service_api.event" + @builtins.property + def data_sources(self) -> List[str]: + return self._data_sources + @builtins.property + def previously_selected_channels(self) -> Dict[str, List[str]]: + """ + Data sources with the channels that were previously selected will be weighted more heavily. The previously +selected channel names will also factor into the similarity score. + """ + return self._previously_selected_channels -class openapi_OpenApiSpecService(Service): - """ - This service hosts the OpenAPI specification for the Nominal API. - """ + @builtins.property + def next_page_token(self) -> Optional[str]: + return self._next_page_token - def get_open_api(self, auth_header: str) -> str: + @builtins.property + def page_size(self) -> Optional[int]: """ - Publishes the Nominal OpenAPI Specification. + Defaults to 1000. Will throw if larger than 10000. """ + return self._page_size - _headers: Dict[str, Any] = { - 'Accept': 'application/json', - 'Authorization': auth_header, - } - _params: Dict[str, Any] = { - } +datasource_api_SearchChannelsRequest.__name__ = "SearchChannelsRequest" +datasource_api_SearchChannelsRequest.__qualname__ = "SearchChannelsRequest" +datasource_api_SearchChannelsRequest.__module__ = "scout_service_api.datasource_api" - _path_params: Dict[str, Any] = { - } - _json: Any = None +class datasource_api_SearchChannelsResponse(ConjureBeanType): - _path = '/openapi' - _path = _path.format(**_path_params) + @builtins.classmethod + def _fields(cls) -> Dict[str, ConjureFieldDefinition]: + return { + 'results': ConjureFieldDefinition('results', List[datasource_api_ChannelMetadata]), + 'next_page_token': ConjureFieldDefinition('nextPageToken', OptionalTypeWrapper[datasource_Token]) + } - _response: Response = self._request( - 'GET', - self._uri + _path, - params=_params, - headers=_headers, - json=_json) + __slots__: List[str] = ['_results', '_next_page_token'] - _decoder = ConjureDecoder() - return _decoder.decode(_response.json(), str, self._return_none_for_unknown_union_types) + def __init__(self, results: List["datasource_api_ChannelMetadata"], next_page_token: Optional[str] = None) -> None: + self._results = results + self._next_page_token = next_page_token + @builtins.property + def results(self) -> List["datasource_api_ChannelMetadata"]: + return self._results -openapi_OpenApiSpecService.__name__ = "OpenApiSpecService" -openapi_OpenApiSpecService.__qualname__ = "OpenApiSpecService" -openapi_OpenApiSpecService.__module__ = "scout_service_api.openapi" + @builtins.property + def next_page_token(self) -> Optional[str]: + return self._next_page_token -class scout_InternalVersioningService(Service): - """ - These endpoints are not intended to be used directly by clients, since -they require saving resource-specific state associated with new commits. - """ +datasource_api_SearchChannelsResponse.__name__ = "SearchChannelsResponse" +datasource_api_SearchChannelsResponse.__qualname__ = "SearchChannelsResponse" +datasource_api_SearchChannelsResponse.__module__ = "scout_service_api.datasource_api" - def init_resource_versioning(self, auth_header: str, request: "scout_versioning_api_InitResourceVersioningRequest", resource_rid: str) -> "scout_versioning_api_BranchAndCommit": + +class datasource_api_SearchHierarchicalChannelsRequest(ConjureBeanType): + + @builtins.classmethod + def _fields(cls) -> Dict[str, ConjureFieldDefinition]: + return { + 'parent': ConjureFieldDefinition('parent', List[str]), + 'data_sources': ConjureFieldDefinition('dataSources', List[datasource_api_DataSourceRid]) + } + + __slots__: List[str] = ['_parent', '_data_sources'] + + def __init__(self, data_sources: List[str], parent: List[str]) -> None: + self._parent = parent + self._data_sources = data_sources + + @builtins.property + def parent(self) -> List[str]: """ - Creates a root commit (no parents) and a "main" branch -pointing to that commit, for the given resource. -Throws if the resource already has a commit graph. + The parent (represented as a list of parts) to search under. If empty, will return all top-level channels. """ + return self._parent - _headers: Dict[str, Any] = { - 'Accept': 'application/json', - 'Content-Type': 'application/json', - 'Authorization': auth_header, - } + @builtins.property + def data_sources(self) -> List[str]: + return self._data_sources - _params: Dict[str, Any] = { - } - _path_params: Dict[str, Any] = { - 'resourceRid': resource_rid, +datasource_api_SearchHierarchicalChannelsRequest.__name__ = "SearchHierarchicalChannelsRequest" +datasource_api_SearchHierarchicalChannelsRequest.__qualname__ = "SearchHierarchicalChannelsRequest" +datasource_api_SearchHierarchicalChannelsRequest.__module__ = "scout_service_api.datasource_api" + + +class datasource_api_SearchHierarchicalChannelsResponse(ConjureBeanType): + + @builtins.classmethod + def _fields(cls) -> Dict[str, ConjureFieldDefinition]: + return { + 'results': ConjureFieldDefinition('results', List[datasource_api_ChannelOrPrefix]) } - _json: Any = ConjureEncoder().default(request) + __slots__: List[str] = ['_results'] - _path = '/scout/v1/versioning/internal/{resourceRid}' - _path = _path.format(**_path_params) + def __init__(self, results: List["datasource_api_ChannelOrPrefix"]) -> None: + self._results = results - _response: Response = self._request( - 'POST', - self._uri + _path, - params=_params, - headers=_headers, - json=_json) + @builtins.property + def results(self) -> List["datasource_api_ChannelOrPrefix"]: + return self._results - _decoder = ConjureDecoder() - return _decoder.decode(_response.json(), scout_versioning_api_BranchAndCommit, self._return_none_for_unknown_union_types) - def save_working_state(self, auth_header: str, branch_name: str, request: "scout_versioning_api_SaveWorkingStateRequest", resource_rid: str) -> "scout_versioning_api_BranchAndCommit": - """ - Creates a non-permanent commit on the given branch, -Throws if the branch doesn't exist. -Throws if latestCommit is passed and is not the latest commit. - """ +datasource_api_SearchHierarchicalChannelsResponse.__name__ = "SearchHierarchicalChannelsResponse" +datasource_api_SearchHierarchicalChannelsResponse.__qualname__ = "SearchHierarchicalChannelsResponse" +datasource_api_SearchHierarchicalChannelsResponse.__module__ = "scout_service_api.datasource_api" - _headers: Dict[str, Any] = { - 'Accept': 'application/json', - 'Content-Type': 'application/json', - 'Authorization': auth_header, - } - _params: Dict[str, Any] = { - } +class datasource_api_SeriesArchetypeRidOrLogicalSeriesRid(ConjureUnionType): + _series_archetype: Optional[str] = None + _logical_series: Optional[str] = None - _path_params: Dict[str, Any] = { - 'resourceRid': resource_rid, - 'branchName': branch_name, + @builtins.classmethod + def _options(cls) -> Dict[str, ConjureFieldDefinition]: + return { + 'series_archetype': ConjureFieldDefinition('seriesArchetype', datasource_api_SeriesArchetypeRid), + 'logical_series': ConjureFieldDefinition('logicalSeries', datasource_api_LogicalSeriesRid) } - _json: Any = ConjureEncoder().default(request) + def __init__( + self, + series_archetype: Optional[str] = None, + logical_series: Optional[str] = None, + type_of_union: Optional[str] = None + ) -> None: + if type_of_union is None: + if (series_archetype is not None) + (logical_series is not None) != 1: + raise ValueError('a union must contain a single member') - _path = '/scout/v1/versioning/internal/{resourceRid}/branch/{branchName}/working-state' - _path = _path.format(**_path_params) + if series_archetype is not None: + self._series_archetype = series_archetype + self._type = 'seriesArchetype' + if logical_series is not None: + self._logical_series = logical_series + self._type = 'logicalSeries' - _response: Response = self._request( - 'POST', - self._uri + _path, - params=_params, - headers=_headers, - json=_json) + elif type_of_union == 'seriesArchetype': + if series_archetype is None: + raise ValueError('a union value must not be None') + self._series_archetype = series_archetype + self._type = 'seriesArchetype' + elif type_of_union == 'logicalSeries': + if logical_series is None: + raise ValueError('a union value must not be None') + self._logical_series = logical_series + self._type = 'logicalSeries' - _decoder = ConjureDecoder() - return _decoder.decode(_response.json(), scout_versioning_api_BranchAndCommit, self._return_none_for_unknown_union_types) + @builtins.property + def series_archetype(self) -> Optional[str]: + return self._series_archetype - def commit(self, auth_header: str, branch_name: str, request: "scout_versioning_api_CommitRequest", resource_rid: str) -> "scout_versioning_api_BranchAndCommit": - """ - Creates a new permanent commit on the given branch. -Throws if the branch doesn't exist. -Throws if latestCommit is passed and is not the latest commit. - """ + @builtins.property + def logical_series(self) -> Optional[str]: + return self._logical_series - _headers: Dict[str, Any] = { - 'Accept': 'application/json', - 'Content-Type': 'application/json', - 'Authorization': auth_header, - } + def accept(self, visitor) -> Any: + if not isinstance(visitor, datasource_api_SeriesArchetypeRidOrLogicalSeriesRidVisitor): + raise ValueError('{} is not an instance of datasource_api_SeriesArchetypeRidOrLogicalSeriesRidVisitor'.format(visitor.__class__.__name__)) + if self._type == 'seriesArchetype' and self.series_archetype is not None: + return visitor._series_archetype(self.series_archetype) + if self._type == 'logicalSeries' and self.logical_series is not None: + return visitor._logical_series(self.logical_series) - _params: Dict[str, Any] = { - } - _path_params: Dict[str, Any] = { - 'resourceRid': resource_rid, - 'branchName': branch_name, - } +datasource_api_SeriesArchetypeRidOrLogicalSeriesRid.__name__ = "SeriesArchetypeRidOrLogicalSeriesRid" +datasource_api_SeriesArchetypeRidOrLogicalSeriesRid.__qualname__ = "SeriesArchetypeRidOrLogicalSeriesRid" +datasource_api_SeriesArchetypeRidOrLogicalSeriesRid.__module__ = "scout_service_api.datasource_api" - _json: Any = ConjureEncoder().default(request) - _path = '/scout/v1/versioning/internal/{resourceRid}/branch/{branchName}/commit' - _path = _path.format(**_path_params) +class datasource_api_SeriesArchetypeRidOrLogicalSeriesRidVisitor: - _response: Response = self._request( - 'POST', - self._uri + _path, - params=_params, - headers=_headers, - json=_json) + @abstractmethod + def _series_archetype(self, series_archetype: str) -> Any: + pass - _decoder = ConjureDecoder() - return _decoder.decode(_response.json(), scout_versioning_api_BranchAndCommit, self._return_none_for_unknown_union_types) + @abstractmethod + def _logical_series(self, logical_series: str) -> Any: + pass - def compact_commits(self, auth_header: str, request: "scout_versioning_api_CompactCommitsRequest", resource_rid: str) -> List[str]: - """ - Compacts the commit graph for the resource by deleting -working state commits that match the provided strategy. -Persists commits that are pointed to by branches. -Returns the set of commits that were compacted. -Throws if the resource doesn't exist. - """ - _headers: Dict[str, Any] = { - 'Accept': 'application/json', - 'Content-Type': 'application/json', - 'Authorization': auth_header, - } +datasource_api_SeriesArchetypeRidOrLogicalSeriesRidVisitor.__name__ = "SeriesArchetypeRidOrLogicalSeriesRidVisitor" +datasource_api_SeriesArchetypeRidOrLogicalSeriesRidVisitor.__qualname__ = "SeriesArchetypeRidOrLogicalSeriesRidVisitor" +datasource_api_SeriesArchetypeRidOrLogicalSeriesRidVisitor.__module__ = "scout_service_api.datasource_api" - _params: Dict[str, Any] = { - } - _path_params: Dict[str, Any] = { - 'resourceRid': resource_rid, +class datasource_api_SeriesDataType(ConjureEnumType): + + DOUBLE = 'DOUBLE' + '''DOUBLE''' + STRING = 'STRING' + '''STRING''' + UNKNOWN = 'UNKNOWN' + '''UNKNOWN''' + + def __reduce_ex__(self, proto): + return self.__class__, (self.name,) + + +datasource_api_SeriesDataType.__name__ = "SeriesDataType" +datasource_api_SeriesDataType.__qualname__ = "SeriesDataType" +datasource_api_SeriesDataType.__module__ = "scout_service_api.datasource_api" + + +class datasource_api_Unit(ConjureBeanType): + + @builtins.classmethod + def _fields(cls) -> Dict[str, ConjureFieldDefinition]: + return { + 'name': ConjureFieldDefinition('name', str), + 'symbol': ConjureFieldDefinition('symbol', str) } - _json: Any = ConjureEncoder().default(request) + __slots__: List[str] = ['_name', '_symbol'] - _path = '/scout/v1/versioning/internal/{resourceRid}/compact-commits' - _path = _path.format(**_path_params) + def __init__(self, name: str, symbol: str) -> None: + self._name = name + self._symbol = symbol - _response: Response = self._request( - 'POST', - self._uri + _path, - params=_params, - headers=_headers, - json=_json) + @builtins.property + def name(self) -> str: + return self._name - _decoder = ConjureDecoder() - return _decoder.decode(_response.json(), List[scout_versioning_api_CommitId], self._return_none_for_unknown_union_types) + @builtins.property + def symbol(self) -> str: + return self._symbol -scout_InternalVersioningService.__name__ = "InternalVersioningService" -scout_InternalVersioningService.__qualname__ = "InternalVersioningService" -scout_InternalVersioningService.__module__ = "scout_service_api.scout" +datasource_api_Unit.__name__ = "Unit" +datasource_api_Unit.__qualname__ = "Unit" +datasource_api_Unit.__module__ = "scout_service_api.datasource_api" -class scout_NotebookService(Service): +class datasource_logset_LogSetService(Service): """ - NotebookService manages workbooks (formerly known as notebooks). + Log sets are a type of datasource which can be used to store log data. """ - def create(self, auth_header: str, request: "scout_notebook_api_CreateNotebookRequest") -> "scout_notebook_api_Notebook": + def create(self, auth_header: str, request: "datasource_logset_api_CreateLogSetRequest") -> "datasource_logset_api_LogSetMetadata": """ - Creates a new workbook. The workbook will be associated with the provided run. If the run does not exist, -a RunNotFound error will be thrown. + Creates a log set, to which logs can be attached using `attach-and-finalize`. The logs within a logset are +not searchable until the logset is finalized. """ _headers: Dict[str, Any] = { @@ -4257,7 +3847,7 @@ def create(self, auth_header: str, request: "scout_notebook_api_CreateNotebookRe _json: Any = ConjureEncoder().default(request) - _path = '/scout/v2/notebook' + _path = '/data-source/log-set/v1/log-sets' _path = _path.format(**_path_params) _response: Response = self._request( @@ -4268,11 +3858,11 @@ def create(self, auth_header: str, request: "scout_notebook_api_CreateNotebookRe json=_json) _decoder = ConjureDecoder() - return _decoder.decode(_response.json(), scout_notebook_api_Notebook, self._return_none_for_unknown_union_types) + return _decoder.decode(_response.json(), datasource_logset_api_LogSetMetadata, self._return_none_for_unknown_union_types) - def update(self, auth_header: str, request: "scout_notebook_api_UpdateNotebookRequest", rid: str) -> "scout_notebook_api_Notebook": + def attach_logs_and_finalize(self, auth_header: str, log_set_rid: str, request: "datasource_logset_api_AttachLogsAndFinalizeRequest") -> "datasource_logset_api_LogSetMetadata": """ - Updates the contents of a workbook. + A logset is not considered readable until it has been finalized. Once finalized, the logset is immutable. """ _headers: Dict[str, Any] = { @@ -4285,25 +3875,28 @@ def update(self, auth_header: str, request: "scout_notebook_api_UpdateNotebookRe } _path_params: Dict[str, Any] = { - 'rid': rid, + 'logSetRid': log_set_rid, } _json: Any = ConjureEncoder().default(request) - _path = '/scout/v2/notebook/{rid}' + _path = '/data-source/log-set/v1/log-set/{logSetRid}/attach-and-finalize' _path = _path.format(**_path_params) _response: Response = self._request( - 'PUT', + 'POST', self._uri + _path, params=_params, headers=_headers, json=_json) _decoder = ConjureDecoder() - return _decoder.decode(_response.json(), scout_notebook_api_Notebook, self._return_none_for_unknown_union_types) + return _decoder.decode(_response.json(), datasource_logset_api_LogSetMetadata, self._return_none_for_unknown_union_types) - def get(self, auth_header: str, rid: str) -> "scout_notebook_api_Notebook": + def get_log_set_metadata(self, auth_header: str, log_set_rid: str) -> "datasource_logset_api_LogSetMetadata": + """ + Returns metadata about a log set. + """ _headers: Dict[str, Any] = { 'Accept': 'application/json', @@ -4314,12 +3907,12 @@ def get(self, auth_header: str, rid: str) -> "scout_notebook_api_Notebook": } _path_params: Dict[str, Any] = { - 'rid': rid, + 'logSetRid': log_set_rid, } _json: Any = None - _path = '/scout/v2/notebook/{rid}' + _path = '/data-source/log-set/v1/log-set/{logSetRid}' _path = _path.format(**_path_params) _response: Response = self._request( @@ -4330,10 +3923,13 @@ def get(self, auth_header: str, rid: str) -> "scout_notebook_api_Notebook": json=_json) _decoder = ConjureDecoder() - return _decoder.decode(_response.json(), scout_notebook_api_Notebook, self._return_none_for_unknown_union_types) + return _decoder.decode(_response.json(), datasource_logset_api_LogSetMetadata, self._return_none_for_unknown_union_types) - def batch_get(self, auth_header: str, rids: List[str] = None) -> List["scout_notebook_api_Notebook"]: - rids = rids if rids is not None else [] + def batch_get_log_set_metadata(self, auth_header: str, request: List[str] = None) -> List["datasource_logset_api_LogSetMetadata"]: + """ + Returns metadata about a set of log sets. + """ + request = request if request is not None else [] _headers: Dict[str, Any] = { 'Accept': 'application/json', @@ -4347,9 +3943,9 @@ def batch_get(self, auth_header: str, rids: List[str] = None) -> List["scout_not _path_params: Dict[str, Any] = { } - _json: Any = ConjureEncoder().default(rids) + _json: Any = ConjureEncoder().default(request) - _path = '/scout/v2/notebook/batch-get' + _path = '/data-source/log-set/v1/log-set/multiple' _path = _path.format(**_path_params) _response: Response = self._request( @@ -4360,11 +3956,11 @@ def batch_get(self, auth_header: str, rids: List[str] = None) -> List["scout_not json=_json) _decoder = ConjureDecoder() - return _decoder.decode(_response.json(), List[scout_notebook_api_Notebook], self._return_none_for_unknown_union_types) + return _decoder.decode(_response.json(), List[datasource_logset_api_LogSetMetadata], self._return_none_for_unknown_union_types) - def update_metadata(self, auth_header: str, request: "scout_notebook_api_UpdateNotebookMetadataRequest", rid: str) -> "scout_notebook_api_NotebookMetadata": + def search_log_sets(self, auth_header: str, request: "datasource_logset_api_SearchLogSetsRequest") -> "datasource_logset_api_SearchLogSetsResponse": """ - Updates metadata about a workbook, but not its contents. + Searches all visible log sets based on log set metadata. """ _headers: Dict[str, Any] = { @@ -4377,32 +3973,31 @@ def update_metadata(self, auth_header: str, request: "scout_notebook_api_UpdateN } _path_params: Dict[str, Any] = { - 'rid': rid, } _json: Any = ConjureEncoder().default(request) - _path = '/scout/v2/notebook/{rid}/update-metadata' + _path = '/data-source/log-set/v1/log-sets/get' _path = _path.format(**_path_params) _response: Response = self._request( - 'PUT', + 'POST', self._uri + _path, params=_params, headers=_headers, json=_json) _decoder = ConjureDecoder() - return _decoder.decode(_response.json(), scout_notebook_api_NotebookMetadata, self._return_none_for_unknown_union_types) + return _decoder.decode(_response.json(), datasource_logset_api_SearchLogSetsResponse, self._return_none_for_unknown_union_types) - def get_all_labels_and_properties(self, auth_header: str) -> "scout_notebook_api_GetAllLabelsAndPropertiesResponse": + def search_logs(self, auth_header: str, log_set_rid: str, request: "datasource_logset_api_SearchLogsRequest") -> "datasource_logset_api_SearchLogsResponse": """ - Returns all properties (key value pairs) and labels that have been previously used on workbook. These can -be used to organize workbooks. + Searches logs within a single log set. """ _headers: Dict[str, Any] = { 'Accept': 'application/json', + 'Content-Type': 'application/json', 'Authorization': auth_header, } @@ -4410,683 +4005,677 @@ def get_all_labels_and_properties(self, auth_header: str) -> "scout_notebook_api } _path_params: Dict[str, Any] = { + 'logSetRid': log_set_rid, } - _json: Any = None + _json: Any = ConjureEncoder().default(request) - _path = '/scout/v2/notebook/get-all-labels-properties' + _path = '/data-source/log-set/v1/log-set/{logSetRid}/logs' _path = _path.format(**_path_params) _response: Response = self._request( - 'GET', + 'POST', self._uri + _path, params=_params, headers=_headers, json=_json) _decoder = ConjureDecoder() - return _decoder.decode(_response.json(), scout_notebook_api_GetAllLabelsAndPropertiesResponse, self._return_none_for_unknown_union_types) + return _decoder.decode(_response.json(), datasource_logset_api_SearchLogsResponse, self._return_none_for_unknown_union_types) - def search(self, auth_header: str, request: "scout_notebook_api_SearchNotebooksRequest") -> "scout_notebook_api_SearchNotebooksResponse": - _headers: Dict[str, Any] = { - 'Accept': 'application/json', - 'Content-Type': 'application/json', - 'Authorization': auth_header, - } +datasource_logset_LogSetService.__name__ = "LogSetService" +datasource_logset_LogSetService.__qualname__ = "LogSetService" +datasource_logset_LogSetService.__module__ = "scout_service_api.datasource_logset" - _params: Dict[str, Any] = { - } - _path_params: Dict[str, Any] = { +class datasource_logset_api_AttachLogsAndFinalizeRequest(ConjureBeanType): + + @builtins.classmethod + def _fields(cls) -> Dict[str, ConjureFieldDefinition]: + return { + 'logs': ConjureFieldDefinition('logs', List[datasource_logset_api_Log]) } - _json: Any = ConjureEncoder().default(request) + __slots__: List[str] = ['_logs'] - _path = '/scout/v2/notebook/search' - _path = _path.format(**_path_params) + def __init__(self, logs: List["datasource_logset_api_Log"]) -> None: + self._logs = logs - _response: Response = self._request( - 'POST', - self._uri + _path, - params=_params, - headers=_headers, - json=_json) + @builtins.property + def logs(self) -> List["datasource_logset_api_Log"]: + return self._logs - _decoder = ConjureDecoder() - return _decoder.decode(_response.json(), scout_notebook_api_SearchNotebooksResponse, self._return_none_for_unknown_union_types) - def lock(self, auth_header: str, rid: str) -> None: - """ - Makes a workbook uneditable. - """ +datasource_logset_api_AttachLogsAndFinalizeRequest.__name__ = "AttachLogsAndFinalizeRequest" +datasource_logset_api_AttachLogsAndFinalizeRequest.__qualname__ = "AttachLogsAndFinalizeRequest" +datasource_logset_api_AttachLogsAndFinalizeRequest.__module__ = "scout_service_api.datasource_logset_api" - _headers: Dict[str, Any] = { - 'Accept': 'application/json', - 'Authorization': auth_header, - } - _params: Dict[str, Any] = { - } +class datasource_logset_api_BasicLogBody(ConjureBeanType): + """ + A largely unopinionated but very flexible format. + """ - _path_params: Dict[str, Any] = { - 'rid': rid, + @builtins.classmethod + def _fields(cls) -> Dict[str, ConjureFieldDefinition]: + return { + 'properties': ConjureFieldDefinition('properties', Dict[str, str]), + 'message': ConjureFieldDefinition('message', str) } - _json: Any = None + __slots__: List[str] = ['_properties', '_message'] - _path = '/scout/v2/notebook/{rid}/lock' - _path = _path.format(**_path_params) + def __init__(self, message: str, properties: Dict[str, str]) -> None: + self._properties = properties + self._message = message - _response: Response = self._request( - 'PUT', - self._uri + _path, - params=_params, - headers=_headers, - json=_json) + @builtins.property + def properties(self) -> Dict[str, str]: + return self._properties - return + @builtins.property + def message(self) -> str: + return self._message - def unlock(self, auth_header: str, rid: str) -> None: - """ - Unlocks a workbook for editing. - """ - _headers: Dict[str, Any] = { - 'Accept': 'application/json', - 'Authorization': auth_header, - } +datasource_logset_api_BasicLogBody.__name__ = "BasicLogBody" +datasource_logset_api_BasicLogBody.__qualname__ = "BasicLogBody" +datasource_logset_api_BasicLogBody.__module__ = "scout_service_api.datasource_logset_api" - _params: Dict[str, Any] = { - } - _path_params: Dict[str, Any] = { - 'rid': rid, +class datasource_logset_api_CreateLogSetRequest(ConjureBeanType): + + @builtins.classmethod + def _fields(cls) -> Dict[str, ConjureFieldDefinition]: + return { + 'name': ConjureFieldDefinition('name', str), + 'description': ConjureFieldDefinition('description', OptionalTypeWrapper[str]), + 'origin_metadata': ConjureFieldDefinition('originMetadata', Dict[str, str]), + 'timestamp_type': ConjureFieldDefinition('timestampType', datasource_TimestampType) } - _json: Any = None + __slots__: List[str] = ['_name', '_description', '_origin_metadata', '_timestamp_type'] - _path = '/scout/v2/notebook/{rid}/unlock' - _path = _path.format(**_path_params) + def __init__(self, name: str, origin_metadata: Dict[str, str], timestamp_type: "datasource_TimestampType", description: Optional[str] = None) -> None: + self._name = name + self._description = description + self._origin_metadata = origin_metadata + self._timestamp_type = timestamp_type - _response: Response = self._request( - 'PUT', - self._uri + _path, - params=_params, - headers=_headers, - json=_json) + @builtins.property + def name(self) -> str: + return self._name - return + @builtins.property + def description(self) -> Optional[str]: + return self._description - def archive(self, auth_header: str, rid: str) -> None: - """ - Archives a workbook, which excludes it from search and hides it from being publicly visible, but does not -permanently delete it. Archived workbooks can be unarchived. - """ + @builtins.property + def origin_metadata(self) -> Dict[str, str]: + return self._origin_metadata - _headers: Dict[str, Any] = { - 'Accept': 'application/json', - 'Authorization': auth_header, - } + @builtins.property + def timestamp_type(self) -> "datasource_TimestampType": + return self._timestamp_type - _params: Dict[str, Any] = { - } - _path_params: Dict[str, Any] = { - 'rid': rid, - } +datasource_logset_api_CreateLogSetRequest.__name__ = "CreateLogSetRequest" +datasource_logset_api_CreateLogSetRequest.__qualname__ = "CreateLogSetRequest" +datasource_logset_api_CreateLogSetRequest.__module__ = "scout_service_api.datasource_logset_api" - _json: Any = None - _path = '/scout/v2/notebook/{rid}/archive' - _path = _path.format(**_path_params) +class datasource_logset_api_Log(ConjureBeanType): - _response: Response = self._request( - 'PUT', - self._uri + _path, - params=_params, - headers=_headers, - json=_json) + @builtins.classmethod + def _fields(cls) -> Dict[str, ConjureFieldDefinition]: + return { + 'time': ConjureFieldDefinition('time', datasource_Timestamp), + 'body': ConjureFieldDefinition('body', datasource_logset_api_LogBody) + } - return + __slots__: List[str] = ['_time', '_body'] - def unarchive(self, auth_header: str, rid: str) -> None: - """ - Makes a previously archived workbook searchable. - """ + def __init__(self, body: "datasource_logset_api_LogBody", time: "datasource_Timestamp") -> None: + self._time = time + self._body = body - _headers: Dict[str, Any] = { - 'Accept': 'application/json', - 'Authorization': auth_header, - } + @builtins.property + def time(self) -> "datasource_Timestamp": + return self._time - _params: Dict[str, Any] = { - } + @builtins.property + def body(self) -> "datasource_logset_api_LogBody": + return self._body - _path_params: Dict[str, Any] = { - 'rid': rid, - } - _json: Any = None +datasource_logset_api_Log.__name__ = "Log" +datasource_logset_api_Log.__qualname__ = "Log" +datasource_logset_api_Log.__module__ = "scout_service_api.datasource_logset_api" - _path = '/scout/v2/notebook/{rid}/unarchive' - _path = _path.format(**_path_params) - _response: Response = self._request( - 'PUT', - self._uri + _path, - params=_params, - headers=_headers, - json=_json) +class datasource_logset_api_LogBody(ConjureUnionType): + _basic: Optional["datasource_logset_api_BasicLogBody"] = None - return + @builtins.classmethod + def _options(cls) -> Dict[str, ConjureFieldDefinition]: + return { + 'basic': ConjureFieldDefinition('basic', datasource_logset_api_BasicLogBody) + } - def delete(self, auth_header: str, rid: str) -> None: - """ - The workbook will be deleted and is not recoverable. For soft deletion, use archive. - """ + def __init__( + self, + basic: Optional["datasource_logset_api_BasicLogBody"] = None, + type_of_union: Optional[str] = None + ) -> None: + if type_of_union is None: + if (basic is not None) != 1: + raise ValueError('a union must contain a single member') - _headers: Dict[str, Any] = { - 'Accept': 'application/json', - 'Authorization': auth_header, - } + if basic is not None: + self._basic = basic + self._type = 'basic' - _params: Dict[str, Any] = { - } + elif type_of_union == 'basic': + if basic is None: + raise ValueError('a union value must not be None') + self._basic = basic + self._type = 'basic' - _path_params: Dict[str, Any] = { - 'rid': rid, - } + @builtins.property + def basic(self) -> Optional["datasource_logset_api_BasicLogBody"]: + return self._basic - _json: Any = None + def accept(self, visitor) -> Any: + if not isinstance(visitor, datasource_logset_api_LogBodyVisitor): + raise ValueError('{} is not an instance of datasource_logset_api_LogBodyVisitor'.format(visitor.__class__.__name__)) + if self._type == 'basic' and self.basic is not None: + return visitor._basic(self.basic) - _path = '/scout/v2/notebook/{rid}' - _path = _path.format(**_path_params) - _response: Response = self._request( - 'DELETE', - self._uri + _path, - params=_params, - headers=_headers, - json=_json) +datasource_logset_api_LogBody.__name__ = "LogBody" +datasource_logset_api_LogBody.__qualname__ = "LogBody" +datasource_logset_api_LogBody.__module__ = "scout_service_api.datasource_logset_api" - return +class datasource_logset_api_LogBodyVisitor: -scout_NotebookService.__name__ = "NotebookService" -scout_NotebookService.__qualname__ = "NotebookService" -scout_NotebookService.__module__ = "scout_service_api.scout" + @abstractmethod + def _basic(self, basic: "datasource_logset_api_BasicLogBody") -> Any: + pass -class scout_RunService(Service): - """ - Runs are collections of channels and metadata from one or more data sources, synchronized over a -range of real time, which represents a test event or simulation. These API endpoints let you -manage runs in the Nominal app. - """ +datasource_logset_api_LogBodyVisitor.__name__ = "LogBodyVisitor" +datasource_logset_api_LogBodyVisitor.__qualname__ = "LogBodyVisitor" +datasource_logset_api_LogBodyVisitor.__module__ = "scout_service_api.datasource_logset_api" - def create_run(self, auth_header: str, details: "scout_run_api_CreateRunRequest") -> "scout_run_api_Run": - """ - Create a new run in Nominal. -Throws if start is equal to or after end. - """ +class datasource_logset_api_LogFormat(ConjureEnumType): - _headers: Dict[str, Any] = { - 'Accept': 'application/json', - 'Content-Type': 'application/json', - 'Authorization': auth_header, - } + V1 = 'V1' + '''V1''' + UNKNOWN = 'UNKNOWN' + '''UNKNOWN''' - _params: Dict[str, Any] = { - } + def __reduce_ex__(self, proto): + return self.__class__, (self.name,) - _path_params: Dict[str, Any] = { - } - _json: Any = ConjureEncoder().default(details) +datasource_logset_api_LogFormat.__name__ = "LogFormat" +datasource_logset_api_LogFormat.__qualname__ = "LogFormat" +datasource_logset_api_LogFormat.__module__ = "scout_service_api.datasource_logset_api" - _path = '/scout/v1/run' - _path = _path.format(**_path_params) - _response: Response = self._request( - 'POST', - self._uri + _path, - params=_params, - headers=_headers, - json=_json) +class datasource_logset_api_LogHandle(ConjureUnionType): + _s3: Optional["datasource_logset_api_S3LogHandle"] = None - _decoder = ConjureDecoder() - return _decoder.decode(_response.json(), scout_run_api_Run, self._return_none_for_unknown_union_types) + @builtins.classmethod + def _options(cls) -> Dict[str, ConjureFieldDefinition]: + return { + 's3': ConjureFieldDefinition('s3', datasource_logset_api_S3LogHandle) + } - def update_run(self, auth_header: str, details: "scout_run_api_UpdateRunRequest", rid: str) -> "scout_run_api_Run": - """ - Updates an existing run based on its RID. + def __init__( + self, + s3: Optional["datasource_logset_api_S3LogHandle"] = None, + type_of_union: Optional[str] = None + ) -> None: + if type_of_union is None: + if (s3 is not None) != 1: + raise ValueError('a union must contain a single member') -Throws if start is equal to or after end. - """ + if s3 is not None: + self._s3 = s3 + self._type = 's3' - _headers: Dict[str, Any] = { - 'Accept': 'application/json', - 'Content-Type': 'application/json', - 'Authorization': auth_header, - } + elif type_of_union == 's3': + if s3 is None: + raise ValueError('a union value must not be None') + self._s3 = s3 + self._type = 's3' - _params: Dict[str, Any] = { - } + @builtins.property + def s3(self) -> Optional["datasource_logset_api_S3LogHandle"]: + return self._s3 - _path_params: Dict[str, Any] = { - 'rid': rid, - } + def accept(self, visitor) -> Any: + if not isinstance(visitor, datasource_logset_api_LogHandleVisitor): + raise ValueError('{} is not an instance of datasource_logset_api_LogHandleVisitor'.format(visitor.__class__.__name__)) + if self._type == 's3' and self.s3 is not None: + return visitor._s3(self.s3) - _json: Any = ConjureEncoder().default(details) - _path = '/scout/v1/run/{rid}' - _path = _path.format(**_path_params) +datasource_logset_api_LogHandle.__name__ = "LogHandle" +datasource_logset_api_LogHandle.__qualname__ = "LogHandle" +datasource_logset_api_LogHandle.__module__ = "scout_service_api.datasource_logset_api" - _response: Response = self._request( - 'PUT', - self._uri + _path, - params=_params, - headers=_headers, - json=_json) - _decoder = ConjureDecoder() - return _decoder.decode(_response.json(), scout_run_api_Run, self._return_none_for_unknown_union_types) +class datasource_logset_api_LogHandleVisitor: - def add_data_sources_to_run(self, auth_header: str, request: Dict[str, "scout_run_api_CreateRunDataSource"], run_rid: str) -> "scout_run_api_Run": - """ - Adds datasources to the run in question. + @abstractmethod + def _s3(self, s3: "datasource_logset_api_S3LogHandle") -> Any: + pass -Throws if any of the ref names conflict with existing data sources or each other. - """ - _headers: Dict[str, Any] = { - 'Accept': 'application/json', - 'Content-Type': 'application/json', - 'Authorization': auth_header, - } +datasource_logset_api_LogHandleVisitor.__name__ = "LogHandleVisitor" +datasource_logset_api_LogHandleVisitor.__qualname__ = "LogHandleVisitor" +datasource_logset_api_LogHandleVisitor.__module__ = "scout_service_api.datasource_logset_api" - _params: Dict[str, Any] = { - } - _path_params: Dict[str, Any] = { - 'runRid': run_rid, +class datasource_logset_api_LogSetMetadata(ConjureBeanType): + + @builtins.classmethod + def _fields(cls) -> Dict[str, ConjureFieldDefinition]: + return { + 'rid': ConjureFieldDefinition('rid', datasource_logset_api_LogSetRid), + 'created_by': ConjureFieldDefinition('createdBy', str), + 'name': ConjureFieldDefinition('name', str), + 'description': ConjureFieldDefinition('description', OptionalTypeWrapper[str]), + 'origin_metadata': ConjureFieldDefinition('originMetadata', Dict[str, str]), + 'created_at': ConjureFieldDefinition('createdAt', str), + 'updated_at': ConjureFieldDefinition('updatedAt', str), + 'log_count': ConjureFieldDefinition('logCount', int), + 'timestamp_type': ConjureFieldDefinition('timestampType', datasource_TimestampType) } - _json: Any = ConjureEncoder().default(request) + __slots__: List[str] = ['_rid', '_created_by', '_name', '_description', '_origin_metadata', '_created_at', '_updated_at', '_log_count', '_timestamp_type'] - _path = '/scout/v1/run/{runRid}/data-sources' - _path = _path.format(**_path_params) + def __init__(self, created_at: str, created_by: str, log_count: int, name: str, origin_metadata: Dict[str, str], rid: str, timestamp_type: "datasource_TimestampType", updated_at: str, description: Optional[str] = None) -> None: + self._rid = rid + self._created_by = created_by + self._name = name + self._description = description + self._origin_metadata = origin_metadata + self._created_at = created_at + self._updated_at = updated_at + self._log_count = log_count + self._timestamp_type = timestamp_type - _response: Response = self._request( - 'POST', - self._uri + _path, - params=_params, - headers=_headers, - json=_json) + @builtins.property + def rid(self) -> str: + return self._rid - _decoder = ConjureDecoder() - return _decoder.decode(_response.json(), scout_run_api_Run, self._return_none_for_unknown_union_types) + @builtins.property + def created_by(self) -> str: + return self._created_by - def create_or_update_run(self, auth_header: str, details: "scout_run_api_CreateOrUpdateRunRequest") -> "scout_run_api_Run": - """ - Updates a run if it exists, otherwise it's created from scratch. - """ + @builtins.property + def name(self) -> str: + return self._name - _headers: Dict[str, Any] = { - 'Accept': 'application/json', - 'Content-Type': 'application/json', - 'Authorization': auth_header, - } + @builtins.property + def description(self) -> Optional[str]: + return self._description - _params: Dict[str, Any] = { - } + @builtins.property + def origin_metadata(self) -> Dict[str, str]: + return self._origin_metadata - _path_params: Dict[str, Any] = { - } + @builtins.property + def created_at(self) -> str: + return self._created_at - _json: Any = ConjureEncoder().default(details) + @builtins.property + def updated_at(self) -> str: + return self._updated_at - _path = '/scout/v1/run/create-or-update' - _path = _path.format(**_path_params) + @builtins.property + def log_count(self) -> int: + return self._log_count - _response: Response = self._request( - 'POST', - self._uri + _path, - params=_params, - headers=_headers, - json=_json) + @builtins.property + def timestamp_type(self) -> "datasource_TimestampType": + return self._timestamp_type - _decoder = ConjureDecoder() - return _decoder.decode(_response.json(), scout_run_api_Run, self._return_none_for_unknown_union_types) - def get_run(self, auth_header: str, rid: str) -> "scout_run_api_Run": - """ - Fetches details about the run in question based on its RID. - """ +datasource_logset_api_LogSetMetadata.__name__ = "LogSetMetadata" +datasource_logset_api_LogSetMetadata.__qualname__ = "LogSetMetadata" +datasource_logset_api_LogSetMetadata.__module__ = "scout_service_api.datasource_logset_api" - _headers: Dict[str, Any] = { - 'Accept': 'application/json', - 'Authorization': auth_header, - } - _params: Dict[str, Any] = { - } +class datasource_logset_api_S3LogHandle(ConjureBeanType): - _path_params: Dict[str, Any] = { - 'rid': rid, + @builtins.classmethod + def _fields(cls) -> Dict[str, ConjureFieldDefinition]: + return { + 'path': ConjureFieldDefinition('path', str), + 'format': ConjureFieldDefinition('format', datasource_logset_api_LogFormat) } - _json: Any = None + __slots__: List[str] = ['_path', '_format'] - _path = '/scout/v1/run/{rid}' - _path = _path.format(**_path_params) + def __init__(self, format: "datasource_logset_api_LogFormat", path: str) -> None: + self._path = path + self._format = format - _response: Response = self._request( - 'GET', - self._uri + _path, - params=_params, - headers=_headers, - json=_json) + @builtins.property + def path(self) -> str: + return self._path - _decoder = ConjureDecoder() - return _decoder.decode(_response.json(), scout_run_api_Run, self._return_none_for_unknown_union_types) + @builtins.property + def format(self) -> "datasource_logset_api_LogFormat": + return self._format - def get_run_with_data_review_metrics(self, auth_header: str, rid: str) -> "scout_run_api_RunWithDataReviewMetrics": - """ - Fetches details about the run in question based on its RID, -including metrics for check and violation review status. - """ - _headers: Dict[str, Any] = { - 'Accept': 'application/json', - 'Authorization': auth_header, - } +datasource_logset_api_S3LogHandle.__name__ = "S3LogHandle" +datasource_logset_api_S3LogHandle.__qualname__ = "S3LogHandle" +datasource_logset_api_S3LogHandle.__module__ = "scout_service_api.datasource_logset_api" - _params: Dict[str, Any] = { - } - _path_params: Dict[str, Any] = { - 'rid': rid, - } +class datasource_logset_api_SearchLogSetsRequest(ConjureBeanType): - _json: Any = None + @builtins.classmethod + def _fields(cls) -> Dict[str, ConjureFieldDefinition]: + return { + 'token': ConjureFieldDefinition('token', OptionalTypeWrapper[datasource_logset_api_Token]), + 'page_size': ConjureFieldDefinition('pageSize', OptionalTypeWrapper[int]) + } - _path = '/scout/v1/run/{rid}/with-data-review-metrics' - _path = _path.format(**_path_params) + __slots__: List[str] = ['_token', '_page_size'] - _response: Response = self._request( - 'GET', - self._uri + _path, - params=_params, - headers=_headers, - json=_json) + def __init__(self, page_size: Optional[int] = None, token: Optional[str] = None) -> None: + self._token = token + self._page_size = page_size - _decoder = ConjureDecoder() - return _decoder.decode(_response.json(), scout_run_api_RunWithDataReviewMetrics, self._return_none_for_unknown_union_types) + @builtins.property + def token(self) -> Optional[str]: + return self._token - def get_run_with_data_review_summary(self, auth_header: str, rid: str) -> "scout_run_api_RunWithDataReviewSummary": + @builtins.property + def page_size(self) -> Optional[int]: """ - Fetches details about the run in question based on its RID, including a summary of the data review status. + The maximum allowed page size is 1000. Defaults to the maximum if not supplied. """ + return self._page_size - _headers: Dict[str, Any] = { - 'Accept': 'application/json', - 'Authorization': auth_header, - } - _params: Dict[str, Any] = { - } +datasource_logset_api_SearchLogSetsRequest.__name__ = "SearchLogSetsRequest" +datasource_logset_api_SearchLogSetsRequest.__qualname__ = "SearchLogSetsRequest" +datasource_logset_api_SearchLogSetsRequest.__module__ = "scout_service_api.datasource_logset_api" - _path_params: Dict[str, Any] = { - 'rid': rid, + +class datasource_logset_api_SearchLogSetsResponse(ConjureBeanType): + + @builtins.classmethod + def _fields(cls) -> Dict[str, ConjureFieldDefinition]: + return { + 'values': ConjureFieldDefinition('values', List[datasource_logset_api_LogSetMetadata]), + 'next_page_token': ConjureFieldDefinition('nextPageToken', OptionalTypeWrapper[datasource_logset_api_Token]) } - _json: Any = None + __slots__: List[str] = ['_values', '_next_page_token'] - _path = '/scout/v1/run/{rid}/with-data-review-summary' - _path = _path.format(**_path_params) + def __init__(self, values: List["datasource_logset_api_LogSetMetadata"], next_page_token: Optional[str] = None) -> None: + self._values = values + self._next_page_token = next_page_token - _response: Response = self._request( - 'GET', - self._uri + _path, - params=_params, - headers=_headers, - json=_json) + @builtins.property + def values(self) -> List["datasource_logset_api_LogSetMetadata"]: + return self._values - _decoder = ConjureDecoder() - return _decoder.decode(_response.json(), scout_run_api_RunWithDataReviewSummary, self._return_none_for_unknown_union_types) + @builtins.property + def next_page_token(self) -> Optional[str]: + return self._next_page_token - def get_run_by_id(self, auth_header: str, get_run_by_id_request: "scout_run_api_GetRunByIdRequest") -> "scout_run_api_Run": - """ - Fetches a run based on the run number, rather than RID. - """ - _headers: Dict[str, Any] = { - 'Accept': 'application/json', - 'Content-Type': 'application/json', - 'Authorization': auth_header, - } +datasource_logset_api_SearchLogSetsResponse.__name__ = "SearchLogSetsResponse" +datasource_logset_api_SearchLogSetsResponse.__qualname__ = "SearchLogSetsResponse" +datasource_logset_api_SearchLogSetsResponse.__module__ = "scout_service_api.datasource_logset_api" - _params: Dict[str, Any] = { - } - _path_params: Dict[str, Any] = { - } +class datasource_logset_api_SearchLogsRequest(ConjureBeanType): - _json: Any = ConjureEncoder().default(get_run_by_id_request) + @builtins.classmethod + def _fields(cls) -> Dict[str, ConjureFieldDefinition]: + return { + 'token': ConjureFieldDefinition('token', OptionalTypeWrapper[datasource_logset_api_Token]), + 'page_size': ConjureFieldDefinition('pageSize', OptionalTypeWrapper[int]) + } - _path = '/scout/v1/run/by-id' - _path = _path.format(**_path_params) + __slots__: List[str] = ['_token', '_page_size'] - _response: Response = self._request( - 'POST', - self._uri + _path, - params=_params, - headers=_headers, - json=_json) + def __init__(self, page_size: Optional[int] = None, token: Optional[str] = None) -> None: + self._token = token + self._page_size = page_size - _decoder = ConjureDecoder() - return _decoder.decode(_response.json(), scout_run_api_Run, self._return_none_for_unknown_union_types) + @builtins.property + def token(self) -> Optional[str]: + return self._token - def get_runs(self, auth_header: str, rids: List[str] = None) -> Dict[str, "scout_run_api_Run"]: + @builtins.property + def page_size(self) -> Optional[int]: """ - Fetches a list of run details based on a list of RIDs. + The maximum allowed page size is 10000. Defaults to the maximum if not supplied. """ - rids = rids if rids is not None else [] + return self._page_size - _headers: Dict[str, Any] = { - 'Accept': 'application/json', - 'Content-Type': 'application/json', - 'Authorization': auth_header, - } - _params: Dict[str, Any] = { - } +datasource_logset_api_SearchLogsRequest.__name__ = "SearchLogsRequest" +datasource_logset_api_SearchLogsRequest.__qualname__ = "SearchLogsRequest" +datasource_logset_api_SearchLogsRequest.__module__ = "scout_service_api.datasource_logset_api" - _path_params: Dict[str, Any] = { + +class datasource_logset_api_SearchLogsResponse(ConjureBeanType): + + @builtins.classmethod + def _fields(cls) -> Dict[str, ConjureFieldDefinition]: + return { + 'logs': ConjureFieldDefinition('logs', List[datasource_logset_api_Log]), + 'next_page_token': ConjureFieldDefinition('nextPageToken', OptionalTypeWrapper[datasource_logset_api_Token]) } - _json: Any = ConjureEncoder().default(rids) + __slots__: List[str] = ['_logs', '_next_page_token'] - _path = '/scout/v1/run/multiple' - _path = _path.format(**_path_params) + def __init__(self, logs: List["datasource_logset_api_Log"], next_page_token: Optional[str] = None) -> None: + self._logs = logs + self._next_page_token = next_page_token - _response: Response = self._request( - 'POST', - self._uri + _path, - params=_params, - headers=_headers, - json=_json) + @builtins.property + def logs(self) -> List["datasource_logset_api_Log"]: + return self._logs - _decoder = ConjureDecoder() - return _decoder.decode(_response.json(), Dict[scout_run_api_RunRid, scout_run_api_Run], self._return_none_for_unknown_union_types) + @builtins.property + def next_page_token(self) -> Optional[str]: + return self._next_page_token - def get_all_runs_properties_and_labels(self, auth_header: str) -> "scout_run_api_AllRunsPropertiesAndLabelsResponse": - _headers: Dict[str, Any] = { - 'Accept': 'application/json', - 'Authorization': auth_header, - } +datasource_logset_api_SearchLogsResponse.__name__ = "SearchLogsResponse" +datasource_logset_api_SearchLogsResponse.__qualname__ = "SearchLogsResponse" +datasource_logset_api_SearchLogsResponse.__module__ = "scout_service_api.datasource_logset_api" - _params: Dict[str, Any] = { - } - _path_params: Dict[str, Any] = { +class datasource_pagination_api_PageRequest(ConjureBeanType): + + @builtins.classmethod + def _fields(cls) -> Dict[str, ConjureFieldDefinition]: + return { + 'page_token': ConjureFieldDefinition('pageToken', OptionalTypeWrapper[datasource_pagination_api_PageToken]), + 'page_size': ConjureFieldDefinition('pageSize', int) } - _json: Any = None + __slots__: List[str] = ['_page_token', '_page_size'] - _path = '/scout/v1/all-runs-properties-labels' - _path = _path.format(**_path_params) + def __init__(self, page_size: int, page_token: Optional[str] = None) -> None: + self._page_token = page_token + self._page_size = page_size - _response: Response = self._request( - 'GET', - self._uri + _path, - params=_params, - headers=_headers, - json=_json) + @builtins.property + def page_token(self) -> Optional[str]: + return self._page_token - _decoder = ConjureDecoder() - return _decoder.decode(_response.json(), scout_run_api_AllRunsPropertiesAndLabelsResponse, self._return_none_for_unknown_union_types) + @builtins.property + def page_size(self) -> int: + return self._page_size - def search_runs(self, auth_header: str, list_runs_request: "scout_run_api_SearchRunsRequest") -> "scout_run_api_SearchRunsResponse": - """ - Searches for runs that match the given Æ’ilters. - """ - _headers: Dict[str, Any] = { - 'Accept': 'application/json', - 'Content-Type': 'application/json', - 'Authorization': auth_header, - } +datasource_pagination_api_PageRequest.__name__ = "PageRequest" +datasource_pagination_api_PageRequest.__qualname__ = "PageRequest" +datasource_pagination_api_PageRequest.__module__ = "scout_service_api.datasource_pagination_api" - _params: Dict[str, Any] = { - } - _path_params: Dict[str, Any] = { +class datasource_pagination_api_PageResponse(ConjureBeanType): + + @builtins.classmethod + def _fields(cls) -> Dict[str, ConjureFieldDefinition]: + return { + 'next_page_token': ConjureFieldDefinition('nextPageToken', OptionalTypeWrapper[datasource_pagination_api_PageToken]) } - _json: Any = ConjureEncoder().default(list_runs_request) + __slots__: List[str] = ['_next_page_token'] - _path = '/scout/v1/search-runs' - _path = _path.format(**_path_params) + def __init__(self, next_page_token: Optional[str] = None) -> None: + self._next_page_token = next_page_token - _response: Response = self._request( - 'POST', - self._uri + _path, - params=_params, - headers=_headers, - json=_json) + @builtins.property + def next_page_token(self) -> Optional[str]: + return self._next_page_token - _decoder = ConjureDecoder() - return _decoder.decode(_response.json(), scout_run_api_SearchRunsResponse, self._return_none_for_unknown_union_types) - def search_runs_with_data_review_metrics(self, auth_header: str, list_runs_request: "scout_run_api_SearchRunsRequest") -> "scout_run_api_SearchRunsWithDataReviewMetricsResponse": - """ - Searches for runs that match the given filters and -includes metrics for check and violation review status - """ +datasource_pagination_api_PageResponse.__name__ = "PageResponse" +datasource_pagination_api_PageResponse.__qualname__ = "PageResponse" +datasource_pagination_api_PageResponse.__module__ = "scout_service_api.datasource_pagination_api" - _headers: Dict[str, Any] = { - 'Accept': 'application/json', - 'Content-Type': 'application/json', - 'Authorization': auth_header, - } - _params: Dict[str, Any] = { - } +class event_CreateEvent(ConjureBeanType): - _path_params: Dict[str, Any] = { + @builtins.classmethod + def _fields(cls) -> Dict[str, ConjureFieldDefinition]: + return { + 'associations': ConjureFieldDefinition('associations', List[str]), + 'dataset_rid': ConjureFieldDefinition('datasetRid', str), + 'timestamp': ConjureFieldDefinition('timestamp', event_Timestamp), + 'duration': ConjureFieldDefinition('duration', scout_run_api_Duration), + 'name': ConjureFieldDefinition('name', str), + 'type': ConjureFieldDefinition('type', OptionalTypeWrapper[event_EventType]) } - _json: Any = ConjureEncoder().default(list_runs_request) + __slots__: List[str] = ['_associations', '_dataset_rid', '_timestamp', '_duration', '_name', '_type'] - _path = '/scout/v1/search-runs-with-data-review-metrics' - _path = _path.format(**_path_params) + def __init__(self, associations: List[str], dataset_rid: str, duration: "scout_run_api_Duration", name: str, timestamp: "event_Timestamp", type: Optional["event_EventType"] = None) -> None: + self._associations = associations + self._dataset_rid = dataset_rid + self._timestamp = timestamp + self._duration = duration + self._name = name + self._type = type - _response: Response = self._request( - 'POST', - self._uri + _path, - params=_params, - headers=_headers, - json=_json) + @builtins.property + def associations(self) -> List[str]: + return self._associations - _decoder = ConjureDecoder() - return _decoder.decode(_response.json(), scout_run_api_SearchRunsWithDataReviewMetricsResponse, self._return_none_for_unknown_union_types) + @builtins.property + def dataset_rid(self) -> str: + return self._dataset_rid - def search_runs_with_data_review_summary(self, auth_header: str, list_runs_request: "scout_run_api_SearchRunsRequest") -> "scout_run_api_SearchRunsWithDataReviewSummaryResponse": - """ - Searches for runs that match the given filters and includes a summary of the data review status. - """ + @builtins.property + def timestamp(self) -> "event_Timestamp": + return self._timestamp - _headers: Dict[str, Any] = { - 'Accept': 'application/json', - 'Content-Type': 'application/json', - 'Authorization': auth_header, - } + @builtins.property + def duration(self) -> "scout_run_api_Duration": + return self._duration - _params: Dict[str, Any] = { - } + @builtins.property + def name(self) -> str: + return self._name - _path_params: Dict[str, Any] = { + @builtins.property + def type(self) -> Optional["event_EventType"]: + return self._type + + +event_CreateEvent.__name__ = "CreateEvent" +event_CreateEvent.__qualname__ = "CreateEvent" +event_CreateEvent.__module__ = "scout_service_api.event" + + +class event_Event(ConjureBeanType): + + @builtins.classmethod + def _fields(cls) -> Dict[str, ConjureFieldDefinition]: + return { + 'uuid': ConjureFieldDefinition('uuid', str), + 'timestamp': ConjureFieldDefinition('timestamp', event_Timestamp), + 'duration': ConjureFieldDefinition('duration', scout_run_api_Duration), + 'name': ConjureFieldDefinition('name', str), + 'dataset_rid': ConjureFieldDefinition('datasetRid', str), + 'type': ConjureFieldDefinition('type', event_EventType) } - _json: Any = ConjureEncoder().default(list_runs_request) + __slots__: List[str] = ['_uuid', '_timestamp', '_duration', '_name', '_dataset_rid', '_type'] - _path = '/scout/v1/search-runs-with-data-review-summary' - _path = _path.format(**_path_params) + def __init__(self, dataset_rid: str, duration: "scout_run_api_Duration", name: str, timestamp: "event_Timestamp", type: "event_EventType", uuid: str) -> None: + self._uuid = uuid + self._timestamp = timestamp + self._duration = duration + self._name = name + self._dataset_rid = dataset_rid + self._type = type - _response: Response = self._request( - 'POST', - self._uri + _path, - params=_params, - headers=_headers, - json=_json) + @builtins.property + def uuid(self) -> str: + return self._uuid - _decoder = ConjureDecoder() - return _decoder.decode(_response.json(), scout_run_api_SearchRunsWithDataReviewSummaryResponse, self._return_none_for_unknown_union_types) + @builtins.property + def timestamp(self) -> "event_Timestamp": + return self._timestamp - def archive_run(self, auth_header: str, rid: str) -> bool: - """ - Soft-deletes a run. Runs still exist in the database but are no longer visible. - """ + @builtins.property + def duration(self) -> "scout_run_api_Duration": + return self._duration - _headers: Dict[str, Any] = { - 'Accept': 'application/json', - 'Authorization': auth_header, - } + @builtins.property + def name(self) -> str: + return self._name - _params: Dict[str, Any] = { - } + @builtins.property + def dataset_rid(self) -> str: + return self._dataset_rid - _path_params: Dict[str, Any] = { - 'rid': rid, - } + @builtins.property + def type(self) -> "event_EventType": + return self._type - _json: Any = None - _path = '/scout/v1/archive-run/{rid}' - _path = _path.format(**_path_params) +event_Event.__name__ = "Event" +event_Event.__qualname__ = "Event" +event_Event.__module__ = "scout_service_api.event" - _response: Response = self._request( - 'PUT', - self._uri + _path, - params=_params, - headers=_headers, - json=_json) - _decoder = ConjureDecoder() - return _decoder.decode(_response.json(), bool, self._return_none_for_unknown_union_types) +class event_EventService(Service): + """ + An Event is an annotated moment or time range. +The Event Service is responsible for creating and retrieving events for a particular data source. + """ - def get_data_source_ref_name_and_type_list(self, auth_header: str) -> List["scout_run_api_RefNameAndType"]: + def create_event(self, auth_header: str, request: "event_CreateEvent") -> "event_Event": """ - Returns the list of ref names that are in use across an entire organization. + Creates an event """ _headers: Dict[str, Any] = { 'Accept': 'application/json', + 'Content-Type': 'application/json', 'Authorization': auth_header, } @@ -5096,22 +4685,25 @@ def get_data_source_ref_name_and_type_list(self, auth_header: str) -> List["scou _path_params: Dict[str, Any] = { } - _json: Any = None + _json: Any = ConjureEncoder().default(request) - _path = '/scout/v1/data-source-ref-names-and-types' + _path = '/event/v1/events' _path = _path.format(**_path_params) _response: Response = self._request( - 'GET', + 'POST', self._uri + _path, params=_params, headers=_headers, json=_json) _decoder = ConjureDecoder() - return _decoder.decode(_response.json(), List[scout_run_api_RefNameAndType], self._return_none_for_unknown_union_types) + return _decoder.decode(_response.json(), event_Event, self._return_none_for_unknown_union_types) - def search_channels(self, auth_header: str, request: "scout_run_api_SearchRunChannelsRequest", rid: str) -> "scout_run_api_SearchRunChannelsResponse": + def get_events(self, auth_header: str, request: "event_GetEvents") -> List["event_Event"]: + """ + Gets a set of events by UUIDs + """ _headers: Dict[str, Any] = { 'Accept': 'application/json', @@ -5123,12 +4715,11 @@ def search_channels(self, auth_header: str, request: "scout_run_api_SearchRunCha } _path_params: Dict[str, Any] = { - 'rid': rid, } _json: Any = ConjureEncoder().default(request) - _path = '/scout/v1/run/{rid}/search-channels' + _path = '/event/v1/get-events' _path = _path.format(**_path_params) _response: Response = self._request( @@ -5139,989 +4730,975 @@ def search_channels(self, auth_header: str, request: "scout_run_api_SearchRunCha json=_json) _decoder = ConjureDecoder() - return _decoder.decode(_response.json(), scout_run_api_SearchRunChannelsResponse, self._return_none_for_unknown_union_types) + return _decoder.decode(_response.json(), List[event_Event], self._return_none_for_unknown_union_types) - def get_events(self, auth_header: str, rid: str, next_page_token: Optional[str] = None) -> "scout_run_api_GetEventsForRunPage": - """ - Fetches a list of events associated with the run. -Returns a maximum page size of 1000. - """ +event_EventService.__name__ = "EventService" +event_EventService.__qualname__ = "EventService" +event_EventService.__module__ = "scout_service_api.event" - _headers: Dict[str, Any] = { - 'Accept': 'application/json', - 'Authorization': auth_header, - } - _params: Dict[str, Any] = { - 'nextPageToken': next_page_token, - } +class event_EventType(ConjureEnumType): - _path_params: Dict[str, Any] = { - 'rid': rid, - } + INFO = 'INFO' + '''INFO''' + FLAG = 'FLAG' + '''FLAG''' + ERROR = 'ERROR' + '''ERROR''' + SUCCESS = 'SUCCESS' + '''SUCCESS''' + UNKNOWN = 'UNKNOWN' + '''UNKNOWN''' - _json: Any = None + def __reduce_ex__(self, proto): + return self.__class__, (self.name,) - _path = '/scout/v1/run/{rid}/events' - _path = _path.format(**_path_params) - _response: Response = self._request( - 'GET', - self._uri + _path, - params=_params, - headers=_headers, - json=_json) +event_EventType.__name__ = "EventType" +event_EventType.__qualname__ = "EventType" +event_EventType.__module__ = "scout_service_api.event" - _decoder = ConjureDecoder() - return _decoder.decode(_response.json(), scout_run_api_GetEventsForRunPage, self._return_none_for_unknown_union_types) - def publish_events(self, auth_header: str, request: "scout_run_api_PublishEventsToRunRequest", rid: str) -> None: - """ - Adds a set of new events to the run. - """ +class event_GetEvents(ConjureBeanType): - _headers: Dict[str, Any] = { - 'Accept': 'application/json', - 'Content-Type': 'application/json', - 'Authorization': auth_header, + @builtins.classmethod + def _fields(cls) -> Dict[str, ConjureFieldDefinition]: + return { + 'uuids': ConjureFieldDefinition('uuids', List[str]) } - _params: Dict[str, Any] = { - } + __slots__: List[str] = ['_uuids'] - _path_params: Dict[str, Any] = { - 'rid': rid, - } + def __init__(self, uuids: List[str]) -> None: + self._uuids = uuids - _json: Any = ConjureEncoder().default(request) + @builtins.property + def uuids(self) -> List[str]: + return self._uuids - _path = '/scout/v1/run/{rid}/events' - _path = _path.format(**_path_params) - _response: Response = self._request( - 'POST', - self._uri + _path, - params=_params, - headers=_headers, - json=_json) +event_GetEvents.__name__ = "GetEvents" +event_GetEvents.__qualname__ = "GetEvents" +event_GetEvents.__module__ = "scout_service_api.event" - return - def delete_events_from_run(self, auth_header: str, request: "scout_run_api_DeleteEventsFromRunRequest", rid: str) -> None: - """ - Deletes events from the run. - """ +class event_Timestamp(ConjureBeanType): + """ + agnostic of relative/absolute, that is stored on the time series + """ - _headers: Dict[str, Any] = { - 'Accept': 'application/json', - 'Content-Type': 'application/json', - 'Authorization': auth_header, + @builtins.classmethod + def _fields(cls) -> Dict[str, ConjureFieldDefinition]: + return { + 'seconds': ConjureFieldDefinition('seconds', int), + 'nanos': ConjureFieldDefinition('nanos', int) } - _params: Dict[str, Any] = { - } + __slots__: List[str] = ['_seconds', '_nanos'] - _path_params: Dict[str, Any] = { - 'rid': rid, - } + def __init__(self, nanos: int, seconds: int) -> None: + self._seconds = seconds + self._nanos = nanos - _json: Any = ConjureEncoder().default(request) + @builtins.property + def seconds(self) -> int: + return self._seconds - _path = '/scout/v1/run/{rid}/delete-events' - _path = _path.format(**_path_params) + @builtins.property + def nanos(self) -> int: + return self._nanos - _response: Response = self._request( - 'POST', - self._uri + _path, - params=_params, - headers=_headers, - json=_json) - return +event_Timestamp.__name__ = "Timestamp" +event_Timestamp.__qualname__ = "Timestamp" +event_Timestamp.__module__ = "scout_service_api.event" - def update_run_attachment(self, auth_header: str, request: "scout_run_api_UpdateAttachmentsRequest", rid: str) -> None: - """ - Updates the attachments associated with a run. - """ - _headers: Dict[str, Any] = { - 'Accept': 'application/json', - 'Content-Type': 'application/json', - 'Authorization': auth_header, - } +class ingest_api_AbsoluteTimestamp(ConjureUnionType): + _iso8601: Optional["ingest_api_Iso8601Timestamp"] = None + _epoch_of_time_unit: Optional["ingest_api_EpochTimestamp"] = None + _custom_format: Optional["ingest_api_CustomTimestamp"] = None - _params: Dict[str, Any] = { + @builtins.classmethod + def _options(cls) -> Dict[str, ConjureFieldDefinition]: + return { + 'iso8601': ConjureFieldDefinition('iso8601', ingest_api_Iso8601Timestamp), + 'epoch_of_time_unit': ConjureFieldDefinition('epochOfTimeUnit', ingest_api_EpochTimestamp), + 'custom_format': ConjureFieldDefinition('customFormat', ingest_api_CustomTimestamp) } - _path_params: Dict[str, Any] = { - 'rid': rid, - } + def __init__( + self, + iso8601: Optional["ingest_api_Iso8601Timestamp"] = None, + epoch_of_time_unit: Optional["ingest_api_EpochTimestamp"] = None, + custom_format: Optional["ingest_api_CustomTimestamp"] = None, + type_of_union: Optional[str] = None + ) -> None: + if type_of_union is None: + if (iso8601 is not None) + (epoch_of_time_unit is not None) + (custom_format is not None) != 1: + raise ValueError('a union must contain a single member') - _json: Any = ConjureEncoder().default(request) + if iso8601 is not None: + self._iso8601 = iso8601 + self._type = 'iso8601' + if epoch_of_time_unit is not None: + self._epoch_of_time_unit = epoch_of_time_unit + self._type = 'epochOfTimeUnit' + if custom_format is not None: + self._custom_format = custom_format + self._type = 'customFormat' - _path = '/scout/v1/run/{rid}/attachments' - _path = _path.format(**_path_params) + elif type_of_union == 'iso8601': + if iso8601 is None: + raise ValueError('a union value must not be None') + self._iso8601 = iso8601 + self._type = 'iso8601' + elif type_of_union == 'epochOfTimeUnit': + if epoch_of_time_unit is None: + raise ValueError('a union value must not be None') + self._epoch_of_time_unit = epoch_of_time_unit + self._type = 'epochOfTimeUnit' + elif type_of_union == 'customFormat': + if custom_format is None: + raise ValueError('a union value must not be None') + self._custom_format = custom_format + self._type = 'customFormat' - _response: Response = self._request( - 'POST', - self._uri + _path, - params=_params, - headers=_headers, - json=_json) + @builtins.property + def iso8601(self) -> Optional["ingest_api_Iso8601Timestamp"]: + return self._iso8601 - return + @builtins.property + def epoch_of_time_unit(self) -> Optional["ingest_api_EpochTimestamp"]: + return self._epoch_of_time_unit + @builtins.property + def custom_format(self) -> Optional["ingest_api_CustomTimestamp"]: + return self._custom_format -scout_RunService.__name__ = "RunService" -scout_RunService.__qualname__ = "RunService" -scout_RunService.__module__ = "scout_service_api.scout" + def accept(self, visitor) -> Any: + if not isinstance(visitor, ingest_api_AbsoluteTimestampVisitor): + raise ValueError('{} is not an instance of ingest_api_AbsoluteTimestampVisitor'.format(visitor.__class__.__name__)) + if self._type == 'iso8601' and self.iso8601 is not None: + return visitor._iso8601(self.iso8601) + if self._type == 'epochOfTimeUnit' and self.epoch_of_time_unit is not None: + return visitor._epoch_of_time_unit(self.epoch_of_time_unit) + if self._type == 'customFormat' and self.custom_format is not None: + return visitor._custom_format(self.custom_format) -class scout_TemplateService(Service): - """ - TemplateService manages templates, which are workbooks that -can be re-used across runs. Templates are versioned. - """ +ingest_api_AbsoluteTimestamp.__name__ = "AbsoluteTimestamp" +ingest_api_AbsoluteTimestamp.__qualname__ = "AbsoluteTimestamp" +ingest_api_AbsoluteTimestamp.__module__ = "scout_service_api.ingest_api" - def create(self, auth_header: str, request: "scout_template_api_CreateTemplateRequest") -> "scout_template_api_Template": - """ - Creates a new template. - """ - _headers: Dict[str, Any] = { - 'Accept': 'application/json', - 'Content-Type': 'application/json', - 'Authorization': auth_header, - } +class ingest_api_AbsoluteTimestampVisitor: - _params: Dict[str, Any] = { - } + @abstractmethod + def _iso8601(self, iso8601: "ingest_api_Iso8601Timestamp") -> Any: + pass - _path_params: Dict[str, Any] = { - } + @abstractmethod + def _epoch_of_time_unit(self, epoch_of_time_unit: "ingest_api_EpochTimestamp") -> Any: + pass - _json: Any = ConjureEncoder().default(request) + @abstractmethod + def _custom_format(self, custom_format: "ingest_api_CustomTimestamp") -> Any: + pass - _path = '/scout/v1/template' - _path = _path.format(**_path_params) - _response: Response = self._request( - 'POST', - self._uri + _path, - params=_params, - headers=_headers, - json=_json) +ingest_api_AbsoluteTimestampVisitor.__name__ = "AbsoluteTimestampVisitor" +ingest_api_AbsoluteTimestampVisitor.__qualname__ = "AbsoluteTimestampVisitor" +ingest_api_AbsoluteTimestampVisitor.__module__ = "scout_service_api.ingest_api" - _decoder = ConjureDecoder() - return _decoder.decode(_response.json(), scout_template_api_Template, self._return_none_for_unknown_union_types) - def get(self, auth_header: str, template_rid: str, branch: Optional[str] = None, commit: Optional[str] = None) -> "scout_template_api_Template": - """ - Must only pass one of (branch, commit). If neither are passed, -the latest commit on the "main" branch is returned. -Throws if the template, branch, or commit doesn't exist. - """ +class ingest_api_AsyncHandle(ConjureBeanType): - _headers: Dict[str, Any] = { - 'Accept': 'application/json', - 'Authorization': auth_header, + @builtins.classmethod + def _fields(cls) -> Dict[str, ConjureFieldDefinition]: + return { + 'rid': ConjureFieldDefinition('rid', str) } - _params: Dict[str, Any] = { - 'branch': branch, - 'commit': commit, - } + __slots__: List[str] = ['_rid'] - _path_params: Dict[str, Any] = { - 'templateRid': template_rid, - } + def __init__(self, rid: str) -> None: + self._rid = rid - _json: Any = None + @builtins.property + def rid(self) -> str: + return self._rid - _path = '/scout/v1/template/{templateRid}' - _path = _path.format(**_path_params) - _response: Response = self._request( - 'GET', - self._uri + _path, - params=_params, - headers=_headers, - json=_json) +ingest_api_AsyncHandle.__name__ = "AsyncHandle" +ingest_api_AsyncHandle.__qualname__ = "AsyncHandle" +ingest_api_AsyncHandle.__module__ = "scout_service_api.ingest_api" - _decoder = ConjureDecoder() - return _decoder.decode(_response.json(), scout_template_api_Template, self._return_none_for_unknown_union_types) - def save_working_state(self, auth_header: str, request: "scout_template_api_SaveTemplateRequest", template_rid: str, branch: Optional[str] = None) -> "scout_template_api_Template": - """ - Creates a commit that may be compacted, e.g cleaned up and not exist anymore. -Throws if the template or branch doesn't exist. -Throws if the latest commit doesn't match the provided id. -Throws if you save to an archived template. - """ +class ingest_api_ChannelConfig(ConjureBeanType): - _headers: Dict[str, Any] = { - 'Accept': 'application/json', - 'Content-Type': 'application/json', - 'Authorization': auth_header, + @builtins.classmethod + def _fields(cls) -> Dict[str, ConjureFieldDefinition]: + return { + 'prefix_tree_delimiter': ConjureFieldDefinition('prefixTreeDelimiter', OptionalTypeWrapper[str]) } - _params: Dict[str, Any] = { - 'branch': branch, - } + __slots__: List[str] = ['_prefix_tree_delimiter'] - _path_params: Dict[str, Any] = { - 'templateRid': template_rid, - } + def __init__(self, prefix_tree_delimiter: Optional[str] = None) -> None: + self._prefix_tree_delimiter = prefix_tree_delimiter - _json: Any = ConjureEncoder().default(request) + @builtins.property + def prefix_tree_delimiter(self) -> Optional[str]: + """ + If set, will construct a prefix tree for channels of the dataset using the given delimiter. + """ + return self._prefix_tree_delimiter - _path = '/scout/v1/template/{templateRid}/save-working-state' - _path = _path.format(**_path_params) - _response: Response = self._request( - 'POST', - self._uri + _path, - params=_params, - headers=_headers, - json=_json) +ingest_api_ChannelConfig.__name__ = "ChannelConfig" +ingest_api_ChannelConfig.__qualname__ = "ChannelConfig" +ingest_api_ChannelConfig.__module__ = "scout_service_api.ingest_api" - _decoder = ConjureDecoder() - return _decoder.decode(_response.json(), scout_template_api_Template, self._return_none_for_unknown_union_types) - def commit(self, auth_header: str, request: "scout_template_api_CommitTemplateRequest", template_rid: str, branch: Optional[str] = None) -> "scout_template_api_Template": - """ - Creates a commit with a commit message. -Throws if the template or branch doesn't exist. -Throws if the latest commit doesn't match the provided id. -Throws if you commit to an archived template. - """ +class ingest_api_CompleteMultipartUploadResponse(ConjureBeanType): - _headers: Dict[str, Any] = { - 'Accept': 'application/json', - 'Content-Type': 'application/json', - 'Authorization': auth_header, + @builtins.classmethod + def _fields(cls) -> Dict[str, ConjureFieldDefinition]: + return { + 'location': ConjureFieldDefinition('location', OptionalTypeWrapper[str]) } - _params: Dict[str, Any] = { - 'branch': branch, - } + __slots__: List[str] = ['_location'] - _path_params: Dict[str, Any] = { - 'templateRid': template_rid, - } + def __init__(self, location: Optional[str] = None) -> None: + self._location = location - _json: Any = ConjureEncoder().default(request) + @builtins.property + def location(self) -> Optional[str]: + return self._location - _path = '/scout/v1/template/{templateRid}/commit' - _path = _path.format(**_path_params) - _response: Response = self._request( - 'POST', - self._uri + _path, - params=_params, - headers=_headers, - json=_json) +ingest_api_CompleteMultipartUploadResponse.__name__ = "CompleteMultipartUploadResponse" +ingest_api_CompleteMultipartUploadResponse.__qualname__ = "CompleteMultipartUploadResponse" +ingest_api_CompleteMultipartUploadResponse.__module__ = "scout_service_api.ingest_api" - _decoder = ConjureDecoder() - return _decoder.decode(_response.json(), scout_template_api_Template, self._return_none_for_unknown_union_types) - def update_metadata(self, auth_header: str, request: "scout_template_api_UpdateMetadataRequest", template_rid: str) -> "scout_template_api_TemplateMetadata": - """ - Throws if the template doesn't exist. - """ +class ingest_api_CustomTimestamp(ConjureBeanType): - _headers: Dict[str, Any] = { - 'Accept': 'application/json', - 'Content-Type': 'application/json', - 'Authorization': auth_header, + @builtins.classmethod + def _fields(cls) -> Dict[str, ConjureFieldDefinition]: + return { + 'format': ConjureFieldDefinition('format', str), + 'default_year': ConjureFieldDefinition('defaultYear', OptionalTypeWrapper[int]) } - _params: Dict[str, Any] = { - } + __slots__: List[str] = ['_format', '_default_year'] - _path_params: Dict[str, Any] = { - 'templateRid': template_rid, - } + def __init__(self, format: str, default_year: Optional[int] = None) -> None: + self._format = format + self._default_year = default_year - _json: Any = ConjureEncoder().default(request) + @builtins.property + def format(self) -> str: + """ + The format string should be in the format of the `DateTimeFormatter` class in Java. + """ + return self._format - _path = '/scout/v1/template/{templateRid}/metadata' - _path = _path.format(**_path_params) + @builtins.property + def default_year(self) -> Optional[int]: + """ + Default year is accepted as an optional field for cases like IRIG time format and will be overridden by year in time format. + """ + return self._default_year - _response: Response = self._request( - 'POST', - self._uri + _path, - params=_params, - headers=_headers, - json=_json) - _decoder = ConjureDecoder() - return _decoder.decode(_response.json(), scout_template_api_TemplateMetadata, self._return_none_for_unknown_union_types) +ingest_api_CustomTimestamp.__name__ = "CustomTimestamp" +ingest_api_CustomTimestamp.__qualname__ = "CustomTimestamp" +ingest_api_CustomTimestamp.__module__ = "scout_service_api.ingest_api" - def search_templates(self, auth_header: str, request: "scout_template_api_SearchTemplatesRequest") -> "scout_template_api_SearchTemplatesResponse": - _headers: Dict[str, Any] = { - 'Accept': 'application/json', - 'Content-Type': 'application/json', - 'Authorization': auth_header, - } +class ingest_api_DatasetSpec(ConjureBeanType): - _params: Dict[str, Any] = { + @builtins.classmethod + def _fields(cls) -> Dict[str, ConjureFieldDefinition]: + return { + 'name': ConjureFieldDefinition('name', OptionalTypeWrapper[str]) } - _path_params: Dict[str, Any] = { - } + __slots__: List[str] = ['_name'] - _json: Any = ConjureEncoder().default(request) + def __init__(self, name: Optional[str] = None) -> None: + self._name = name - _path = '/scout/v1/template/search' - _path = _path.format(**_path_params) + @builtins.property + def name(self) -> Optional[str]: + return self._name - _response: Response = self._request( - 'POST', - self._uri + _path, - params=_params, - headers=_headers, - json=_json) - _decoder = ConjureDecoder() - return _decoder.decode(_response.json(), scout_template_api_SearchTemplatesResponse, self._return_none_for_unknown_union_types) +ingest_api_DatasetSpec.__name__ = "DatasetSpec" +ingest_api_DatasetSpec.__qualname__ = "DatasetSpec" +ingest_api_DatasetSpec.__module__ = "scout_service_api.ingest_api" - def get_all_labels_and_properties(self, auth_header: str) -> "scout_template_api_GetAllLabelsAndPropertiesResponse": - _headers: Dict[str, Any] = { - 'Accept': 'application/json', - 'Authorization': auth_header, - } +class ingest_api_DeprecatedNewCsv(ConjureBeanType): - _params: Dict[str, Any] = { + @builtins.classmethod + def _fields(cls) -> Dict[str, ConjureFieldDefinition]: + return { + 'source': ConjureFieldDefinition('source', ingest_api_IngestSource), + 'name': ConjureFieldDefinition('name', OptionalTypeWrapper[str]), + 'properties': ConjureFieldDefinition('properties', Dict[str, str]), + 'time_column_spec': ConjureFieldDefinition('timeColumnSpec', OptionalTypeWrapper[ingest_api_TimestampMetadata]), + 'channel_config': ConjureFieldDefinition('channelConfig', OptionalTypeWrapper[ingest_api_ChannelConfig]) } - _path_params: Dict[str, Any] = { - } + __slots__: List[str] = ['_source', '_name', '_properties', '_time_column_spec', '_channel_config'] - _json: Any = None + def __init__(self, properties: Dict[str, str], source: "ingest_api_IngestSource", channel_config: Optional["ingest_api_ChannelConfig"] = None, name: Optional[str] = None, time_column_spec: Optional["ingest_api_TimestampMetadata"] = None) -> None: + self._source = source + self._name = name + self._properties = properties + self._time_column_spec = time_column_spec + self._channel_config = channel_config - _path = '/scout/v1/template/get-all-labels-properties' - _path = _path.format(**_path_params) + @builtins.property + def source(self) -> "ingest_api_IngestSource": + return self._source - _response: Response = self._request( - 'GET', - self._uri + _path, - params=_params, - headers=_headers, - json=_json) + @builtins.property + def name(self) -> Optional[str]: + return self._name - _decoder = ConjureDecoder() - return _decoder.decode(_response.json(), scout_template_api_GetAllLabelsAndPropertiesResponse, self._return_none_for_unknown_union_types) + @builtins.property + def properties(self) -> Dict[str, str]: + return self._properties - def merge_to_main(self, auth_header: str, request: "scout_template_api_MergeToMainRequest", template_rid: str) -> "scout_template_api_Template": - """ - Merges the given branch to the "main" branch. -Throws if the template or branch doesn't exist. -Throws if the latest commit doesn't match the provided id. -Throws if you merge on an archived template. - """ + @builtins.property + def time_column_spec(self) -> Optional["ingest_api_TimestampMetadata"]: + return self._time_column_spec - _headers: Dict[str, Any] = { - 'Accept': 'application/json', - 'Content-Type': 'application/json', - 'Authorization': auth_header, - } + @builtins.property + def channel_config(self) -> Optional["ingest_api_ChannelConfig"]: + return self._channel_config - _params: Dict[str, Any] = { - } - _path_params: Dict[str, Any] = { - 'templateRid': template_rid, - } +ingest_api_DeprecatedNewCsv.__name__ = "DeprecatedNewCsv" +ingest_api_DeprecatedNewCsv.__qualname__ = "DeprecatedNewCsv" +ingest_api_DeprecatedNewCsv.__module__ = "scout_service_api.ingest_api" - _json: Any = ConjureEncoder().default(request) - _path = '/scout/v1/template/{templateRid}/merge-to-main' - _path = _path.format(**_path_params) +class ingest_api_DeprecatedNewDataSource(ConjureUnionType): + _csv: Optional["ingest_api_DeprecatedNewCsv"] = None - _response: Response = self._request( - 'POST', - self._uri + _path, - params=_params, - headers=_headers, - json=_json) + @builtins.classmethod + def _options(cls) -> Dict[str, ConjureFieldDefinition]: + return { + 'csv': ConjureFieldDefinition('csv', ingest_api_DeprecatedNewCsv) + } - _decoder = ConjureDecoder() - return _decoder.decode(_response.json(), scout_template_api_Template, self._return_none_for_unknown_union_types) + def __init__( + self, + csv: Optional["ingest_api_DeprecatedNewCsv"] = None, + type_of_union: Optional[str] = None + ) -> None: + if type_of_union is None: + if (csv is not None) != 1: + raise ValueError('a union must contain a single member') + if csv is not None: + self._csv = csv + self._type = 'csv' -scout_TemplateService.__name__ = "TemplateService" -scout_TemplateService.__qualname__ = "TemplateService" -scout_TemplateService.__module__ = "scout_service_api.scout" + elif type_of_union == 'csv': + if csv is None: + raise ValueError('a union value must not be None') + self._csv = csv + self._type = 'csv' + @builtins.property + def csv(self) -> Optional["ingest_api_DeprecatedNewCsv"]: + return self._csv -class scout_UnitsService(Service): - """ - The Units Service serves as a comprehensive catalog of the units of measurement supported by scout. Units, by -default, follow the UCUM convention for representation. - """ + def accept(self, visitor) -> Any: + if not isinstance(visitor, ingest_api_DeprecatedNewDataSourceVisitor): + raise ValueError('{} is not an instance of ingest_api_DeprecatedNewDataSourceVisitor'.format(visitor.__class__.__name__)) + if self._type == 'csv' and self.csv is not None: + return visitor._csv(self.csv) - def get_all_units(self, auth_header: str) -> "scout_units_api_GetUnitsResponse": - """ - Returns all known units, grouped by the physical property they measure. - """ - _headers: Dict[str, Any] = { - 'Accept': 'application/json', - 'Authorization': auth_header, - } +ingest_api_DeprecatedNewDataSource.__name__ = "DeprecatedNewDataSource" +ingest_api_DeprecatedNewDataSource.__qualname__ = "DeprecatedNewDataSource" +ingest_api_DeprecatedNewDataSource.__module__ = "scout_service_api.ingest_api" - _params: Dict[str, Any] = { - } - _path_params: Dict[str, Any] = { - } +class ingest_api_DeprecatedNewDataSourceVisitor: - _json: Any = None + @abstractmethod + def _csv(self, csv: "ingest_api_DeprecatedNewCsv") -> Any: + pass - _path = '/units/v1/units' - _path = _path.format(**_path_params) - _response: Response = self._request( - 'GET', - self._uri + _path, - params=_params, - headers=_headers, - json=_json) +ingest_api_DeprecatedNewDataSourceVisitor.__name__ = "DeprecatedNewDataSourceVisitor" +ingest_api_DeprecatedNewDataSourceVisitor.__qualname__ = "DeprecatedNewDataSourceVisitor" +ingest_api_DeprecatedNewDataSourceVisitor.__module__ = "scout_service_api.ingest_api" - _decoder = ConjureDecoder() - return _decoder.decode(_response.json(), scout_units_api_GetUnitsResponse, self._return_none_for_unknown_union_types) - def get_unit(self, auth_header: str, unit: str) -> Optional["scout_units_api_Unit"]: - """ - Returns information for a unit symbol if available. Returns as empty if the provided symbol cannot be parsed. - """ +class ingest_api_DeprecatedTimestampMetadata(ConjureBeanType): - _headers: Dict[str, Any] = { - 'Accept': 'application/json', - 'Content-Type': 'application/json', - 'Authorization': auth_header, + @builtins.classmethod + def _fields(cls) -> Dict[str, ConjureFieldDefinition]: + return { + 'series_name': ConjureFieldDefinition('seriesName', str), + 'is_absolute': ConjureFieldDefinition('isAbsolute', bool) } - _params: Dict[str, Any] = { - } + __slots__: List[str] = ['_series_name', '_is_absolute'] - _path_params: Dict[str, Any] = { - } + def __init__(self, is_absolute: bool, series_name: str) -> None: + self._series_name = series_name + self._is_absolute = is_absolute - _json: Any = ConjureEncoder().default(unit) + @builtins.property + def series_name(self) -> str: + return self._series_name - _path = '/units/v1/units/get-unit' - _path = _path.format(**_path_params) + @builtins.property + def is_absolute(self) -> bool: + return self._is_absolute - _response: Response = self._request( - 'POST', - self._uri + _path, - params=_params, - headers=_headers, - json=_json) - _decoder = ConjureDecoder() - return None if _response.status_code == 204 else _decoder.decode(_response.json(), OptionalTypeWrapper[scout_units_api_Unit], self._return_none_for_unknown_union_types) +ingest_api_DeprecatedTimestampMetadata.__name__ = "DeprecatedTimestampMetadata" +ingest_api_DeprecatedTimestampMetadata.__qualname__ = "DeprecatedTimestampMetadata" +ingest_api_DeprecatedTimestampMetadata.__module__ = "scout_service_api.ingest_api" - def get_commensurable_units(self, auth_header: str, unit: str) -> List["scout_units_api_Unit"]: - """ - Returns the set of units that can be converted to and from the given unit. - """ - _headers: Dict[str, Any] = { - 'Accept': 'application/json', - 'Content-Type': 'application/json', - 'Authorization': auth_header, - } +class ingest_api_DeprecatedTriggerIngest(ConjureBeanType): - _params: Dict[str, Any] = { + @builtins.classmethod + def _fields(cls) -> Dict[str, ConjureFieldDefinition]: + return { + 'source': ConjureFieldDefinition('source', ingest_api_IngestSource), + 'properties': ConjureFieldDefinition('properties', Dict[str, str]), + 'dataset_name': ConjureFieldDefinition('datasetName', OptionalTypeWrapper[str]), + 'timestamp_metadata': ConjureFieldDefinition('timestampMetadata', OptionalTypeWrapper[ingest_api_DeprecatedTimestampMetadata]) } - _path_params: Dict[str, Any] = { - } + __slots__: List[str] = ['_source', '_properties', '_dataset_name', '_timestamp_metadata'] - _json: Any = ConjureEncoder().default(unit) + def __init__(self, properties: Dict[str, str], source: "ingest_api_IngestSource", dataset_name: Optional[str] = None, timestamp_metadata: Optional["ingest_api_DeprecatedTimestampMetadata"] = None) -> None: + self._source = source + self._properties = properties + self._dataset_name = dataset_name + self._timestamp_metadata = timestamp_metadata - _path = '/units/v1/units/commensurable-units' - _path = _path.format(**_path_params) + @builtins.property + def source(self) -> "ingest_api_IngestSource": + return self._source - _response: Response = self._request( - 'POST', - self._uri + _path, - params=_params, - headers=_headers, - json=_json) + @builtins.property + def properties(self) -> Dict[str, str]: + return self._properties - _decoder = ConjureDecoder() - return _decoder.decode(_response.json(), List[scout_units_api_Unit], self._return_none_for_unknown_union_types) + @builtins.property + def dataset_name(self) -> Optional[str]: + return self._dataset_name + @builtins.property + def timestamp_metadata(self) -> Optional["ingest_api_DeprecatedTimestampMetadata"]: + return self._timestamp_metadata -scout_UnitsService.__name__ = "UnitsService" -scout_UnitsService.__qualname__ = "UnitsService" -scout_UnitsService.__module__ = "scout_service_api.scout" +ingest_api_DeprecatedTriggerIngest.__name__ = "DeprecatedTriggerIngest" +ingest_api_DeprecatedTriggerIngest.__qualname__ = "DeprecatedTriggerIngest" +ingest_api_DeprecatedTriggerIngest.__module__ = "scout_service_api.ingest_api" -class scout_VersioningService(Service): - """ - This is the external-facing portion of VersioningService which -gives clients access to functionality that doesn't create new -commits. The creation of new commits should be done via the -resource-specific services. - """ - def create_branch(self, auth_header: str, request: "scout_versioning_api_CreateBranchRequest", resource_rid: str) -> "scout_versioning_api_Branch": - """ - Creates a mutable pointer to the provided commit. -"Saves"/"commits" can be performed on this pointer. -Throws if the name is already used as a commit -pointer for this resource. -Throws if the provided commit doesn't exist. - """ +class ingest_api_Duration(ConjureBeanType): - _headers: Dict[str, Any] = { - 'Accept': 'application/json', - 'Content-Type': 'application/json', - 'Authorization': auth_header, + @builtins.classmethod + def _fields(cls) -> Dict[str, ConjureFieldDefinition]: + return { + 'seconds': ConjureFieldDefinition('seconds', int), + 'nanos': ConjureFieldDefinition('nanos', int) } - _params: Dict[str, Any] = { - } + __slots__: List[str] = ['_seconds', '_nanos'] - _path_params: Dict[str, Any] = { - 'resourceRid': resource_rid, - } + def __init__(self, nanos: int, seconds: int) -> None: + self._seconds = seconds + self._nanos = nanos - _json: Any = ConjureEncoder().default(request) + @builtins.property + def seconds(self) -> int: + return self._seconds - _path = '/scout/v1/versioning/{resourceRid}/branch' - _path = _path.format(**_path_params) + @builtins.property + def nanos(self) -> int: + return self._nanos - _response: Response = self._request( - 'POST', - self._uri + _path, - params=_params, - headers=_headers, - json=_json) - _decoder = ConjureDecoder() - return _decoder.decode(_response.json(), scout_versioning_api_Branch, self._return_none_for_unknown_union_types) +ingest_api_Duration.__name__ = "Duration" +ingest_api_Duration.__qualname__ = "Duration" +ingest_api_Duration.__module__ = "scout_service_api.ingest_api" - def create_tag(self, auth_header: str, request: "scout_versioning_api_CreateTagRequest", resource_rid: str) -> "scout_versioning_api_Tag": - """ - Creates an immutable pointer to the provided commit. -Throws if the name is already used as a commit -pointer for this resource. -Throws if the provided commit doesn't exist. - """ - _headers: Dict[str, Any] = { - 'Accept': 'application/json', - 'Content-Type': 'application/json', - 'Authorization': auth_header, - } +class ingest_api_EpochTimestamp(ConjureBeanType): - _params: Dict[str, Any] = { + @builtins.classmethod + def _fields(cls) -> Dict[str, ConjureFieldDefinition]: + return { + 'time_unit': ConjureFieldDefinition('timeUnit', ingest_api_TimeUnit) } - _path_params: Dict[str, Any] = { - 'resourceRid': resource_rid, - } + __slots__: List[str] = ['_time_unit'] - _json: Any = ConjureEncoder().default(request) + def __init__(self, time_unit: "ingest_api_TimeUnit") -> None: + self._time_unit = time_unit - _path = '/scout/v1/versioning/{resourceRid}/tag' - _path = _path.format(**_path_params) + @builtins.property + def time_unit(self) -> "ingest_api_TimeUnit": + return self._time_unit - _response: Response = self._request( - 'POST', - self._uri + _path, - params=_params, - headers=_headers, - json=_json) - _decoder = ConjureDecoder() - return _decoder.decode(_response.json(), scout_versioning_api_Tag, self._return_none_for_unknown_union_types) +ingest_api_EpochTimestamp.__name__ = "EpochTimestamp" +ingest_api_EpochTimestamp.__qualname__ = "EpochTimestamp" +ingest_api_EpochTimestamp.__module__ = "scout_service_api.ingest_api" - def get_commit(self, auth_header: str, commit_id: str, resource_rid: str) -> "scout_versioning_api_Commit": - """ - Throws if the commit doesn't exist. - """ - _headers: Dict[str, Any] = { - 'Accept': 'application/json', - 'Authorization': auth_header, - } +class ingest_api_ErrorResult(ConjureBeanType): - _params: Dict[str, Any] = { + @builtins.classmethod + def _fields(cls) -> Dict[str, ConjureFieldDefinition]: + return { + 'error_type': ConjureFieldDefinition('errorType', ingest_api_ErrorType), + 'message': ConjureFieldDefinition('message', str) } - _path_params: Dict[str, Any] = { - 'resourceRid': resource_rid, - 'commitId': commit_id, - } + __slots__: List[str] = ['_error_type', '_message'] - _json: Any = None + def __init__(self, error_type: str, message: str) -> None: + self._error_type = error_type + self._message = message - _path = '/scout/v1/versioning/{resourceRid}/commit/{commitId}' - _path = _path.format(**_path_params) + @builtins.property + def error_type(self) -> str: + return self._error_type - _response: Response = self._request( - 'GET', - self._uri + _path, - params=_params, - headers=_headers, - json=_json) + @builtins.property + def message(self) -> str: + return self._message - _decoder = ConjureDecoder() - return _decoder.decode(_response.json(), scout_versioning_api_Commit, self._return_none_for_unknown_union_types) - def batch_get_commits(self, auth_header: str, resource_and_commit_ids: List["scout_versioning_api_ResourceAndCommitId"] = None) -> List["scout_versioning_api_Commit"]: - """ - Filters out resources that are not authorized. - """ - resource_and_commit_ids = resource_and_commit_ids if resource_and_commit_ids is not None else [] +ingest_api_ErrorResult.__name__ = "ErrorResult" +ingest_api_ErrorResult.__qualname__ = "ErrorResult" +ingest_api_ErrorResult.__module__ = "scout_service_api.ingest_api" - _headers: Dict[str, Any] = { - 'Accept': 'application/json', - 'Content-Type': 'application/json', - 'Authorization': auth_header, - } - _params: Dict[str, Any] = { - } +class ingest_api_ExistingDatasetIngestDestination(ConjureBeanType): - _path_params: Dict[str, Any] = { + @builtins.classmethod + def _fields(cls) -> Dict[str, ConjureFieldDefinition]: + return { + 'dataset_rid': ConjureFieldDefinition('datasetRid', str) } - _json: Any = ConjureEncoder().default(resource_and_commit_ids) + __slots__: List[str] = ['_dataset_rid'] - _path = '/scout/v1/versioning/commit/batch-get' - _path = _path.format(**_path_params) + def __init__(self, dataset_rid: str) -> None: + self._dataset_rid = dataset_rid - _response: Response = self._request( - 'POST', - self._uri + _path, - params=_params, - headers=_headers, - json=_json) + @builtins.property + def dataset_rid(self) -> str: + return self._dataset_rid - _decoder = ConjureDecoder() - return _decoder.decode(_response.json(), List[scout_versioning_api_Commit], self._return_none_for_unknown_union_types) - def get_commit_by_branch(self, auth_header: str, branch_name: str, resource_rid: str) -> "scout_versioning_api_Commit": - """ - Returns the commit pointed to by the branch. -Throws if the branch doesn't exist. - """ +ingest_api_ExistingDatasetIngestDestination.__name__ = "ExistingDatasetIngestDestination" +ingest_api_ExistingDatasetIngestDestination.__qualname__ = "ExistingDatasetIngestDestination" +ingest_api_ExistingDatasetIngestDestination.__module__ = "scout_service_api.ingest_api" - _headers: Dict[str, Any] = { - 'Accept': 'application/json', - 'Authorization': auth_header, - } - _params: Dict[str, Any] = { - } +class ingest_api_InProgressResult(ConjureBeanType): - _path_params: Dict[str, Any] = { - 'resourceRid': resource_rid, - 'branchName': branch_name, + @builtins.classmethod + def _fields(cls) -> Dict[str, ConjureFieldDefinition]: + return { } - _json: Any = None + __slots__: List[str] = [] - _path = '/scout/v1/versioning/{resourceRid}/branch/{branchName}/commit' - _path = _path.format(**_path_params) - _response: Response = self._request( - 'GET', - self._uri + _path, - params=_params, - headers=_headers, - json=_json) - _decoder = ConjureDecoder() - return _decoder.decode(_response.json(), scout_versioning_api_Commit, self._return_none_for_unknown_union_types) +ingest_api_InProgressResult.__name__ = "InProgressResult" +ingest_api_InProgressResult.__qualname__ = "InProgressResult" +ingest_api_InProgressResult.__module__ = "scout_service_api.ingest_api" - def get_commit_by_tag(self, auth_header: str, resource_rid: str, tag_name: str) -> "scout_versioning_api_Commit": - """ - Returns the commit pointed to by the tag. -Throws if the tag doesn't exist. - """ - _headers: Dict[str, Any] = { - 'Accept': 'application/json', - 'Authorization': auth_header, - } +class ingest_api_IngestDataSource(ConjureUnionType): + _existing_data_source: Optional[str] = None + _new_data_source: Optional["ingest_api_DeprecatedNewDataSource"] = None + _new_data_source_v2: Optional["ingest_api_NewDataSource"] = None - _params: Dict[str, Any] = { + @builtins.classmethod + def _options(cls) -> Dict[str, ConjureFieldDefinition]: + return { + 'existing_data_source': ConjureFieldDefinition('existingDataSource', ingest_api_DataSourceRid), + 'new_data_source': ConjureFieldDefinition('newDataSource', ingest_api_DeprecatedNewDataSource), + 'new_data_source_v2': ConjureFieldDefinition('newDataSourceV2', ingest_api_NewDataSource) } - _path_params: Dict[str, Any] = { - 'resourceRid': resource_rid, - 'tagName': tag_name, - } + def __init__( + self, + existing_data_source: Optional[str] = None, + new_data_source: Optional["ingest_api_DeprecatedNewDataSource"] = None, + new_data_source_v2: Optional["ingest_api_NewDataSource"] = None, + type_of_union: Optional[str] = None + ) -> None: + if type_of_union is None: + if (existing_data_source is not None) + (new_data_source is not None) + (new_data_source_v2 is not None) != 1: + raise ValueError('a union must contain a single member') - _json: Any = None + if existing_data_source is not None: + self._existing_data_source = existing_data_source + self._type = 'existingDataSource' + if new_data_source is not None: + self._new_data_source = new_data_source + self._type = 'newDataSource' + if new_data_source_v2 is not None: + self._new_data_source_v2 = new_data_source_v2 + self._type = 'newDataSourceV2' - _path = '/scout/v1/versioning/{resourceRid}/tag/{tagName}/commit' - _path = _path.format(**_path_params) + elif type_of_union == 'existingDataSource': + if existing_data_source is None: + raise ValueError('a union value must not be None') + self._existing_data_source = existing_data_source + self._type = 'existingDataSource' + elif type_of_union == 'newDataSource': + if new_data_source is None: + raise ValueError('a union value must not be None') + self._new_data_source = new_data_source + self._type = 'newDataSource' + elif type_of_union == 'newDataSourceV2': + if new_data_source_v2 is None: + raise ValueError('a union value must not be None') + self._new_data_source_v2 = new_data_source_v2 + self._type = 'newDataSourceV2' - _response: Response = self._request( - 'GET', - self._uri + _path, - params=_params, - headers=_headers, - json=_json) + @builtins.property + def existing_data_source(self) -> Optional[str]: + return self._existing_data_source - _decoder = ConjureDecoder() - return _decoder.decode(_response.json(), scout_versioning_api_Commit, self._return_none_for_unknown_union_types) + @builtins.property + def new_data_source(self) -> Optional["ingest_api_DeprecatedNewDataSource"]: + return self._new_data_source - def get_least_common_ancestor(self, auth_header: str, request: "scout_versioning_api_GetLeastCommonAncestorRequest", resource_rid: str) -> str: - """ - Returns the least common ancestor of the two commits. -Throws if either commit doesn't exist. - """ + @builtins.property + def new_data_source_v2(self) -> Optional["ingest_api_NewDataSource"]: + return self._new_data_source_v2 - _headers: Dict[str, Any] = { - 'Accept': 'application/json', - 'Content-Type': 'application/json', - 'Authorization': auth_header, - } + def accept(self, visitor) -> Any: + if not isinstance(visitor, ingest_api_IngestDataSourceVisitor): + raise ValueError('{} is not an instance of ingest_api_IngestDataSourceVisitor'.format(visitor.__class__.__name__)) + if self._type == 'existingDataSource' and self.existing_data_source is not None: + return visitor._existing_data_source(self.existing_data_source) + if self._type == 'newDataSource' and self.new_data_source is not None: + return visitor._new_data_source(self.new_data_source) + if self._type == 'newDataSourceV2' and self.new_data_source_v2 is not None: + return visitor._new_data_source_v2(self.new_data_source_v2) - _params: Dict[str, Any] = { - } - _path_params: Dict[str, Any] = { - 'resourceRid': resource_rid, - } +ingest_api_IngestDataSource.__name__ = "IngestDataSource" +ingest_api_IngestDataSource.__qualname__ = "IngestDataSource" +ingest_api_IngestDataSource.__module__ = "scout_service_api.ingest_api" - _json: Any = ConjureEncoder().default(request) - _path = '/scout/v1/versioning/{resourceRid}/commit/least-common-ancestor' - _path = _path.format(**_path_params) +class ingest_api_IngestDataSourceVisitor: - _response: Response = self._request( - 'POST', - self._uri + _path, - params=_params, - headers=_headers, - json=_json) + @abstractmethod + def _existing_data_source(self, existing_data_source: str) -> Any: + pass - _decoder = ConjureDecoder() - return _decoder.decode(_response.json(), scout_versioning_api_CommitId, self._return_none_for_unknown_union_types) + @abstractmethod + def _new_data_source(self, new_data_source: "ingest_api_DeprecatedNewDataSource") -> Any: + pass - def get_commit_history(self, auth_header: str, commit_id: str, resource_rid: str, next_page_token: Optional[str] = None, page_size: Optional[int] = None) -> "scout_versioning_api_CommitHistory": - """ - Returns the commit history sorted by creation time descending. -Excludes working state commits. -Throws if the commit doesn't exist. - """ + @abstractmethod + def _new_data_source_v2(self, new_data_source_v2: "ingest_api_NewDataSource") -> Any: + pass - _headers: Dict[str, Any] = { - 'Accept': 'application/json', - 'Authorization': auth_header, - } - _params: Dict[str, Any] = { - 'pageSize': page_size, - 'nextPageToken': next_page_token, - } +ingest_api_IngestDataSourceVisitor.__name__ = "IngestDataSourceVisitor" +ingest_api_IngestDataSourceVisitor.__qualname__ = "IngestDataSourceVisitor" +ingest_api_IngestDataSourceVisitor.__module__ = "scout_service_api.ingest_api" - _path_params: Dict[str, Any] = { - 'resourceRid': resource_rid, - 'commitId': commit_id, + +class ingest_api_IngestDestination(ConjureUnionType): + _new_dataset: Optional["ingest_api_NewDatasetIngestDestination"] = None + _existing_dataset: Optional["ingest_api_ExistingDatasetIngestDestination"] = None + + @builtins.classmethod + def _options(cls) -> Dict[str, ConjureFieldDefinition]: + return { + 'new_dataset': ConjureFieldDefinition('newDataset', ingest_api_NewDatasetIngestDestination), + 'existing_dataset': ConjureFieldDefinition('existingDataset', ingest_api_ExistingDatasetIngestDestination) } - _json: Any = None + def __init__( + self, + new_dataset: Optional["ingest_api_NewDatasetIngestDestination"] = None, + existing_dataset: Optional["ingest_api_ExistingDatasetIngestDestination"] = None, + type_of_union: Optional[str] = None + ) -> None: + if type_of_union is None: + if (new_dataset is not None) + (existing_dataset is not None) != 1: + raise ValueError('a union must contain a single member') - _path = '/scout/v1/versioning/{resourceRid}/commit/{commitId}/history' - _path = _path.format(**_path_params) + if new_dataset is not None: + self._new_dataset = new_dataset + self._type = 'newDataset' + if existing_dataset is not None: + self._existing_dataset = existing_dataset + self._type = 'existingDataset' - _response: Response = self._request( - 'GET', - self._uri + _path, - params=_params, - headers=_headers, - json=_json) + elif type_of_union == 'newDataset': + if new_dataset is None: + raise ValueError('a union value must not be None') + self._new_dataset = new_dataset + self._type = 'newDataset' + elif type_of_union == 'existingDataset': + if existing_dataset is None: + raise ValueError('a union value must not be None') + self._existing_dataset = existing_dataset + self._type = 'existingDataset' - _decoder = ConjureDecoder() - return _decoder.decode(_response.json(), scout_versioning_api_CommitHistory, self._return_none_for_unknown_union_types) + @builtins.property + def new_dataset(self) -> Optional["ingest_api_NewDatasetIngestDestination"]: + return self._new_dataset - def persist_commits(self, auth_header: str, request: List["scout_versioning_api_ResourceAndCommitId"] = None) -> None: - """ - Persists the commits so that they are not compacted. -This operation is atomic - either all commits are persisted -or none are (in the case of an error). - """ - request = request if request is not None else [] + @builtins.property + def existing_dataset(self) -> Optional["ingest_api_ExistingDatasetIngestDestination"]: + return self._existing_dataset - _headers: Dict[str, Any] = { - 'Accept': 'application/json', - 'Content-Type': 'application/json', - 'Authorization': auth_header, - } + def accept(self, visitor) -> Any: + if not isinstance(visitor, ingest_api_IngestDestinationVisitor): + raise ValueError('{} is not an instance of ingest_api_IngestDestinationVisitor'.format(visitor.__class__.__name__)) + if self._type == 'newDataset' and self.new_dataset is not None: + return visitor._new_dataset(self.new_dataset) + if self._type == 'existingDataset' and self.existing_dataset is not None: + return visitor._existing_dataset(self.existing_dataset) - _params: Dict[str, Any] = { - } - _path_params: Dict[str, Any] = { - } +ingest_api_IngestDestination.__name__ = "IngestDestination" +ingest_api_IngestDestination.__qualname__ = "IngestDestination" +ingest_api_IngestDestination.__module__ = "scout_service_api.ingest_api" - _json: Any = ConjureEncoder().default(request) - _path = '/scout/v1/versioning/commit/persist' - _path = _path.format(**_path_params) +class ingest_api_IngestDestinationVisitor: - _response: Response = self._request( - 'POST', - self._uri + _path, - params=_params, - headers=_headers, - json=_json) + @abstractmethod + def _new_dataset(self, new_dataset: "ingest_api_NewDatasetIngestDestination") -> Any: + pass - return + @abstractmethod + def _existing_dataset(self, existing_dataset: "ingest_api_ExistingDatasetIngestDestination") -> Any: + pass - def get_branch(self, auth_header: str, branch_name: str, resource_rid: str) -> "scout_versioning_api_Branch": - """ - Throws if the branch doesn't exist. - """ - _headers: Dict[str, Any] = { - 'Accept': 'application/json', - 'Authorization': auth_header, - } +ingest_api_IngestDestinationVisitor.__name__ = "IngestDestinationVisitor" +ingest_api_IngestDestinationVisitor.__qualname__ = "IngestDestinationVisitor" +ingest_api_IngestDestinationVisitor.__module__ = "scout_service_api.ingest_api" - _params: Dict[str, Any] = { - } - _path_params: Dict[str, Any] = { - 'resourceRid': resource_rid, - 'branchName': branch_name, +class ingest_api_IngestProgressV2(ConjureBeanType): + + @builtins.classmethod + def _fields(cls) -> Dict[str, ConjureFieldDefinition]: + return { + 'start_time': ConjureFieldDefinition('startTime', str), + 'end_time': ConjureFieldDefinition('endTime', OptionalTypeWrapper[str]), + 'ingest_status': ConjureFieldDefinition('ingestStatus', ingest_api_IngestStatusV2), + 'incalculable': ConjureFieldDefinition('incalculable', OptionalTypeWrapper[bool]) } - _json: Any = None + __slots__: List[str] = ['_start_time', '_end_time', '_ingest_status', '_incalculable'] - _path = '/scout/v1/versioning/{resourceRid}/branch/{branchName}' - _path = _path.format(**_path_params) + def __init__(self, ingest_status: "ingest_api_IngestStatusV2", start_time: str, end_time: Optional[str] = None, incalculable: Optional[bool] = None) -> None: + self._start_time = start_time + self._end_time = end_time + self._ingest_status = ingest_status + self._incalculable = incalculable - _response: Response = self._request( - 'GET', - self._uri + _path, - params=_params, - headers=_headers, - json=_json) + @builtins.property + def start_time(self) -> str: + """ + Timestamp at start of ingest + """ + return self._start_time - _decoder = ConjureDecoder() - return _decoder.decode(_response.json(), scout_versioning_api_Branch, self._return_none_for_unknown_union_types) + @builtins.property + def end_time(self) -> Optional[str]: + """ + Timestamp at end of ingest, empty if still in progress + """ + return self._end_time - def get_branches(self, auth_header: str, resource_rid: str) -> List["scout_versioning_api_Branch"]: + @builtins.property + def ingest_status(self) -> "ingest_api_IngestStatusV2": """ - Returns all branches for the resource in order of -most recently updated. + Status of ingest, contains error if failed + """ + return self._ingest_status + + @builtins.property + def incalculable(self) -> Optional[bool]: """ + Whether ingest duration can be reliably calculated + """ + return self._incalculable - _headers: Dict[str, Any] = { - 'Accept': 'application/json', - 'Authorization': auth_header, - } - _params: Dict[str, Any] = { - } +ingest_api_IngestProgressV2.__name__ = "IngestProgressV2" +ingest_api_IngestProgressV2.__qualname__ = "IngestProgressV2" +ingest_api_IngestProgressV2.__module__ = "scout_service_api.ingest_api" - _path_params: Dict[str, Any] = { - 'resourceRid': resource_rid, + +class ingest_api_IngestRunDataSource(ConjureBeanType): + + @builtins.classmethod + def _fields(cls) -> Dict[str, ConjureFieldDefinition]: + return { + 'data_source': ConjureFieldDefinition('dataSource', ingest_api_IngestDataSource), + 'time_offset_spec': ConjureFieldDefinition('timeOffsetSpec', OptionalTypeWrapper[ingest_api_TimeOffsetSpec]) } - _json: Any = None + __slots__: List[str] = ['_data_source', '_time_offset_spec'] - _path = '/scout/v1/versioning/{resourceRid}/branch' - _path = _path.format(**_path_params) + def __init__(self, data_source: "ingest_api_IngestDataSource", time_offset_spec: Optional["ingest_api_TimeOffsetSpec"] = None) -> None: + self._data_source = data_source + self._time_offset_spec = time_offset_spec - _response: Response = self._request( - 'GET', - self._uri + _path, - params=_params, - headers=_headers, - json=_json) + @builtins.property + def data_source(self) -> "ingest_api_IngestDataSource": + return self._data_source - _decoder = ConjureDecoder() - return _decoder.decode(_response.json(), List[scout_versioning_api_Branch], self._return_none_for_unknown_union_types) + @builtins.property + def time_offset_spec(self) -> Optional["ingest_api_TimeOffsetSpec"]: + return self._time_offset_spec - def batch_get_branches(self, auth_header: str, resource_and_branches: List["scout_versioning_api_ResourceAndBranchName"] = None) -> List["scout_versioning_api_Branch"]: - """ - Omits branches that are not authorized. - """ - resource_and_branches = resource_and_branches if resource_and_branches is not None else [] - _headers: Dict[str, Any] = { - 'Accept': 'application/json', - 'Content-Type': 'application/json', - 'Authorization': auth_header, - } +ingest_api_IngestRunDataSource.__name__ = "IngestRunDataSource" +ingest_api_IngestRunDataSource.__qualname__ = "IngestRunDataSource" +ingest_api_IngestRunDataSource.__module__ = "scout_service_api.ingest_api" - _params: Dict[str, Any] = { - } - _path_params: Dict[str, Any] = { +class ingest_api_IngestRunRequest(ConjureBeanType): + + @builtins.classmethod + def _fields(cls) -> Dict[str, ConjureFieldDefinition]: + return { + 'rid': ConjureFieldDefinition('rid', OptionalTypeWrapper[str]), + 'title': ConjureFieldDefinition('title', str), + 'description': ConjureFieldDefinition('description', str), + 'start_time': ConjureFieldDefinition('startTime', ingest_api_UtcTimestamp), + 'end_time': ConjureFieldDefinition('endTime', OptionalTypeWrapper[ingest_api_UtcTimestamp]), + 'properties': ConjureFieldDefinition('properties', Dict[ingest_api_PropertyName, ingest_api_PropertyValue]), + 'labels': ConjureFieldDefinition('labels', List[ingest_api_Label]), + 'run_prefix': ConjureFieldDefinition('runPrefix', OptionalTypeWrapper[str]), + 'data_sources': ConjureFieldDefinition('dataSources', Dict[ingest_api_DataSourceRefName, ingest_api_IngestRunDataSource]) } - _json: Any = ConjureEncoder().default(resource_and_branches) + __slots__: List[str] = ['_rid', '_title', '_description', '_start_time', '_end_time', '_properties', '_labels', '_run_prefix', '_data_sources'] - _path = '/scout/v1/versioning/branch/batch-get' - _path = _path.format(**_path_params) + def __init__(self, data_sources: Dict[str, "ingest_api_IngestRunDataSource"], description: str, labels: List[str], properties: Dict[str, str], start_time: "ingest_api_UtcTimestamp", title: str, end_time: Optional["ingest_api_UtcTimestamp"] = None, rid: Optional[str] = None, run_prefix: Optional[str] = None) -> None: + self._rid = rid + self._title = title + self._description = description + self._start_time = start_time + self._end_time = end_time + self._properties = properties + self._labels = labels + self._run_prefix = run_prefix + self._data_sources = data_sources - _response: Response = self._request( - 'POST', - self._uri + _path, - params=_params, - headers=_headers, - json=_json) + @builtins.property + def rid(self) -> Optional[str]: + """ + If a run with the same rid already exists, the run will be updated. + """ + return self._rid - _decoder = ConjureDecoder() - return _decoder.decode(_response.json(), List[scout_versioning_api_Branch], self._return_none_for_unknown_union_types) + @builtins.property + def title(self) -> str: + return self._title - def get_tag(self, auth_header: str, resource_rid: str, tag_name: str) -> "scout_versioning_api_Tag": + @builtins.property + def description(self) -> str: + return self._description + + @builtins.property + def start_time(self) -> "ingest_api_UtcTimestamp": + return self._start_time + + @builtins.property + def end_time(self) -> Optional["ingest_api_UtcTimestamp"]: + return self._end_time + + @builtins.property + def properties(self) -> Dict[str, str]: + return self._properties + + @builtins.property + def labels(self) -> List[str]: + return self._labels + + @builtins.property + def run_prefix(self) -> Optional[str]: """ - Throws if the tag doesn't exist. + for example, SIM, HTL, FLT """ + return self._run_prefix - _headers: Dict[str, Any] = { - 'Accept': 'application/json', - 'Authorization': auth_header, - } + @builtins.property + def data_sources(self) -> Dict[str, "ingest_api_IngestRunDataSource"]: + return self._data_sources - _params: Dict[str, Any] = { - } - _path_params: Dict[str, Any] = { - 'resourceRid': resource_rid, - 'tagName': tag_name, +ingest_api_IngestRunRequest.__name__ = "IngestRunRequest" +ingest_api_IngestRunRequest.__qualname__ = "IngestRunRequest" +ingest_api_IngestRunRequest.__module__ = "scout_service_api.ingest_api" + + +class ingest_api_IngestRunResponse(ConjureBeanType): + + @builtins.classmethod + def _fields(cls) -> Dict[str, ConjureFieldDefinition]: + return { + 'run_rid': ConjureFieldDefinition('runRid', ingest_api_RunRid) } - _json: Any = None + __slots__: List[str] = ['_run_rid'] - _path = '/scout/v1/versioning/{resourceRid}/tag/{tagName}' - _path = _path.format(**_path_params) + def __init__(self, run_rid: str) -> None: + self._run_rid = run_rid - _response: Response = self._request( - 'GET', - self._uri + _path, - params=_params, - headers=_headers, - json=_json) + @builtins.property + def run_rid(self) -> str: + return self._run_rid - _decoder = ConjureDecoder() - return _decoder.decode(_response.json(), scout_versioning_api_Tag, self._return_none_for_unknown_union_types) - def batch_get_tags(self, auth_header: str, resource_and_commits: List["scout_versioning_api_ResourceAndCommitId"] = None) -> List["scout_versioning_api_Tag"]: - """ - Omits tags that are not authorized. - """ - resource_and_commits = resource_and_commits if resource_and_commits is not None else [] +ingest_api_IngestRunResponse.__name__ = "IngestRunResponse" +ingest_api_IngestRunResponse.__qualname__ = "IngestRunResponse" +ingest_api_IngestRunResponse.__module__ = "scout_service_api.ingest_api" + + +class ingest_api_IngestService(Service): + """ + The Ingest Service handles the data ingestion into Nominal/Clickhouse. + """ + + def deprecated_trigger_ingest(self, auth_header: str, trigger_ingest: "ingest_api_DeprecatedTriggerIngest") -> "ingest_api_TriggeredIngest": _headers: Dict[str, Any] = { 'Accept': 'application/json', @@ -6135,9 +5712,9 @@ def batch_get_tags(self, auth_header: str, resource_and_commits: List["scout_ver _path_params: Dict[str, Any] = { } - _json: Any = ConjureEncoder().default(resource_and_commits) + _json: Any = ConjureEncoder().default(trigger_ingest) - _path = '/scout/v1/versioning/tag/batch-get' + _path = '/ingest/v1/trigger-ingest' _path = _path.format(**_path_params) _response: Response = self._request( @@ -6148,16 +5725,17 @@ def batch_get_tags(self, auth_header: str, resource_and_commits: List["scout_ver json=_json) _decoder = ConjureDecoder() - return _decoder.decode(_response.json(), List[scout_versioning_api_Tag], self._return_none_for_unknown_union_types) + return _decoder.decode(_response.json(), ingest_api_TriggeredIngest, self._return_none_for_unknown_union_types) - def get_tags_by_resource(self, auth_header: str, resource_rid: str) -> List["scout_versioning_api_Tag"]: + def trigger_ingest(self, auth_header: str, trigger_ingest: "ingest_api_TriggerIngest") -> "ingest_api_TriggeredIngest": """ - Returns all tags for the resource in order of -most recently created. + Triggers an ingest job for the given data source. +The ingest job will be processed asynchronously. """ _headers: Dict[str, Any] = { 'Accept': 'application/json', + 'Content-Type': 'application/json', 'Authorization': auth_header, } @@ -6165,33 +5743,32 @@ def get_tags_by_resource(self, auth_header: str, resource_rid: str) -> List["sco } _path_params: Dict[str, Any] = { - 'resourceRid': resource_rid, } - _json: Any = None + _json: Any = ConjureEncoder().default(trigger_ingest) - _path = '/scout/v1/versioning/{resourceRid}/tag' + _path = '/ingest/v1/trigger-ingest-v2' _path = _path.format(**_path_params) _response: Response = self._request( - 'GET', + 'POST', self._uri + _path, params=_params, headers=_headers, json=_json) _decoder = ConjureDecoder() - return _decoder.decode(_response.json(), List[scout_versioning_api_Tag], self._return_none_for_unknown_union_types) + return _decoder.decode(_response.json(), ingest_api_TriggeredIngest, self._return_none_for_unknown_union_types) - def delete_branch(self, auth_header: str, branch_name: str, resource_rid: str) -> None: + def trigger_file_ingest(self, auth_header: str, trigger_ingest: "ingest_api_TriggerFileIngest") -> "ingest_api_TriggeredIngest": """ - Deletes the branch pointer. -Throws if the branch doesn't exist. -Throws if you attempt to delete the "main" branch. + Triggers an ingest job of a new file, allowing either creating a new dataset or uploading to an +existing one. """ _headers: Dict[str, Any] = { 'Accept': 'application/json', + 'Content-Type': 'application/json', 'Authorization': auth_header, } @@ -6199,32 +5776,27 @@ def delete_branch(self, auth_header: str, branch_name: str, resource_rid: str) - } _path_params: Dict[str, Any] = { - 'resourceRid': resource_rid, - 'branchName': branch_name, } - _json: Any = None + _json: Any = ConjureEncoder().default(trigger_ingest) - _path = '/scout/v1/versioning/{resourceRid}/branch/{branchName}' + _path = '/ingest/v1/trigger-file-ingest' _path = _path.format(**_path_params) _response: Response = self._request( - 'DELETE', + 'POST', self._uri + _path, params=_params, headers=_headers, json=_json) - return + _decoder = ConjureDecoder() + return _decoder.decode(_response.json(), ingest_api_TriggeredIngest, self._return_none_for_unknown_union_types) - def delete_branches(self, auth_header: str, resource_and_branches: List["scout_versioning_api_ResourceAndBranchName"] = None) -> None: + def ingest_run(self, auth_header: str, request: "ingest_api_IngestRunRequest") -> "ingest_api_IngestRunResponse": """ - Deletes the branch pointers. -Throws if any resource or branch is non-existent -or unauthorized. -Throws if any attempt is made to delete "main". + Creates a run and ingests data sources to be added to the run. """ - resource_and_branches = resource_and_branches if resource_and_branches is not None else [] _headers: Dict[str, Any] = { 'Accept': 'application/json', @@ -6238,9 +5810,9 @@ def delete_branches(self, auth_header: str, resource_and_branches: List["scout_v _path_params: Dict[str, Any] = { } - _json: Any = ConjureEncoder().default(resource_and_branches) + _json: Any = ConjureEncoder().default(request) - _path = '/scout/v1/versioning/branch/batch-delete' + _path = '/ingest/v1/ingest-run' _path = _path.format(**_path_params) _response: Response = self._request( @@ -6250,16 +5822,17 @@ def delete_branches(self, auth_header: str, resource_and_branches: List["scout_v headers=_headers, json=_json) - return + _decoder = ConjureDecoder() + return _decoder.decode(_response.json(), ingest_api_IngestRunResponse, self._return_none_for_unknown_union_types) - def delete_tag(self, auth_header: str, resource_rid: str, tag_name: str) -> None: + def ingest_video(self, auth_header: str, ingest_video: "ingest_api_IngestVideoRequest") -> "ingest_api_IngestVideoResponse": """ - Deletes the tag pointer. -Throws if the tag doesn't exist. + Ingests video data from a S3 Nominal upload bucket. """ _headers: Dict[str, Any] = { 'Accept': 'application/json', + 'Content-Type': 'application/json', 'Authorization': auth_header, } @@ -6267,282 +5840,252 @@ def delete_tag(self, auth_header: str, resource_rid: str, tag_name: str) -> None } _path_params: Dict[str, Any] = { - 'resourceRid': resource_rid, - 'tagName': tag_name, } - _json: Any = None + _json: Any = ConjureEncoder().default(ingest_video) - _path = '/scout/v1/versioning/{resourceRid}/tag/{tagName}' + _path = '/ingest/v1/ingest-video' _path = _path.format(**_path_params) _response: Response = self._request( - 'DELETE', + 'POST', self._uri + _path, params=_params, headers=_headers, json=_json) - return + _decoder = ConjureDecoder() + return _decoder.decode(_response.json(), ingest_api_IngestVideoResponse, self._return_none_for_unknown_union_types) -scout_VersioningService.__name__ = "VersioningService" -scout_VersioningService.__qualname__ = "VersioningService" -scout_VersioningService.__module__ = "scout_service_api.scout" +ingest_api_IngestService.__name__ = "IngestService" +ingest_api_IngestService.__qualname__ = "IngestService" +ingest_api_IngestService.__module__ = "scout_service_api.ingest_api" -class scout_asset_api_Asset(ConjureBeanType): +class ingest_api_IngestSource(ConjureUnionType): + _s3: Optional["ingest_api_S3IngestSource"] = None @builtins.classmethod - def _fields(cls) -> Dict[str, ConjureFieldDefinition]: + def _options(cls) -> Dict[str, ConjureFieldDefinition]: return { - 'rid': ConjureFieldDefinition('rid', scout_rids_api_AssetRid), - 'title': ConjureFieldDefinition('title', str), - 'description': ConjureFieldDefinition('description', OptionalTypeWrapper[str]), - 'properties': ConjureFieldDefinition('properties', Dict[scout_run_api_PropertyName, scout_run_api_PropertyValue]), - 'labels': ConjureFieldDefinition('labels', List[scout_run_api_Label]), - 'links': ConjureFieldDefinition('links', List[scout_run_api_Link]), - 'data_scopes': ConjureFieldDefinition('dataScopes', List[scout_asset_api_AssetDataScope]), - 'created_by': ConjureFieldDefinition('createdBy', str), - 'created_at': ConjureFieldDefinition('createdAt', str), - 'updated_at': ConjureFieldDefinition('updatedAt', str), - 'attachments': ConjureFieldDefinition('attachments', List[scout_rids_api_AttachmentRid]) + 's3': ConjureFieldDefinition('s3', ingest_api_S3IngestSource) } - __slots__: List[str] = ['_rid', '_title', '_description', '_properties', '_labels', '_links', '_data_scopes', '_created_by', '_created_at', '_updated_at', '_attachments'] + def __init__( + self, + s3: Optional["ingest_api_S3IngestSource"] = None, + type_of_union: Optional[str] = None + ) -> None: + if type_of_union is None: + if (s3 is not None) != 1: + raise ValueError('a union must contain a single member') - def __init__(self, attachments: List[str], created_at: str, created_by: str, data_scopes: List["scout_asset_api_AssetDataScope"], labels: List[str], links: List["scout_run_api_Link"], properties: Dict[str, str], rid: str, title: str, updated_at: str, description: Optional[str] = None) -> None: - self._rid = rid - self._title = title - self._description = description - self._properties = properties - self._labels = labels - self._links = links - self._data_scopes = data_scopes - self._created_by = created_by - self._created_at = created_at - self._updated_at = updated_at - self._attachments = attachments + if s3 is not None: + self._s3 = s3 + self._type = 's3' - @builtins.property - def rid(self) -> str: - return self._rid + elif type_of_union == 's3': + if s3 is None: + raise ValueError('a union value must not be None') + self._s3 = s3 + self._type = 's3' @builtins.property - def title(self) -> str: - return self._title + def s3(self) -> Optional["ingest_api_S3IngestSource"]: + return self._s3 - @builtins.property - def description(self) -> Optional[str]: - return self._description + def accept(self, visitor) -> Any: + if not isinstance(visitor, ingest_api_IngestSourceVisitor): + raise ValueError('{} is not an instance of ingest_api_IngestSourceVisitor'.format(visitor.__class__.__name__)) + if self._type == 's3' and self.s3 is not None: + return visitor._s3(self.s3) - @builtins.property - def properties(self) -> Dict[str, str]: - return self._properties - @builtins.property - def labels(self) -> List[str]: - """ - Labels associated with the asset. These labels do not have a time dimension. -To associate labels with a range of time, create a time range on the asset with labels. - """ - return self._labels - - @builtins.property - def links(self) -> List["scout_run_api_Link"]: - """ - Links associated with the asset. These links do not have a time dimension. -To associate links with a range of time, create a time range on the asset with links. - """ - return self._links - - @builtins.property - def data_scopes(self) -> List["scout_asset_api_AssetDataScope"]: - """ - The data scopes associated with the asset. - """ - return self._data_scopes - - @builtins.property - def created_by(self) -> str: - return self._created_by +ingest_api_IngestSource.__name__ = "IngestSource" +ingest_api_IngestSource.__qualname__ = "IngestSource" +ingest_api_IngestSource.__module__ = "scout_service_api.ingest_api" - @builtins.property - def created_at(self) -> str: - return self._created_at - @builtins.property - def updated_at(self) -> str: - return self._updated_at +class ingest_api_IngestSourceVisitor: - @builtins.property - def attachments(self) -> List[str]: - return self._attachments + @abstractmethod + def _s3(self, s3: "ingest_api_S3IngestSource") -> Any: + pass -scout_asset_api_Asset.__name__ = "Asset" -scout_asset_api_Asset.__qualname__ = "Asset" -scout_asset_api_Asset.__module__ = "scout_service_api.scout_asset_api" +ingest_api_IngestSourceVisitor.__name__ = "IngestSourceVisitor" +ingest_api_IngestSourceVisitor.__qualname__ = "IngestSourceVisitor" +ingest_api_IngestSourceVisitor.__module__ = "scout_service_api.ingest_api" -class scout_asset_api_AssetDataScope(ConjureBeanType): +class ingest_api_IngestSourceMetadata(ConjureBeanType): @builtins.classmethod def _fields(cls) -> Dict[str, ConjureFieldDefinition]: return { - 'data_scope_name': ConjureFieldDefinition('dataScopeName', scout_asset_api_DataScopeName), - 'data_source': ConjureFieldDefinition('dataSource', scout_run_api_DataSource), - 'series_tags': ConjureFieldDefinition('seriesTags', Dict[scout_asset_api_SeriesTagName, scout_asset_api_SeriesTagValue]) + 'timestamp_metadata': ConjureFieldDefinition('timestampMetadata', OptionalTypeWrapper[ingest_api_TimestampMetadata]) } - __slots__: List[str] = ['_data_scope_name', '_data_source', '_series_tags'] + __slots__: List[str] = ['_timestamp_metadata'] - def __init__(self, data_scope_name: str, data_source: "scout_run_api_DataSource", series_tags: Dict[str, str]) -> None: - self._data_scope_name = data_scope_name - self._data_source = data_source - self._series_tags = series_tags + def __init__(self, timestamp_metadata: Optional["ingest_api_TimestampMetadata"] = None) -> None: + self._timestamp_metadata = timestamp_metadata @builtins.property - def data_scope_name(self) -> str: - """ - The name of the data scope. The name is guaranteed to be be unique within the context of an asset. - """ - return self._data_scope_name + def timestamp_metadata(self) -> Optional["ingest_api_TimestampMetadata"]: + return self._timestamp_metadata - @builtins.property - def data_source(self) -> "scout_run_api_DataSource": - return self._data_source - @builtins.property - def series_tags(self) -> Dict[str, str]: - """ - Filters the data source to series matching these tag values. The filtered set of series should be -the ones that belong to the asset. - """ - return self._series_tags +ingest_api_IngestSourceMetadata.__name__ = "IngestSourceMetadata" +ingest_api_IngestSourceMetadata.__qualname__ = "IngestSourceMetadata" +ingest_api_IngestSourceMetadata.__module__ = "scout_service_api.ingest_api" -scout_asset_api_AssetDataScope.__name__ = "AssetDataScope" -scout_asset_api_AssetDataScope.__qualname__ = "AssetDataScope" -scout_asset_api_AssetDataScope.__module__ = "scout_service_api.scout_asset_api" +class ingest_api_IngestStatus(ConjureEnumType): + + IN_PROGRESS = 'IN_PROGRESS' + '''IN_PROGRESS''' + COMPLETED = 'COMPLETED' + '''COMPLETED''' + FAILED = 'FAILED' + '''FAILED''' + UNKNOWN = 'UNKNOWN' + '''UNKNOWN''' + def __reduce_ex__(self, proto): + return self.__class__, (self.name,) -class scout_asset_api_ChannelMetadata(ConjureBeanType): + +ingest_api_IngestStatus.__name__ = "IngestStatus" +ingest_api_IngestStatus.__qualname__ = "IngestStatus" +ingest_api_IngestStatus.__module__ = "scout_service_api.ingest_api" + + +class ingest_api_IngestStatusV2(ConjureUnionType): + _success: Optional["ingest_api_SuccessResult"] = None + _error: Optional["ingest_api_ErrorResult"] = None + _in_progress: Optional["ingest_api_InProgressResult"] = None @builtins.classmethod - def _fields(cls) -> Dict[str, ConjureFieldDefinition]: + def _options(cls) -> Dict[str, ConjureFieldDefinition]: return { - 'name': ConjureFieldDefinition('name', scout_asset_api_Channel), - 'data_source': ConjureFieldDefinition('dataSource', scout_run_api_DataSource), - 'unit': ConjureFieldDefinition('unit', OptionalTypeWrapper[scout_asset_api_Unit]), - 'description': ConjureFieldDefinition('description', OptionalTypeWrapper[str]), - 'data_type': ConjureFieldDefinition('dataType', OptionalTypeWrapper[scout_asset_api_SeriesDataType]) + 'success': ConjureFieldDefinition('success', ingest_api_SuccessResult), + 'error': ConjureFieldDefinition('error', ingest_api_ErrorResult), + 'in_progress': ConjureFieldDefinition('inProgress', ingest_api_InProgressResult) } - __slots__: List[str] = ['_name', '_data_source', '_unit', '_description', '_data_type'] - - def __init__(self, data_source: "scout_run_api_DataSource", name: str, data_type: Optional["scout_asset_api_SeriesDataType"] = None, description: Optional[str] = None, unit: Optional["scout_asset_api_Unit"] = None) -> None: - self._name = name - self._data_source = data_source - self._unit = unit - self._description = description - self._data_type = data_type + def __init__( + self, + success: Optional["ingest_api_SuccessResult"] = None, + error: Optional["ingest_api_ErrorResult"] = None, + in_progress: Optional["ingest_api_InProgressResult"] = None, + type_of_union: Optional[str] = None + ) -> None: + if type_of_union is None: + if (success is not None) + (error is not None) + (in_progress is not None) != 1: + raise ValueError('a union must contain a single member') - @builtins.property - def name(self) -> str: - return self._name + if success is not None: + self._success = success + self._type = 'success' + if error is not None: + self._error = error + self._type = 'error' + if in_progress is not None: + self._in_progress = in_progress + self._type = 'inProgress' - @builtins.property - def data_source(self) -> "scout_run_api_DataSource": - return self._data_source + elif type_of_union == 'success': + if success is None: + raise ValueError('a union value must not be None') + self._success = success + self._type = 'success' + elif type_of_union == 'error': + if error is None: + raise ValueError('a union value must not be None') + self._error = error + self._type = 'error' + elif type_of_union == 'inProgress': + if in_progress is None: + raise ValueError('a union value must not be None') + self._in_progress = in_progress + self._type = 'inProgress' @builtins.property - def unit(self) -> Optional["scout_asset_api_Unit"]: - return self._unit + def success(self) -> Optional["ingest_api_SuccessResult"]: + return self._success @builtins.property - def description(self) -> Optional[str]: - return self._description + def error(self) -> Optional["ingest_api_ErrorResult"]: + return self._error @builtins.property - def data_type(self) -> Optional["scout_asset_api_SeriesDataType"]: - return self._data_type - + def in_progress(self) -> Optional["ingest_api_InProgressResult"]: + return self._in_progress -scout_asset_api_ChannelMetadata.__name__ = "ChannelMetadata" -scout_asset_api_ChannelMetadata.__qualname__ = "ChannelMetadata" -scout_asset_api_ChannelMetadata.__module__ = "scout_service_api.scout_asset_api" + def accept(self, visitor) -> Any: + if not isinstance(visitor, ingest_api_IngestStatusV2Visitor): + raise ValueError('{} is not an instance of ingest_api_IngestStatusV2Visitor'.format(visitor.__class__.__name__)) + if self._type == 'success' and self.success is not None: + return visitor._success(self.success) + if self._type == 'error' and self.error is not None: + return visitor._error(self.error) + if self._type == 'inProgress' and self.in_progress is not None: + return visitor._in_progress(self.in_progress) -class scout_asset_api_CreateAssetDataScope(ConjureBeanType): +ingest_api_IngestStatusV2.__name__ = "IngestStatusV2" +ingest_api_IngestStatusV2.__qualname__ = "IngestStatusV2" +ingest_api_IngestStatusV2.__module__ = "scout_service_api.ingest_api" - @builtins.classmethod - def _fields(cls) -> Dict[str, ConjureFieldDefinition]: - return { - 'data_source': ConjureFieldDefinition('dataSource', scout_run_api_DataSource), - 'series_tags': ConjureFieldDefinition('seriesTags', Dict[scout_asset_api_SeriesTagName, scout_asset_api_SeriesTagValue]) - } - __slots__: List[str] = ['_data_source', '_series_tags'] +class ingest_api_IngestStatusV2Visitor: - def __init__(self, data_source: "scout_run_api_DataSource", series_tags: Dict[str, str]) -> None: - self._data_source = data_source - self._series_tags = series_tags + @abstractmethod + def _success(self, success: "ingest_api_SuccessResult") -> Any: + pass - @builtins.property - def data_source(self) -> "scout_run_api_DataSource": - """ - The data source to create the data scope from. This is typically a connection to a database -or a dataset containing one or many files. - """ - return self._data_source + @abstractmethod + def _error(self, error: "ingest_api_ErrorResult") -> Any: + pass - @builtins.property - def series_tags(self) -> Dict[str, str]: - """ - Filters the data source to series matching these tag values. The filtered set of series should be -the ones that belong to the asset. - """ - return self._series_tags + @abstractmethod + def _in_progress(self, in_progress: "ingest_api_InProgressResult") -> Any: + pass -scout_asset_api_CreateAssetDataScope.__name__ = "CreateAssetDataScope" -scout_asset_api_CreateAssetDataScope.__qualname__ = "CreateAssetDataScope" -scout_asset_api_CreateAssetDataScope.__module__ = "scout_service_api.scout_asset_api" +ingest_api_IngestStatusV2Visitor.__name__ = "IngestStatusV2Visitor" +ingest_api_IngestStatusV2Visitor.__qualname__ = "IngestStatusV2Visitor" +ingest_api_IngestStatusV2Visitor.__module__ = "scout_service_api.ingest_api" -class scout_asset_api_CreateAssetRequest(ConjureBeanType): +class ingest_api_IngestVideoRequest(ConjureBeanType): @builtins.classmethod def _fields(cls) -> Dict[str, ConjureFieldDefinition]: return { - 'title': ConjureFieldDefinition('title', str), + 'sources': ConjureFieldDefinition('sources', List[ingest_api_IngestSource]), + 'properties': ConjureFieldDefinition('properties', Dict[ingest_api_PropertyName, ingest_api_PropertyValue]), + 'labels': ConjureFieldDefinition('labels', List[ingest_api_Label]), + 'title': ConjureFieldDefinition('title', OptionalTypeWrapper[str]), 'description': ConjureFieldDefinition('description', OptionalTypeWrapper[str]), - 'properties': ConjureFieldDefinition('properties', Dict[scout_run_api_PropertyName, scout_run_api_PropertyValue]), - 'labels': ConjureFieldDefinition('labels', List[scout_run_api_Label]), - 'links': ConjureFieldDefinition('links', List[scout_run_api_Link]), - 'data_scopes': ConjureFieldDefinition('dataScopes', List[scout_asset_api_AssetDataScope]), - 'attachments': ConjureFieldDefinition('attachments', List[scout_rids_api_AttachmentRid]) + 'timestamps': ConjureFieldDefinition('timestamps', ingest_api_VideoTimestampManifest) } - __slots__: List[str] = ['_title', '_description', '_properties', '_labels', '_links', '_data_scopes', '_attachments'] + __slots__: List[str] = ['_sources', '_properties', '_labels', '_title', '_description', '_timestamps'] - def __init__(self, attachments: List[str], data_scopes: List["scout_asset_api_AssetDataScope"], labels: List[str], links: List["scout_run_api_Link"], properties: Dict[str, str], title: str, description: Optional[str] = None) -> None: - self._title = title - self._description = description + def __init__(self, labels: List[str], properties: Dict[str, str], sources: List["ingest_api_IngestSource"], timestamps: "ingest_api_VideoTimestampManifest", description: Optional[str] = None, title: Optional[str] = None) -> None: + self._sources = sources self._properties = properties self._labels = labels - self._links = links - self._data_scopes = data_scopes - self._attachments = attachments - - @builtins.property - def title(self) -> str: - return self._title + self._title = title + self._description = description + self._timestamps = timestamps @builtins.property - def description(self) -> Optional[str]: - return self._description + def sources(self) -> List["ingest_api_IngestSource"]: + return self._sources @builtins.property def properties(self) -> Dict[str, str]: @@ -6553,908 +6096,1024 @@ def labels(self) -> List[str]: return self._labels @builtins.property - def links(self) -> List["scout_run_api_Link"]: - return self._links + def title(self) -> Optional[str]: + return self._title @builtins.property - def data_scopes(self) -> List["scout_asset_api_AssetDataScope"]: - """ - The data scopes associated with the asset, keyed by data scope name. - """ - return self._data_scopes + def description(self) -> Optional[str]: + return self._description @builtins.property - def attachments(self) -> List[str]: - return self._attachments + def timestamps(self) -> "ingest_api_VideoTimestampManifest": + return self._timestamps -scout_asset_api_CreateAssetRequest.__name__ = "CreateAssetRequest" -scout_asset_api_CreateAssetRequest.__qualname__ = "CreateAssetRequest" -scout_asset_api_CreateAssetRequest.__module__ = "scout_service_api.scout_asset_api" +ingest_api_IngestVideoRequest.__name__ = "IngestVideoRequest" +ingest_api_IngestVideoRequest.__qualname__ = "IngestVideoRequest" +ingest_api_IngestVideoRequest.__module__ = "scout_service_api.ingest_api" -class scout_asset_api_SearchAssetChannelsRequest(ConjureBeanType): +class ingest_api_IngestVideoResponse(ConjureBeanType): @builtins.classmethod def _fields(cls) -> Dict[str, ConjureFieldDefinition]: return { - 'search_text': ConjureFieldDefinition('searchText', str), - 'data_scope_name_filter': ConjureFieldDefinition('dataScopeNameFilter', OptionalTypeWrapper[List[scout_asset_api_DataScopeName]]), - 'next_page_token': ConjureFieldDefinition('nextPageToken', OptionalTypeWrapper[scout_api_Token]), - 'page_size': ConjureFieldDefinition('pageSize', OptionalTypeWrapper[int]) + 'video_rid': ConjureFieldDefinition('videoRid', str), + 'async_handle': ConjureFieldDefinition('asyncHandle', ingest_api_AsyncHandle) } - __slots__: List[str] = ['_search_text', '_data_scope_name_filter', '_next_page_token', '_page_size'] + __slots__: List[str] = ['_video_rid', '_async_handle'] - def __init__(self, search_text: str, data_scope_name_filter: Optional[List[str]] = None, next_page_token: Optional[str] = None, page_size: Optional[int] = None) -> None: - self._search_text = search_text - self._data_scope_name_filter = data_scope_name_filter - self._next_page_token = next_page_token - self._page_size = page_size + def __init__(self, async_handle: "ingest_api_AsyncHandle", video_rid: str) -> None: + self._video_rid = video_rid + self._async_handle = async_handle @builtins.property - def search_text(self) -> str: - return self._search_text + def video_rid(self) -> str: + return self._video_rid @builtins.property - def data_scope_name_filter(self) -> Optional[List[str]]: - """ - If not empty, will filter to channels from the selected data scope names. - """ - return self._data_scope_name_filter + def async_handle(self) -> "ingest_api_AsyncHandle": + return self._async_handle + + +ingest_api_IngestVideoResponse.__name__ = "IngestVideoResponse" +ingest_api_IngestVideoResponse.__qualname__ = "IngestVideoResponse" +ingest_api_IngestVideoResponse.__module__ = "scout_service_api.ingest_api" + + +class ingest_api_InitiateMultipartUploadRequest(ConjureBeanType): + + @builtins.classmethod + def _fields(cls) -> Dict[str, ConjureFieldDefinition]: + return { + 'filename': ConjureFieldDefinition('filename', str), + 'filetype': ConjureFieldDefinition('filetype', str) + } + + __slots__: List[str] = ['_filename', '_filetype'] + + def __init__(self, filename: str, filetype: str) -> None: + self._filename = filename + self._filetype = filetype @builtins.property - def next_page_token(self) -> Optional[str]: - return self._next_page_token + def filename(self) -> str: + return self._filename @builtins.property - def page_size(self) -> Optional[int]: - """ - Defaults to 1000. Will throw if larger than 10000. - """ - return self._page_size + def filetype(self) -> str: + return self._filetype -scout_asset_api_SearchAssetChannelsRequest.__name__ = "SearchAssetChannelsRequest" -scout_asset_api_SearchAssetChannelsRequest.__qualname__ = "SearchAssetChannelsRequest" -scout_asset_api_SearchAssetChannelsRequest.__module__ = "scout_service_api.scout_asset_api" +ingest_api_InitiateMultipartUploadRequest.__name__ = "InitiateMultipartUploadRequest" +ingest_api_InitiateMultipartUploadRequest.__qualname__ = "InitiateMultipartUploadRequest" +ingest_api_InitiateMultipartUploadRequest.__module__ = "scout_service_api.ingest_api" -class scout_asset_api_SearchAssetChannelsResponse(ConjureBeanType): +class ingest_api_InitiateMultipartUploadResponse(ConjureBeanType): @builtins.classmethod def _fields(cls) -> Dict[str, ConjureFieldDefinition]: return { - 'results': ConjureFieldDefinition('results', List[scout_asset_api_ChannelMetadata]), - 'next_page_token': ConjureFieldDefinition('nextPageToken', OptionalTypeWrapper[scout_api_Token]) + 'upload_id': ConjureFieldDefinition('uploadId', str), + 'key': ConjureFieldDefinition('key', str) } - __slots__: List[str] = ['_results', '_next_page_token'] + __slots__: List[str] = ['_upload_id', '_key'] - def __init__(self, results: List["scout_asset_api_ChannelMetadata"], next_page_token: Optional[str] = None) -> None: - self._results = results - self._next_page_token = next_page_token + def __init__(self, key: str, upload_id: str) -> None: + self._upload_id = upload_id + self._key = key @builtins.property - def results(self) -> List["scout_asset_api_ChannelMetadata"]: - return self._results + def upload_id(self) -> str: + return self._upload_id @builtins.property - def next_page_token(self) -> Optional[str]: - return self._next_page_token + def key(self) -> str: + return self._key -scout_asset_api_SearchAssetChannelsResponse.__name__ = "SearchAssetChannelsResponse" -scout_asset_api_SearchAssetChannelsResponse.__qualname__ = "SearchAssetChannelsResponse" -scout_asset_api_SearchAssetChannelsResponse.__module__ = "scout_service_api.scout_asset_api" +ingest_api_InitiateMultipartUploadResponse.__name__ = "InitiateMultipartUploadResponse" +ingest_api_InitiateMultipartUploadResponse.__qualname__ = "InitiateMultipartUploadResponse" +ingest_api_InitiateMultipartUploadResponse.__module__ = "scout_service_api.ingest_api" -class scout_asset_api_SearchAssetsQuery(ConjureUnionType): - _search_text: Optional[str] = None - _label: Optional[str] = None - _property: Optional["scout_run_api_Property"] = None - _and_: Optional[List["scout_asset_api_SearchAssetsQuery"]] = None - _or_: Optional[List["scout_asset_api_SearchAssetsQuery"]] = None +class ingest_api_Iso8601Timestamp(ConjureBeanType): @builtins.classmethod - def _options(cls) -> Dict[str, ConjureFieldDefinition]: + def _fields(cls) -> Dict[str, ConjureFieldDefinition]: return { - 'search_text': ConjureFieldDefinition('searchText', str), - 'label': ConjureFieldDefinition('label', scout_run_api_Label), - 'property': ConjureFieldDefinition('property', scout_run_api_Property), - 'and_': ConjureFieldDefinition('and', List[scout_asset_api_SearchAssetsQuery]), - 'or_': ConjureFieldDefinition('or', List[scout_asset_api_SearchAssetsQuery]) } - def __init__( - self, - search_text: Optional[str] = None, - label: Optional[str] = None, - property: Optional["scout_run_api_Property"] = None, - and_: Optional[List["scout_asset_api_SearchAssetsQuery"]] = None, - or_: Optional[List["scout_asset_api_SearchAssetsQuery"]] = None, - type_of_union: Optional[str] = None - ) -> None: - if type_of_union is None: - if (search_text is not None) + (label is not None) + (property is not None) + (and_ is not None) + (or_ is not None) != 1: - raise ValueError('a union must contain a single member') + __slots__: List[str] = [] - if search_text is not None: - self._search_text = search_text - self._type = 'searchText' - if label is not None: - self._label = label - self._type = 'label' - if property is not None: - self._property = property - self._type = 'property' - if and_ is not None: - self._and_ = and_ - self._type = 'and' - if or_ is not None: - self._or_ = or_ - self._type = 'or' - elif type_of_union == 'searchText': - if search_text is None: - raise ValueError('a union value must not be None') - self._search_text = search_text - self._type = 'searchText' - elif type_of_union == 'label': - if label is None: - raise ValueError('a union value must not be None') - self._label = label - self._type = 'label' - elif type_of_union == 'property': - if property is None: - raise ValueError('a union value must not be None') - self._property = property - self._type = 'property' - elif type_of_union == 'and': - if and_ is None: - raise ValueError('a union value must not be None') - self._and_ = and_ - self._type = 'and' - elif type_of_union == 'or': - if or_ is None: - raise ValueError('a union value must not be None') - self._or_ = or_ - self._type = 'or' + +ingest_api_Iso8601Timestamp.__name__ = "Iso8601Timestamp" +ingest_api_Iso8601Timestamp.__qualname__ = "Iso8601Timestamp" +ingest_api_Iso8601Timestamp.__module__ = "scout_service_api.ingest_api" + + +class ingest_api_NewDataSource(ConjureBeanType): + + @builtins.classmethod + def _fields(cls) -> Dict[str, ConjureFieldDefinition]: + return { + 'source': ConjureFieldDefinition('source', ingest_api_IngestSource), + 'properties': ConjureFieldDefinition('properties', Dict[ingest_api_PropertyName, ingest_api_PropertyValue]), + 'labels': ConjureFieldDefinition('labels', List[ingest_api_Label]), + 'description': ConjureFieldDefinition('description', OptionalTypeWrapper[str]), + 'name': ConjureFieldDefinition('name', OptionalTypeWrapper[str]), + 'time_column_spec': ConjureFieldDefinition('timeColumnSpec', OptionalTypeWrapper[ingest_api_TimestampMetadata]), + 'channel_config': ConjureFieldDefinition('channelConfig', OptionalTypeWrapper[ingest_api_ChannelConfig]) + } + + __slots__: List[str] = ['_source', '_properties', '_labels', '_description', '_name', '_time_column_spec', '_channel_config'] + + def __init__(self, labels: List[str], properties: Dict[str, str], source: "ingest_api_IngestSource", channel_config: Optional["ingest_api_ChannelConfig"] = None, description: Optional[str] = None, name: Optional[str] = None, time_column_spec: Optional["ingest_api_TimestampMetadata"] = None) -> None: + self._source = source + self._properties = properties + self._labels = labels + self._description = description + self._name = name + self._time_column_spec = time_column_spec + self._channel_config = channel_config @builtins.property - def search_text(self) -> Optional[str]: - return self._search_text + def source(self) -> "ingest_api_IngestSource": + return self._source @builtins.property - def label(self) -> Optional[str]: - return self._label + def properties(self) -> Dict[str, str]: + return self._properties @builtins.property - def property(self) -> Optional["scout_run_api_Property"]: - return self._property + def labels(self) -> List[str]: + return self._labels @builtins.property - def and_(self) -> Optional[List["scout_asset_api_SearchAssetsQuery"]]: - return self._and_ + def description(self) -> Optional[str]: + return self._description @builtins.property - def or_(self) -> Optional[List["scout_asset_api_SearchAssetsQuery"]]: - return self._or_ + def name(self) -> Optional[str]: + return self._name - def accept(self, visitor) -> Any: - if not isinstance(visitor, scout_asset_api_SearchAssetsQueryVisitor): - raise ValueError('{} is not an instance of scout_asset_api_SearchAssetsQueryVisitor'.format(visitor.__class__.__name__)) - if self._type == 'searchText' and self.search_text is not None: - return visitor._search_text(self.search_text) - if self._type == 'label' and self.label is not None: - return visitor._label(self.label) - if self._type == 'property' and self.property is not None: - return visitor._property(self.property) - if self._type == 'and' and self.and_ is not None: - return visitor._and(self.and_) - if self._type == 'or' and self.or_ is not None: - return visitor._or(self.or_) + @builtins.property + def time_column_spec(self) -> Optional["ingest_api_TimestampMetadata"]: + return self._time_column_spec + @builtins.property + def channel_config(self) -> Optional["ingest_api_ChannelConfig"]: + return self._channel_config -scout_asset_api_SearchAssetsQuery.__name__ = "SearchAssetsQuery" -scout_asset_api_SearchAssetsQuery.__qualname__ = "SearchAssetsQuery" -scout_asset_api_SearchAssetsQuery.__module__ = "scout_service_api.scout_asset_api" +ingest_api_NewDataSource.__name__ = "NewDataSource" +ingest_api_NewDataSource.__qualname__ = "NewDataSource" +ingest_api_NewDataSource.__module__ = "scout_service_api.ingest_api" -class scout_asset_api_SearchAssetsQueryVisitor: - @abstractmethod - def _search_text(self, search_text: str) -> Any: - pass +class ingest_api_NewDatasetIngestDestination(ConjureBeanType): - @abstractmethod - def _label(self, label: str) -> Any: - pass + @builtins.classmethod + def _fields(cls) -> Dict[str, ConjureFieldDefinition]: + return { + 'dataset_name': ConjureFieldDefinition('datasetName', OptionalTypeWrapper[str]), + 'dataset_description': ConjureFieldDefinition('datasetDescription', OptionalTypeWrapper[str]), + 'properties': ConjureFieldDefinition('properties', Dict[ingest_api_PropertyName, ingest_api_PropertyValue]), + 'labels': ConjureFieldDefinition('labels', List[ingest_api_Label]), + 'channel_config': ConjureFieldDefinition('channelConfig', OptionalTypeWrapper[ingest_api_ChannelConfig]) + } - @abstractmethod - def _property(self, property: "scout_run_api_Property") -> Any: - pass + __slots__: List[str] = ['_dataset_name', '_dataset_description', '_properties', '_labels', '_channel_config'] - @abstractmethod - def _and(self, and_: List["scout_asset_api_SearchAssetsQuery"]) -> Any: - pass + def __init__(self, labels: List[str], properties: Dict[str, str], channel_config: Optional["ingest_api_ChannelConfig"] = None, dataset_description: Optional[str] = None, dataset_name: Optional[str] = None) -> None: + self._dataset_name = dataset_name + self._dataset_description = dataset_description + self._properties = properties + self._labels = labels + self._channel_config = channel_config - @abstractmethod - def _or(self, or_: List["scout_asset_api_SearchAssetsQuery"]) -> Any: - pass + @builtins.property + def dataset_name(self) -> Optional[str]: + return self._dataset_name + @builtins.property + def dataset_description(self) -> Optional[str]: + return self._dataset_description -scout_asset_api_SearchAssetsQueryVisitor.__name__ = "SearchAssetsQueryVisitor" -scout_asset_api_SearchAssetsQueryVisitor.__qualname__ = "SearchAssetsQueryVisitor" -scout_asset_api_SearchAssetsQueryVisitor.__module__ = "scout_service_api.scout_asset_api" + @builtins.property + def properties(self) -> Dict[str, str]: + return self._properties + @builtins.property + def labels(self) -> List[str]: + return self._labels -class scout_asset_api_SearchAssetsRequest(ConjureBeanType): + @builtins.property + def channel_config(self) -> Optional["ingest_api_ChannelConfig"]: + return self._channel_config + + +ingest_api_NewDatasetIngestDestination.__name__ = "NewDatasetIngestDestination" +ingest_api_NewDatasetIngestDestination.__qualname__ = "NewDatasetIngestDestination" +ingest_api_NewDatasetIngestDestination.__module__ = "scout_service_api.ingest_api" + + +class ingest_api_NoTimestampManifest(ConjureBeanType): @builtins.classmethod def _fields(cls) -> Dict[str, ConjureFieldDefinition]: return { - 'sort': ConjureFieldDefinition('sort', scout_asset_api_SortOptions), - 'page_size': ConjureFieldDefinition('pageSize', OptionalTypeWrapper[int]), - 'next_page_token': ConjureFieldDefinition('nextPageToken', OptionalTypeWrapper[scout_api_Token]), - 'query': ConjureFieldDefinition('query', scout_asset_api_SearchAssetsQuery), - 'archived_statuses': ConjureFieldDefinition('archivedStatuses', OptionalTypeWrapper[List[scout_rids_api_ArchivedStatus]]) + 'starting_timestamp': ConjureFieldDefinition('startingTimestamp', ingest_api_UtcTimestamp), + 'scale_parameter': ConjureFieldDefinition('scaleParameter', OptionalTypeWrapper[ingest_api_ScaleParameter]) } - __slots__: List[str] = ['_sort', '_page_size', '_next_page_token', '_query', '_archived_statuses'] + __slots__: List[str] = ['_starting_timestamp', '_scale_parameter'] - def __init__(self, query: "scout_asset_api_SearchAssetsQuery", sort: "scout_asset_api_SortOptions", archived_statuses: Optional[List["scout_rids_api_ArchivedStatus"]] = None, next_page_token: Optional[str] = None, page_size: Optional[int] = None) -> None: - self._sort = sort - self._page_size = page_size - self._next_page_token = next_page_token - self._query = query - self._archived_statuses = archived_statuses + def __init__(self, starting_timestamp: "ingest_api_UtcTimestamp", scale_parameter: Optional["ingest_api_ScaleParameter"] = None) -> None: + self._starting_timestamp = starting_timestamp + self._scale_parameter = scale_parameter @builtins.property - def sort(self) -> "scout_asset_api_SortOptions": - return self._sort + def starting_timestamp(self) -> "ingest_api_UtcTimestamp": + return self._starting_timestamp @builtins.property - def page_size(self) -> Optional[int]: + def scale_parameter(self) -> Optional["ingest_api_ScaleParameter"]: """ - Page sizes greater than 10_000 will be rejected + A field that specifies that the frame rate of the video does not match the frame rate of the camera | i.e. a slowed down or sped up video. Can specify either the camera frame rate or the absolute end time. """ - return self._page_size + return self._scale_parameter - @builtins.property - def next_page_token(self) -> Optional[str]: - return self._next_page_token + +ingest_api_NoTimestampManifest.__name__ = "NoTimestampManifest" +ingest_api_NoTimestampManifest.__qualname__ = "NoTimestampManifest" +ingest_api_NoTimestampManifest.__module__ = "scout_service_api.ingest_api" + + +class ingest_api_Part(ConjureBeanType): + + @builtins.classmethod + def _fields(cls) -> Dict[str, ConjureFieldDefinition]: + return { + 'part_number': ConjureFieldDefinition('partNumber', int), + 'etag': ConjureFieldDefinition('etag', str) + } + + __slots__: List[str] = ['_part_number', '_etag'] + + def __init__(self, etag: str, part_number: int) -> None: + self._part_number = part_number + self._etag = etag @builtins.property - def query(self) -> "scout_asset_api_SearchAssetsQuery": - return self._query + def part_number(self) -> int: + return self._part_number @builtins.property - def archived_statuses(self) -> Optional[List["scout_rids_api_ArchivedStatus"]]: - """ - Default search status is NOT_ARCHIVED if none are provided. Allows for including archived assets in search. - """ - return self._archived_statuses + def etag(self) -> str: + return self._etag -scout_asset_api_SearchAssetsRequest.__name__ = "SearchAssetsRequest" -scout_asset_api_SearchAssetsRequest.__qualname__ = "SearchAssetsRequest" -scout_asset_api_SearchAssetsRequest.__module__ = "scout_service_api.scout_asset_api" +ingest_api_Part.__name__ = "Part" +ingest_api_Part.__qualname__ = "Part" +ingest_api_Part.__module__ = "scout_service_api.ingest_api" -class scout_asset_api_SearchAssetsResponse(ConjureBeanType): +class ingest_api_PartWithSize(ConjureBeanType): @builtins.classmethod def _fields(cls) -> Dict[str, ConjureFieldDefinition]: return { - 'results': ConjureFieldDefinition('results', List[scout_asset_api_Asset]), - 'next_page_token': ConjureFieldDefinition('nextPageToken', OptionalTypeWrapper[scout_api_Token]) + 'part_number': ConjureFieldDefinition('partNumber', int), + 'etag': ConjureFieldDefinition('etag', str), + 'size': ConjureFieldDefinition('size', int) } - __slots__: List[str] = ['_results', '_next_page_token'] + __slots__: List[str] = ['_part_number', '_etag', '_size'] - def __init__(self, results: List["scout_asset_api_Asset"], next_page_token: Optional[str] = None) -> None: - self._results = results - self._next_page_token = next_page_token + def __init__(self, etag: str, part_number: int, size: int) -> None: + self._part_number = part_number + self._etag = etag + self._size = size @builtins.property - def results(self) -> List["scout_asset_api_Asset"]: - return self._results + def part_number(self) -> int: + return self._part_number @builtins.property - def next_page_token(self) -> Optional[str]: - return self._next_page_token + def etag(self) -> str: + return self._etag + @builtins.property + def size(self) -> int: + return self._size -scout_asset_api_SearchAssetsResponse.__name__ = "SearchAssetsResponse" -scout_asset_api_SearchAssetsResponse.__qualname__ = "SearchAssetsResponse" -scout_asset_api_SearchAssetsResponse.__module__ = "scout_service_api.scout_asset_api" +ingest_api_PartWithSize.__name__ = "PartWithSize" +ingest_api_PartWithSize.__qualname__ = "PartWithSize" +ingest_api_PartWithSize.__module__ = "scout_service_api.ingest_api" -class scout_asset_api_SeriesDataType(ConjureEnumType): - DOUBLE = 'DOUBLE' - '''DOUBLE''' - STRING = 'STRING' - '''STRING''' - UNKNOWN = 'UNKNOWN' - '''UNKNOWN''' - - def __reduce_ex__(self, proto): - return self.__class__, (self.name,) - - -scout_asset_api_SeriesDataType.__name__ = "SeriesDataType" -scout_asset_api_SeriesDataType.__qualname__ = "SeriesDataType" -scout_asset_api_SeriesDataType.__module__ = "scout_service_api.scout_asset_api" - - -class scout_asset_api_SortField(ConjureEnumType): - - CREATED_AT = 'CREATED_AT' - '''CREATED_AT''' - UNKNOWN = 'UNKNOWN' - '''UNKNOWN''' - - def __reduce_ex__(self, proto): - return self.__class__, (self.name,) - - -scout_asset_api_SortField.__name__ = "SortField" -scout_asset_api_SortField.__qualname__ = "SortField" -scout_asset_api_SortField.__module__ = "scout_service_api.scout_asset_api" - - -class scout_asset_api_SortOptions(ConjureBeanType): +class ingest_api_RelativeTimestamp(ConjureBeanType): @builtins.classmethod def _fields(cls) -> Dict[str, ConjureFieldDefinition]: return { - 'is_descending': ConjureFieldDefinition('isDescending', bool), - 'field': ConjureFieldDefinition('field', scout_asset_api_SortField) + 'time_unit': ConjureFieldDefinition('timeUnit', ingest_api_TimeUnit), + 'offset': ConjureFieldDefinition('offset', OptionalTypeWrapper[str]) } - __slots__: List[str] = ['_is_descending', '_field'] + __slots__: List[str] = ['_time_unit', '_offset'] - def __init__(self, field: "scout_asset_api_SortField", is_descending: bool) -> None: - self._is_descending = is_descending - self._field = field + def __init__(self, time_unit: "ingest_api_TimeUnit", offset: Optional[str] = None) -> None: + self._time_unit = time_unit + self._offset = offset @builtins.property - def is_descending(self) -> bool: - return self._is_descending + def time_unit(self) -> "ingest_api_TimeUnit": + return self._time_unit @builtins.property - def field(self) -> "scout_asset_api_SortField": - return self._field - - -scout_asset_api_SortOptions.__name__ = "SortOptions" -scout_asset_api_SortOptions.__qualname__ = "SortOptions" -scout_asset_api_SortOptions.__module__ = "scout_service_api.scout_asset_api" - - -class scout_asset_api_TimestampType(ConjureEnumType): - - ABSOLUTE = 'ABSOLUTE' - '''ABSOLUTE''' - RELATIVE = 'RELATIVE' - '''RELATIVE''' - UNKNOWN = 'UNKNOWN' - '''UNKNOWN''' - - def __reduce_ex__(self, proto): - return self.__class__, (self.name,) + def offset(self) -> Optional[str]: + """ + Starting timestamp to use when indexing the file. This field is required when uploading a new file to an existing dataset. + """ + return self._offset -scout_asset_api_TimestampType.__name__ = "TimestampType" -scout_asset_api_TimestampType.__qualname__ = "TimestampType" -scout_asset_api_TimestampType.__module__ = "scout_service_api.scout_asset_api" +ingest_api_RelativeTimestamp.__name__ = "RelativeTimestamp" +ingest_api_RelativeTimestamp.__qualname__ = "RelativeTimestamp" +ingest_api_RelativeTimestamp.__module__ = "scout_service_api.ingest_api" -class scout_asset_api_Unit(ConjureBeanType): +class ingest_api_S3IngestSource(ConjureBeanType): @builtins.classmethod def _fields(cls) -> Dict[str, ConjureFieldDefinition]: return { - 'name': ConjureFieldDefinition('name', str), - 'symbol': ConjureFieldDefinition('symbol', str) + 'path': ConjureFieldDefinition('path', str) } - __slots__: List[str] = ['_name', '_symbol'] - - def __init__(self, name: str, symbol: str) -> None: - self._name = name - self._symbol = symbol + __slots__: List[str] = ['_path'] - @builtins.property - def name(self) -> str: - return self._name + def __init__(self, path: str) -> None: + self._path = path @builtins.property - def symbol(self) -> str: - return self._symbol + def path(self) -> str: + return self._path -scout_asset_api_Unit.__name__ = "Unit" -scout_asset_api_Unit.__qualname__ = "Unit" -scout_asset_api_Unit.__module__ = "scout_service_api.scout_asset_api" +ingest_api_S3IngestSource.__name__ = "S3IngestSource" +ingest_api_S3IngestSource.__qualname__ = "S3IngestSource" +ingest_api_S3IngestSource.__module__ = "scout_service_api.ingest_api" -class scout_asset_api_UpdateAssetRequest(ConjureBeanType): +class ingest_api_ScaleParameter(ConjureUnionType): + _true_frame_rate: Optional[float] = None + _ending_timestamp: Optional["ingest_api_UtcTimestamp"] = None + _scale_factor: Optional[float] = None @builtins.classmethod - def _fields(cls) -> Dict[str, ConjureFieldDefinition]: + def _options(cls) -> Dict[str, ConjureFieldDefinition]: return { - 'title': ConjureFieldDefinition('title', OptionalTypeWrapper[str]), - 'description': ConjureFieldDefinition('description', OptionalTypeWrapper[str]), - 'properties': ConjureFieldDefinition('properties', OptionalTypeWrapper[Dict[scout_run_api_PropertyName, scout_run_api_PropertyValue]]), - 'labels': ConjureFieldDefinition('labels', OptionalTypeWrapper[List[scout_run_api_Label]]), - 'links': ConjureFieldDefinition('links', OptionalTypeWrapper[List[scout_run_api_Link]]), - 'data_scopes': ConjureFieldDefinition('dataScopes', OptionalTypeWrapper[List[scout_asset_api_AssetDataScope]]) + 'true_frame_rate': ConjureFieldDefinition('trueFrameRate', float), + 'ending_timestamp': ConjureFieldDefinition('endingTimestamp', ingest_api_UtcTimestamp), + 'scale_factor': ConjureFieldDefinition('scaleFactor', float) } - __slots__: List[str] = ['_title', '_description', '_properties', '_labels', '_links', '_data_scopes'] - - def __init__(self, data_scopes: Optional[List["scout_asset_api_AssetDataScope"]] = None, description: Optional[str] = None, labels: Optional[List[str]] = None, links: Optional[List["scout_run_api_Link"]] = None, properties: Optional[Dict[str, str]] = None, title: Optional[str] = None) -> None: - self._title = title - self._description = description - self._properties = properties - self._labels = labels - self._links = links - self._data_scopes = data_scopes - - @builtins.property - def title(self) -> Optional[str]: - return self._title + def __init__( + self, + true_frame_rate: Optional[float] = None, + ending_timestamp: Optional["ingest_api_UtcTimestamp"] = None, + scale_factor: Optional[float] = None, + type_of_union: Optional[str] = None + ) -> None: + if type_of_union is None: + if (true_frame_rate is not None) + (ending_timestamp is not None) + (scale_factor is not None) != 1: + raise ValueError('a union must contain a single member') - @builtins.property - def description(self) -> Optional[str]: - return self._description + if true_frame_rate is not None: + self._true_frame_rate = true_frame_rate + self._type = 'trueFrameRate' + if ending_timestamp is not None: + self._ending_timestamp = ending_timestamp + self._type = 'endingTimestamp' + if scale_factor is not None: + self._scale_factor = scale_factor + self._type = 'scaleFactor' - @builtins.property - def properties(self) -> Optional[Dict[str, str]]: - return self._properties + elif type_of_union == 'trueFrameRate': + if true_frame_rate is None: + raise ValueError('a union value must not be None') + self._true_frame_rate = true_frame_rate + self._type = 'trueFrameRate' + elif type_of_union == 'endingTimestamp': + if ending_timestamp is None: + raise ValueError('a union value must not be None') + self._ending_timestamp = ending_timestamp + self._type = 'endingTimestamp' + elif type_of_union == 'scaleFactor': + if scale_factor is None: + raise ValueError('a union value must not be None') + self._scale_factor = scale_factor + self._type = 'scaleFactor' @builtins.property - def labels(self) -> Optional[List[str]]: - return self._labels + def true_frame_rate(self) -> Optional[float]: + return self._true_frame_rate @builtins.property - def links(self) -> Optional[List["scout_run_api_Link"]]: - return self._links + def ending_timestamp(self) -> Optional["ingest_api_UtcTimestamp"]: + """ + the timestamp corresponding to absolute starting timestamp plus absolute duration of the video. + """ + return self._ending_timestamp @builtins.property - def data_scopes(self) -> Optional[List["scout_asset_api_AssetDataScope"]]: + def scale_factor(self) -> Optional[float]: """ - The data scopes associated with the asset. + the scale factor can be used to calculate whether media duration differs from a video's | real duration, and if so, the true frame rate of the camera. The video time will thus be scaled | by the ratio of the real duration to media duration, or media frame rate to true frame rate. """ - return self._data_scopes + return self._scale_factor + + def accept(self, visitor) -> Any: + if not isinstance(visitor, ingest_api_ScaleParameterVisitor): + raise ValueError('{} is not an instance of ingest_api_ScaleParameterVisitor'.format(visitor.__class__.__name__)) + if self._type == 'trueFrameRate' and self.true_frame_rate is not None: + return visitor._true_frame_rate(self.true_frame_rate) + if self._type == 'endingTimestamp' and self.ending_timestamp is not None: + return visitor._ending_timestamp(self.ending_timestamp) + if self._type == 'scaleFactor' and self.scale_factor is not None: + return visitor._scale_factor(self.scale_factor) -scout_asset_api_UpdateAssetRequest.__name__ = "UpdateAssetRequest" -scout_asset_api_UpdateAssetRequest.__qualname__ = "UpdateAssetRequest" -scout_asset_api_UpdateAssetRequest.__module__ = "scout_service_api.scout_asset_api" +ingest_api_ScaleParameter.__name__ = "ScaleParameter" +ingest_api_ScaleParameter.__qualname__ = "ScaleParameter" +ingest_api_ScaleParameter.__module__ = "scout_service_api.ingest_api" -class scout_asset_api_UpdateAttachmentsRequest(ConjureBeanType): +class ingest_api_ScaleParameterVisitor: + + @abstractmethod + def _true_frame_rate(self, true_frame_rate: float) -> Any: + pass + + @abstractmethod + def _ending_timestamp(self, ending_timestamp: "ingest_api_UtcTimestamp") -> Any: + pass + + @abstractmethod + def _scale_factor(self, scale_factor: float) -> Any: + pass + + +ingest_api_ScaleParameterVisitor.__name__ = "ScaleParameterVisitor" +ingest_api_ScaleParameterVisitor.__qualname__ = "ScaleParameterVisitor" +ingest_api_ScaleParameterVisitor.__module__ = "scout_service_api.ingest_api" + + +class ingest_api_SignPartResponse(ConjureBeanType): @builtins.classmethod def _fields(cls) -> Dict[str, ConjureFieldDefinition]: return { - 'attachments_to_add': ConjureFieldDefinition('attachmentsToAdd', List[scout_rids_api_AttachmentRid]), - 'attachments_to_remove': ConjureFieldDefinition('attachmentsToRemove', List[scout_rids_api_AttachmentRid]) + 'url': ConjureFieldDefinition('url', str), + 'headers': ConjureFieldDefinition('headers', Dict[str, str]) } - __slots__: List[str] = ['_attachments_to_add', '_attachments_to_remove'] + __slots__: List[str] = ['_url', '_headers'] - def __init__(self, attachments_to_add: List[str], attachments_to_remove: List[str]) -> None: - self._attachments_to_add = attachments_to_add - self._attachments_to_remove = attachments_to_remove + def __init__(self, headers: Dict[str, str], url: str) -> None: + self._url = url + self._headers = headers @builtins.property - def attachments_to_add(self) -> List[str]: - return self._attachments_to_add + def url(self) -> str: + return self._url @builtins.property - def attachments_to_remove(self) -> List[str]: - return self._attachments_to_remove - - -scout_asset_api_UpdateAttachmentsRequest.__name__ = "UpdateAttachmentsRequest" -scout_asset_api_UpdateAttachmentsRequest.__qualname__ = "UpdateAttachmentsRequest" -scout_asset_api_UpdateAttachmentsRequest.__module__ = "scout_service_api.scout_asset_api" + def headers(self) -> Dict[str, str]: + return self._headers -class scout_assets_AssetService(Service): - """ - An asset is a physical entity within an organization, such as a vehicle or ground station. Assets are comprised -of some metadata about the data, as well as a set of data scopes that define the data belonging to the asset. API -endpoints allow for CRUD operations on asset objects. - """ +ingest_api_SignPartResponse.__name__ = "SignPartResponse" +ingest_api_SignPartResponse.__qualname__ = "SignPartResponse" +ingest_api_SignPartResponse.__module__ = "scout_service_api.ingest_api" - def create_asset(self, auth_header: str, details: "scout_asset_api_CreateAssetRequest") -> "scout_asset_api_Asset": - _headers: Dict[str, Any] = { - 'Accept': 'application/json', - 'Content-Type': 'application/json', - 'Authorization': auth_header, - } +class ingest_api_SkipRowsConfig(ConjureBeanType): - _params: Dict[str, Any] = { + @builtins.classmethod + def _fields(cls) -> Dict[str, ConjureFieldDefinition]: + return { + 'header_row_index': ConjureFieldDefinition('headerRowIndex', int), + 'data_start_row_index': ConjureFieldDefinition('dataStartRowIndex', int) } - _path_params: Dict[str, Any] = { - } + __slots__: List[str] = ['_header_row_index', '_data_start_row_index'] - _json: Any = ConjureEncoder().default(details) + def __init__(self, data_start_row_index: int, header_row_index: int) -> None: + self._header_row_index = header_row_index + self._data_start_row_index = data_start_row_index - _path = '/scout/v1/asset' - _path = _path.format(**_path_params) + @builtins.property + def header_row_index(self) -> int: + return self._header_row_index - _response: Response = self._request( - 'POST', - self._uri + _path, - params=_params, - headers=_headers, - json=_json) + @builtins.property + def data_start_row_index(self) -> int: + return self._data_start_row_index - _decoder = ConjureDecoder() - return _decoder.decode(_response.json(), scout_asset_api_Asset, self._return_none_for_unknown_union_types) - def update_asset(self, auth_header: str, details: "scout_asset_api_UpdateAssetRequest", rid: str) -> "scout_asset_api_Asset": +ingest_api_SkipRowsConfig.__name__ = "SkipRowsConfig" +ingest_api_SkipRowsConfig.__qualname__ = "SkipRowsConfig" +ingest_api_SkipRowsConfig.__module__ = "scout_service_api.ingest_api" - _headers: Dict[str, Any] = { - 'Accept': 'application/json', - 'Content-Type': 'application/json', - 'Authorization': auth_header, - } - _params: Dict[str, Any] = { - } +class ingest_api_SuccessResult(ConjureBeanType): - _path_params: Dict[str, Any] = { - 'rid': rid, + @builtins.classmethod + def _fields(cls) -> Dict[str, ConjureFieldDefinition]: + return { } - _json: Any = ConjureEncoder().default(details) - - _path = '/scout/v1/asset/{rid}' - _path = _path.format(**_path_params) + __slots__: List[str] = [] - _response: Response = self._request( - 'PUT', - self._uri + _path, - params=_params, - headers=_headers, - json=_json) - _decoder = ConjureDecoder() - return _decoder.decode(_response.json(), scout_asset_api_Asset, self._return_none_for_unknown_union_types) - def get_assets(self, auth_header: str, rids: List[str] = None) -> Dict[str, "scout_asset_api_Asset"]: - rids = rids if rids is not None else [] +ingest_api_SuccessResult.__name__ = "SuccessResult" +ingest_api_SuccessResult.__qualname__ = "SuccessResult" +ingest_api_SuccessResult.__module__ = "scout_service_api.ingest_api" - _headers: Dict[str, Any] = { - 'Accept': 'application/json', - 'Content-Type': 'application/json', - 'Authorization': auth_header, - } - _params: Dict[str, Any] = { - } +class ingest_api_TimeOffsetSpec(ConjureUnionType): + _nanos: Optional["ingest_api_Duration"] = None - _path_params: Dict[str, Any] = { + @builtins.classmethod + def _options(cls) -> Dict[str, ConjureFieldDefinition]: + return { + 'nanos': ConjureFieldDefinition('nanos', ingest_api_Duration) } - _json: Any = ConjureEncoder().default(rids) - - _path = '/scout/v1/asset/multiple' - _path = _path.format(**_path_params) - - _response: Response = self._request( - 'POST', - self._uri + _path, - params=_params, - headers=_headers, - json=_json) - - _decoder = ConjureDecoder() - return _decoder.decode(_response.json(), Dict[scout_rids_api_AssetRid, scout_asset_api_Asset], self._return_none_for_unknown_union_types) + def __init__( + self, + nanos: Optional["ingest_api_Duration"] = None, + type_of_union: Optional[str] = None + ) -> None: + if type_of_union is None: + if (nanos is not None) != 1: + raise ValueError('a union must contain a single member') - def archive(self, auth_header: str, rid: str) -> None: + if nanos is not None: + self._nanos = nanos + self._type = 'nanos' - _headers: Dict[str, Any] = { - 'Accept': 'application/json', - 'Authorization': auth_header, - } + elif type_of_union == 'nanos': + if nanos is None: + raise ValueError('a union value must not be None') + self._nanos = nanos + self._type = 'nanos' - _params: Dict[str, Any] = { - } + @builtins.property + def nanos(self) -> Optional["ingest_api_Duration"]: + return self._nanos - _path_params: Dict[str, Any] = { - 'rid': rid, - } + def accept(self, visitor) -> Any: + if not isinstance(visitor, ingest_api_TimeOffsetSpecVisitor): + raise ValueError('{} is not an instance of ingest_api_TimeOffsetSpecVisitor'.format(visitor.__class__.__name__)) + if self._type == 'nanos' and self.nanos is not None: + return visitor._nanos(self.nanos) - _json: Any = None - _path = '/scout/v1/archive/{rid}' - _path = _path.format(**_path_params) +ingest_api_TimeOffsetSpec.__name__ = "TimeOffsetSpec" +ingest_api_TimeOffsetSpec.__qualname__ = "TimeOffsetSpec" +ingest_api_TimeOffsetSpec.__module__ = "scout_service_api.ingest_api" - _response: Response = self._request( - 'POST', - self._uri + _path, - params=_params, - headers=_headers, - json=_json) - return +class ingest_api_TimeOffsetSpecVisitor: - def unarchive(self, auth_header: str, rid: str) -> None: + @abstractmethod + def _nanos(self, nanos: "ingest_api_Duration") -> Any: + pass - _headers: Dict[str, Any] = { - 'Accept': 'application/json', - 'Authorization': auth_header, - } - _params: Dict[str, Any] = { - } +ingest_api_TimeOffsetSpecVisitor.__name__ = "TimeOffsetSpecVisitor" +ingest_api_TimeOffsetSpecVisitor.__qualname__ = "TimeOffsetSpecVisitor" +ingest_api_TimeOffsetSpecVisitor.__module__ = "scout_service_api.ingest_api" - _path_params: Dict[str, Any] = { - 'rid': rid, - } - _json: Any = None +class ingest_api_TimeUnit(ConjureEnumType): - _path = '/scout/v1/unarchive/{rid}' - _path = _path.format(**_path_params) + HOURS = 'HOURS' + '''HOURS''' + MINUTES = 'MINUTES' + '''MINUTES''' + SECONDS = 'SECONDS' + '''SECONDS''' + MILLISECONDS = 'MILLISECONDS' + '''MILLISECONDS''' + MICROSECONDS = 'MICROSECONDS' + '''MICROSECONDS''' + NANOSECONDS = 'NANOSECONDS' + '''NANOSECONDS''' + UNKNOWN = 'UNKNOWN' + '''UNKNOWN''' - _response: Response = self._request( - 'POST', - self._uri + _path, - params=_params, - headers=_headers, - json=_json) + def __reduce_ex__(self, proto): + return self.__class__, (self.name,) - return - def search_assets(self, auth_header: str, search_assets_request: "scout_asset_api_SearchAssetsRequest") -> "scout_asset_api_SearchAssetsResponse": +ingest_api_TimeUnit.__name__ = "TimeUnit" +ingest_api_TimeUnit.__qualname__ = "TimeUnit" +ingest_api_TimeUnit.__module__ = "scout_service_api.ingest_api" - _headers: Dict[str, Any] = { - 'Accept': 'application/json', - 'Content-Type': 'application/json', - 'Authorization': auth_header, - } - _params: Dict[str, Any] = { - } +class ingest_api_TimestampManifest(ConjureBeanType): + """ + The timestamp manifest files will contain a list of absolute timestamps, in nanoseconds, that correspond to +each frame in a video. Each file should be of type JSON and store a single list, the length of which equals +the number of frames in its corresponding video. + """ - _path_params: Dict[str, Any] = { + @builtins.classmethod + def _fields(cls) -> Dict[str, ConjureFieldDefinition]: + return { + 'sources': ConjureFieldDefinition('sources', List[ingest_api_IngestSource]) } - _json: Any = ConjureEncoder().default(search_assets_request) + __slots__: List[str] = ['_sources'] - _path = '/scout/v1/search-assets' - _path = _path.format(**_path_params) + def __init__(self, sources: List["ingest_api_IngestSource"]) -> None: + self._sources = sources - _response: Response = self._request( - 'POST', - self._uri + _path, - params=_params, - headers=_headers, - json=_json) + @builtins.property + def sources(self) -> List["ingest_api_IngestSource"]: + return self._sources - _decoder = ConjureDecoder() - return _decoder.decode(_response.json(), scout_asset_api_SearchAssetsResponse, self._return_none_for_unknown_union_types) - def update_asset_attachments(self, auth_header: str, request: "scout_asset_api_UpdateAttachmentsRequest", rid: str) -> None: - """ - Update the attachments associated with an asset. - """ +ingest_api_TimestampManifest.__name__ = "TimestampManifest" +ingest_api_TimestampManifest.__qualname__ = "TimestampManifest" +ingest_api_TimestampManifest.__module__ = "scout_service_api.ingest_api" - _headers: Dict[str, Any] = { - 'Accept': 'application/json', - 'Content-Type': 'application/json', - 'Authorization': auth_header, - } - _params: Dict[str, Any] = { - } +class ingest_api_TimestampMetadata(ConjureBeanType): - _path_params: Dict[str, Any] = { - 'rid': rid, + @builtins.classmethod + def _fields(cls) -> Dict[str, ConjureFieldDefinition]: + return { + 'series_name': ConjureFieldDefinition('seriesName', str), + 'timestamp_type': ConjureFieldDefinition('timestampType', ingest_api_TimestampType) } - _json: Any = ConjureEncoder().default(request) + __slots__: List[str] = ['_series_name', '_timestamp_type'] - _path = '/scout/v1/asset/{rid}/attachments' - _path = _path.format(**_path_params) + def __init__(self, series_name: str, timestamp_type: "ingest_api_TimestampType") -> None: + self._series_name = series_name + self._timestamp_type = timestamp_type - _response: Response = self._request( - 'POST', - self._uri + _path, - params=_params, - headers=_headers, - json=_json) + @builtins.property + def series_name(self) -> str: + return self._series_name - return + @builtins.property + def timestamp_type(self) -> "ingest_api_TimestampType": + return self._timestamp_type -scout_assets_AssetService.__name__ = "AssetService" -scout_assets_AssetService.__qualname__ = "AssetService" -scout_assets_AssetService.__module__ = "scout_service_api.scout_assets" +ingest_api_TimestampMetadata.__name__ = "TimestampMetadata" +ingest_api_TimestampMetadata.__qualname__ = "TimestampMetadata" +ingest_api_TimestampMetadata.__module__ = "scout_service_api.ingest_api" -class scout_catalog_AbsoluteTimestamp(ConjureUnionType): - _iso8601: Optional["scout_catalog_Iso8601Timestamp"] = None - _epoch_of_time_unit: Optional["scout_catalog_EpochTimestamp"] = None - _custom_format: Optional["scout_catalog_CustomTimestamp"] = None +class ingest_api_TimestampType(ConjureUnionType): + _relative: Optional["ingest_api_RelativeTimestamp"] = None + _absolute: Optional["ingest_api_AbsoluteTimestamp"] = None @builtins.classmethod def _options(cls) -> Dict[str, ConjureFieldDefinition]: return { - 'iso8601': ConjureFieldDefinition('iso8601', scout_catalog_Iso8601Timestamp), - 'epoch_of_time_unit': ConjureFieldDefinition('epochOfTimeUnit', scout_catalog_EpochTimestamp), - 'custom_format': ConjureFieldDefinition('customFormat', scout_catalog_CustomTimestamp) + 'relative': ConjureFieldDefinition('relative', ingest_api_RelativeTimestamp), + 'absolute': ConjureFieldDefinition('absolute', ingest_api_AbsoluteTimestamp) } def __init__( self, - iso8601: Optional["scout_catalog_Iso8601Timestamp"] = None, - epoch_of_time_unit: Optional["scout_catalog_EpochTimestamp"] = None, - custom_format: Optional["scout_catalog_CustomTimestamp"] = None, + relative: Optional["ingest_api_RelativeTimestamp"] = None, + absolute: Optional["ingest_api_AbsoluteTimestamp"] = None, type_of_union: Optional[str] = None ) -> None: if type_of_union is None: - if (iso8601 is not None) + (epoch_of_time_unit is not None) + (custom_format is not None) != 1: + if (relative is not None) + (absolute is not None) != 1: raise ValueError('a union must contain a single member') - if iso8601 is not None: - self._iso8601 = iso8601 - self._type = 'iso8601' - if epoch_of_time_unit is not None: - self._epoch_of_time_unit = epoch_of_time_unit - self._type = 'epochOfTimeUnit' - if custom_format is not None: - self._custom_format = custom_format - self._type = 'customFormat' + if relative is not None: + self._relative = relative + self._type = 'relative' + if absolute is not None: + self._absolute = absolute + self._type = 'absolute' - elif type_of_union == 'iso8601': - if iso8601 is None: - raise ValueError('a union value must not be None') - self._iso8601 = iso8601 - self._type = 'iso8601' - elif type_of_union == 'epochOfTimeUnit': - if epoch_of_time_unit is None: + elif type_of_union == 'relative': + if relative is None: raise ValueError('a union value must not be None') - self._epoch_of_time_unit = epoch_of_time_unit - self._type = 'epochOfTimeUnit' - elif type_of_union == 'customFormat': - if custom_format is None: + self._relative = relative + self._type = 'relative' + elif type_of_union == 'absolute': + if absolute is None: raise ValueError('a union value must not be None') - self._custom_format = custom_format - self._type = 'customFormat' - - @builtins.property - def iso8601(self) -> Optional["scout_catalog_Iso8601Timestamp"]: - return self._iso8601 + self._absolute = absolute + self._type = 'absolute' @builtins.property - def epoch_of_time_unit(self) -> Optional["scout_catalog_EpochTimestamp"]: - return self._epoch_of_time_unit + def relative(self) -> Optional["ingest_api_RelativeTimestamp"]: + return self._relative @builtins.property - def custom_format(self) -> Optional["scout_catalog_CustomTimestamp"]: - return self._custom_format + def absolute(self) -> Optional["ingest_api_AbsoluteTimestamp"]: + return self._absolute def accept(self, visitor) -> Any: - if not isinstance(visitor, scout_catalog_AbsoluteTimestampVisitor): - raise ValueError('{} is not an instance of scout_catalog_AbsoluteTimestampVisitor'.format(visitor.__class__.__name__)) - if self._type == 'iso8601' and self.iso8601 is not None: - return visitor._iso8601(self.iso8601) - if self._type == 'epochOfTimeUnit' and self.epoch_of_time_unit is not None: - return visitor._epoch_of_time_unit(self.epoch_of_time_unit) - if self._type == 'customFormat' and self.custom_format is not None: - return visitor._custom_format(self.custom_format) + if not isinstance(visitor, ingest_api_TimestampTypeVisitor): + raise ValueError('{} is not an instance of ingest_api_TimestampTypeVisitor'.format(visitor.__class__.__name__)) + if self._type == 'relative' and self.relative is not None: + return visitor._relative(self.relative) + if self._type == 'absolute' and self.absolute is not None: + return visitor._absolute(self.absolute) -scout_catalog_AbsoluteTimestamp.__name__ = "AbsoluteTimestamp" -scout_catalog_AbsoluteTimestamp.__qualname__ = "AbsoluteTimestamp" -scout_catalog_AbsoluteTimestamp.__module__ = "scout_service_api.scout_catalog" +ingest_api_TimestampType.__name__ = "TimestampType" +ingest_api_TimestampType.__qualname__ = "TimestampType" +ingest_api_TimestampType.__module__ = "scout_service_api.ingest_api" -class scout_catalog_AbsoluteTimestampVisitor: +class ingest_api_TimestampTypeVisitor: @abstractmethod - def _iso8601(self, iso8601: "scout_catalog_Iso8601Timestamp") -> Any: + def _relative(self, relative: "ingest_api_RelativeTimestamp") -> Any: pass @abstractmethod - def _epoch_of_time_unit(self, epoch_of_time_unit: "scout_catalog_EpochTimestamp") -> Any: + def _absolute(self, absolute: "ingest_api_AbsoluteTimestamp") -> Any: pass - @abstractmethod - def _custom_format(self, custom_format: "scout_catalog_CustomTimestamp") -> Any: - pass +ingest_api_TimestampTypeVisitor.__name__ = "TimestampTypeVisitor" +ingest_api_TimestampTypeVisitor.__qualname__ = "TimestampTypeVisitor" +ingest_api_TimestampTypeVisitor.__module__ = "scout_service_api.ingest_api" -scout_catalog_AbsoluteTimestampVisitor.__name__ = "AbsoluteTimestampVisitor" -scout_catalog_AbsoluteTimestampVisitor.__qualname__ = "AbsoluteTimestampVisitor" -scout_catalog_AbsoluteTimestampVisitor.__module__ = "scout_service_api.scout_catalog" +class ingest_api_TriggerFileIngest(ConjureBeanType): + + @builtins.classmethod + def _fields(cls) -> Dict[str, ConjureFieldDefinition]: + return { + 'source': ConjureFieldDefinition('source', ingest_api_IngestSource), + 'source_metadata': ConjureFieldDefinition('sourceMetadata', ingest_api_IngestSourceMetadata), + 'destination': ConjureFieldDefinition('destination', ingest_api_IngestDestination) + } + + __slots__: List[str] = ['_source', '_source_metadata', '_destination'] + + def __init__(self, destination: "ingest_api_IngestDestination", source: "ingest_api_IngestSource", source_metadata: "ingest_api_IngestSourceMetadata") -> None: + self._source = source + self._source_metadata = source_metadata + self._destination = destination + + @builtins.property + def source(self) -> "ingest_api_IngestSource": + return self._source + + @builtins.property + def source_metadata(self) -> "ingest_api_IngestSourceMetadata": + return self._source_metadata + + @builtins.property + def destination(self) -> "ingest_api_IngestDestination": + return self._destination + + +ingest_api_TriggerFileIngest.__name__ = "TriggerFileIngest" +ingest_api_TriggerFileIngest.__qualname__ = "TriggerFileIngest" +ingest_api_TriggerFileIngest.__module__ = "scout_service_api.ingest_api" -class scout_catalog_AllPropertiesAndLabelsResponse(ConjureBeanType): + +class ingest_api_TriggerIngest(ConjureBeanType): @builtins.classmethod def _fields(cls) -> Dict[str, ConjureFieldDefinition]: return { - 'properties': ConjureFieldDefinition('properties', Dict[datasource_PropertyName, List[datasource_PropertyValue]]), - 'labels': ConjureFieldDefinition('labels', List[datasource_Label]) + 'source': ConjureFieldDefinition('source', ingest_api_IngestSource), + 'properties': ConjureFieldDefinition('properties', Dict[ingest_api_PropertyName, ingest_api_PropertyValue]), + 'labels': ConjureFieldDefinition('labels', List[ingest_api_Label]), + 'dataset_name': ConjureFieldDefinition('datasetName', OptionalTypeWrapper[str]), + 'dataset_description': ConjureFieldDefinition('datasetDescription', OptionalTypeWrapper[str]), + 'timestamp_metadata': ConjureFieldDefinition('timestampMetadata', OptionalTypeWrapper[ingest_api_TimestampMetadata]), + 'channel_config': ConjureFieldDefinition('channelConfig', OptionalTypeWrapper[ingest_api_ChannelConfig]) } - __slots__: List[str] = ['_properties', '_labels'] + __slots__: List[str] = ['_source', '_properties', '_labels', '_dataset_name', '_dataset_description', '_timestamp_metadata', '_channel_config'] - def __init__(self, labels: List[str], properties: Dict[str, List[str]]) -> None: + def __init__(self, labels: List[str], properties: Dict[str, str], source: "ingest_api_IngestSource", channel_config: Optional["ingest_api_ChannelConfig"] = None, dataset_description: Optional[str] = None, dataset_name: Optional[str] = None, timestamp_metadata: Optional["ingest_api_TimestampMetadata"] = None) -> None: + self._source = source self._properties = properties self._labels = labels + self._dataset_name = dataset_name + self._dataset_description = dataset_description + self._timestamp_metadata = timestamp_metadata + self._channel_config = channel_config @builtins.property - def properties(self) -> Dict[str, List[str]]: + def source(self) -> "ingest_api_IngestSource": + return self._source + + @builtins.property + def properties(self) -> Dict[str, str]: return self._properties @builtins.property def labels(self) -> List[str]: return self._labels + @builtins.property + def dataset_name(self) -> Optional[str]: + return self._dataset_name -scout_catalog_AllPropertiesAndLabelsResponse.__name__ = "AllPropertiesAndLabelsResponse" -scout_catalog_AllPropertiesAndLabelsResponse.__qualname__ = "AllPropertiesAndLabelsResponse" -scout_catalog_AllPropertiesAndLabelsResponse.__module__ = "scout_service_api.scout_catalog" + @builtins.property + def dataset_description(self) -> Optional[str]: + return self._dataset_description + + @builtins.property + def timestamp_metadata(self) -> Optional["ingest_api_TimestampMetadata"]: + return self._timestamp_metadata + + @builtins.property + def channel_config(self) -> Optional["ingest_api_ChannelConfig"]: + """ + If absent, will default to a channel config that constructs a prefix tree with `.` as the delimiter. + """ + return self._channel_config -class scout_catalog_Bounds(ConjureBeanType): +ingest_api_TriggerIngest.__name__ = "TriggerIngest" +ingest_api_TriggerIngest.__qualname__ = "TriggerIngest" +ingest_api_TriggerIngest.__module__ = "scout_service_api.ingest_api" + + +class ingest_api_TriggeredIngest(ConjureBeanType): @builtins.classmethod def _fields(cls) -> Dict[str, ConjureFieldDefinition]: return { - 'start': ConjureFieldDefinition('start', datasource_Timestamp), - 'end': ConjureFieldDefinition('end', datasource_Timestamp), - 'type': ConjureFieldDefinition('type', datasource_TimestampType) + 'dataset_rid': ConjureFieldDefinition('datasetRid', str), + 'dataset_file_id': ConjureFieldDefinition('datasetFileId', OptionalTypeWrapper[str]), + 'async_handle': ConjureFieldDefinition('asyncHandle', OptionalTypeWrapper[ingest_api_AsyncHandle]) } - __slots__: List[str] = ['_start', '_end', '_type'] + __slots__: List[str] = ['_dataset_rid', '_dataset_file_id', '_async_handle'] - def __init__(self, end: "datasource_Timestamp", start: "datasource_Timestamp", type: "datasource_TimestampType") -> None: - self._start = start - self._end = end - self._type = type + def __init__(self, dataset_rid: str, async_handle: Optional["ingest_api_AsyncHandle"] = None, dataset_file_id: Optional[str] = None) -> None: + self._dataset_rid = dataset_rid + self._dataset_file_id = dataset_file_id + self._async_handle = async_handle @builtins.property - def start(self) -> "datasource_Timestamp": - return self._start + def dataset_rid(self) -> str: + return self._dataset_rid @builtins.property - def end(self) -> "datasource_Timestamp": - return self._end + def dataset_file_id(self) -> Optional[str]: + return self._dataset_file_id @builtins.property - def type(self) -> "datasource_TimestampType": - return self._type + def async_handle(self) -> Optional["ingest_api_AsyncHandle"]: + return self._async_handle -scout_catalog_Bounds.__name__ = "Bounds" -scout_catalog_Bounds.__qualname__ = "Bounds" -scout_catalog_Bounds.__module__ = "scout_service_api.scout_catalog" +ingest_api_TriggeredIngest.__name__ = "TriggeredIngest" +ingest_api_TriggeredIngest.__qualname__ = "TriggeredIngest" +ingest_api_TriggeredIngest.__module__ = "scout_service_api.ingest_api" -class scout_catalog_CatalogService(Service): +class ingest_api_UtcTimestamp(ConjureBeanType): + + @builtins.classmethod + def _fields(cls) -> Dict[str, ConjureFieldDefinition]: + return { + 'seconds_since_epoch': ConjureFieldDefinition('secondsSinceEpoch', int), + 'offset_nanoseconds': ConjureFieldDefinition('offsetNanoseconds', OptionalTypeWrapper[int]) + } + + __slots__: List[str] = ['_seconds_since_epoch', '_offset_nanoseconds'] + + def __init__(self, seconds_since_epoch: int, offset_nanoseconds: Optional[int] = None) -> None: + self._seconds_since_epoch = seconds_since_epoch + self._offset_nanoseconds = offset_nanoseconds + + @builtins.property + def seconds_since_epoch(self) -> int: + return self._seconds_since_epoch + + @builtins.property + def offset_nanoseconds(self) -> Optional[int]: + return self._offset_nanoseconds + + +ingest_api_UtcTimestamp.__name__ = "UtcTimestamp" +ingest_api_UtcTimestamp.__qualname__ = "UtcTimestamp" +ingest_api_UtcTimestamp.__module__ = "scout_service_api.ingest_api" + + +class ingest_api_VideoTimestampManifest(ConjureUnionType): + _no_manifest: Optional["ingest_api_NoTimestampManifest"] = None + _timestamp_manifests: Optional["ingest_api_TimestampManifest"] = None + + @builtins.classmethod + def _options(cls) -> Dict[str, ConjureFieldDefinition]: + return { + 'no_manifest': ConjureFieldDefinition('noManifest', ingest_api_NoTimestampManifest), + 'timestamp_manifests': ConjureFieldDefinition('timestampManifests', ingest_api_TimestampManifest) + } + + def __init__( + self, + no_manifest: Optional["ingest_api_NoTimestampManifest"] = None, + timestamp_manifests: Optional["ingest_api_TimestampManifest"] = None, + type_of_union: Optional[str] = None + ) -> None: + if type_of_union is None: + if (no_manifest is not None) + (timestamp_manifests is not None) != 1: + raise ValueError('a union must contain a single member') + + if no_manifest is not None: + self._no_manifest = no_manifest + self._type = 'noManifest' + if timestamp_manifests is not None: + self._timestamp_manifests = timestamp_manifests + self._type = 'timestampManifests' + + elif type_of_union == 'noManifest': + if no_manifest is None: + raise ValueError('a union value must not be None') + self._no_manifest = no_manifest + self._type = 'noManifest' + elif type_of_union == 'timestampManifests': + if timestamp_manifests is None: + raise ValueError('a union value must not be None') + self._timestamp_manifests = timestamp_manifests + self._type = 'timestampManifests' + + @builtins.property + def no_manifest(self) -> Optional["ingest_api_NoTimestampManifest"]: + return self._no_manifest + + @builtins.property + def timestamp_manifests(self) -> Optional["ingest_api_TimestampManifest"]: + return self._timestamp_manifests + + def accept(self, visitor) -> Any: + if not isinstance(visitor, ingest_api_VideoTimestampManifestVisitor): + raise ValueError('{} is not an instance of ingest_api_VideoTimestampManifestVisitor'.format(visitor.__class__.__name__)) + if self._type == 'noManifest' and self.no_manifest is not None: + return visitor._no_manifest(self.no_manifest) + if self._type == 'timestampManifests' and self.timestamp_manifests is not None: + return visitor._timestamp_manifests(self.timestamp_manifests) + + +ingest_api_VideoTimestampManifest.__name__ = "VideoTimestampManifest" +ingest_api_VideoTimestampManifest.__qualname__ = "VideoTimestampManifest" +ingest_api_VideoTimestampManifest.__module__ = "scout_service_api.ingest_api" + + +class ingest_api_VideoTimestampManifestVisitor: + + @abstractmethod + def _no_manifest(self, no_manifest: "ingest_api_NoTimestampManifest") -> Any: + pass + + @abstractmethod + def _timestamp_manifests(self, timestamp_manifests: "ingest_api_TimestampManifest") -> Any: + pass + + +ingest_api_VideoTimestampManifestVisitor.__name__ = "VideoTimestampManifestVisitor" +ingest_api_VideoTimestampManifestVisitor.__qualname__ = "VideoTimestampManifestVisitor" +ingest_api_VideoTimestampManifestVisitor.__module__ = "scout_service_api.ingest_api" + + +class openapi_OpenApiSpecService(Service): """ - The Catalog Service provides the ability to query for information about Datasets that are stored in -the Nominal platform. A Dataset is the Nominal representation of data that has been uploaded to Nominal via -a file, primarily CSV. + This service hosts the OpenAPI specification for the Nominal API. """ - def get_enriched_dataset(self, auth_header: str, dataset_uuid: str) -> "scout_catalog_EnrichedDataset": + def get_open_api(self, auth_header: str) -> str: + """ + Publishes the Nominal OpenAPI Specification. + """ _headers: Dict[str, Any] = { 'Accept': 'application/json', @@ -7465,12 +7124,11 @@ def get_enriched_dataset(self, auth_header: str, dataset_uuid: str) -> "scout_ca } _path_params: Dict[str, Any] = { - 'datasetUuid': dataset_uuid, } _json: Any = None - _path = '/catalog/v1/datasets/{datasetUuid}' + _path = '/openapi' _path = _path.format(**_path_params) _response: Response = self._request( @@ -7481,9 +7139,26 @@ def get_enriched_dataset(self, auth_header: str, dataset_uuid: str) -> "scout_ca json=_json) _decoder = ConjureDecoder() - return _decoder.decode(_response.json(), scout_catalog_EnrichedDataset, self._return_none_for_unknown_union_types) + return _decoder.decode(_response.json(), str, self._return_none_for_unknown_union_types) - def get_enriched_datasets(self, auth_header: str, get_datasets_request: "scout_catalog_GetDatasetsRequest") -> List["scout_catalog_EnrichedDataset"]: + +openapi_OpenApiSpecService.__name__ = "OpenApiSpecService" +openapi_OpenApiSpecService.__qualname__ = "OpenApiSpecService" +openapi_OpenApiSpecService.__module__ = "scout_service_api.openapi" + + +class scout_InternalVersioningService(Service): + """ + These endpoints are not intended to be used directly by clients, since +they require saving resource-specific state associated with new commits. + """ + + def init_resource_versioning(self, auth_header: str, request: "scout_versioning_api_InitResourceVersioningRequest", resource_rid: str) -> "scout_versioning_api_BranchAndCommit": + """ + Creates a root commit (no parents) and a "main" branch +pointing to that commit, for the given resource. +Throws if the resource already has a commit graph. + """ _headers: Dict[str, Any] = { 'Accept': 'application/json', @@ -7495,11 +7170,12 @@ def get_enriched_datasets(self, auth_header: str, get_datasets_request: "scout_c } _path_params: Dict[str, Any] = { + 'resourceRid': resource_rid, } - _json: Any = ConjureEncoder().default(get_datasets_request) + _json: Any = ConjureEncoder().default(request) - _path = '/catalog/v1/datasets/multiple' + _path = '/scout/v1/versioning/internal/{resourceRid}' _path = _path.format(**_path_params) _response: Response = self._request( @@ -7510,12 +7186,18 @@ def get_enriched_datasets(self, auth_header: str, get_datasets_request: "scout_c json=_json) _decoder = ConjureDecoder() - return _decoder.decode(_response.json(), List[scout_catalog_EnrichedDataset], self._return_none_for_unknown_union_types) + return _decoder.decode(_response.json(), scout_versioning_api_BranchAndCommit, self._return_none_for_unknown_union_types) - def get_dataset(self, auth_header: str, dataset_uuid: str) -> "scout_catalog_Dataset": + def save_working_state(self, auth_header: str, branch_name: str, request: "scout_versioning_api_SaveWorkingStateRequest", resource_rid: str) -> "scout_versioning_api_BranchAndCommit": + """ + Creates a non-permanent commit on the given branch, +Throws if the branch doesn't exist. +Throws if latestCommit is passed and is not the latest commit. + """ _headers: Dict[str, Any] = { 'Accept': 'application/json', + 'Content-Type': 'application/json', 'Authorization': auth_header, } @@ -7523,25 +7205,31 @@ def get_dataset(self, auth_header: str, dataset_uuid: str) -> "scout_catalog_Dat } _path_params: Dict[str, Any] = { - 'datasetUuid': dataset_uuid, + 'resourceRid': resource_rid, + 'branchName': branch_name, } - _json: Any = None + _json: Any = ConjureEncoder().default(request) - _path = '/catalog/v1/datasets-simple/{datasetUuid}' + _path = '/scout/v1/versioning/internal/{resourceRid}/branch/{branchName}/working-state' _path = _path.format(**_path_params) _response: Response = self._request( - 'GET', + 'POST', self._uri + _path, params=_params, headers=_headers, json=_json) _decoder = ConjureDecoder() - return _decoder.decode(_response.json(), scout_catalog_Dataset, self._return_none_for_unknown_union_types) + return _decoder.decode(_response.json(), scout_versioning_api_BranchAndCommit, self._return_none_for_unknown_union_types) - def get_datasets(self, auth_header: str, get_datasets_request: "scout_catalog_GetDatasetsRequest") -> List["scout_catalog_Dataset"]: + def commit(self, auth_header: str, branch_name: str, request: "scout_versioning_api_CommitRequest", resource_rid: str) -> "scout_versioning_api_BranchAndCommit": + """ + Creates a new permanent commit on the given branch. +Throws if the branch doesn't exist. +Throws if latestCommit is passed and is not the latest commit. + """ _headers: Dict[str, Any] = { 'Accept': 'application/json', @@ -7553,11 +7241,13 @@ def get_datasets(self, auth_header: str, get_datasets_request: "scout_catalog_Ge } _path_params: Dict[str, Any] = { + 'resourceRid': resource_rid, + 'branchName': branch_name, } - _json: Any = ConjureEncoder().default(get_datasets_request) + _json: Any = ConjureEncoder().default(request) - _path = '/catalog/v1/datasets-simple/multiple' + _path = '/scout/v1/versioning/internal/{resourceRid}/branch/{branchName}/commit' _path = _path.format(**_path_params) _response: Response = self._request( @@ -7568,9 +7258,16 @@ def get_datasets(self, auth_header: str, get_datasets_request: "scout_catalog_Ge json=_json) _decoder = ConjureDecoder() - return _decoder.decode(_response.json(), List[scout_catalog_Dataset], self._return_none_for_unknown_union_types) + return _decoder.decode(_response.json(), scout_versioning_api_BranchAndCommit, self._return_none_for_unknown_union_types) - def search_datasets_by_text(self, auth_header: str, request: "scout_catalog_SearchDatasetsByTextRequest") -> "scout_catalog_SearchDatasetsByTextResponse": + def compact_commits(self, auth_header: str, request: "scout_versioning_api_CompactCommitsRequest", resource_rid: str) -> List[str]: + """ + Compacts the commit graph for the resource by deleting +working state commits that match the provided strategy. +Persists commits that are pointed to by branches. +Returns the set of commits that were compacted. +Throws if the resource doesn't exist. + """ _headers: Dict[str, Any] = { 'Accept': 'application/json', @@ -7582,11 +7279,12 @@ def search_datasets_by_text(self, auth_header: str, request: "scout_catalog_Sear } _path_params: Dict[str, Any] = { + 'resourceRid': resource_rid, } _json: Any = ConjureEncoder().default(request) - _path = '/catalog/v1/search-datasets' + _path = '/scout/v1/versioning/internal/{resourceRid}/compact-commits' _path = _path.format(**_path_params) _response: Response = self._request( @@ -7597,9 +7295,24 @@ def search_datasets_by_text(self, auth_header: str, request: "scout_catalog_Sear json=_json) _decoder = ConjureDecoder() - return _decoder.decode(_response.json(), scout_catalog_SearchDatasetsByTextResponse, self._return_none_for_unknown_union_types) + return _decoder.decode(_response.json(), List[scout_versioning_api_CommitId], self._return_none_for_unknown_union_types) - def search_datasets(self, auth_header: str, request: "scout_catalog_SearchDatasetsRequest") -> "scout_catalog_SearchDatasetsResponse": + +scout_InternalVersioningService.__name__ = "InternalVersioningService" +scout_InternalVersioningService.__qualname__ = "InternalVersioningService" +scout_InternalVersioningService.__module__ = "scout_service_api.scout" + + +class scout_NotebookService(Service): + """ + NotebookService manages workbooks (formerly known as notebooks). + """ + + def create(self, auth_header: str, request: "scout_notebook_api_CreateNotebookRequest") -> "scout_notebook_api_Notebook": + """ + Creates a new workbook. The workbook will be associated with the provided run. If the run does not exist, +a RunNotFound error will be thrown. + """ _headers: Dict[str, Any] = { 'Accept': 'application/json', @@ -7615,7 +7328,7 @@ def search_datasets(self, auth_header: str, request: "scout_catalog_SearchDatase _json: Any = ConjureEncoder().default(request) - _path = '/catalog/v1/search-datasets-v2' + _path = '/scout/v2/notebook' _path = _path.format(**_path_params) _response: Response = self._request( @@ -7626,9 +7339,12 @@ def search_datasets(self, auth_header: str, request: "scout_catalog_SearchDatase json=_json) _decoder = ConjureDecoder() - return _decoder.decode(_response.json(), scout_catalog_SearchDatasetsResponse, self._return_none_for_unknown_union_types) + return _decoder.decode(_response.json(), scout_notebook_api_Notebook, self._return_none_for_unknown_union_types) - def update_dataset_ingest_status_v2(self, auth_header: str, details: "scout_catalog_UpdateIngestStatusV2") -> "scout_catalog_IngestStatusV2": + def update(self, auth_header: str, request: "scout_notebook_api_UpdateNotebookRequest", rid: str) -> "scout_notebook_api_Notebook": + """ + Updates the contents of a workbook. + """ _headers: Dict[str, Any] = { 'Accept': 'application/json', @@ -7640,11 +7356,12 @@ def update_dataset_ingest_status_v2(self, auth_header: str, details: "scout_cata } _path_params: Dict[str, Any] = { + 'rid': rid, } - _json: Any = ConjureEncoder().default(details) + _json: Any = ConjureEncoder().default(request) - _path = '/catalog/v1/datasets/ingest-status-v2' + _path = '/scout/v2/notebook/{rid}' _path = _path.format(**_path_params) _response: Response = self._request( @@ -7655,9 +7372,9 @@ def update_dataset_ingest_status_v2(self, auth_header: str, details: "scout_cata json=_json) _decoder = ConjureDecoder() - return _decoder.decode(_response.json(), scout_catalog_IngestStatusV2, self._return_none_for_unknown_union_types) + return _decoder.decode(_response.json(), scout_notebook_api_Notebook, self._return_none_for_unknown_union_types) - def get_ingest_progress_v2(self, auth_header: str, dataset_rid: str) -> "scout_catalog_IngestProgressV2": + def get(self, auth_header: str, rid: str) -> "scout_notebook_api_Notebook": _headers: Dict[str, Any] = { 'Accept': 'application/json', @@ -7668,12 +7385,12 @@ def get_ingest_progress_v2(self, auth_header: str, dataset_rid: str) -> "scout_c } _path_params: Dict[str, Any] = { - 'datasetRid': dataset_rid, + 'rid': rid, } _json: Any = None - _path = '/catalog/v1/datasets/{datasetRid}/ingest-progress-v2' + _path = '/scout/v2/notebook/{rid}' _path = _path.format(**_path_params) _response: Response = self._request( @@ -7684,12 +7401,14 @@ def get_ingest_progress_v2(self, auth_header: str, dataset_rid: str) -> "scout_c json=_json) _decoder = ConjureDecoder() - return _decoder.decode(_response.json(), scout_catalog_IngestProgressV2, self._return_none_for_unknown_union_types) + return _decoder.decode(_response.json(), scout_notebook_api_Notebook, self._return_none_for_unknown_union_types) - def get_handle_for_dataset(self, auth_header: str, dataset: str) -> "scout_catalog_Handle": + def batch_get(self, auth_header: str, rids: List[str] = None) -> List["scout_notebook_api_Notebook"]: + rids = rids if rids is not None else [] _headers: Dict[str, Any] = { 'Accept': 'application/json', + 'Content-Type': 'application/json', 'Authorization': auth_header, } @@ -7697,25 +7416,27 @@ def get_handle_for_dataset(self, auth_header: str, dataset: str) -> "scout_catal } _path_params: Dict[str, Any] = { - 'dataset': dataset, } - _json: Any = None + _json: Any = ConjureEncoder().default(rids) - _path = '/catalog/v1/datasets/{dataset}/handle' + _path = '/scout/v2/notebook/batch-get' _path = _path.format(**_path_params) _response: Response = self._request( - 'GET', + 'POST', self._uri + _path, params=_params, headers=_headers, json=_json) _decoder = ConjureDecoder() - return _decoder.decode(_response.json(), scout_catalog_Handle, self._return_none_for_unknown_union_types) + return _decoder.decode(_response.json(), List[scout_notebook_api_Notebook], self._return_none_for_unknown_union_types) - def get_series_details(self, auth_header: str, get_series_details: "scout_catalog_GetSeriesDetailsRequest") -> "scout_catalog_SeriesDetails": + def update_metadata(self, auth_header: str, request: "scout_notebook_api_UpdateNotebookMetadataRequest", rid: str) -> "scout_notebook_api_NotebookMetadata": + """ + Updates metadata about a workbook, but not its contents. + """ _headers: Dict[str, Any] = { 'Accept': 'application/json', @@ -7727,28 +7448,32 @@ def get_series_details(self, auth_header: str, get_series_details: "scout_catalo } _path_params: Dict[str, Any] = { + 'rid': rid, } - _json: Any = ConjureEncoder().default(get_series_details) + _json: Any = ConjureEncoder().default(request) - _path = '/catalog/v1/series/details' + _path = '/scout/v2/notebook/{rid}/update-metadata' _path = _path.format(**_path_params) _response: Response = self._request( - 'POST', + 'PUT', self._uri + _path, params=_params, headers=_headers, json=_json) _decoder = ConjureDecoder() - return _decoder.decode(_response.json(), scout_catalog_SeriesDetails, self._return_none_for_unknown_union_types) + return _decoder.decode(_response.json(), scout_notebook_api_NotebookMetadata, self._return_none_for_unknown_union_types) - def create_dataset(self, auth_header: str, details: "scout_catalog_CreateDataset") -> "scout_catalog_EnrichedDataset": + def get_all_labels_and_properties(self, auth_header: str) -> "scout_notebook_api_GetAllLabelsAndPropertiesResponse": + """ + Returns all properties (key value pairs) and labels that have been previously used on workbook. These can +be used to organize workbooks. + """ _headers: Dict[str, Any] = { 'Accept': 'application/json', - 'Content-Type': 'application/json', 'Authorization': auth_header, } @@ -7758,25 +7483,22 @@ def create_dataset(self, auth_header: str, details: "scout_catalog_CreateDataset _path_params: Dict[str, Any] = { } - _json: Any = ConjureEncoder().default(details) + _json: Any = None - _path = '/catalog/v1/datasets' + _path = '/scout/v2/notebook/get-all-labels-properties' _path = _path.format(**_path_params) _response: Response = self._request( - 'POST', + 'GET', self._uri + _path, params=_params, headers=_headers, json=_json) _decoder = ConjureDecoder() - return _decoder.decode(_response.json(), scout_catalog_EnrichedDataset, self._return_none_for_unknown_union_types) + return _decoder.decode(_response.json(), scout_notebook_api_GetAllLabelsAndPropertiesResponse, self._return_none_for_unknown_union_types) - def create_or_update_dataset(self, auth_header: str, details: "scout_catalog_CreateDataset") -> "scout_catalog_EnrichedDataset": - """ - Creates a dataset if the s3 path does not exist, otherwise updates the dataset - """ + def search(self, auth_header: str, request: "scout_notebook_api_SearchNotebooksRequest") -> "scout_notebook_api_SearchNotebooksResponse": _headers: Dict[str, Any] = { 'Accept': 'application/json', @@ -7790,9 +7512,9 @@ def create_or_update_dataset(self, auth_header: str, details: "scout_catalog_Cre _path_params: Dict[str, Any] = { } - _json: Any = ConjureEncoder().default(details) + _json: Any = ConjureEncoder().default(request) - _path = '/catalog/v1/datasets/create-or-update' + _path = '/scout/v2/notebook/search' _path = _path.format(**_path_params) _response: Response = self._request( @@ -7803,13 +7525,15 @@ def create_or_update_dataset(self, auth_header: str, details: "scout_catalog_Cre json=_json) _decoder = ConjureDecoder() - return _decoder.decode(_response.json(), scout_catalog_EnrichedDataset, self._return_none_for_unknown_union_types) + return _decoder.decode(_response.json(), scout_notebook_api_SearchNotebooksResponse, self._return_none_for_unknown_union_types) - def update_dataset_metadata(self, auth_header: str, dataset_rid: str, request: "scout_catalog_UpdateDatasetMetadata") -> "scout_catalog_EnrichedDataset": + def lock(self, auth_header: str, rid: str) -> None: + """ + Makes a workbook uneditable. + """ _headers: Dict[str, Any] = { 'Accept': 'application/json', - 'Content-Type': 'application/json', 'Authorization': auth_header, } @@ -7817,12 +7541,12 @@ def update_dataset_metadata(self, auth_header: str, dataset_rid: str, request: " } _path_params: Dict[str, Any] = { - 'datasetRid': dataset_rid, + 'rid': rid, } - _json: Any = ConjureEncoder().default(request) + _json: Any = None - _path = '/catalog/v1/datasets/{datasetRid}' + _path = '/scout/v2/notebook/{rid}/lock' _path = _path.format(**_path_params) _response: Response = self._request( @@ -7832,14 +7556,15 @@ def update_dataset_metadata(self, auth_header: str, dataset_rid: str, request: " headers=_headers, json=_json) - _decoder = ConjureDecoder() - return _decoder.decode(_response.json(), scout_catalog_EnrichedDataset, self._return_none_for_unknown_union_types) + return - def update_bounds(self, auth_header: str, request: "scout_catalog_UpdateBoundsRequest", rid: str) -> "scout_catalog_EnrichedDataset": + def unlock(self, auth_header: str, rid: str) -> None: + """ + Unlocks a workbook for editing. + """ _headers: Dict[str, Any] = { 'Accept': 'application/json', - 'Content-Type': 'application/json', 'Authorization': auth_header, } @@ -7850,9 +7575,9 @@ def update_bounds(self, auth_header: str, request: "scout_catalog_UpdateBoundsRe 'rid': rid, } - _json: Any = ConjureEncoder().default(request) + _json: Any = None - _path = '/catalog/v1/datasets/{rid}/bounds' + _path = '/scout/v2/notebook/{rid}/unlock' _path = _path.format(**_path_params) _response: Response = self._request( @@ -7862,10 +7587,13 @@ def update_bounds(self, auth_header: str, request: "scout_catalog_UpdateBoundsRe headers=_headers, json=_json) - _decoder = ConjureDecoder() - return _decoder.decode(_response.json(), scout_catalog_EnrichedDataset, self._return_none_for_unknown_union_types) + return - def delete_dataset_series(self, auth_header: str, dataset_rid: str) -> "scout_catalog_DeleteSeriesResult": + def archive(self, auth_header: str, rid: str) -> None: + """ + Archives a workbook, which excludes it from search and hides it from being publicly visible, but does not +permanently delete it. Archived workbooks can be unarchived. + """ _headers: Dict[str, Any] = { 'Accept': 'application/json', @@ -7876,28 +7604,26 @@ def delete_dataset_series(self, auth_header: str, dataset_rid: str) -> "scout_ca } _path_params: Dict[str, Any] = { - 'datasetRid': dataset_rid, + 'rid': rid, } _json: Any = None - _path = '/catalog/v1/series/for-dataset/{datasetRid}' + _path = '/scout/v2/notebook/{rid}/archive' _path = _path.format(**_path_params) _response: Response = self._request( - 'DELETE', + 'PUT', self._uri + _path, params=_params, headers=_headers, json=_json) - _decoder = ConjureDecoder() - return _decoder.decode(_response.json(), scout_catalog_DeleteSeriesResult, self._return_none_for_unknown_union_types) + return - def archive_dataset(self, auth_header: str, dataset_rid: str) -> None: + def unarchive(self, auth_header: str, rid: str) -> None: """ - Archives a dataset, which will hide it from search results unless the includeArchived flag is set to true. The -dataset can still be directly accessed by its UUID/rid. + Makes a previously archived workbook searchable. """ _headers: Dict[str, Any] = { @@ -7909,16 +7635,16 @@ def archive_dataset(self, auth_header: str, dataset_rid: str) -> None: } _path_params: Dict[str, Any] = { - 'datasetRid': dataset_rid, + 'rid': rid, } _json: Any = None - _path = '/catalog/v1/datasets/{datasetRid}/archive' + _path = '/scout/v2/notebook/{rid}/unarchive' _path = _path.format(**_path_params) _response: Response = self._request( - 'POST', + 'PUT', self._uri + _path, params=_params, headers=_headers, @@ -7926,9 +7652,9 @@ def archive_dataset(self, auth_header: str, dataset_rid: str) -> None: return - def unarchive_dataset(self, auth_header: str, dataset_rid: str) -> None: + def delete(self, auth_header: str, rid: str) -> None: """ - Undoes the archiving of a dataset. + The workbook will be deleted and is not recoverable. For soft deletion, use archive. """ _headers: Dict[str, Any] = { @@ -7940,16 +7666,16 @@ def unarchive_dataset(self, auth_header: str, dataset_rid: str) -> None: } _path_params: Dict[str, Any] = { - 'datasetRid': dataset_rid, + 'rid': rid, } _json: Any = None - _path = '/catalog/v1/datasets/{datasetRid}/unarchive' + _path = '/scout/v2/notebook/{rid}' _path = _path.format(**_path_params) _response: Response = self._request( - 'POST', + 'DELETE', self._uri + _path, params=_params, headers=_headers, @@ -7957,10 +7683,29 @@ def unarchive_dataset(self, auth_header: str, dataset_rid: str) -> None: return - def get_all_properties_and_labels(self, auth_header: str) -> "scout_catalog_AllPropertiesAndLabelsResponse": + +scout_NotebookService.__name__ = "NotebookService" +scout_NotebookService.__qualname__ = "NotebookService" +scout_NotebookService.__module__ = "scout_service_api.scout" + + +class scout_RunService(Service): + """ + Runs are collections of channels and metadata from one or more data sources, synchronized over a +range of real time, which represents a test event or simulation. These API endpoints let you +manage runs in the Nominal app. + """ + + def create_run(self, auth_header: str, details: "scout_run_api_CreateRunRequest") -> "scout_run_api_Run": + """ + Create a new run in Nominal. + +Throws if start is equal to or after end. + """ _headers: Dict[str, Any] = { 'Accept': 'application/json', + 'Content-Type': 'application/json', 'Authorization': auth_header, } @@ -7970,1138 +7715,4904 @@ def get_all_properties_and_labels(self, auth_header: str) -> "scout_catalog_AllP _path_params: Dict[str, Any] = { } - _json: Any = None + _json: Any = ConjureEncoder().default(details) - _path = '/catalog/v1/datasets/all-properties-labels' + _path = '/scout/v1/run' _path = _path.format(**_path_params) _response: Response = self._request( - 'GET', + 'POST', self._uri + _path, params=_params, headers=_headers, json=_json) _decoder = ConjureDecoder() - return _decoder.decode(_response.json(), scout_catalog_AllPropertiesAndLabelsResponse, self._return_none_for_unknown_union_types) - + return _decoder.decode(_response.json(), scout_run_api_Run, self._return_none_for_unknown_union_types) -scout_catalog_CatalogService.__name__ = "CatalogService" -scout_catalog_CatalogService.__qualname__ = "CatalogService" -scout_catalog_CatalogService.__module__ = "scout_service_api.scout_catalog" + def update_run(self, auth_header: str, details: "scout_run_api_UpdateRunRequest", rid: str) -> "scout_run_api_Run": + """ + Updates an existing run based on its RID. +Throws if start is equal to or after end. + """ -class scout_catalog_Channel(ConjureBeanType): + _headers: Dict[str, Any] = { + 'Accept': 'application/json', + 'Content-Type': 'application/json', + 'Authorization': auth_header, + } - @builtins.classmethod - def _fields(cls) -> Dict[str, ConjureFieldDefinition]: - return { - 'uuid': ConjureFieldDefinition('uuid', str), - 'name': ConjureFieldDefinition('name', str), - 'dataset_uuid': ConjureFieldDefinition('datasetUuid', str) + _params: Dict[str, Any] = { } - __slots__: List[str] = ['_uuid', '_name', '_dataset_uuid'] + _path_params: Dict[str, Any] = { + 'rid': rid, + } - def __init__(self, dataset_uuid: str, name: str, uuid: str) -> None: - self._uuid = uuid - self._name = name - self._dataset_uuid = dataset_uuid + _json: Any = ConjureEncoder().default(details) - @builtins.property - def uuid(self) -> str: - return self._uuid + _path = '/scout/v1/run/{rid}' + _path = _path.format(**_path_params) - @builtins.property - def name(self) -> str: - return self._name + _response: Response = self._request( + 'PUT', + self._uri + _path, + params=_params, + headers=_headers, + json=_json) - @builtins.property - def dataset_uuid(self) -> str: - return self._dataset_uuid + _decoder = ConjureDecoder() + return _decoder.decode(_response.json(), scout_run_api_Run, self._return_none_for_unknown_union_types) + def add_data_sources_to_run(self, auth_header: str, request: Dict[str, "scout_run_api_CreateRunDataSource"], run_rid: str) -> "scout_run_api_Run": + """ + Adds datasources to the run in question. -scout_catalog_Channel.__name__ = "Channel" -scout_catalog_Channel.__qualname__ = "Channel" -scout_catalog_Channel.__module__ = "scout_service_api.scout_catalog" +Throws if any of the ref names conflict with existing data sources or each other. + """ + _headers: Dict[str, Any] = { + 'Accept': 'application/json', + 'Content-Type': 'application/json', + 'Authorization': auth_header, + } -class scout_catalog_ChannelConfig(ConjureBeanType): + _params: Dict[str, Any] = { + } - @builtins.classmethod - def _fields(cls) -> Dict[str, ConjureFieldDefinition]: - return { - 'prefix_tree_delimiter': ConjureFieldDefinition('prefixTreeDelimiter', OptionalTypeWrapper[str]) + _path_params: Dict[str, Any] = { + 'runRid': run_rid, } - __slots__: List[str] = ['_prefix_tree_delimiter'] + _json: Any = ConjureEncoder().default(request) - def __init__(self, prefix_tree_delimiter: Optional[str] = None) -> None: - self._prefix_tree_delimiter = prefix_tree_delimiter + _path = '/scout/v1/run/{runRid}/data-sources' + _path = _path.format(**_path_params) - @builtins.property - def prefix_tree_delimiter(self) -> Optional[str]: + _response: Response = self._request( + 'POST', + self._uri + _path, + params=_params, + headers=_headers, + json=_json) + + _decoder = ConjureDecoder() + return _decoder.decode(_response.json(), scout_run_api_Run, self._return_none_for_unknown_union_types) + + def create_or_update_run(self, auth_header: str, details: "scout_run_api_CreateOrUpdateRunRequest") -> "scout_run_api_Run": """ - If set, will construct a prefix tree for channels of the dataset using the given delimiter. + Updates a run if it exists, otherwise it's created from scratch. """ - return self._prefix_tree_delimiter + _headers: Dict[str, Any] = { + 'Accept': 'application/json', + 'Content-Type': 'application/json', + 'Authorization': auth_header, + } -scout_catalog_ChannelConfig.__name__ = "ChannelConfig" -scout_catalog_ChannelConfig.__qualname__ = "ChannelConfig" -scout_catalog_ChannelConfig.__module__ = "scout_service_api.scout_catalog" + _params: Dict[str, Any] = { + } + _path_params: Dict[str, Any] = { + } -class scout_catalog_ChannelDetails(ConjureBeanType): + _json: Any = ConjureEncoder().default(details) - @builtins.classmethod - def _fields(cls) -> Dict[str, ConjureFieldDefinition]: - return { - 'uuid': ConjureFieldDefinition('uuid', str), - 'name': ConjureFieldDefinition('name', str), - 'origin_metadata': ConjureFieldDefinition('originMetadata', Dict[str, str]), - 'csv_index': ConjureFieldDefinition('csvIndex', int), - 'dataset_uuid': ConjureFieldDefinition('datasetUuid', str), - 'handle': ConjureFieldDefinition('handle', scout_catalog_Handle) - } + _path = '/scout/v1/run/create-or-update' + _path = _path.format(**_path_params) - __slots__: List[str] = ['_uuid', '_name', '_origin_metadata', '_csv_index', '_dataset_uuid', '_handle'] + _response: Response = self._request( + 'POST', + self._uri + _path, + params=_params, + headers=_headers, + json=_json) - def __init__(self, csv_index: int, dataset_uuid: str, handle: "scout_catalog_Handle", name: str, origin_metadata: Dict[str, str], uuid: str) -> None: - self._uuid = uuid - self._name = name - self._origin_metadata = origin_metadata - self._csv_index = csv_index - self._dataset_uuid = dataset_uuid - self._handle = handle + _decoder = ConjureDecoder() + return _decoder.decode(_response.json(), scout_run_api_Run, self._return_none_for_unknown_union_types) - @builtins.property - def uuid(self) -> str: - return self._uuid + def get_run(self, auth_header: str, rid: str) -> "scout_run_api_Run": + """ + Fetches details about the run in question based on its RID. + """ - @builtins.property - def name(self) -> str: - return self._name + _headers: Dict[str, Any] = { + 'Accept': 'application/json', + 'Authorization': auth_header, + } - @builtins.property - def origin_metadata(self) -> Dict[str, str]: - return self._origin_metadata + _params: Dict[str, Any] = { + } - @builtins.property - def csv_index(self) -> int: - return self._csv_index + _path_params: Dict[str, Any] = { + 'rid': rid, + } - @builtins.property - def dataset_uuid(self) -> str: - return self._dataset_uuid + _json: Any = None - @builtins.property - def handle(self) -> "scout_catalog_Handle": - return self._handle + _path = '/scout/v1/run/{rid}' + _path = _path.format(**_path_params) + _response: Response = self._request( + 'GET', + self._uri + _path, + params=_params, + headers=_headers, + json=_json) -scout_catalog_ChannelDetails.__name__ = "ChannelDetails" -scout_catalog_ChannelDetails.__qualname__ = "ChannelDetails" -scout_catalog_ChannelDetails.__module__ = "scout_service_api.scout_catalog" + _decoder = ConjureDecoder() + return _decoder.decode(_response.json(), scout_run_api_Run, self._return_none_for_unknown_union_types) + def get_run_with_data_review_metrics(self, auth_header: str, rid: str) -> "scout_run_api_RunWithDataReviewMetrics": + """ + Fetches details about the run in question based on its RID, +including metrics for check and violation review status. + """ -class scout_catalog_CreateDataset(ConjureBeanType): + _headers: Dict[str, Any] = { + 'Accept': 'application/json', + 'Authorization': auth_header, + } - @builtins.classmethod - def _fields(cls) -> Dict[str, ConjureFieldDefinition]: - return { - 'name': ConjureFieldDefinition('name', str), - 'handle': ConjureFieldDefinition('handle', scout_catalog_Handle), - 'metadata': ConjureFieldDefinition('metadata', Dict[str, str]), - 'origin_metadata': ConjureFieldDefinition('originMetadata', scout_catalog_DatasetOriginMetadata), - 'labels': ConjureFieldDefinition('labels', List[datasource_Label]), - 'properties': ConjureFieldDefinition('properties', Dict[datasource_PropertyName, datasource_PropertyValue]), - 'description': ConjureFieldDefinition('description', OptionalTypeWrapper[str]) + _params: Dict[str, Any] = { } - __slots__: List[str] = ['_name', '_handle', '_metadata', '_origin_metadata', '_labels', '_properties', '_description'] + _path_params: Dict[str, Any] = { + 'rid': rid, + } - def __init__(self, handle: "scout_catalog_Handle", labels: List[str], metadata: Dict[str, str], name: str, origin_metadata: "scout_catalog_DatasetOriginMetadata", properties: Dict[str, str], description: Optional[str] = None) -> None: - self._name = name - self._handle = handle - self._metadata = metadata - self._origin_metadata = origin_metadata - self._labels = labels - self._properties = properties - self._description = description + _json: Any = None - @builtins.property - def name(self) -> str: - return self._name + _path = '/scout/v1/run/{rid}/with-data-review-metrics' + _path = _path.format(**_path_params) - @builtins.property - def handle(self) -> "scout_catalog_Handle": - return self._handle + _response: Response = self._request( + 'GET', + self._uri + _path, + params=_params, + headers=_headers, + json=_json) - @builtins.property - def metadata(self) -> Dict[str, str]: - return self._metadata + _decoder = ConjureDecoder() + return _decoder.decode(_response.json(), scout_run_api_RunWithDataReviewMetrics, self._return_none_for_unknown_union_types) - @builtins.property - def origin_metadata(self) -> "scout_catalog_DatasetOriginMetadata": - return self._origin_metadata + def get_run_with_data_review_summary(self, auth_header: str, rid: str) -> "scout_run_api_RunWithDataReviewSummary": + """ + Fetches details about the run in question based on its RID, including a summary of the data review status. + """ - @builtins.property - def labels(self) -> List[str]: - return self._labels + _headers: Dict[str, Any] = { + 'Accept': 'application/json', + 'Authorization': auth_header, + } - @builtins.property - def properties(self) -> Dict[str, str]: - return self._properties + _params: Dict[str, Any] = { + } - @builtins.property - def description(self) -> Optional[str]: - return self._description + _path_params: Dict[str, Any] = { + 'rid': rid, + } + _json: Any = None -scout_catalog_CreateDataset.__name__ = "CreateDataset" -scout_catalog_CreateDataset.__qualname__ = "CreateDataset" -scout_catalog_CreateDataset.__module__ = "scout_service_api.scout_catalog" + _path = '/scout/v1/run/{rid}/with-data-review-summary' + _path = _path.format(**_path_params) + + _response: Response = self._request( + 'GET', + self._uri + _path, + params=_params, + headers=_headers, + json=_json) + _decoder = ConjureDecoder() + return _decoder.decode(_response.json(), scout_run_api_RunWithDataReviewSummary, self._return_none_for_unknown_union_types) -class scout_catalog_CustomTimestamp(ConjureBeanType): + def get_run_by_id(self, auth_header: str, get_run_by_id_request: "scout_run_api_GetRunByIdRequest") -> "scout_run_api_Run": + """ + Fetches a run based on the run number, rather than RID. + """ - @builtins.classmethod - def _fields(cls) -> Dict[str, ConjureFieldDefinition]: - return { - 'format': ConjureFieldDefinition('format', str), - 'default_year': ConjureFieldDefinition('defaultYear', OptionalTypeWrapper[int]) + _headers: Dict[str, Any] = { + 'Accept': 'application/json', + 'Content-Type': 'application/json', + 'Authorization': auth_header, } - __slots__: List[str] = ['_format', '_default_year'] + _params: Dict[str, Any] = { + } - def __init__(self, format: str, default_year: Optional[int] = None) -> None: - self._format = format - self._default_year = default_year + _path_params: Dict[str, Any] = { + } - @builtins.property - def format(self) -> str: - """ - The format string should be in the format of the `DateTimeFormatter` class in Java. - """ - return self._format + _json: Any = ConjureEncoder().default(get_run_by_id_request) - @builtins.property - def default_year(self) -> Optional[int]: - """ - Year is accepted as an optional field for cases like IRIG time format, and will be assumed as current year if not provided. - """ - return self._default_year + _path = '/scout/v1/run/by-id' + _path = _path.format(**_path_params) + _response: Response = self._request( + 'POST', + self._uri + _path, + params=_params, + headers=_headers, + json=_json) -scout_catalog_CustomTimestamp.__name__ = "CustomTimestamp" -scout_catalog_CustomTimestamp.__qualname__ = "CustomTimestamp" -scout_catalog_CustomTimestamp.__module__ = "scout_service_api.scout_catalog" + _decoder = ConjureDecoder() + return _decoder.decode(_response.json(), scout_run_api_Run, self._return_none_for_unknown_union_types) + def get_runs(self, auth_header: str, rids: List[str] = None) -> Dict[str, "scout_run_api_Run"]: + """ + Fetches a list of run details based on a list of RIDs. + """ + rids = rids if rids is not None else [] -class scout_catalog_Dataset(ConjureBeanType): + _headers: Dict[str, Any] = { + 'Accept': 'application/json', + 'Content-Type': 'application/json', + 'Authorization': auth_header, + } - @builtins.classmethod - def _fields(cls) -> Dict[str, ConjureFieldDefinition]: - return { - 'rid': ConjureFieldDefinition('rid', str), - 'name': ConjureFieldDefinition('name', str), - 'handle': ConjureFieldDefinition('handle', scout_catalog_Handle), - 'description': ConjureFieldDefinition('description', OptionalTypeWrapper[str]), - 'origin_metadata': ConjureFieldDefinition('originMetadata', scout_catalog_DatasetOriginMetadata), - 'bounds': ConjureFieldDefinition('bounds', OptionalTypeWrapper[scout_catalog_Bounds]), - 'properties': ConjureFieldDefinition('properties', Dict[datasource_PropertyName, datasource_PropertyValue]), - 'labels': ConjureFieldDefinition('labels', List[datasource_Label]), - 'timestamp_type': ConjureFieldDefinition('timestampType', scout_catalog_WeakTimestampType) + _params: Dict[str, Any] = { } - __slots__: List[str] = ['_rid', '_name', '_handle', '_description', '_origin_metadata', '_bounds', '_properties', '_labels', '_timestamp_type'] + _path_params: Dict[str, Any] = { + } - def __init__(self, handle: "scout_catalog_Handle", labels: List[str], name: str, origin_metadata: "scout_catalog_DatasetOriginMetadata", properties: Dict[str, str], rid: str, timestamp_type: "scout_catalog_WeakTimestampType", bounds: Optional["scout_catalog_Bounds"] = None, description: Optional[str] = None) -> None: - self._rid = rid - self._name = name - self._handle = handle - self._description = description - self._origin_metadata = origin_metadata - self._bounds = bounds - self._properties = properties - self._labels = labels - self._timestamp_type = timestamp_type + _json: Any = ConjureEncoder().default(rids) - @builtins.property - def rid(self) -> str: - return self._rid + _path = '/scout/v1/run/multiple' + _path = _path.format(**_path_params) - @builtins.property - def name(self) -> str: - return self._name + _response: Response = self._request( + 'POST', + self._uri + _path, + params=_params, + headers=_headers, + json=_json) - @builtins.property - def handle(self) -> "scout_catalog_Handle": - return self._handle + _decoder = ConjureDecoder() + return _decoder.decode(_response.json(), Dict[scout_run_api_RunRid, scout_run_api_Run], self._return_none_for_unknown_union_types) - @builtins.property - def description(self) -> Optional[str]: - return self._description + def get_all_runs_properties_and_labels(self, auth_header: str) -> "scout_run_api_AllRunsPropertiesAndLabelsResponse": - @builtins.property - def origin_metadata(self) -> "scout_catalog_DatasetOriginMetadata": - return self._origin_metadata + _headers: Dict[str, Any] = { + 'Accept': 'application/json', + 'Authorization': auth_header, + } - @builtins.property - def bounds(self) -> Optional["scout_catalog_Bounds"]: - return self._bounds + _params: Dict[str, Any] = { + } - @builtins.property - def properties(self) -> Dict[str, str]: - return self._properties + _path_params: Dict[str, Any] = { + } - @builtins.property - def labels(self) -> List[str]: - return self._labels + _json: Any = None - @builtins.property - def timestamp_type(self) -> "scout_catalog_WeakTimestampType": - return self._timestamp_type + _path = '/scout/v1/all-runs-properties-labels' + _path = _path.format(**_path_params) + _response: Response = self._request( + 'GET', + self._uri + _path, + params=_params, + headers=_headers, + json=_json) -scout_catalog_Dataset.__name__ = "Dataset" -scout_catalog_Dataset.__qualname__ = "Dataset" -scout_catalog_Dataset.__module__ = "scout_service_api.scout_catalog" + _decoder = ConjureDecoder() + return _decoder.decode(_response.json(), scout_run_api_AllRunsPropertiesAndLabelsResponse, self._return_none_for_unknown_union_types) + def search_runs(self, auth_header: str, list_runs_request: "scout_run_api_SearchRunsRequest") -> "scout_run_api_SearchRunsResponse": + """ + Searches for runs that match the given Æ’ilters. + """ -class scout_catalog_DatasetFilter(ConjureBeanType): + _headers: Dict[str, Any] = { + 'Accept': 'application/json', + 'Content-Type': 'application/json', + 'Authorization': auth_header, + } - @builtins.classmethod - def _fields(cls) -> Dict[str, ConjureFieldDefinition]: - return { - 'name': ConjureFieldDefinition('name', str), - 'value': ConjureFieldDefinition('value', str) + _params: Dict[str, Any] = { } - __slots__: List[str] = ['_name', '_value'] + _path_params: Dict[str, Any] = { + } - def __init__(self, name: str, value: str) -> None: - self._name = name - self._value = value + _json: Any = ConjureEncoder().default(list_runs_request) - @builtins.property - def name(self) -> str: - return self._name + _path = '/scout/v1/search-runs' + _path = _path.format(**_path_params) - @builtins.property - def value(self) -> str: - return self._value + _response: Response = self._request( + 'POST', + self._uri + _path, + params=_params, + headers=_headers, + json=_json) + _decoder = ConjureDecoder() + return _decoder.decode(_response.json(), scout_run_api_SearchRunsResponse, self._return_none_for_unknown_union_types) -scout_catalog_DatasetFilter.__name__ = "DatasetFilter" -scout_catalog_DatasetFilter.__qualname__ = "DatasetFilter" -scout_catalog_DatasetFilter.__module__ = "scout_service_api.scout_catalog" + def search_runs_with_data_review_metrics(self, auth_header: str, list_runs_request: "scout_run_api_SearchRunsRequest") -> "scout_run_api_SearchRunsWithDataReviewMetricsResponse": + """ + Searches for runs that match the given filters and +includes metrics for check and violation review status + """ + _headers: Dict[str, Any] = { + 'Accept': 'application/json', + 'Content-Type': 'application/json', + 'Authorization': auth_header, + } -class scout_catalog_DatasetOriginMetadata(ConjureBeanType): + _params: Dict[str, Any] = { + } - @builtins.classmethod - def _fields(cls) -> Dict[str, ConjureFieldDefinition]: - return { - 'path': ConjureFieldDefinition('path', OptionalTypeWrapper[str]), - 'x_series_is_absolute': ConjureFieldDefinition('xSeriesIsAbsolute', OptionalTypeWrapper[bool]), - 'schema_directive_path': ConjureFieldDefinition('schemaDirectivePath', OptionalTypeWrapper[str]), - 'x_series_column_name': ConjureFieldDefinition('xSeriesColumnName', OptionalTypeWrapper[str]), - 'x_series_time_unit': ConjureFieldDefinition('xSeriesTimeUnit', OptionalTypeWrapper[scout_catalog_TimeUnit]), - 'timestamp_metadata': ConjureFieldDefinition('timestampMetadata', OptionalTypeWrapper[scout_catalog_TimestampMetadata]), - 'skip_rows_config': ConjureFieldDefinition('skipRowsConfig', OptionalTypeWrapper[scout_catalog_SkipRowsConfig]), - 'channel_config': ConjureFieldDefinition('channelConfig', OptionalTypeWrapper[scout_catalog_ChannelConfig]), - 'unit_config': ConjureFieldDefinition('unitConfig', OptionalTypeWrapper[scout_catalog_UnitConfig]) + _path_params: Dict[str, Any] = { } - __slots__: List[str] = ['_path', '_x_series_is_absolute', '_schema_directive_path', '_x_series_column_name', '_x_series_time_unit', '_timestamp_metadata', '_skip_rows_config', '_channel_config', '_unit_config'] + _json: Any = ConjureEncoder().default(list_runs_request) - def __init__(self, channel_config: Optional["scout_catalog_ChannelConfig"] = None, path: Optional[str] = None, schema_directive_path: Optional[str] = None, skip_rows_config: Optional["scout_catalog_SkipRowsConfig"] = None, timestamp_metadata: Optional["scout_catalog_TimestampMetadata"] = None, unit_config: Optional["scout_catalog_UnitConfig"] = None, x_series_column_name: Optional[str] = None, x_series_is_absolute: Optional[bool] = None, x_series_time_unit: Optional["scout_catalog_TimeUnit"] = None) -> None: - self._path = path - self._x_series_is_absolute = x_series_is_absolute - self._schema_directive_path = schema_directive_path - self._x_series_column_name = x_series_column_name - self._x_series_time_unit = x_series_time_unit - self._timestamp_metadata = timestamp_metadata - self._skip_rows_config = skip_rows_config - self._channel_config = channel_config - self._unit_config = unit_config + _path = '/scout/v1/search-runs-with-data-review-metrics' + _path = _path.format(**_path_params) - @builtins.property - def path(self) -> Optional[str]: - return self._path + _response: Response = self._request( + 'POST', + self._uri + _path, + params=_params, + headers=_headers, + json=_json) - @builtins.property - def x_series_is_absolute(self) -> Optional[bool]: - return self._x_series_is_absolute + _decoder = ConjureDecoder() + return _decoder.decode(_response.json(), scout_run_api_SearchRunsWithDataReviewMetricsResponse, self._return_none_for_unknown_union_types) - @builtins.property - def schema_directive_path(self) -> Optional[str]: - return self._schema_directive_path + def search_runs_with_data_review_summary(self, auth_header: str, list_runs_request: "scout_run_api_SearchRunsRequest") -> "scout_run_api_SearchRunsWithDataReviewSummaryResponse": + """ + Searches for runs that match the given filters and includes a summary of the data review status. + """ - @builtins.property - def x_series_column_name(self) -> Optional[str]: - return self._x_series_column_name + _headers: Dict[str, Any] = { + 'Accept': 'application/json', + 'Content-Type': 'application/json', + 'Authorization': auth_header, + } - @builtins.property - def x_series_time_unit(self) -> Optional["scout_catalog_TimeUnit"]: - return self._x_series_time_unit + _params: Dict[str, Any] = { + } - @builtins.property - def timestamp_metadata(self) -> Optional["scout_catalog_TimestampMetadata"]: - return self._timestamp_metadata + _path_params: Dict[str, Any] = { + } - @builtins.property - def skip_rows_config(self) -> Optional["scout_catalog_SkipRowsConfig"]: - return self._skip_rows_config + _json: Any = ConjureEncoder().default(list_runs_request) - @builtins.property - def channel_config(self) -> Optional["scout_catalog_ChannelConfig"]: - return self._channel_config + _path = '/scout/v1/search-runs-with-data-review-summary' + _path = _path.format(**_path_params) - @builtins.property - def unit_config(self) -> Optional["scout_catalog_UnitConfig"]: - return self._unit_config + _response: Response = self._request( + 'POST', + self._uri + _path, + params=_params, + headers=_headers, + json=_json) + _decoder = ConjureDecoder() + return _decoder.decode(_response.json(), scout_run_api_SearchRunsWithDataReviewSummaryResponse, self._return_none_for_unknown_union_types) -scout_catalog_DatasetOriginMetadata.__name__ = "DatasetOriginMetadata" -scout_catalog_DatasetOriginMetadata.__qualname__ = "DatasetOriginMetadata" -scout_catalog_DatasetOriginMetadata.__module__ = "scout_service_api.scout_catalog" + def archive_run(self, auth_header: str, rid: str) -> bool: + """ + Soft-deletes a run. Runs still exist in the database but are no longer visible. + """ + _headers: Dict[str, Any] = { + 'Accept': 'application/json', + 'Authorization': auth_header, + } -class scout_catalog_DeleteSeriesResult(ConjureBeanType): + _params: Dict[str, Any] = { + } - @builtins.classmethod - def _fields(cls) -> Dict[str, ConjureFieldDefinition]: - return { - 'number_deleted': ConjureFieldDefinition('numberDeleted', int) + _path_params: Dict[str, Any] = { + 'rid': rid, } - __slots__: List[str] = ['_number_deleted'] + _json: Any = None - def __init__(self, number_deleted: int) -> None: - self._number_deleted = number_deleted + _path = '/scout/v1/archive-run/{rid}' + _path = _path.format(**_path_params) - @builtins.property - def number_deleted(self) -> int: - return self._number_deleted + _response: Response = self._request( + 'PUT', + self._uri + _path, + params=_params, + headers=_headers, + json=_json) + _decoder = ConjureDecoder() + return _decoder.decode(_response.json(), bool, self._return_none_for_unknown_union_types) -scout_catalog_DeleteSeriesResult.__name__ = "DeleteSeriesResult" -scout_catalog_DeleteSeriesResult.__qualname__ = "DeleteSeriesResult" -scout_catalog_DeleteSeriesResult.__module__ = "scout_service_api.scout_catalog" + def get_data_source_ref_name_and_type_list(self, auth_header: str) -> List["scout_run_api_RefNameAndType"]: + """ + Returns the list of ref names that are in use across an entire organization. + """ + _headers: Dict[str, Any] = { + 'Accept': 'application/json', + 'Authorization': auth_header, + } -class scout_catalog_EnrichedDataset(ConjureBeanType): + _params: Dict[str, Any] = { + } - @builtins.classmethod - def _fields(cls) -> Dict[str, ConjureFieldDefinition]: - return { - 'rid': ConjureFieldDefinition('rid', str), - 'uuid': ConjureFieldDefinition('uuid', str), - 'name': ConjureFieldDefinition('name', str), - 'description': ConjureFieldDefinition('description', OptionalTypeWrapper[str]), - 'display_name': ConjureFieldDefinition('displayName', str), - 'metadata': ConjureFieldDefinition('metadata', Dict[str, str]), - 'handle': ConjureFieldDefinition('handle', scout_catalog_Handle), - 'origin_metadata': ConjureFieldDefinition('originMetadata', scout_catalog_DatasetOriginMetadata), - 'ingest_date': ConjureFieldDefinition('ingestDate', str), - 'ingest_status': ConjureFieldDefinition('ingestStatus', scout_catalog_IngestStatus), - 'retention_policy': ConjureFieldDefinition('retentionPolicy', scout_catalog_RetentionPolicy), - 'run_rid': ConjureFieldDefinition('runRid', OptionalTypeWrapper[str]), - 'run_date': ConjureFieldDefinition('runDate', OptionalTypeWrapper[str]), - 'shorthand': ConjureFieldDefinition('shorthand', OptionalTypeWrapper[str]), - 'source': ConjureFieldDefinition('source', OptionalTypeWrapper[str]), - 'bounds': ConjureFieldDefinition('bounds', OptionalTypeWrapper[scout_catalog_Bounds]), - 'timestamp_type': ConjureFieldDefinition('timestampType', scout_catalog_WeakTimestampType), - 'labels': ConjureFieldDefinition('labels', List[datasource_Label]), - 'properties': ConjureFieldDefinition('properties', Dict[datasource_PropertyName, datasource_PropertyValue]) + _path_params: Dict[str, Any] = { } - __slots__: List[str] = ['_rid', '_uuid', '_name', '_description', '_display_name', '_metadata', '_handle', '_origin_metadata', '_ingest_date', '_ingest_status', '_retention_policy', '_run_rid', '_run_date', '_shorthand', '_source', '_bounds', '_timestamp_type', '_labels', '_properties'] - - def __init__(self, display_name: str, handle: "scout_catalog_Handle", ingest_date: str, ingest_status: "scout_catalog_IngestStatus", labels: List[str], metadata: Dict[str, str], name: str, origin_metadata: "scout_catalog_DatasetOriginMetadata", properties: Dict[str, str], retention_policy: "scout_catalog_RetentionPolicy", rid: str, timestamp_type: "scout_catalog_WeakTimestampType", uuid: str, bounds: Optional["scout_catalog_Bounds"] = None, description: Optional[str] = None, run_date: Optional[str] = None, run_rid: Optional[str] = None, shorthand: Optional[str] = None, source: Optional[str] = None) -> None: - self._rid = rid - self._uuid = uuid - self._name = name - self._description = description - self._display_name = display_name - self._metadata = metadata - self._handle = handle - self._origin_metadata = origin_metadata - self._ingest_date = ingest_date - self._ingest_status = ingest_status - self._retention_policy = retention_policy - self._run_rid = run_rid - self._run_date = run_date - self._shorthand = shorthand - self._source = source - self._bounds = bounds - self._timestamp_type = timestamp_type - self._labels = labels - self._properties = properties - - @builtins.property - def rid(self) -> str: - return self._rid + _json: Any = None - @builtins.property - def uuid(self) -> str: - return self._uuid + _path = '/scout/v1/data-source-ref-names-and-types' + _path = _path.format(**_path_params) - @builtins.property - def name(self) -> str: - return self._name + _response: Response = self._request( + 'GET', + self._uri + _path, + params=_params, + headers=_headers, + json=_json) - @builtins.property - def description(self) -> Optional[str]: - return self._description + _decoder = ConjureDecoder() + return _decoder.decode(_response.json(), List[scout_run_api_RefNameAndType], self._return_none_for_unknown_union_types) - @builtins.property - def display_name(self) -> str: - return self._display_name + def search_channels(self, auth_header: str, request: "scout_run_api_SearchRunChannelsRequest", rid: str) -> "scout_run_api_SearchRunChannelsResponse": - @builtins.property - def metadata(self) -> Dict[str, str]: - return self._metadata + _headers: Dict[str, Any] = { + 'Accept': 'application/json', + 'Content-Type': 'application/json', + 'Authorization': auth_header, + } - @builtins.property - def handle(self) -> "scout_catalog_Handle": - return self._handle + _params: Dict[str, Any] = { + } - @builtins.property - def origin_metadata(self) -> "scout_catalog_DatasetOriginMetadata": - return self._origin_metadata + _path_params: Dict[str, Any] = { + 'rid': rid, + } - @builtins.property - def ingest_date(self) -> str: - return self._ingest_date + _json: Any = ConjureEncoder().default(request) - @builtins.property - def ingest_status(self) -> "scout_catalog_IngestStatus": - return self._ingest_status + _path = '/scout/v1/run/{rid}/search-channels' + _path = _path.format(**_path_params) - @builtins.property - def retention_policy(self) -> "scout_catalog_RetentionPolicy": - return self._retention_policy + _response: Response = self._request( + 'POST', + self._uri + _path, + params=_params, + headers=_headers, + json=_json) - @builtins.property - def run_rid(self) -> Optional[str]: - return self._run_rid + _decoder = ConjureDecoder() + return _decoder.decode(_response.json(), scout_run_api_SearchRunChannelsResponse, self._return_none_for_unknown_union_types) - @builtins.property - def run_date(self) -> Optional[str]: - return self._run_date + def get_events(self, auth_header: str, rid: str, next_page_token: Optional[str] = None) -> "scout_run_api_GetEventsForRunPage": + """ + Fetches a list of events associated with the run. - @builtins.property - def shorthand(self) -> Optional[str]: - return self._shorthand +Returns a maximum page size of 1000. + """ - @builtins.property - def source(self) -> Optional[str]: - return self._source + _headers: Dict[str, Any] = { + 'Accept': 'application/json', + 'Authorization': auth_header, + } - @builtins.property - def bounds(self) -> Optional["scout_catalog_Bounds"]: - return self._bounds + _params: Dict[str, Any] = { + 'nextPageToken': next_page_token, + } - @builtins.property - def timestamp_type(self) -> "scout_catalog_WeakTimestampType": - return self._timestamp_type + _path_params: Dict[str, Any] = { + 'rid': rid, + } - @builtins.property - def labels(self) -> List[str]: - return self._labels + _json: Any = None - @builtins.property - def properties(self) -> Dict[str, str]: - return self._properties + _path = '/scout/v1/run/{rid}/events' + _path = _path.format(**_path_params) + _response: Response = self._request( + 'GET', + self._uri + _path, + params=_params, + headers=_headers, + json=_json) -scout_catalog_EnrichedDataset.__name__ = "EnrichedDataset" -scout_catalog_EnrichedDataset.__qualname__ = "EnrichedDataset" -scout_catalog_EnrichedDataset.__module__ = "scout_service_api.scout_catalog" + _decoder = ConjureDecoder() + return _decoder.decode(_response.json(), scout_run_api_GetEventsForRunPage, self._return_none_for_unknown_union_types) + def publish_events(self, auth_header: str, request: "scout_run_api_PublishEventsToRunRequest", rid: str) -> None: + """ + Adds a set of new events to the run. + """ -class scout_catalog_EpochTimestamp(ConjureBeanType): + _headers: Dict[str, Any] = { + 'Accept': 'application/json', + 'Content-Type': 'application/json', + 'Authorization': auth_header, + } - @builtins.classmethod - def _fields(cls) -> Dict[str, ConjureFieldDefinition]: - return { - 'time_unit': ConjureFieldDefinition('timeUnit', scout_catalog_TimeUnit) + _params: Dict[str, Any] = { } - __slots__: List[str] = ['_time_unit'] + _path_params: Dict[str, Any] = { + 'rid': rid, + } - def __init__(self, time_unit: "scout_catalog_TimeUnit") -> None: - self._time_unit = time_unit + _json: Any = ConjureEncoder().default(request) - @builtins.property - def time_unit(self) -> "scout_catalog_TimeUnit": - return self._time_unit + _path = '/scout/v1/run/{rid}/events' + _path = _path.format(**_path_params) + _response: Response = self._request( + 'POST', + self._uri + _path, + params=_params, + headers=_headers, + json=_json) -scout_catalog_EpochTimestamp.__name__ = "EpochTimestamp" -scout_catalog_EpochTimestamp.__qualname__ = "EpochTimestamp" -scout_catalog_EpochTimestamp.__module__ = "scout_service_api.scout_catalog" + return + def delete_events_from_run(self, auth_header: str, request: "scout_run_api_DeleteEventsFromRunRequest", rid: str) -> None: + """ + Deletes events from the run. + """ -class scout_catalog_ErrorResult(ConjureBeanType): + _headers: Dict[str, Any] = { + 'Accept': 'application/json', + 'Content-Type': 'application/json', + 'Authorization': auth_header, + } - @builtins.classmethod - def _fields(cls) -> Dict[str, ConjureFieldDefinition]: - return { - 'error_type': ConjureFieldDefinition('errorType', scout_catalog_ErrorType), - 'message': ConjureFieldDefinition('message', str) + _params: Dict[str, Any] = { } - __slots__: List[str] = ['_error_type', '_message'] + _path_params: Dict[str, Any] = { + 'rid': rid, + } - def __init__(self, error_type: str, message: str) -> None: - self._error_type = error_type - self._message = message + _json: Any = ConjureEncoder().default(request) - @builtins.property - def error_type(self) -> str: - return self._error_type + _path = '/scout/v1/run/{rid}/delete-events' + _path = _path.format(**_path_params) - @builtins.property - def message(self) -> str: - return self._message + _response: Response = self._request( + 'POST', + self._uri + _path, + params=_params, + headers=_headers, + json=_json) + return -scout_catalog_ErrorResult.__name__ = "ErrorResult" -scout_catalog_ErrorResult.__qualname__ = "ErrorResult" -scout_catalog_ErrorResult.__module__ = "scout_service_api.scout_catalog" + def update_run_attachment(self, auth_header: str, request: "scout_run_api_UpdateAttachmentsRequest", rid: str) -> None: + """ + Updates the attachments associated with a run. + """ + _headers: Dict[str, Any] = { + 'Accept': 'application/json', + 'Content-Type': 'application/json', + 'Authorization': auth_header, + } -class scout_catalog_GetChannelsForDatasetsRequest(ConjureBeanType): + _params: Dict[str, Any] = { + } - @builtins.classmethod - def _fields(cls) -> Dict[str, ConjureFieldDefinition]: - return { - 'dataset_uuids': ConjureFieldDefinition('datasetUuids', List[str]) + _path_params: Dict[str, Any] = { + 'rid': rid, } - __slots__: List[str] = ['_dataset_uuids'] + _json: Any = ConjureEncoder().default(request) - def __init__(self, dataset_uuids: List[str]) -> None: - self._dataset_uuids = dataset_uuids + _path = '/scout/v1/run/{rid}/attachments' + _path = _path.format(**_path_params) - @builtins.property - def dataset_uuids(self) -> List[str]: - return self._dataset_uuids + _response: Response = self._request( + 'POST', + self._uri + _path, + params=_params, + headers=_headers, + json=_json) + return -scout_catalog_GetChannelsForDatasetsRequest.__name__ = "GetChannelsForDatasetsRequest" -scout_catalog_GetChannelsForDatasetsRequest.__qualname__ = "GetChannelsForDatasetsRequest" -scout_catalog_GetChannelsForDatasetsRequest.__module__ = "scout_service_api.scout_catalog" +scout_RunService.__name__ = "RunService" +scout_RunService.__qualname__ = "RunService" +scout_RunService.__module__ = "scout_service_api.scout" -class scout_catalog_GetDatasetsRequest(ConjureBeanType): - @builtins.classmethod - def _fields(cls) -> Dict[str, ConjureFieldDefinition]: - return { - 'dataset_rids': ConjureFieldDefinition('datasetRids', List[str]) +class scout_TemplateService(Service): + """ + TemplateService manages templates, which are workbooks that +can be re-used across runs. Templates are versioned. + """ + + def create(self, auth_header: str, request: "scout_template_api_CreateTemplateRequest") -> "scout_template_api_Template": + """ + Creates a new template. + """ + + _headers: Dict[str, Any] = { + 'Accept': 'application/json', + 'Content-Type': 'application/json', + 'Authorization': auth_header, } - __slots__: List[str] = ['_dataset_rids'] + _params: Dict[str, Any] = { + } - def __init__(self, dataset_rids: List[str]) -> None: - self._dataset_rids = dataset_rids + _path_params: Dict[str, Any] = { + } - @builtins.property - def dataset_rids(self) -> List[str]: - return self._dataset_rids + _json: Any = ConjureEncoder().default(request) + _path = '/scout/v1/template' + _path = _path.format(**_path_params) -scout_catalog_GetDatasetsRequest.__name__ = "GetDatasetsRequest" -scout_catalog_GetDatasetsRequest.__qualname__ = "GetDatasetsRequest" -scout_catalog_GetDatasetsRequest.__module__ = "scout_service_api.scout_catalog" + _response: Response = self._request( + 'POST', + self._uri + _path, + params=_params, + headers=_headers, + json=_json) + _decoder = ConjureDecoder() + return _decoder.decode(_response.json(), scout_template_api_Template, self._return_none_for_unknown_union_types) -class scout_catalog_GetDetailsForChannelsRequest(ConjureBeanType): + def get(self, auth_header: str, template_rid: str, branch: Optional[str] = None, commit: Optional[str] = None) -> "scout_template_api_Template": + """ + Must only pass one of (branch, commit). If neither are passed, +the latest commit on the "main" branch is returned. +Throws if the template, branch, or commit doesn't exist. + """ - @builtins.classmethod - def _fields(cls) -> Dict[str, ConjureFieldDefinition]: - return { - 'channel_uuids': ConjureFieldDefinition('channelUuids', List[str]) + _headers: Dict[str, Any] = { + 'Accept': 'application/json', + 'Authorization': auth_header, } - __slots__: List[str] = ['_channel_uuids'] + _params: Dict[str, Any] = { + 'branch': branch, + 'commit': commit, + } - def __init__(self, channel_uuids: List[str]) -> None: - self._channel_uuids = channel_uuids + _path_params: Dict[str, Any] = { + 'templateRid': template_rid, + } - @builtins.property - def channel_uuids(self) -> List[str]: - return self._channel_uuids + _json: Any = None + _path = '/scout/v1/template/{templateRid}' + _path = _path.format(**_path_params) -scout_catalog_GetDetailsForChannelsRequest.__name__ = "GetDetailsForChannelsRequest" -scout_catalog_GetDetailsForChannelsRequest.__qualname__ = "GetDetailsForChannelsRequest" -scout_catalog_GetDetailsForChannelsRequest.__module__ = "scout_service_api.scout_catalog" + _response: Response = self._request( + 'GET', + self._uri + _path, + params=_params, + headers=_headers, + json=_json) + _decoder = ConjureDecoder() + return _decoder.decode(_response.json(), scout_template_api_Template, self._return_none_for_unknown_union_types) -class scout_catalog_GetHandlesForDatasetsRequest(ConjureBeanType): + def save_working_state(self, auth_header: str, request: "scout_template_api_SaveTemplateRequest", template_rid: str, branch: Optional[str] = None) -> "scout_template_api_Template": + """ + Creates a commit that may be compacted, e.g cleaned up and not exist anymore. +Throws if the template or branch doesn't exist. +Throws if the latest commit doesn't match the provided id. +Throws if you save to an archived template. + """ - @builtins.classmethod - def _fields(cls) -> Dict[str, ConjureFieldDefinition]: - return { - 'dataset_uuids': ConjureFieldDefinition('datasetUuids', List[str]) + _headers: Dict[str, Any] = { + 'Accept': 'application/json', + 'Content-Type': 'application/json', + 'Authorization': auth_header, } - __slots__: List[str] = ['_dataset_uuids'] + _params: Dict[str, Any] = { + 'branch': branch, + } - def __init__(self, dataset_uuids: List[str]) -> None: - self._dataset_uuids = dataset_uuids + _path_params: Dict[str, Any] = { + 'templateRid': template_rid, + } - @builtins.property - def dataset_uuids(self) -> List[str]: - return self._dataset_uuids + _json: Any = ConjureEncoder().default(request) + _path = '/scout/v1/template/{templateRid}/save-working-state' + _path = _path.format(**_path_params) -scout_catalog_GetHandlesForDatasetsRequest.__name__ = "GetHandlesForDatasetsRequest" -scout_catalog_GetHandlesForDatasetsRequest.__qualname__ = "GetHandlesForDatasetsRequest" -scout_catalog_GetHandlesForDatasetsRequest.__module__ = "scout_service_api.scout_catalog" + _response: Response = self._request( + 'POST', + self._uri + _path, + params=_params, + headers=_headers, + json=_json) + _decoder = ConjureDecoder() + return _decoder.decode(_response.json(), scout_template_api_Template, self._return_none_for_unknown_union_types) -class scout_catalog_GetSeriesDetailsByName(ConjureBeanType): + def commit(self, auth_header: str, request: "scout_template_api_CommitTemplateRequest", template_rid: str, branch: Optional[str] = None) -> "scout_template_api_Template": + """ + Creates a commit with a commit message. +Throws if the template or branch doesn't exist. +Throws if the latest commit doesn't match the provided id. +Throws if you commit to an archived template. + """ - @builtins.classmethod - def _fields(cls) -> Dict[str, ConjureFieldDefinition]: - return { - 'dataset_rid': ConjureFieldDefinition('datasetRid', str), - 'name': ConjureFieldDefinition('name', str) + _headers: Dict[str, Any] = { + 'Accept': 'application/json', + 'Content-Type': 'application/json', + 'Authorization': auth_header, } - __slots__: List[str] = ['_dataset_rid', '_name'] + _params: Dict[str, Any] = { + 'branch': branch, + } - def __init__(self, dataset_rid: str, name: str) -> None: - self._dataset_rid = dataset_rid - self._name = name + _path_params: Dict[str, Any] = { + 'templateRid': template_rid, + } - @builtins.property - def dataset_rid(self) -> str: - return self._dataset_rid + _json: Any = ConjureEncoder().default(request) - @builtins.property - def name(self) -> str: - return self._name + _path = '/scout/v1/template/{templateRid}/commit' + _path = _path.format(**_path_params) + _response: Response = self._request( + 'POST', + self._uri + _path, + params=_params, + headers=_headers, + json=_json) -scout_catalog_GetSeriesDetailsByName.__name__ = "GetSeriesDetailsByName" -scout_catalog_GetSeriesDetailsByName.__qualname__ = "GetSeriesDetailsByName" -scout_catalog_GetSeriesDetailsByName.__module__ = "scout_service_api.scout_catalog" + _decoder = ConjureDecoder() + return _decoder.decode(_response.json(), scout_template_api_Template, self._return_none_for_unknown_union_types) + def update_metadata(self, auth_header: str, request: "scout_template_api_UpdateMetadataRequest", template_rid: str) -> "scout_template_api_TemplateMetadata": + """ + Throws if the template doesn't exist. + """ -class scout_catalog_GetSeriesDetailsByRid(ConjureBeanType): + _headers: Dict[str, Any] = { + 'Accept': 'application/json', + 'Content-Type': 'application/json', + 'Authorization': auth_header, + } - @builtins.classmethod - def _fields(cls) -> Dict[str, ConjureFieldDefinition]: - return { - 'rid': ConjureFieldDefinition('rid', str) + _params: Dict[str, Any] = { } - __slots__: List[str] = ['_rid'] + _path_params: Dict[str, Any] = { + 'templateRid': template_rid, + } - def __init__(self, rid: str) -> None: - self._rid = rid + _json: Any = ConjureEncoder().default(request) - @builtins.property - def rid(self) -> str: - return self._rid + _path = '/scout/v1/template/{templateRid}/metadata' + _path = _path.format(**_path_params) + _response: Response = self._request( + 'POST', + self._uri + _path, + params=_params, + headers=_headers, + json=_json) -scout_catalog_GetSeriesDetailsByRid.__name__ = "GetSeriesDetailsByRid" -scout_catalog_GetSeriesDetailsByRid.__qualname__ = "GetSeriesDetailsByRid" -scout_catalog_GetSeriesDetailsByRid.__module__ = "scout_service_api.scout_catalog" + _decoder = ConjureDecoder() + return _decoder.decode(_response.json(), scout_template_api_TemplateMetadata, self._return_none_for_unknown_union_types) + def search_templates(self, auth_header: str, request: "scout_template_api_SearchTemplatesRequest") -> "scout_template_api_SearchTemplatesResponse": -class scout_catalog_GetSeriesDetailsRequest(ConjureUnionType): - _by_rid: Optional["scout_catalog_GetSeriesDetailsByRid"] = None - _by_name: Optional["scout_catalog_GetSeriesDetailsByName"] = None + _headers: Dict[str, Any] = { + 'Accept': 'application/json', + 'Content-Type': 'application/json', + 'Authorization': auth_header, + } - @builtins.classmethod - def _options(cls) -> Dict[str, ConjureFieldDefinition]: - return { - 'by_rid': ConjureFieldDefinition('byRid', scout_catalog_GetSeriesDetailsByRid), - 'by_name': ConjureFieldDefinition('byName', scout_catalog_GetSeriesDetailsByName) + _params: Dict[str, Any] = { } - def __init__( - self, - by_rid: Optional["scout_catalog_GetSeriesDetailsByRid"] = None, - by_name: Optional["scout_catalog_GetSeriesDetailsByName"] = None, - type_of_union: Optional[str] = None - ) -> None: - if type_of_union is None: - if (by_rid is not None) + (by_name is not None) != 1: - raise ValueError('a union must contain a single member') - - if by_rid is not None: - self._by_rid = by_rid - self._type = 'byRid' - if by_name is not None: - self._by_name = by_name - self._type = 'byName' - - elif type_of_union == 'byRid': - if by_rid is None: - raise ValueError('a union value must not be None') - self._by_rid = by_rid - self._type = 'byRid' - elif type_of_union == 'byName': - if by_name is None: - raise ValueError('a union value must not be None') - self._by_name = by_name - self._type = 'byName' + _path_params: Dict[str, Any] = { + } - @builtins.property - def by_rid(self) -> Optional["scout_catalog_GetSeriesDetailsByRid"]: - return self._by_rid + _json: Any = ConjureEncoder().default(request) - @builtins.property - def by_name(self) -> Optional["scout_catalog_GetSeriesDetailsByName"]: - return self._by_name + _path = '/scout/v1/template/search' + _path = _path.format(**_path_params) - def accept(self, visitor) -> Any: - if not isinstance(visitor, scout_catalog_GetSeriesDetailsRequestVisitor): - raise ValueError('{} is not an instance of scout_catalog_GetSeriesDetailsRequestVisitor'.format(visitor.__class__.__name__)) - if self._type == 'byRid' and self.by_rid is not None: - return visitor._by_rid(self.by_rid) - if self._type == 'byName' and self.by_name is not None: - return visitor._by_name(self.by_name) + _response: Response = self._request( + 'POST', + self._uri + _path, + params=_params, + headers=_headers, + json=_json) + _decoder = ConjureDecoder() + return _decoder.decode(_response.json(), scout_template_api_SearchTemplatesResponse, self._return_none_for_unknown_union_types) -scout_catalog_GetSeriesDetailsRequest.__name__ = "GetSeriesDetailsRequest" -scout_catalog_GetSeriesDetailsRequest.__qualname__ = "GetSeriesDetailsRequest" -scout_catalog_GetSeriesDetailsRequest.__module__ = "scout_service_api.scout_catalog" + def get_all_labels_and_properties(self, auth_header: str) -> "scout_template_api_GetAllLabelsAndPropertiesResponse": + _headers: Dict[str, Any] = { + 'Accept': 'application/json', + 'Authorization': auth_header, + } -class scout_catalog_GetSeriesDetailsRequestVisitor: + _params: Dict[str, Any] = { + } - @abstractmethod - def _by_rid(self, by_rid: "scout_catalog_GetSeriesDetailsByRid") -> Any: - pass + _path_params: Dict[str, Any] = { + } - @abstractmethod - def _by_name(self, by_name: "scout_catalog_GetSeriesDetailsByName") -> Any: - pass + _json: Any = None + _path = '/scout/v1/template/get-all-labels-properties' + _path = _path.format(**_path_params) -scout_catalog_GetSeriesDetailsRequestVisitor.__name__ = "GetSeriesDetailsRequestVisitor" -scout_catalog_GetSeriesDetailsRequestVisitor.__qualname__ = "GetSeriesDetailsRequestVisitor" -scout_catalog_GetSeriesDetailsRequestVisitor.__module__ = "scout_service_api.scout_catalog" + _response: Response = self._request( + 'GET', + self._uri + _path, + params=_params, + headers=_headers, + json=_json) + _decoder = ConjureDecoder() + return _decoder.decode(_response.json(), scout_template_api_GetAllLabelsAndPropertiesResponse, self._return_none_for_unknown_union_types) -class scout_catalog_Handle(ConjureUnionType): - _s3: Optional["scout_catalog_S3Handle"] = None + def merge_to_main(self, auth_header: str, request: "scout_template_api_MergeToMainRequest", template_rid: str) -> "scout_template_api_Template": + """ + Merges the given branch to the "main" branch. +Throws if the template or branch doesn't exist. +Throws if the latest commit doesn't match the provided id. +Throws if you merge on an archived template. + """ - @builtins.classmethod - def _options(cls) -> Dict[str, ConjureFieldDefinition]: - return { - 's3': ConjureFieldDefinition('s3', scout_catalog_S3Handle) + _headers: Dict[str, Any] = { + 'Accept': 'application/json', + 'Content-Type': 'application/json', + 'Authorization': auth_header, } - def __init__( - self, - s3: Optional["scout_catalog_S3Handle"] = None, - type_of_union: Optional[str] = None - ) -> None: - if type_of_union is None: - if (s3 is not None) != 1: - raise ValueError('a union must contain a single member') - - if s3 is not None: - self._s3 = s3 - self._type = 's3' + _params: Dict[str, Any] = { + } - elif type_of_union == 's3': - if s3 is None: - raise ValueError('a union value must not be None') - self._s3 = s3 - self._type = 's3' + _path_params: Dict[str, Any] = { + 'templateRid': template_rid, + } - @builtins.property - def s3(self) -> Optional["scout_catalog_S3Handle"]: - return self._s3 + _json: Any = ConjureEncoder().default(request) - def accept(self, visitor) -> Any: - if not isinstance(visitor, scout_catalog_HandleVisitor): - raise ValueError('{} is not an instance of scout_catalog_HandleVisitor'.format(visitor.__class__.__name__)) - if self._type == 's3' and self.s3 is not None: - return visitor._s3(self.s3) + _path = '/scout/v1/template/{templateRid}/merge-to-main' + _path = _path.format(**_path_params) + _response: Response = self._request( + 'POST', + self._uri + _path, + params=_params, + headers=_headers, + json=_json) -scout_catalog_Handle.__name__ = "Handle" -scout_catalog_Handle.__qualname__ = "Handle" -scout_catalog_Handle.__module__ = "scout_service_api.scout_catalog" + _decoder = ConjureDecoder() + return _decoder.decode(_response.json(), scout_template_api_Template, self._return_none_for_unknown_union_types) -class scout_catalog_HandleVisitor: +scout_TemplateService.__name__ = "TemplateService" +scout_TemplateService.__qualname__ = "TemplateService" +scout_TemplateService.__module__ = "scout_service_api.scout" - @abstractmethod - def _s3(self, s3: "scout_catalog_S3Handle") -> Any: - pass +class scout_UnitsService(Service): + """ + The Units Service serves as a comprehensive catalog of the units of measurement supported by scout. Units, by +default, follow the UCUM convention for representation. + """ -scout_catalog_HandleVisitor.__name__ = "HandleVisitor" -scout_catalog_HandleVisitor.__qualname__ = "HandleVisitor" -scout_catalog_HandleVisitor.__module__ = "scout_service_api.scout_catalog" + def get_all_units(self, auth_header: str) -> "scout_units_api_GetUnitsResponse": + """ + Returns all known units, grouped by the physical property they measure. + """ + _headers: Dict[str, Any] = { + 'Accept': 'application/json', + 'Authorization': auth_header, + } -class scout_catalog_InProgressResult(ConjureBeanType): + _params: Dict[str, Any] = { + } - @builtins.classmethod - def _fields(cls) -> Dict[str, ConjureFieldDefinition]: - return { + _path_params: Dict[str, Any] = { } - __slots__: List[str] = [] + _json: Any = None + _path = '/units/v1/units' + _path = _path.format(**_path_params) + _response: Response = self._request( + 'GET', + self._uri + _path, + params=_params, + headers=_headers, + json=_json) -scout_catalog_InProgressResult.__name__ = "InProgressResult" -scout_catalog_InProgressResult.__qualname__ = "InProgressResult" -scout_catalog_InProgressResult.__module__ = "scout_service_api.scout_catalog" + _decoder = ConjureDecoder() + return _decoder.decode(_response.json(), scout_units_api_GetUnitsResponse, self._return_none_for_unknown_union_types) + def get_unit(self, auth_header: str, unit: str) -> Optional["scout_units_api_Unit"]: + """ + Returns information for a unit symbol if available. Returns as empty if the provided symbol cannot be parsed. + """ -class scout_catalog_IngestProgressV2(ConjureBeanType): + _headers: Dict[str, Any] = { + 'Accept': 'application/json', + 'Content-Type': 'application/json', + 'Authorization': auth_header, + } - @builtins.classmethod - def _fields(cls) -> Dict[str, ConjureFieldDefinition]: - return { - 'start_time': ConjureFieldDefinition('startTime', str), - 'end_time': ConjureFieldDefinition('endTime', OptionalTypeWrapper[str]), - 'ingest_status': ConjureFieldDefinition('ingestStatus', scout_catalog_IngestStatusV2), - 'incalculable': ConjureFieldDefinition('incalculable', OptionalTypeWrapper[bool]) + _params: Dict[str, Any] = { } - __slots__: List[str] = ['_start_time', '_end_time', '_ingest_status', '_incalculable'] + _path_params: Dict[str, Any] = { + } - def __init__(self, ingest_status: "scout_catalog_IngestStatusV2", start_time: str, end_time: Optional[str] = None, incalculable: Optional[bool] = None) -> None: - self._start_time = start_time - self._end_time = end_time - self._ingest_status = ingest_status - self._incalculable = incalculable + _json: Any = ConjureEncoder().default(unit) - @builtins.property - def start_time(self) -> str: - """ - Timestamp at start of ingest - """ - return self._start_time + _path = '/units/v1/units/get-unit' + _path = _path.format(**_path_params) - @builtins.property - def end_time(self) -> Optional[str]: - """ - Timestamp at end of ingest, empty if still in progress - """ - return self._end_time + _response: Response = self._request( + 'POST', + self._uri + _path, + params=_params, + headers=_headers, + json=_json) - @builtins.property - def ingest_status(self) -> "scout_catalog_IngestStatusV2": - """ - Status of ingest, contains error if failed - """ - return self._ingest_status + _decoder = ConjureDecoder() + return None if _response.status_code == 204 else _decoder.decode(_response.json(), OptionalTypeWrapper[scout_units_api_Unit], self._return_none_for_unknown_union_types) - @builtins.property - def incalculable(self) -> Optional[bool]: + def get_commensurable_units(self, auth_header: str, unit: str) -> List["scout_units_api_Unit"]: """ - Whether ingest duration can be reliably calculated + Returns the set of units that can be converted to and from the given unit. """ - return self._incalculable + _headers: Dict[str, Any] = { + 'Accept': 'application/json', + 'Content-Type': 'application/json', + 'Authorization': auth_header, + } -scout_catalog_IngestProgressV2.__name__ = "IngestProgressV2" -scout_catalog_IngestProgressV2.__qualname__ = "IngestProgressV2" -scout_catalog_IngestProgressV2.__module__ = "scout_service_api.scout_catalog" + _params: Dict[str, Any] = { + } + _path_params: Dict[str, Any] = { + } -class scout_catalog_IngestStatus(ConjureEnumType): + _json: Any = ConjureEncoder().default(unit) - IN_PROGRESS = 'IN_PROGRESS' - '''IN_PROGRESS''' - COMPLETED = 'COMPLETED' - '''COMPLETED''' - FAILED = 'FAILED' - '''FAILED''' - UNKNOWN = 'UNKNOWN' - '''UNKNOWN''' + _path = '/units/v1/units/commensurable-units' + _path = _path.format(**_path_params) - def __reduce_ex__(self, proto): - return self.__class__, (self.name,) + _response: Response = self._request( + 'POST', + self._uri + _path, + params=_params, + headers=_headers, + json=_json) + _decoder = ConjureDecoder() + return _decoder.decode(_response.json(), List[scout_units_api_Unit], self._return_none_for_unknown_union_types) -scout_catalog_IngestStatus.__name__ = "IngestStatus" -scout_catalog_IngestStatus.__qualname__ = "IngestStatus" -scout_catalog_IngestStatus.__module__ = "scout_service_api.scout_catalog" +scout_UnitsService.__name__ = "UnitsService" +scout_UnitsService.__qualname__ = "UnitsService" +scout_UnitsService.__module__ = "scout_service_api.scout" -class scout_catalog_IngestStatusV2(ConjureUnionType): - _success: Optional["scout_catalog_SuccessResult"] = None - _error: Optional["scout_catalog_ErrorResult"] = None - _in_progress: Optional["scout_catalog_InProgressResult"] = None - @builtins.classmethod - def _options(cls) -> Dict[str, ConjureFieldDefinition]: - return { - 'success': ConjureFieldDefinition('success', scout_catalog_SuccessResult), - 'error': ConjureFieldDefinition('error', scout_catalog_ErrorResult), - 'in_progress': ConjureFieldDefinition('inProgress', scout_catalog_InProgressResult) - } +class scout_VersioningService(Service): + """ + This is the external-facing portion of VersioningService which +gives clients access to functionality that doesn't create new +commits. The creation of new commits should be done via the +resource-specific services. + """ - def __init__( - self, - success: Optional["scout_catalog_SuccessResult"] = None, - error: Optional["scout_catalog_ErrorResult"] = None, - in_progress: Optional["scout_catalog_InProgressResult"] = None, - type_of_union: Optional[str] = None - ) -> None: - if type_of_union is None: - if (success is not None) + (error is not None) + (in_progress is not None) != 1: - raise ValueError('a union must contain a single member') + def create_branch(self, auth_header: str, request: "scout_versioning_api_CreateBranchRequest", resource_rid: str) -> "scout_versioning_api_Branch": + """ + Creates a mutable pointer to the provided commit. +"Saves"/"commits" can be performed on this pointer. +Throws if the name is already used as a commit +pointer for this resource. +Throws if the provided commit doesn't exist. + """ - if success is not None: - self._success = success - self._type = 'success' - if error is not None: - self._error = error - self._type = 'error' - if in_progress is not None: - self._in_progress = in_progress - self._type = 'inProgress' + _headers: Dict[str, Any] = { + 'Accept': 'application/json', + 'Content-Type': 'application/json', + 'Authorization': auth_header, + } - elif type_of_union == 'success': - if success is None: - raise ValueError('a union value must not be None') - self._success = success - self._type = 'success' - elif type_of_union == 'error': - if error is None: - raise ValueError('a union value must not be None') - self._error = error - self._type = 'error' - elif type_of_union == 'inProgress': - if in_progress is None: - raise ValueError('a union value must not be None') - self._in_progress = in_progress - self._type = 'inProgress' + _params: Dict[str, Any] = { + } - @builtins.property - def success(self) -> Optional["scout_catalog_SuccessResult"]: - return self._success + _path_params: Dict[str, Any] = { + 'resourceRid': resource_rid, + } - @builtins.property - def error(self) -> Optional["scout_catalog_ErrorResult"]: - return self._error + _json: Any = ConjureEncoder().default(request) - @builtins.property - def in_progress(self) -> Optional["scout_catalog_InProgressResult"]: - return self._in_progress + _path = '/scout/v1/versioning/{resourceRid}/branch' + _path = _path.format(**_path_params) - def accept(self, visitor) -> Any: - if not isinstance(visitor, scout_catalog_IngestStatusV2Visitor): - raise ValueError('{} is not an instance of scout_catalog_IngestStatusV2Visitor'.format(visitor.__class__.__name__)) - if self._type == 'success' and self.success is not None: - return visitor._success(self.success) - if self._type == 'error' and self.error is not None: - return visitor._error(self.error) - if self._type == 'inProgress' and self.in_progress is not None: - return visitor._in_progress(self.in_progress) + _response: Response = self._request( + 'POST', + self._uri + _path, + params=_params, + headers=_headers, + json=_json) + _decoder = ConjureDecoder() + return _decoder.decode(_response.json(), scout_versioning_api_Branch, self._return_none_for_unknown_union_types) -scout_catalog_IngestStatusV2.__name__ = "IngestStatusV2" -scout_catalog_IngestStatusV2.__qualname__ = "IngestStatusV2" -scout_catalog_IngestStatusV2.__module__ = "scout_service_api.scout_catalog" + def create_tag(self, auth_header: str, request: "scout_versioning_api_CreateTagRequest", resource_rid: str) -> "scout_versioning_api_Tag": + """ + Creates an immutable pointer to the provided commit. +Throws if the name is already used as a commit +pointer for this resource. +Throws if the provided commit doesn't exist. + """ + _headers: Dict[str, Any] = { + 'Accept': 'application/json', + 'Content-Type': 'application/json', + 'Authorization': auth_header, + } -class scout_catalog_IngestStatusV2Visitor: + _params: Dict[str, Any] = { + } - @abstractmethod - def _success(self, success: "scout_catalog_SuccessResult") -> Any: - pass + _path_params: Dict[str, Any] = { + 'resourceRid': resource_rid, + } - @abstractmethod - def _error(self, error: "scout_catalog_ErrorResult") -> Any: - pass + _json: Any = ConjureEncoder().default(request) - @abstractmethod - def _in_progress(self, in_progress: "scout_catalog_InProgressResult") -> Any: - pass + _path = '/scout/v1/versioning/{resourceRid}/tag' + _path = _path.format(**_path_params) + _response: Response = self._request( + 'POST', + self._uri + _path, + params=_params, + headers=_headers, + json=_json) -scout_catalog_IngestStatusV2Visitor.__name__ = "IngestStatusV2Visitor" -scout_catalog_IngestStatusV2Visitor.__qualname__ = "IngestStatusV2Visitor" -scout_catalog_IngestStatusV2Visitor.__module__ = "scout_service_api.scout_catalog" + _decoder = ConjureDecoder() + return _decoder.decode(_response.json(), scout_versioning_api_Tag, self._return_none_for_unknown_union_types) + def get_commit(self, auth_header: str, commit_id: str, resource_rid: str) -> "scout_versioning_api_Commit": + """ + Throws if the commit doesn't exist. + """ -class scout_catalog_Iso8601Timestamp(ConjureBeanType): + _headers: Dict[str, Any] = { + 'Accept': 'application/json', + 'Authorization': auth_header, + } - @builtins.classmethod - def _fields(cls) -> Dict[str, ConjureFieldDefinition]: - return { + _params: Dict[str, Any] = { } - __slots__: List[str] = [] + _path_params: Dict[str, Any] = { + 'resourceRid': resource_rid, + 'commitId': commit_id, + } + _json: Any = None + _path = '/scout/v1/versioning/{resourceRid}/commit/{commitId}' + _path = _path.format(**_path_params) -scout_catalog_Iso8601Timestamp.__name__ = "Iso8601Timestamp" -scout_catalog_Iso8601Timestamp.__qualname__ = "Iso8601Timestamp" -scout_catalog_Iso8601Timestamp.__module__ = "scout_service_api.scout_catalog" + _response: Response = self._request( + 'GET', + self._uri + _path, + params=_params, + headers=_headers, + json=_json) + _decoder = ConjureDecoder() + return _decoder.decode(_response.json(), scout_versioning_api_Commit, self._return_none_for_unknown_union_types) -class scout_catalog_ListDatasetsRequest(ConjureBeanType): + def batch_get_commits(self, auth_header: str, resource_and_commit_ids: List["scout_versioning_api_ResourceAndCommitId"] = None) -> List["scout_versioning_api_Commit"]: + """ + Filters out resources that are not authorized. + """ + resource_and_commit_ids = resource_and_commit_ids if resource_and_commit_ids is not None else [] - @builtins.classmethod - def _fields(cls) -> Dict[str, ConjureFieldDefinition]: - return { - 'include_filters': ConjureFieldDefinition('includeFilters', OptionalTypeWrapper[List[scout_catalog_DatasetFilter]]), - 'exclude_filters': ConjureFieldDefinition('excludeFilters', OptionalTypeWrapper[List[scout_catalog_DatasetFilter]]) + _headers: Dict[str, Any] = { + 'Accept': 'application/json', + 'Content-Type': 'application/json', + 'Authorization': auth_header, } - __slots__: List[str] = ['_include_filters', '_exclude_filters'] - - def __init__(self, exclude_filters: Optional[List["scout_catalog_DatasetFilter"]] = None, include_filters: Optional[List["scout_catalog_DatasetFilter"]] = None) -> None: - self._include_filters = include_filters - self._exclude_filters = exclude_filters + _params: Dict[str, Any] = { + } - @builtins.property - def include_filters(self) -> Optional[List["scout_catalog_DatasetFilter"]]: - return self._include_filters + _path_params: Dict[str, Any] = { + } - @builtins.property - def exclude_filters(self) -> Optional[List["scout_catalog_DatasetFilter"]]: - return self._exclude_filters + _json: Any = ConjureEncoder().default(resource_and_commit_ids) + _path = '/scout/v1/versioning/commit/batch-get' + _path = _path.format(**_path_params) -scout_catalog_ListDatasetsRequest.__name__ = "ListDatasetsRequest" -scout_catalog_ListDatasetsRequest.__qualname__ = "ListDatasetsRequest" -scout_catalog_ListDatasetsRequest.__module__ = "scout_service_api.scout_catalog" + _response: Response = self._request( + 'POST', + self._uri + _path, + params=_params, + headers=_headers, + json=_json) + _decoder = ConjureDecoder() + return _decoder.decode(_response.json(), List[scout_versioning_api_Commit], self._return_none_for_unknown_union_types) -class scout_catalog_RelativeTimestamp(ConjureBeanType): + def get_commit_by_branch(self, auth_header: str, branch_name: str, resource_rid: str) -> "scout_versioning_api_Commit": + """ + Returns the commit pointed to by the branch. +Throws if the branch doesn't exist. + """ + + _headers: Dict[str, Any] = { + 'Accept': 'application/json', + 'Authorization': auth_header, + } + + _params: Dict[str, Any] = { + } + + _path_params: Dict[str, Any] = { + 'resourceRid': resource_rid, + 'branchName': branch_name, + } + + _json: Any = None + + _path = '/scout/v1/versioning/{resourceRid}/branch/{branchName}/commit' + _path = _path.format(**_path_params) + + _response: Response = self._request( + 'GET', + self._uri + _path, + params=_params, + headers=_headers, + json=_json) + + _decoder = ConjureDecoder() + return _decoder.decode(_response.json(), scout_versioning_api_Commit, self._return_none_for_unknown_union_types) + + def get_commit_by_tag(self, auth_header: str, resource_rid: str, tag_name: str) -> "scout_versioning_api_Commit": + """ + Returns the commit pointed to by the tag. +Throws if the tag doesn't exist. + """ + + _headers: Dict[str, Any] = { + 'Accept': 'application/json', + 'Authorization': auth_header, + } + + _params: Dict[str, Any] = { + } + + _path_params: Dict[str, Any] = { + 'resourceRid': resource_rid, + 'tagName': tag_name, + } + + _json: Any = None + + _path = '/scout/v1/versioning/{resourceRid}/tag/{tagName}/commit' + _path = _path.format(**_path_params) + + _response: Response = self._request( + 'GET', + self._uri + _path, + params=_params, + headers=_headers, + json=_json) + + _decoder = ConjureDecoder() + return _decoder.decode(_response.json(), scout_versioning_api_Commit, self._return_none_for_unknown_union_types) + + def get_least_common_ancestor(self, auth_header: str, request: "scout_versioning_api_GetLeastCommonAncestorRequest", resource_rid: str) -> str: + """ + Returns the least common ancestor of the two commits. +Throws if either commit doesn't exist. + """ + + _headers: Dict[str, Any] = { + 'Accept': 'application/json', + 'Content-Type': 'application/json', + 'Authorization': auth_header, + } + + _params: Dict[str, Any] = { + } + + _path_params: Dict[str, Any] = { + 'resourceRid': resource_rid, + } + + _json: Any = ConjureEncoder().default(request) + + _path = '/scout/v1/versioning/{resourceRid}/commit/least-common-ancestor' + _path = _path.format(**_path_params) + + _response: Response = self._request( + 'POST', + self._uri + _path, + params=_params, + headers=_headers, + json=_json) + + _decoder = ConjureDecoder() + return _decoder.decode(_response.json(), scout_versioning_api_CommitId, self._return_none_for_unknown_union_types) + + def get_commit_history(self, auth_header: str, commit_id: str, resource_rid: str, next_page_token: Optional[str] = None, page_size: Optional[int] = None) -> "scout_versioning_api_CommitHistory": + """ + Returns the commit history sorted by creation time descending. +Excludes working state commits. +Throws if the commit doesn't exist. + """ + + _headers: Dict[str, Any] = { + 'Accept': 'application/json', + 'Authorization': auth_header, + } + + _params: Dict[str, Any] = { + 'pageSize': page_size, + 'nextPageToken': next_page_token, + } + + _path_params: Dict[str, Any] = { + 'resourceRid': resource_rid, + 'commitId': commit_id, + } + + _json: Any = None + + _path = '/scout/v1/versioning/{resourceRid}/commit/{commitId}/history' + _path = _path.format(**_path_params) + + _response: Response = self._request( + 'GET', + self._uri + _path, + params=_params, + headers=_headers, + json=_json) + + _decoder = ConjureDecoder() + return _decoder.decode(_response.json(), scout_versioning_api_CommitHistory, self._return_none_for_unknown_union_types) + + def persist_commits(self, auth_header: str, request: List["scout_versioning_api_ResourceAndCommitId"] = None) -> None: + """ + Persists the commits so that they are not compacted. +This operation is atomic - either all commits are persisted +or none are (in the case of an error). + """ + request = request if request is not None else [] + + _headers: Dict[str, Any] = { + 'Accept': 'application/json', + 'Content-Type': 'application/json', + 'Authorization': auth_header, + } + + _params: Dict[str, Any] = { + } + + _path_params: Dict[str, Any] = { + } + + _json: Any = ConjureEncoder().default(request) + + _path = '/scout/v1/versioning/commit/persist' + _path = _path.format(**_path_params) + + _response: Response = self._request( + 'POST', + self._uri + _path, + params=_params, + headers=_headers, + json=_json) + + return + + def get_branch(self, auth_header: str, branch_name: str, resource_rid: str) -> "scout_versioning_api_Branch": + """ + Throws if the branch doesn't exist. + """ + + _headers: Dict[str, Any] = { + 'Accept': 'application/json', + 'Authorization': auth_header, + } + + _params: Dict[str, Any] = { + } + + _path_params: Dict[str, Any] = { + 'resourceRid': resource_rid, + 'branchName': branch_name, + } + + _json: Any = None + + _path = '/scout/v1/versioning/{resourceRid}/branch/{branchName}' + _path = _path.format(**_path_params) + + _response: Response = self._request( + 'GET', + self._uri + _path, + params=_params, + headers=_headers, + json=_json) + + _decoder = ConjureDecoder() + return _decoder.decode(_response.json(), scout_versioning_api_Branch, self._return_none_for_unknown_union_types) + + def get_branches(self, auth_header: str, resource_rid: str) -> List["scout_versioning_api_Branch"]: + """ + Returns all branches for the resource in order of +most recently updated. + """ + + _headers: Dict[str, Any] = { + 'Accept': 'application/json', + 'Authorization': auth_header, + } + + _params: Dict[str, Any] = { + } + + _path_params: Dict[str, Any] = { + 'resourceRid': resource_rid, + } + + _json: Any = None + + _path = '/scout/v1/versioning/{resourceRid}/branch' + _path = _path.format(**_path_params) + + _response: Response = self._request( + 'GET', + self._uri + _path, + params=_params, + headers=_headers, + json=_json) + + _decoder = ConjureDecoder() + return _decoder.decode(_response.json(), List[scout_versioning_api_Branch], self._return_none_for_unknown_union_types) + + def batch_get_branches(self, auth_header: str, resource_and_branches: List["scout_versioning_api_ResourceAndBranchName"] = None) -> List["scout_versioning_api_Branch"]: + """ + Omits branches that are not authorized. + """ + resource_and_branches = resource_and_branches if resource_and_branches is not None else [] + + _headers: Dict[str, Any] = { + 'Accept': 'application/json', + 'Content-Type': 'application/json', + 'Authorization': auth_header, + } + + _params: Dict[str, Any] = { + } + + _path_params: Dict[str, Any] = { + } + + _json: Any = ConjureEncoder().default(resource_and_branches) + + _path = '/scout/v1/versioning/branch/batch-get' + _path = _path.format(**_path_params) + + _response: Response = self._request( + 'POST', + self._uri + _path, + params=_params, + headers=_headers, + json=_json) + + _decoder = ConjureDecoder() + return _decoder.decode(_response.json(), List[scout_versioning_api_Branch], self._return_none_for_unknown_union_types) + + def get_tag(self, auth_header: str, resource_rid: str, tag_name: str) -> "scout_versioning_api_Tag": + """ + Throws if the tag doesn't exist. + """ + + _headers: Dict[str, Any] = { + 'Accept': 'application/json', + 'Authorization': auth_header, + } + + _params: Dict[str, Any] = { + } + + _path_params: Dict[str, Any] = { + 'resourceRid': resource_rid, + 'tagName': tag_name, + } + + _json: Any = None + + _path = '/scout/v1/versioning/{resourceRid}/tag/{tagName}' + _path = _path.format(**_path_params) + + _response: Response = self._request( + 'GET', + self._uri + _path, + params=_params, + headers=_headers, + json=_json) + + _decoder = ConjureDecoder() + return _decoder.decode(_response.json(), scout_versioning_api_Tag, self._return_none_for_unknown_union_types) + + def batch_get_tags(self, auth_header: str, resource_and_commits: List["scout_versioning_api_ResourceAndCommitId"] = None) -> List["scout_versioning_api_Tag"]: + """ + Omits tags that are not authorized. + """ + resource_and_commits = resource_and_commits if resource_and_commits is not None else [] + + _headers: Dict[str, Any] = { + 'Accept': 'application/json', + 'Content-Type': 'application/json', + 'Authorization': auth_header, + } + + _params: Dict[str, Any] = { + } + + _path_params: Dict[str, Any] = { + } + + _json: Any = ConjureEncoder().default(resource_and_commits) + + _path = '/scout/v1/versioning/tag/batch-get' + _path = _path.format(**_path_params) + + _response: Response = self._request( + 'POST', + self._uri + _path, + params=_params, + headers=_headers, + json=_json) + + _decoder = ConjureDecoder() + return _decoder.decode(_response.json(), List[scout_versioning_api_Tag], self._return_none_for_unknown_union_types) + + def get_tags_by_resource(self, auth_header: str, resource_rid: str) -> List["scout_versioning_api_Tag"]: + """ + Returns all tags for the resource in order of +most recently created. + """ + + _headers: Dict[str, Any] = { + 'Accept': 'application/json', + 'Authorization': auth_header, + } + + _params: Dict[str, Any] = { + } + + _path_params: Dict[str, Any] = { + 'resourceRid': resource_rid, + } + + _json: Any = None + + _path = '/scout/v1/versioning/{resourceRid}/tag' + _path = _path.format(**_path_params) + + _response: Response = self._request( + 'GET', + self._uri + _path, + params=_params, + headers=_headers, + json=_json) + + _decoder = ConjureDecoder() + return _decoder.decode(_response.json(), List[scout_versioning_api_Tag], self._return_none_for_unknown_union_types) + + def delete_branch(self, auth_header: str, branch_name: str, resource_rid: str) -> None: + """ + Deletes the branch pointer. +Throws if the branch doesn't exist. +Throws if you attempt to delete the "main" branch. + """ + + _headers: Dict[str, Any] = { + 'Accept': 'application/json', + 'Authorization': auth_header, + } + + _params: Dict[str, Any] = { + } + + _path_params: Dict[str, Any] = { + 'resourceRid': resource_rid, + 'branchName': branch_name, + } + + _json: Any = None + + _path = '/scout/v1/versioning/{resourceRid}/branch/{branchName}' + _path = _path.format(**_path_params) + + _response: Response = self._request( + 'DELETE', + self._uri + _path, + params=_params, + headers=_headers, + json=_json) + + return + + def delete_branches(self, auth_header: str, resource_and_branches: List["scout_versioning_api_ResourceAndBranchName"] = None) -> None: + """ + Deletes the branch pointers. +Throws if any resource or branch is non-existent +or unauthorized. +Throws if any attempt is made to delete "main". + """ + resource_and_branches = resource_and_branches if resource_and_branches is not None else [] + + _headers: Dict[str, Any] = { + 'Accept': 'application/json', + 'Content-Type': 'application/json', + 'Authorization': auth_header, + } + + _params: Dict[str, Any] = { + } + + _path_params: Dict[str, Any] = { + } + + _json: Any = ConjureEncoder().default(resource_and_branches) + + _path = '/scout/v1/versioning/branch/batch-delete' + _path = _path.format(**_path_params) + + _response: Response = self._request( + 'POST', + self._uri + _path, + params=_params, + headers=_headers, + json=_json) + + return + + def delete_tag(self, auth_header: str, resource_rid: str, tag_name: str) -> None: + """ + Deletes the tag pointer. +Throws if the tag doesn't exist. + """ + + _headers: Dict[str, Any] = { + 'Accept': 'application/json', + 'Authorization': auth_header, + } + + _params: Dict[str, Any] = { + } + + _path_params: Dict[str, Any] = { + 'resourceRid': resource_rid, + 'tagName': tag_name, + } + + _json: Any = None + + _path = '/scout/v1/versioning/{resourceRid}/tag/{tagName}' + _path = _path.format(**_path_params) + + _response: Response = self._request( + 'DELETE', + self._uri + _path, + params=_params, + headers=_headers, + json=_json) + + return + + +scout_VersioningService.__name__ = "VersioningService" +scout_VersioningService.__qualname__ = "VersioningService" +scout_VersioningService.__module__ = "scout_service_api.scout" + + +class scout_api_ChannelLocator(ConjureBeanType): + + @builtins.classmethod + def _fields(cls) -> Dict[str, ConjureFieldDefinition]: + return { + 'data_source_ref': ConjureFieldDefinition('dataSourceRef', scout_api_DataSourceRefName), + 'channel': ConjureFieldDefinition('channel', scout_api_Channel), + 'tags': ConjureFieldDefinition('tags', Dict[scout_series_TagName, scout_series_TagValue]) + } + + __slots__: List[str] = ['_data_source_ref', '_channel', '_tags'] + + def __init__(self, channel: str, data_source_ref: str, tags: Dict[str, str]) -> None: + self._data_source_ref = data_source_ref + self._channel = channel + self._tags = tags + + @builtins.property + def data_source_ref(self) -> str: + return self._data_source_ref + + @builtins.property + def channel(self) -> str: + return self._channel + + @builtins.property + def tags(self) -> Dict[str, str]: + return self._tags + + +scout_api_ChannelLocator.__name__ = "ChannelLocator" +scout_api_ChannelLocator.__qualname__ = "ChannelLocator" +scout_api_ChannelLocator.__module__ = "scout_service_api.scout_api" + + +class scout_asset_api_AddDataScopesToAssetRequest(ConjureBeanType): + + @builtins.classmethod + def _fields(cls) -> Dict[str, ConjureFieldDefinition]: + return { + 'data_scopes': ConjureFieldDefinition('dataScopes', List[scout_asset_api_CreateAssetDataScope]) + } + + __slots__: List[str] = ['_data_scopes'] + + def __init__(self, data_scopes: List["scout_asset_api_CreateAssetDataScope"]) -> None: + self._data_scopes = data_scopes + + @builtins.property + def data_scopes(self) -> List["scout_asset_api_CreateAssetDataScope"]: + """ + The data scopes to add to the asset. + +Throws if any existing data scopes have data scope names that conflict with the data scope names +in the request. + """ + return self._data_scopes + + +scout_asset_api_AddDataScopesToAssetRequest.__name__ = "AddDataScopesToAssetRequest" +scout_asset_api_AddDataScopesToAssetRequest.__qualname__ = "AddDataScopesToAssetRequest" +scout_asset_api_AddDataScopesToAssetRequest.__module__ = "scout_service_api.scout_asset_api" + + +class scout_asset_api_Asset(ConjureBeanType): + + @builtins.classmethod + def _fields(cls) -> Dict[str, ConjureFieldDefinition]: + return { + 'rid': ConjureFieldDefinition('rid', scout_rids_api_AssetRid), + 'title': ConjureFieldDefinition('title', str), + 'description': ConjureFieldDefinition('description', OptionalTypeWrapper[str]), + 'properties': ConjureFieldDefinition('properties', Dict[scout_run_api_PropertyName, scout_run_api_PropertyValue]), + 'labels': ConjureFieldDefinition('labels', List[scout_run_api_Label]), + 'links': ConjureFieldDefinition('links', List[scout_run_api_Link]), + 'data_scopes': ConjureFieldDefinition('dataScopes', List[scout_asset_api_AssetDataScope]), + 'created_by': ConjureFieldDefinition('createdBy', OptionalTypeWrapper[str]), + 'created_at': ConjureFieldDefinition('createdAt', str), + 'updated_at': ConjureFieldDefinition('updatedAt', str), + 'attachments': ConjureFieldDefinition('attachments', List[scout_rids_api_AttachmentRid]) + } + + __slots__: List[str] = ['_rid', '_title', '_description', '_properties', '_labels', '_links', '_data_scopes', '_created_by', '_created_at', '_updated_at', '_attachments'] + + def __init__(self, attachments: List[str], created_at: str, data_scopes: List["scout_asset_api_AssetDataScope"], labels: List[str], links: List["scout_run_api_Link"], properties: Dict[str, str], rid: str, title: str, updated_at: str, created_by: Optional[str] = None, description: Optional[str] = None) -> None: + self._rid = rid + self._title = title + self._description = description + self._properties = properties + self._labels = labels + self._links = links + self._data_scopes = data_scopes + self._created_by = created_by + self._created_at = created_at + self._updated_at = updated_at + self._attachments = attachments + + @builtins.property + def rid(self) -> str: + return self._rid + + @builtins.property + def title(self) -> str: + return self._title + + @builtins.property + def description(self) -> Optional[str]: + return self._description + + @builtins.property + def properties(self) -> Dict[str, str]: + return self._properties + + @builtins.property + def labels(self) -> List[str]: + """ + Labels associated with the asset. These labels do not have a time dimension. +To associate labels with a range of time, create a time range on the asset with labels. + """ + return self._labels + + @builtins.property + def links(self) -> List["scout_run_api_Link"]: + """ + Links associated with the asset. These links do not have a time dimension. +To associate links with a range of time, create a time range on the asset with links. + """ + return self._links + + @builtins.property + def data_scopes(self) -> List["scout_asset_api_AssetDataScope"]: + """ + The data scopes associated with the asset. + """ + return self._data_scopes + + @builtins.property + def created_by(self) -> Optional[str]: + return self._created_by + + @builtins.property + def created_at(self) -> str: + return self._created_at + + @builtins.property + def updated_at(self) -> str: + return self._updated_at + + @builtins.property + def attachments(self) -> List[str]: + return self._attachments + + +scout_asset_api_Asset.__name__ = "Asset" +scout_asset_api_Asset.__qualname__ = "Asset" +scout_asset_api_Asset.__module__ = "scout_service_api.scout_asset_api" + + +class scout_asset_api_AssetDataScope(ConjureBeanType): + + @builtins.classmethod + def _fields(cls) -> Dict[str, ConjureFieldDefinition]: + return { + 'data_scope_name': ConjureFieldDefinition('dataScopeName', scout_asset_api_DataScopeName), + 'data_source': ConjureFieldDefinition('dataSource', scout_run_api_DataSource), + 'offset': ConjureFieldDefinition('offset', OptionalTypeWrapper[scout_run_api_Duration]), + 'timestamp_type': ConjureFieldDefinition('timestampType', scout_run_api_WeakTimestampType), + 'series_tags': ConjureFieldDefinition('seriesTags', Dict[scout_asset_api_SeriesTagName, scout_asset_api_SeriesTagValue]) + } + + __slots__: List[str] = ['_data_scope_name', '_data_source', '_offset', '_timestamp_type', '_series_tags'] + + def __init__(self, data_scope_name: str, data_source: "scout_run_api_DataSource", series_tags: Dict[str, str], timestamp_type: "scout_run_api_WeakTimestampType", offset: Optional["scout_run_api_Duration"] = None) -> None: + self._data_scope_name = data_scope_name + self._data_source = data_source + self._offset = offset + self._timestamp_type = timestamp_type + self._series_tags = series_tags + + @builtins.property + def data_scope_name(self) -> str: + """ + The name of the data scope. The name is guaranteed to be be unique within the context of an asset. + """ + return self._data_scope_name + + @builtins.property + def data_source(self) -> "scout_run_api_DataSource": + return self._data_source + + @builtins.property + def offset(self) -> Optional["scout_run_api_Duration"]: + return self._offset + + @builtins.property + def timestamp_type(self) -> "scout_run_api_WeakTimestampType": + return self._timestamp_type + + @builtins.property + def series_tags(self) -> Dict[str, str]: + """ + Filters the data source to series matching these tag values. The filtered set of series should be +the ones that belong to the asset. + """ + return self._series_tags + + +scout_asset_api_AssetDataScope.__name__ = "AssetDataScope" +scout_asset_api_AssetDataScope.__qualname__ = "AssetDataScope" +scout_asset_api_AssetDataScope.__module__ = "scout_service_api.scout_asset_api" + + +class scout_asset_api_ChannelMetadata(ConjureBeanType): + + @builtins.classmethod + def _fields(cls) -> Dict[str, ConjureFieldDefinition]: + return { + 'name': ConjureFieldDefinition('name', scout_asset_api_Channel), + 'data_source': ConjureFieldDefinition('dataSource', scout_run_api_DataSource), + 'unit': ConjureFieldDefinition('unit', OptionalTypeWrapper[scout_asset_api_Unit]), + 'description': ConjureFieldDefinition('description', OptionalTypeWrapper[str]), + 'data_type': ConjureFieldDefinition('dataType', OptionalTypeWrapper[scout_asset_api_SeriesDataType]) + } + + __slots__: List[str] = ['_name', '_data_source', '_unit', '_description', '_data_type'] + + def __init__(self, data_source: "scout_run_api_DataSource", name: str, data_type: Optional["scout_asset_api_SeriesDataType"] = None, description: Optional[str] = None, unit: Optional["scout_asset_api_Unit"] = None) -> None: + self._name = name + self._data_source = data_source + self._unit = unit + self._description = description + self._data_type = data_type + + @builtins.property + def name(self) -> str: + return self._name + + @builtins.property + def data_source(self) -> "scout_run_api_DataSource": + return self._data_source + + @builtins.property + def unit(self) -> Optional["scout_asset_api_Unit"]: + return self._unit + + @builtins.property + def description(self) -> Optional[str]: + return self._description + + @builtins.property + def data_type(self) -> Optional["scout_asset_api_SeriesDataType"]: + return self._data_type + + +scout_asset_api_ChannelMetadata.__name__ = "ChannelMetadata" +scout_asset_api_ChannelMetadata.__qualname__ = "ChannelMetadata" +scout_asset_api_ChannelMetadata.__module__ = "scout_service_api.scout_asset_api" + + +class scout_asset_api_CreateAssetDataScope(ConjureBeanType): + + @builtins.classmethod + def _fields(cls) -> Dict[str, ConjureFieldDefinition]: + return { + 'data_scope_name': ConjureFieldDefinition('dataScopeName', scout_asset_api_DataScopeName), + 'data_source': ConjureFieldDefinition('dataSource', scout_run_api_DataSource), + 'offset': ConjureFieldDefinition('offset', OptionalTypeWrapper[scout_run_api_Duration]), + 'series_tags': ConjureFieldDefinition('seriesTags', Dict[scout_asset_api_SeriesTagName, scout_asset_api_SeriesTagValue]) + } + + __slots__: List[str] = ['_data_scope_name', '_data_source', '_offset', '_series_tags'] + + def __init__(self, data_scope_name: str, data_source: "scout_run_api_DataSource", series_tags: Dict[str, str], offset: Optional["scout_run_api_Duration"] = None) -> None: + self._data_scope_name = data_scope_name + self._data_source = data_source + self._offset = offset + self._series_tags = series_tags + + @builtins.property + def data_scope_name(self) -> str: + """ + The name of the data scope. The name is guaranteed to be be unique within the context of an asset. + """ + return self._data_scope_name + + @builtins.property + def data_source(self) -> "scout_run_api_DataSource": + return self._data_source + + @builtins.property + def offset(self) -> Optional["scout_run_api_Duration"]: + return self._offset + + @builtins.property + def series_tags(self) -> Dict[str, str]: + """ + Filters the data source to series matching these tag values. The filtered set of series should be +the ones that belong to the asset. + """ + return self._series_tags + + +scout_asset_api_CreateAssetDataScope.__name__ = "CreateAssetDataScope" +scout_asset_api_CreateAssetDataScope.__qualname__ = "CreateAssetDataScope" +scout_asset_api_CreateAssetDataScope.__module__ = "scout_service_api.scout_asset_api" + + +class scout_asset_api_CreateAssetRequest(ConjureBeanType): + + @builtins.classmethod + def _fields(cls) -> Dict[str, ConjureFieldDefinition]: + return { + 'title': ConjureFieldDefinition('title', str), + 'description': ConjureFieldDefinition('description', OptionalTypeWrapper[str]), + 'properties': ConjureFieldDefinition('properties', Dict[scout_run_api_PropertyName, scout_run_api_PropertyValue]), + 'labels': ConjureFieldDefinition('labels', List[scout_run_api_Label]), + 'links': ConjureFieldDefinition('links', List[scout_run_api_Link]), + 'data_scopes': ConjureFieldDefinition('dataScopes', List[scout_asset_api_CreateAssetDataScope]), + 'attachments': ConjureFieldDefinition('attachments', List[scout_rids_api_AttachmentRid]) + } + + __slots__: List[str] = ['_title', '_description', '_properties', '_labels', '_links', '_data_scopes', '_attachments'] + + def __init__(self, attachments: List[str], data_scopes: List["scout_asset_api_CreateAssetDataScope"], labels: List[str], links: List["scout_run_api_Link"], properties: Dict[str, str], title: str, description: Optional[str] = None) -> None: + self._title = title + self._description = description + self._properties = properties + self._labels = labels + self._links = links + self._data_scopes = data_scopes + self._attachments = attachments + + @builtins.property + def title(self) -> str: + return self._title + + @builtins.property + def description(self) -> Optional[str]: + return self._description + + @builtins.property + def properties(self) -> Dict[str, str]: + return self._properties + + @builtins.property + def labels(self) -> List[str]: + return self._labels + + @builtins.property + def links(self) -> List["scout_run_api_Link"]: + return self._links + + @builtins.property + def data_scopes(self) -> List["scout_asset_api_CreateAssetDataScope"]: + """ + The data scopes associated with the asset. + """ + return self._data_scopes + + @builtins.property + def attachments(self) -> List[str]: + return self._attachments + + +scout_asset_api_CreateAssetRequest.__name__ = "CreateAssetRequest" +scout_asset_api_CreateAssetRequest.__qualname__ = "CreateAssetRequest" +scout_asset_api_CreateAssetRequest.__module__ = "scout_service_api.scout_asset_api" + + +class scout_asset_api_SearchAssetChannelsRequest(ConjureBeanType): + + @builtins.classmethod + def _fields(cls) -> Dict[str, ConjureFieldDefinition]: + return { + 'search_text': ConjureFieldDefinition('searchText', str), + 'data_scope_name_filter': ConjureFieldDefinition('dataScopeNameFilter', OptionalTypeWrapper[List[scout_asset_api_DataScopeName]]), + 'next_page_token': ConjureFieldDefinition('nextPageToken', OptionalTypeWrapper[scout_api_Token]), + 'page_size': ConjureFieldDefinition('pageSize', OptionalTypeWrapper[int]) + } + + __slots__: List[str] = ['_search_text', '_data_scope_name_filter', '_next_page_token', '_page_size'] + + def __init__(self, search_text: str, data_scope_name_filter: Optional[List[str]] = None, next_page_token: Optional[str] = None, page_size: Optional[int] = None) -> None: + self._search_text = search_text + self._data_scope_name_filter = data_scope_name_filter + self._next_page_token = next_page_token + self._page_size = page_size + + @builtins.property + def search_text(self) -> str: + return self._search_text + + @builtins.property + def data_scope_name_filter(self) -> Optional[List[str]]: + """ + If not empty, will filter to channels from the selected data scope names. + """ + return self._data_scope_name_filter + + @builtins.property + def next_page_token(self) -> Optional[str]: + return self._next_page_token + + @builtins.property + def page_size(self) -> Optional[int]: + """ + Defaults to 1000. Will throw if larger than 10000. + """ + return self._page_size + + +scout_asset_api_SearchAssetChannelsRequest.__name__ = "SearchAssetChannelsRequest" +scout_asset_api_SearchAssetChannelsRequest.__qualname__ = "SearchAssetChannelsRequest" +scout_asset_api_SearchAssetChannelsRequest.__module__ = "scout_service_api.scout_asset_api" + + +class scout_asset_api_SearchAssetChannelsResponse(ConjureBeanType): + + @builtins.classmethod + def _fields(cls) -> Dict[str, ConjureFieldDefinition]: + return { + 'results': ConjureFieldDefinition('results', List[scout_asset_api_ChannelMetadata]), + 'next_page_token': ConjureFieldDefinition('nextPageToken', OptionalTypeWrapper[scout_api_Token]) + } + + __slots__: List[str] = ['_results', '_next_page_token'] + + def __init__(self, results: List["scout_asset_api_ChannelMetadata"], next_page_token: Optional[str] = None) -> None: + self._results = results + self._next_page_token = next_page_token + + @builtins.property + def results(self) -> List["scout_asset_api_ChannelMetadata"]: + return self._results + + @builtins.property + def next_page_token(self) -> Optional[str]: + return self._next_page_token + + +scout_asset_api_SearchAssetChannelsResponse.__name__ = "SearchAssetChannelsResponse" +scout_asset_api_SearchAssetChannelsResponse.__qualname__ = "SearchAssetChannelsResponse" +scout_asset_api_SearchAssetChannelsResponse.__module__ = "scout_service_api.scout_asset_api" + + +class scout_asset_api_SearchAssetsQuery(ConjureUnionType): + _search_text: Optional[str] = None + _label: Optional[str] = None + _property: Optional["scout_run_api_Property"] = None + _and_: Optional[List["scout_asset_api_SearchAssetsQuery"]] = None + _or_: Optional[List["scout_asset_api_SearchAssetsQuery"]] = None + + @builtins.classmethod + def _options(cls) -> Dict[str, ConjureFieldDefinition]: + return { + 'search_text': ConjureFieldDefinition('searchText', str), + 'label': ConjureFieldDefinition('label', scout_run_api_Label), + 'property': ConjureFieldDefinition('property', scout_run_api_Property), + 'and_': ConjureFieldDefinition('and', List[scout_asset_api_SearchAssetsQuery]), + 'or_': ConjureFieldDefinition('or', List[scout_asset_api_SearchAssetsQuery]) + } + + def __init__( + self, + search_text: Optional[str] = None, + label: Optional[str] = None, + property: Optional["scout_run_api_Property"] = None, + and_: Optional[List["scout_asset_api_SearchAssetsQuery"]] = None, + or_: Optional[List["scout_asset_api_SearchAssetsQuery"]] = None, + type_of_union: Optional[str] = None + ) -> None: + if type_of_union is None: + if (search_text is not None) + (label is not None) + (property is not None) + (and_ is not None) + (or_ is not None) != 1: + raise ValueError('a union must contain a single member') + + if search_text is not None: + self._search_text = search_text + self._type = 'searchText' + if label is not None: + self._label = label + self._type = 'label' + if property is not None: + self._property = property + self._type = 'property' + if and_ is not None: + self._and_ = and_ + self._type = 'and' + if or_ is not None: + self._or_ = or_ + self._type = 'or' + + elif type_of_union == 'searchText': + if search_text is None: + raise ValueError('a union value must not be None') + self._search_text = search_text + self._type = 'searchText' + elif type_of_union == 'label': + if label is None: + raise ValueError('a union value must not be None') + self._label = label + self._type = 'label' + elif type_of_union == 'property': + if property is None: + raise ValueError('a union value must not be None') + self._property = property + self._type = 'property' + elif type_of_union == 'and': + if and_ is None: + raise ValueError('a union value must not be None') + self._and_ = and_ + self._type = 'and' + elif type_of_union == 'or': + if or_ is None: + raise ValueError('a union value must not be None') + self._or_ = or_ + self._type = 'or' + + @builtins.property + def search_text(self) -> Optional[str]: + return self._search_text + + @builtins.property + def label(self) -> Optional[str]: + return self._label + + @builtins.property + def property(self) -> Optional["scout_run_api_Property"]: + return self._property + + @builtins.property + def and_(self) -> Optional[List["scout_asset_api_SearchAssetsQuery"]]: + return self._and_ + + @builtins.property + def or_(self) -> Optional[List["scout_asset_api_SearchAssetsQuery"]]: + return self._or_ + + def accept(self, visitor) -> Any: + if not isinstance(visitor, scout_asset_api_SearchAssetsQueryVisitor): + raise ValueError('{} is not an instance of scout_asset_api_SearchAssetsQueryVisitor'.format(visitor.__class__.__name__)) + if self._type == 'searchText' and self.search_text is not None: + return visitor._search_text(self.search_text) + if self._type == 'label' and self.label is not None: + return visitor._label(self.label) + if self._type == 'property' and self.property is not None: + return visitor._property(self.property) + if self._type == 'and' and self.and_ is not None: + return visitor._and(self.and_) + if self._type == 'or' and self.or_ is not None: + return visitor._or(self.or_) + + +scout_asset_api_SearchAssetsQuery.__name__ = "SearchAssetsQuery" +scout_asset_api_SearchAssetsQuery.__qualname__ = "SearchAssetsQuery" +scout_asset_api_SearchAssetsQuery.__module__ = "scout_service_api.scout_asset_api" + + +class scout_asset_api_SearchAssetsQueryVisitor: + + @abstractmethod + def _search_text(self, search_text: str) -> Any: + pass + + @abstractmethod + def _label(self, label: str) -> Any: + pass + + @abstractmethod + def _property(self, property: "scout_run_api_Property") -> Any: + pass + + @abstractmethod + def _and(self, and_: List["scout_asset_api_SearchAssetsQuery"]) -> Any: + pass + + @abstractmethod + def _or(self, or_: List["scout_asset_api_SearchAssetsQuery"]) -> Any: + pass + + +scout_asset_api_SearchAssetsQueryVisitor.__name__ = "SearchAssetsQueryVisitor" +scout_asset_api_SearchAssetsQueryVisitor.__qualname__ = "SearchAssetsQueryVisitor" +scout_asset_api_SearchAssetsQueryVisitor.__module__ = "scout_service_api.scout_asset_api" + + +class scout_asset_api_SearchAssetsRequest(ConjureBeanType): + + @builtins.classmethod + def _fields(cls) -> Dict[str, ConjureFieldDefinition]: + return { + 'sort': ConjureFieldDefinition('sort', scout_asset_api_SortOptions), + 'page_size': ConjureFieldDefinition('pageSize', OptionalTypeWrapper[int]), + 'next_page_token': ConjureFieldDefinition('nextPageToken', OptionalTypeWrapper[scout_api_Token]), + 'query': ConjureFieldDefinition('query', scout_asset_api_SearchAssetsQuery), + 'archived_statuses': ConjureFieldDefinition('archivedStatuses', OptionalTypeWrapper[List[scout_rids_api_ArchivedStatus]]) + } + + __slots__: List[str] = ['_sort', '_page_size', '_next_page_token', '_query', '_archived_statuses'] + + def __init__(self, query: "scout_asset_api_SearchAssetsQuery", sort: "scout_asset_api_SortOptions", archived_statuses: Optional[List["scout_rids_api_ArchivedStatus"]] = None, next_page_token: Optional[str] = None, page_size: Optional[int] = None) -> None: + self._sort = sort + self._page_size = page_size + self._next_page_token = next_page_token + self._query = query + self._archived_statuses = archived_statuses + + @builtins.property + def sort(self) -> "scout_asset_api_SortOptions": + return self._sort + + @builtins.property + def page_size(self) -> Optional[int]: + """ + Page sizes greater than 10_000 will be rejected + """ + return self._page_size + + @builtins.property + def next_page_token(self) -> Optional[str]: + return self._next_page_token + + @builtins.property + def query(self) -> "scout_asset_api_SearchAssetsQuery": + return self._query + + @builtins.property + def archived_statuses(self) -> Optional[List["scout_rids_api_ArchivedStatus"]]: + """ + Default search status is NOT_ARCHIVED if none are provided. Allows for including archived assets in search. + """ + return self._archived_statuses + + +scout_asset_api_SearchAssetsRequest.__name__ = "SearchAssetsRequest" +scout_asset_api_SearchAssetsRequest.__qualname__ = "SearchAssetsRequest" +scout_asset_api_SearchAssetsRequest.__module__ = "scout_service_api.scout_asset_api" + + +class scout_asset_api_SearchAssetsResponse(ConjureBeanType): + + @builtins.classmethod + def _fields(cls) -> Dict[str, ConjureFieldDefinition]: + return { + 'results': ConjureFieldDefinition('results', List[scout_asset_api_Asset]), + 'next_page_token': ConjureFieldDefinition('nextPageToken', OptionalTypeWrapper[scout_api_Token]) + } + + __slots__: List[str] = ['_results', '_next_page_token'] + + def __init__(self, results: List["scout_asset_api_Asset"], next_page_token: Optional[str] = None) -> None: + self._results = results + self._next_page_token = next_page_token + + @builtins.property + def results(self) -> List["scout_asset_api_Asset"]: + return self._results + + @builtins.property + def next_page_token(self) -> Optional[str]: + return self._next_page_token + + +scout_asset_api_SearchAssetsResponse.__name__ = "SearchAssetsResponse" +scout_asset_api_SearchAssetsResponse.__qualname__ = "SearchAssetsResponse" +scout_asset_api_SearchAssetsResponse.__module__ = "scout_service_api.scout_asset_api" + + +class scout_asset_api_SeriesDataType(ConjureEnumType): + + DOUBLE = 'DOUBLE' + '''DOUBLE''' + STRING = 'STRING' + '''STRING''' + UNKNOWN = 'UNKNOWN' + '''UNKNOWN''' + + def __reduce_ex__(self, proto): + return self.__class__, (self.name,) + + +scout_asset_api_SeriesDataType.__name__ = "SeriesDataType" +scout_asset_api_SeriesDataType.__qualname__ = "SeriesDataType" +scout_asset_api_SeriesDataType.__module__ = "scout_service_api.scout_asset_api" + + +class scout_asset_api_SortField(ConjureEnumType): + + CREATED_AT = 'CREATED_AT' + '''CREATED_AT''' + UNKNOWN = 'UNKNOWN' + '''UNKNOWN''' + + def __reduce_ex__(self, proto): + return self.__class__, (self.name,) + + +scout_asset_api_SortField.__name__ = "SortField" +scout_asset_api_SortField.__qualname__ = "SortField" +scout_asset_api_SortField.__module__ = "scout_service_api.scout_asset_api" + + +class scout_asset_api_SortOptions(ConjureBeanType): + + @builtins.classmethod + def _fields(cls) -> Dict[str, ConjureFieldDefinition]: + return { + 'is_descending': ConjureFieldDefinition('isDescending', bool), + 'field': ConjureFieldDefinition('field', scout_asset_api_SortField) + } + + __slots__: List[str] = ['_is_descending', '_field'] + + def __init__(self, field: "scout_asset_api_SortField", is_descending: bool) -> None: + self._is_descending = is_descending + self._field = field + + @builtins.property + def is_descending(self) -> bool: + return self._is_descending + + @builtins.property + def field(self) -> "scout_asset_api_SortField": + return self._field + + +scout_asset_api_SortOptions.__name__ = "SortOptions" +scout_asset_api_SortOptions.__qualname__ = "SortOptions" +scout_asset_api_SortOptions.__module__ = "scout_service_api.scout_asset_api" + + +class scout_asset_api_Unit(ConjureBeanType): + + @builtins.classmethod + def _fields(cls) -> Dict[str, ConjureFieldDefinition]: + return { + 'name': ConjureFieldDefinition('name', str), + 'symbol': ConjureFieldDefinition('symbol', str) + } + + __slots__: List[str] = ['_name', '_symbol'] + + def __init__(self, name: str, symbol: str) -> None: + self._name = name + self._symbol = symbol + + @builtins.property + def name(self) -> str: + return self._name + + @builtins.property + def symbol(self) -> str: + return self._symbol + + +scout_asset_api_Unit.__name__ = "Unit" +scout_asset_api_Unit.__qualname__ = "Unit" +scout_asset_api_Unit.__module__ = "scout_service_api.scout_asset_api" + + +class scout_asset_api_UpdateAssetRequest(ConjureBeanType): + + @builtins.classmethod + def _fields(cls) -> Dict[str, ConjureFieldDefinition]: + return { + 'title': ConjureFieldDefinition('title', OptionalTypeWrapper[str]), + 'description': ConjureFieldDefinition('description', OptionalTypeWrapper[str]), + 'properties': ConjureFieldDefinition('properties', OptionalTypeWrapper[Dict[scout_run_api_PropertyName, scout_run_api_PropertyValue]]), + 'labels': ConjureFieldDefinition('labels', OptionalTypeWrapper[List[scout_run_api_Label]]), + 'links': ConjureFieldDefinition('links', OptionalTypeWrapper[List[scout_run_api_Link]]), + 'data_scopes': ConjureFieldDefinition('dataScopes', OptionalTypeWrapper[List[scout_asset_api_CreateAssetDataScope]]) + } + + __slots__: List[str] = ['_title', '_description', '_properties', '_labels', '_links', '_data_scopes'] + + def __init__(self, data_scopes: Optional[List["scout_asset_api_CreateAssetDataScope"]] = None, description: Optional[str] = None, labels: Optional[List[str]] = None, links: Optional[List["scout_run_api_Link"]] = None, properties: Optional[Dict[str, str]] = None, title: Optional[str] = None) -> None: + self._title = title + self._description = description + self._properties = properties + self._labels = labels + self._links = links + self._data_scopes = data_scopes + + @builtins.property + def title(self) -> Optional[str]: + return self._title + + @builtins.property + def description(self) -> Optional[str]: + return self._description + + @builtins.property + def properties(self) -> Optional[Dict[str, str]]: + return self._properties + + @builtins.property + def labels(self) -> Optional[List[str]]: + return self._labels + + @builtins.property + def links(self) -> Optional[List["scout_run_api_Link"]]: + return self._links + + @builtins.property + def data_scopes(self) -> Optional[List["scout_asset_api_CreateAssetDataScope"]]: + """ + The data scopes for the asset. This will replace all existing data scopes with the scopes specified. + """ + return self._data_scopes + + +scout_asset_api_UpdateAssetRequest.__name__ = "UpdateAssetRequest" +scout_asset_api_UpdateAssetRequest.__qualname__ = "UpdateAssetRequest" +scout_asset_api_UpdateAssetRequest.__module__ = "scout_service_api.scout_asset_api" + + +class scout_asset_api_UpdateAttachmentsRequest(ConjureBeanType): + + @builtins.classmethod + def _fields(cls) -> Dict[str, ConjureFieldDefinition]: + return { + 'attachments_to_add': ConjureFieldDefinition('attachmentsToAdd', List[scout_rids_api_AttachmentRid]), + 'attachments_to_remove': ConjureFieldDefinition('attachmentsToRemove', List[scout_rids_api_AttachmentRid]) + } + + __slots__: List[str] = ['_attachments_to_add', '_attachments_to_remove'] + + def __init__(self, attachments_to_add: List[str], attachments_to_remove: List[str]) -> None: + self._attachments_to_add = attachments_to_add + self._attachments_to_remove = attachments_to_remove + + @builtins.property + def attachments_to_add(self) -> List[str]: + return self._attachments_to_add + + @builtins.property + def attachments_to_remove(self) -> List[str]: + return self._attachments_to_remove + + +scout_asset_api_UpdateAttachmentsRequest.__name__ = "UpdateAttachmentsRequest" +scout_asset_api_UpdateAttachmentsRequest.__qualname__ = "UpdateAttachmentsRequest" +scout_asset_api_UpdateAttachmentsRequest.__module__ = "scout_service_api.scout_asset_api" + + +class scout_assets_AssetService(Service): + """ + An asset is a physical entity within an organization, such as a vehicle or ground station. Assets are comprised +of some metadata about the data, as well as a set of data scopes that define the data belonging to the asset. API +endpoints allow for CRUD operations on asset objects. + """ + + def create_asset(self, auth_header: str, details: "scout_asset_api_CreateAssetRequest") -> "scout_asset_api_Asset": + + _headers: Dict[str, Any] = { + 'Accept': 'application/json', + 'Content-Type': 'application/json', + 'Authorization': auth_header, + } + + _params: Dict[str, Any] = { + } + + _path_params: Dict[str, Any] = { + } + + _json: Any = ConjureEncoder().default(details) + + _path = '/scout/v1/asset' + _path = _path.format(**_path_params) + + _response: Response = self._request( + 'POST', + self._uri + _path, + params=_params, + headers=_headers, + json=_json) + + _decoder = ConjureDecoder() + return _decoder.decode(_response.json(), scout_asset_api_Asset, self._return_none_for_unknown_union_types) + + def update_asset(self, auth_header: str, details: "scout_asset_api_UpdateAssetRequest", rid: str) -> "scout_asset_api_Asset": + + _headers: Dict[str, Any] = { + 'Accept': 'application/json', + 'Content-Type': 'application/json', + 'Authorization': auth_header, + } + + _params: Dict[str, Any] = { + } + + _path_params: Dict[str, Any] = { + 'rid': rid, + } + + _json: Any = ConjureEncoder().default(details) + + _path = '/scout/v1/asset/{rid}' + _path = _path.format(**_path_params) + + _response: Response = self._request( + 'PUT', + self._uri + _path, + params=_params, + headers=_headers, + json=_json) + + _decoder = ConjureDecoder() + return _decoder.decode(_response.json(), scout_asset_api_Asset, self._return_none_for_unknown_union_types) + + def add_data_scopes_to_asset(self, asset_rid: str, auth_header: str, request: "scout_asset_api_AddDataScopesToAssetRequest") -> "scout_asset_api_Asset": + """ + Adds data scopes to an asset. + +Throws if the asset already has data scopes with data scope names matching those in the request. + """ + + _headers: Dict[str, Any] = { + 'Accept': 'application/json', + 'Content-Type': 'application/json', + 'Authorization': auth_header, + } + + _params: Dict[str, Any] = { + } + + _path_params: Dict[str, Any] = { + 'assetRid': asset_rid, + } + + _json: Any = ConjureEncoder().default(request) + + _path = '/scout/v1/asset/{assetRid}/data-sources' + _path = _path.format(**_path_params) + + _response: Response = self._request( + 'POST', + self._uri + _path, + params=_params, + headers=_headers, + json=_json) + + _decoder = ConjureDecoder() + return _decoder.decode(_response.json(), scout_asset_api_Asset, self._return_none_for_unknown_union_types) + + def get_assets(self, auth_header: str, rids: List[str] = None) -> Dict[str, "scout_asset_api_Asset"]: + rids = rids if rids is not None else [] + + _headers: Dict[str, Any] = { + 'Accept': 'application/json', + 'Content-Type': 'application/json', + 'Authorization': auth_header, + } + + _params: Dict[str, Any] = { + } + + _path_params: Dict[str, Any] = { + } + + _json: Any = ConjureEncoder().default(rids) + + _path = '/scout/v1/asset/multiple' + _path = _path.format(**_path_params) + + _response: Response = self._request( + 'POST', + self._uri + _path, + params=_params, + headers=_headers, + json=_json) + + _decoder = ConjureDecoder() + return _decoder.decode(_response.json(), Dict[scout_rids_api_AssetRid, scout_asset_api_Asset], self._return_none_for_unknown_union_types) + + def archive(self, auth_header: str, rid: str) -> None: + + _headers: Dict[str, Any] = { + 'Accept': 'application/json', + 'Authorization': auth_header, + } + + _params: Dict[str, Any] = { + } + + _path_params: Dict[str, Any] = { + 'rid': rid, + } + + _json: Any = None + + _path = '/scout/v1/archive/{rid}' + _path = _path.format(**_path_params) + + _response: Response = self._request( + 'POST', + self._uri + _path, + params=_params, + headers=_headers, + json=_json) + + return + + def unarchive(self, auth_header: str, rid: str) -> None: + + _headers: Dict[str, Any] = { + 'Accept': 'application/json', + 'Authorization': auth_header, + } + + _params: Dict[str, Any] = { + } + + _path_params: Dict[str, Any] = { + 'rid': rid, + } + + _json: Any = None + + _path = '/scout/v1/unarchive/{rid}' + _path = _path.format(**_path_params) + + _response: Response = self._request( + 'POST', + self._uri + _path, + params=_params, + headers=_headers, + json=_json) + + return + + def search_assets(self, auth_header: str, search_assets_request: "scout_asset_api_SearchAssetsRequest") -> "scout_asset_api_SearchAssetsResponse": + + _headers: Dict[str, Any] = { + 'Accept': 'application/json', + 'Content-Type': 'application/json', + 'Authorization': auth_header, + } + + _params: Dict[str, Any] = { + } + + _path_params: Dict[str, Any] = { + } + + _json: Any = ConjureEncoder().default(search_assets_request) + + _path = '/scout/v1/search-assets' + _path = _path.format(**_path_params) + + _response: Response = self._request( + 'POST', + self._uri + _path, + params=_params, + headers=_headers, + json=_json) + + _decoder = ConjureDecoder() + return _decoder.decode(_response.json(), scout_asset_api_SearchAssetsResponse, self._return_none_for_unknown_union_types) + + def update_asset_attachments(self, auth_header: str, request: "scout_asset_api_UpdateAttachmentsRequest", rid: str) -> None: + """ + Update the attachments associated with an asset. + """ + + _headers: Dict[str, Any] = { + 'Accept': 'application/json', + 'Content-Type': 'application/json', + 'Authorization': auth_header, + } + + _params: Dict[str, Any] = { + } + + _path_params: Dict[str, Any] = { + 'rid': rid, + } + + _json: Any = ConjureEncoder().default(request) + + _path = '/scout/v1/asset/{rid}/attachments' + _path = _path.format(**_path_params) + + _response: Response = self._request( + 'POST', + self._uri + _path, + params=_params, + headers=_headers, + json=_json) + + return + + +scout_assets_AssetService.__name__ = "AssetService" +scout_assets_AssetService.__qualname__ = "AssetService" +scout_assets_AssetService.__module__ = "scout_service_api.scout_assets" + + +class scout_catalog_AbsoluteTimestamp(ConjureUnionType): + _iso8601: Optional["scout_catalog_Iso8601Timestamp"] = None + _epoch_of_time_unit: Optional["scout_catalog_EpochTimestamp"] = None + _custom_format: Optional["scout_catalog_CustomTimestamp"] = None + + @builtins.classmethod + def _options(cls) -> Dict[str, ConjureFieldDefinition]: + return { + 'iso8601': ConjureFieldDefinition('iso8601', scout_catalog_Iso8601Timestamp), + 'epoch_of_time_unit': ConjureFieldDefinition('epochOfTimeUnit', scout_catalog_EpochTimestamp), + 'custom_format': ConjureFieldDefinition('customFormat', scout_catalog_CustomTimestamp) + } + + def __init__( + self, + iso8601: Optional["scout_catalog_Iso8601Timestamp"] = None, + epoch_of_time_unit: Optional["scout_catalog_EpochTimestamp"] = None, + custom_format: Optional["scout_catalog_CustomTimestamp"] = None, + type_of_union: Optional[str] = None + ) -> None: + if type_of_union is None: + if (iso8601 is not None) + (epoch_of_time_unit is not None) + (custom_format is not None) != 1: + raise ValueError('a union must contain a single member') + + if iso8601 is not None: + self._iso8601 = iso8601 + self._type = 'iso8601' + if epoch_of_time_unit is not None: + self._epoch_of_time_unit = epoch_of_time_unit + self._type = 'epochOfTimeUnit' + if custom_format is not None: + self._custom_format = custom_format + self._type = 'customFormat' + + elif type_of_union == 'iso8601': + if iso8601 is None: + raise ValueError('a union value must not be None') + self._iso8601 = iso8601 + self._type = 'iso8601' + elif type_of_union == 'epochOfTimeUnit': + if epoch_of_time_unit is None: + raise ValueError('a union value must not be None') + self._epoch_of_time_unit = epoch_of_time_unit + self._type = 'epochOfTimeUnit' + elif type_of_union == 'customFormat': + if custom_format is None: + raise ValueError('a union value must not be None') + self._custom_format = custom_format + self._type = 'customFormat' + + @builtins.property + def iso8601(self) -> Optional["scout_catalog_Iso8601Timestamp"]: + return self._iso8601 + + @builtins.property + def epoch_of_time_unit(self) -> Optional["scout_catalog_EpochTimestamp"]: + return self._epoch_of_time_unit + + @builtins.property + def custom_format(self) -> Optional["scout_catalog_CustomTimestamp"]: + return self._custom_format + + def accept(self, visitor) -> Any: + if not isinstance(visitor, scout_catalog_AbsoluteTimestampVisitor): + raise ValueError('{} is not an instance of scout_catalog_AbsoluteTimestampVisitor'.format(visitor.__class__.__name__)) + if self._type == 'iso8601' and self.iso8601 is not None: + return visitor._iso8601(self.iso8601) + if self._type == 'epochOfTimeUnit' and self.epoch_of_time_unit is not None: + return visitor._epoch_of_time_unit(self.epoch_of_time_unit) + if self._type == 'customFormat' and self.custom_format is not None: + return visitor._custom_format(self.custom_format) + + +scout_catalog_AbsoluteTimestamp.__name__ = "AbsoluteTimestamp" +scout_catalog_AbsoluteTimestamp.__qualname__ = "AbsoluteTimestamp" +scout_catalog_AbsoluteTimestamp.__module__ = "scout_service_api.scout_catalog" + + +class scout_catalog_AbsoluteTimestampVisitor: + + @abstractmethod + def _iso8601(self, iso8601: "scout_catalog_Iso8601Timestamp") -> Any: + pass + + @abstractmethod + def _epoch_of_time_unit(self, epoch_of_time_unit: "scout_catalog_EpochTimestamp") -> Any: + pass + + @abstractmethod + def _custom_format(self, custom_format: "scout_catalog_CustomTimestamp") -> Any: + pass + + +scout_catalog_AbsoluteTimestampVisitor.__name__ = "AbsoluteTimestampVisitor" +scout_catalog_AbsoluteTimestampVisitor.__qualname__ = "AbsoluteTimestampVisitor" +scout_catalog_AbsoluteTimestampVisitor.__module__ = "scout_service_api.scout_catalog" + + +class scout_catalog_AddFileToDataset(ConjureBeanType): + + @builtins.classmethod + def _fields(cls) -> Dict[str, ConjureFieldDefinition]: + return { + 'handle': ConjureFieldDefinition('handle', scout_catalog_Handle), + 'timestamp_metadata': ConjureFieldDefinition('timestampMetadata', OptionalTypeWrapper[scout_catalog_TimestampMetadata]) + } + + __slots__: List[str] = ['_handle', '_timestamp_metadata'] + + def __init__(self, handle: "scout_catalog_Handle", timestamp_metadata: Optional["scout_catalog_TimestampMetadata"] = None) -> None: + self._handle = handle + self._timestamp_metadata = timestamp_metadata + + @builtins.property + def handle(self) -> "scout_catalog_Handle": + return self._handle + + @builtins.property + def timestamp_metadata(self) -> Optional["scout_catalog_TimestampMetadata"]: + return self._timestamp_metadata + + +scout_catalog_AddFileToDataset.__name__ = "AddFileToDataset" +scout_catalog_AddFileToDataset.__qualname__ = "AddFileToDataset" +scout_catalog_AddFileToDataset.__module__ = "scout_service_api.scout_catalog" + + +class scout_catalog_AllPropertiesAndLabelsResponse(ConjureBeanType): + + @builtins.classmethod + def _fields(cls) -> Dict[str, ConjureFieldDefinition]: + return { + 'properties': ConjureFieldDefinition('properties', Dict[datasource_PropertyName, List[datasource_PropertyValue]]), + 'labels': ConjureFieldDefinition('labels', List[datasource_Label]) + } + + __slots__: List[str] = ['_properties', '_labels'] + + def __init__(self, labels: List[str], properties: Dict[str, List[str]]) -> None: + self._properties = properties + self._labels = labels + + @builtins.property + def properties(self) -> Dict[str, List[str]]: + return self._properties + + @builtins.property + def labels(self) -> List[str]: + return self._labels + + +scout_catalog_AllPropertiesAndLabelsResponse.__name__ = "AllPropertiesAndLabelsResponse" +scout_catalog_AllPropertiesAndLabelsResponse.__qualname__ = "AllPropertiesAndLabelsResponse" +scout_catalog_AllPropertiesAndLabelsResponse.__module__ = "scout_service_api.scout_catalog" + + +class scout_catalog_Bounds(ConjureBeanType): + + @builtins.classmethod + def _fields(cls) -> Dict[str, ConjureFieldDefinition]: + return { + 'start': ConjureFieldDefinition('start', datasource_Timestamp), + 'end': ConjureFieldDefinition('end', datasource_Timestamp), + 'type': ConjureFieldDefinition('type', datasource_TimestampType) + } + + __slots__: List[str] = ['_start', '_end', '_type'] + + def __init__(self, end: "datasource_Timestamp", start: "datasource_Timestamp", type: "datasource_TimestampType") -> None: + self._start = start + self._end = end + self._type = type + + @builtins.property + def start(self) -> "datasource_Timestamp": + return self._start + + @builtins.property + def end(self) -> "datasource_Timestamp": + return self._end + + @builtins.property + def type(self) -> "datasource_TimestampType": + return self._type + + +scout_catalog_Bounds.__name__ = "Bounds" +scout_catalog_Bounds.__qualname__ = "Bounds" +scout_catalog_Bounds.__module__ = "scout_service_api.scout_catalog" + + +class scout_catalog_CatalogService(Service): + """ + The Catalog Service provides the ability to query for information about Datasets that are stored in +the Nominal platform. A Dataset is the Nominal representation of data that has been uploaded to Nominal via +a file, primarily CSV. + """ + + def get_enriched_dataset(self, auth_header: str, dataset_uuid: str) -> "scout_catalog_EnrichedDataset": + + _headers: Dict[str, Any] = { + 'Accept': 'application/json', + 'Authorization': auth_header, + } + + _params: Dict[str, Any] = { + } + + _path_params: Dict[str, Any] = { + 'datasetUuid': dataset_uuid, + } + + _json: Any = None + + _path = '/catalog/v1/datasets/{datasetUuid}' + _path = _path.format(**_path_params) + + _response: Response = self._request( + 'GET', + self._uri + _path, + params=_params, + headers=_headers, + json=_json) + + _decoder = ConjureDecoder() + return _decoder.decode(_response.json(), scout_catalog_EnrichedDataset, self._return_none_for_unknown_union_types) + + def get_enriched_datasets(self, auth_header: str, get_datasets_request: "scout_catalog_GetDatasetsRequest") -> List["scout_catalog_EnrichedDataset"]: + + _headers: Dict[str, Any] = { + 'Accept': 'application/json', + 'Content-Type': 'application/json', + 'Authorization': auth_header, + } + + _params: Dict[str, Any] = { + } + + _path_params: Dict[str, Any] = { + } + + _json: Any = ConjureEncoder().default(get_datasets_request) + + _path = '/catalog/v1/datasets/multiple' + _path = _path.format(**_path_params) + + _response: Response = self._request( + 'POST', + self._uri + _path, + params=_params, + headers=_headers, + json=_json) + + _decoder = ConjureDecoder() + return _decoder.decode(_response.json(), List[scout_catalog_EnrichedDataset], self._return_none_for_unknown_union_types) + + def get_dataset(self, auth_header: str, dataset_uuid: str) -> "scout_catalog_Dataset": + + _headers: Dict[str, Any] = { + 'Accept': 'application/json', + 'Authorization': auth_header, + } + + _params: Dict[str, Any] = { + } + + _path_params: Dict[str, Any] = { + 'datasetUuid': dataset_uuid, + } + + _json: Any = None + + _path = '/catalog/v1/datasets-simple/{datasetUuid}' + _path = _path.format(**_path_params) + + _response: Response = self._request( + 'GET', + self._uri + _path, + params=_params, + headers=_headers, + json=_json) + + _decoder = ConjureDecoder() + return _decoder.decode(_response.json(), scout_catalog_Dataset, self._return_none_for_unknown_union_types) + + def get_datasets(self, auth_header: str, get_datasets_request: "scout_catalog_GetDatasetsRequest") -> List["scout_catalog_Dataset"]: + + _headers: Dict[str, Any] = { + 'Accept': 'application/json', + 'Content-Type': 'application/json', + 'Authorization': auth_header, + } + + _params: Dict[str, Any] = { + } + + _path_params: Dict[str, Any] = { + } + + _json: Any = ConjureEncoder().default(get_datasets_request) + + _path = '/catalog/v1/datasets-simple/multiple' + _path = _path.format(**_path_params) + + _response: Response = self._request( + 'POST', + self._uri + _path, + params=_params, + headers=_headers, + json=_json) + + _decoder = ConjureDecoder() + return _decoder.decode(_response.json(), List[scout_catalog_Dataset], self._return_none_for_unknown_union_types) + + def get_dataset_file(self, auth_header: str, dataset_rid: str, file_id: str) -> "scout_catalog_DatasetFile": + + _headers: Dict[str, Any] = { + 'Accept': 'application/json', + 'Authorization': auth_header, + } + + _params: Dict[str, Any] = { + } + + _path_params: Dict[str, Any] = { + 'datasetRid': dataset_rid, + 'fileId': file_id, + } + + _json: Any = None + + _path = '/catalog/v1/dataset/{datasetRid}/file/{fileId}' + _path = _path.format(**_path_params) + + _response: Response = self._request( + 'GET', + self._uri + _path, + params=_params, + headers=_headers, + json=_json) + + _decoder = ConjureDecoder() + return _decoder.decode(_response.json(), scout_catalog_DatasetFile, self._return_none_for_unknown_union_types) + + def search_datasets_by_text(self, auth_header: str, request: "scout_catalog_SearchDatasetsByTextRequest") -> "scout_catalog_SearchDatasetsByTextResponse": + + _headers: Dict[str, Any] = { + 'Accept': 'application/json', + 'Content-Type': 'application/json', + 'Authorization': auth_header, + } + + _params: Dict[str, Any] = { + } + + _path_params: Dict[str, Any] = { + } + + _json: Any = ConjureEncoder().default(request) + + _path = '/catalog/v1/search-datasets' + _path = _path.format(**_path_params) + + _response: Response = self._request( + 'POST', + self._uri + _path, + params=_params, + headers=_headers, + json=_json) + + _decoder = ConjureDecoder() + return _decoder.decode(_response.json(), scout_catalog_SearchDatasetsByTextResponse, self._return_none_for_unknown_union_types) + + def search_datasets(self, auth_header: str, request: "scout_catalog_SearchDatasetsRequest") -> "scout_catalog_SearchDatasetsResponse": + + _headers: Dict[str, Any] = { + 'Accept': 'application/json', + 'Content-Type': 'application/json', + 'Authorization': auth_header, + } + + _params: Dict[str, Any] = { + } + + _path_params: Dict[str, Any] = { + } + + _json: Any = ConjureEncoder().default(request) + + _path = '/catalog/v1/search-datasets-v2' + _path = _path.format(**_path_params) + + _response: Response = self._request( + 'POST', + self._uri + _path, + params=_params, + headers=_headers, + json=_json) + + _decoder = ConjureDecoder() + return _decoder.decode(_response.json(), scout_catalog_SearchDatasetsResponse, self._return_none_for_unknown_union_types) + + def update_dataset_ingest_status_v2(self, auth_header: str, details: "scout_catalog_UpdateIngestStatusV2") -> "scout_catalog_IngestStatusV2": + + _headers: Dict[str, Any] = { + 'Accept': 'application/json', + 'Content-Type': 'application/json', + 'Authorization': auth_header, + } + + _params: Dict[str, Any] = { + } + + _path_params: Dict[str, Any] = { + } + + _json: Any = ConjureEncoder().default(details) + + _path = '/catalog/v1/datasets/ingest-status-v2' + _path = _path.format(**_path_params) + + _response: Response = self._request( + 'PUT', + self._uri + _path, + params=_params, + headers=_headers, + json=_json) + + _decoder = ConjureDecoder() + return _decoder.decode(_response.json(), scout_catalog_IngestStatusV2, self._return_none_for_unknown_union_types) + + def get_ingest_progress_v2(self, auth_header: str, dataset_rid: str) -> "scout_catalog_IngestProgressV2": + + _headers: Dict[str, Any] = { + 'Accept': 'application/json', + 'Authorization': auth_header, + } + + _params: Dict[str, Any] = { + } + + _path_params: Dict[str, Any] = { + 'datasetRid': dataset_rid, + } + + _json: Any = None + + _path = '/catalog/v1/datasets/{datasetRid}/ingest-progress-v2' + _path = _path.format(**_path_params) + + _response: Response = self._request( + 'GET', + self._uri + _path, + params=_params, + headers=_headers, + json=_json) + + _decoder = ConjureDecoder() + return _decoder.decode(_response.json(), scout_catalog_IngestProgressV2, self._return_none_for_unknown_union_types) + + def get_handle_for_dataset(self, auth_header: str, dataset: str) -> "scout_catalog_Handle": + + _headers: Dict[str, Any] = { + 'Accept': 'application/json', + 'Authorization': auth_header, + } + + _params: Dict[str, Any] = { + } + + _path_params: Dict[str, Any] = { + 'dataset': dataset, + } + + _json: Any = None + + _path = '/catalog/v1/datasets/{dataset}/handle' + _path = _path.format(**_path_params) + + _response: Response = self._request( + 'GET', + self._uri + _path, + params=_params, + headers=_headers, + json=_json) + + _decoder = ConjureDecoder() + return _decoder.decode(_response.json(), scout_catalog_Handle, self._return_none_for_unknown_union_types) + + def get_series_details(self, auth_header: str, get_series_details: "scout_catalog_GetSeriesDetailsRequest") -> "scout_catalog_SeriesDetails": + + _headers: Dict[str, Any] = { + 'Accept': 'application/json', + 'Content-Type': 'application/json', + 'Authorization': auth_header, + } + + _params: Dict[str, Any] = { + } + + _path_params: Dict[str, Any] = { + } + + _json: Any = ConjureEncoder().default(get_series_details) + + _path = '/catalog/v1/series/details' + _path = _path.format(**_path_params) + + _response: Response = self._request( + 'POST', + self._uri + _path, + params=_params, + headers=_headers, + json=_json) + + _decoder = ConjureDecoder() + return _decoder.decode(_response.json(), scout_catalog_SeriesDetails, self._return_none_for_unknown_union_types) + + def create_dataset(self, auth_header: str, details: "scout_catalog_CreateDataset") -> "scout_catalog_EnrichedDataset": + + _headers: Dict[str, Any] = { + 'Accept': 'application/json', + 'Content-Type': 'application/json', + 'Authorization': auth_header, + } + + _params: Dict[str, Any] = { + } + + _path_params: Dict[str, Any] = { + } + + _json: Any = ConjureEncoder().default(details) + + _path = '/catalog/v1/datasets' + _path = _path.format(**_path_params) + + _response: Response = self._request( + 'POST', + self._uri + _path, + params=_params, + headers=_headers, + json=_json) + + _decoder = ConjureDecoder() + return _decoder.decode(_response.json(), scout_catalog_EnrichedDataset, self._return_none_for_unknown_union_types) + + def create_or_update_dataset(self, auth_header: str, details: "scout_catalog_CreateDataset") -> "scout_catalog_EnrichedDataset": + """ + Creates a dataset if the s3 path does not exist, otherwise updates the dataset + """ + + _headers: Dict[str, Any] = { + 'Accept': 'application/json', + 'Content-Type': 'application/json', + 'Authorization': auth_header, + } + + _params: Dict[str, Any] = { + } + + _path_params: Dict[str, Any] = { + } + + _json: Any = ConjureEncoder().default(details) + + _path = '/catalog/v1/datasets/create-or-update' + _path = _path.format(**_path_params) + + _response: Response = self._request( + 'POST', + self._uri + _path, + params=_params, + headers=_headers, + json=_json) + + _decoder = ConjureDecoder() + return _decoder.decode(_response.json(), scout_catalog_EnrichedDataset, self._return_none_for_unknown_union_types) + + def add_file_to_dataset(self, auth_header: str, dataset_rid: str, request: "scout_catalog_AddFileToDataset") -> "scout_catalog_DatasetFile": + """ + Adds a single file to an existing dataset. + """ + + _headers: Dict[str, Any] = { + 'Accept': 'application/json', + 'Content-Type': 'application/json', + 'Authorization': auth_header, + } + + _params: Dict[str, Any] = { + } + + _path_params: Dict[str, Any] = { + 'datasetRid': dataset_rid, + } + + _json: Any = ConjureEncoder().default(request) + + _path = '/catalog/v1/datasets/{datasetRid}/add-file' + _path = _path.format(**_path_params) + + _response: Response = self._request( + 'POST', + self._uri + _path, + params=_params, + headers=_headers, + json=_json) + + _decoder = ConjureDecoder() + return _decoder.decode(_response.json(), scout_catalog_DatasetFile, self._return_none_for_unknown_union_types) + + def list_dataset_files(self, auth_header: str, dataset_rid: str, next_page_token: Optional[str] = None) -> "scout_catalog_DatasetFilesPage": + + _headers: Dict[str, Any] = { + 'Accept': 'application/json', + 'Authorization': auth_header, + } + + _params: Dict[str, Any] = { + 'nextPageToken': next_page_token, + } + + _path_params: Dict[str, Any] = { + 'datasetRid': dataset_rid, + } + + _json: Any = None + + _path = '/catalog/v1/datasets/{datasetRid}/files' + _path = _path.format(**_path_params) + + _response: Response = self._request( + 'GET', + self._uri + _path, + params=_params, + headers=_headers, + json=_json) + + _decoder = ConjureDecoder() + return _decoder.decode(_response.json(), scout_catalog_DatasetFilesPage, self._return_none_for_unknown_union_types) + + def mark_file_ingest_successful(self, auth_header: str, dataset_rid: str, file_id: str, request: "scout_catalog_MarkFileIngestSuccessful") -> "scout_catalog_DatasetFile": + + _headers: Dict[str, Any] = { + 'Accept': 'application/json', + 'Content-Type': 'application/json', + 'Authorization': auth_header, + } + + _params: Dict[str, Any] = { + } + + _path_params: Dict[str, Any] = { + 'datasetRid': dataset_rid, + 'fileId': file_id, + } + + _json: Any = ConjureEncoder().default(request) + + _path = '/catalog/v1/datasets/{datasetRid}/file/{fileId}/success' + _path = _path.format(**_path_params) + + _response: Response = self._request( + 'PUT', + self._uri + _path, + params=_params, + headers=_headers, + json=_json) + + _decoder = ConjureDecoder() + return _decoder.decode(_response.json(), scout_catalog_DatasetFile, self._return_none_for_unknown_union_types) + + def mark_file_ingest_error(self, auth_header: str, dataset_rid: str, file_id: str, request: "scout_catalog_MarkFileIngestError") -> "scout_catalog_DatasetFile": + + _headers: Dict[str, Any] = { + 'Accept': 'application/json', + 'Content-Type': 'application/json', + 'Authorization': auth_header, + } + + _params: Dict[str, Any] = { + } + + _path_params: Dict[str, Any] = { + 'datasetRid': dataset_rid, + 'fileId': file_id, + } + + _json: Any = ConjureEncoder().default(request) + + _path = '/catalog/v1/datasets/{datasetRid}/file/{fileId}/error' + _path = _path.format(**_path_params) + + _response: Response = self._request( + 'PUT', + self._uri + _path, + params=_params, + headers=_headers, + json=_json) + + _decoder = ConjureDecoder() + return _decoder.decode(_response.json(), scout_catalog_DatasetFile, self._return_none_for_unknown_union_types) + + def update_dataset_metadata(self, auth_header: str, dataset_rid: str, request: "scout_catalog_UpdateDatasetMetadata") -> "scout_catalog_EnrichedDataset": + + _headers: Dict[str, Any] = { + 'Accept': 'application/json', + 'Content-Type': 'application/json', + 'Authorization': auth_header, + } + + _params: Dict[str, Any] = { + } + + _path_params: Dict[str, Any] = { + 'datasetRid': dataset_rid, + } + + _json: Any = ConjureEncoder().default(request) + + _path = '/catalog/v1/datasets/{datasetRid}' + _path = _path.format(**_path_params) + + _response: Response = self._request( + 'PUT', + self._uri + _path, + params=_params, + headers=_headers, + json=_json) + + _decoder = ConjureDecoder() + return _decoder.decode(_response.json(), scout_catalog_EnrichedDataset, self._return_none_for_unknown_union_types) + + def update_bounds(self, auth_header: str, request: "scout_catalog_UpdateBoundsRequest", rid: str) -> "scout_catalog_EnrichedDataset": + + _headers: Dict[str, Any] = { + 'Accept': 'application/json', + 'Content-Type': 'application/json', + 'Authorization': auth_header, + } + + _params: Dict[str, Any] = { + } + + _path_params: Dict[str, Any] = { + 'rid': rid, + } + + _json: Any = ConjureEncoder().default(request) + + _path = '/catalog/v1/datasets/{rid}/bounds' + _path = _path.format(**_path_params) + + _response: Response = self._request( + 'PUT', + self._uri + _path, + params=_params, + headers=_headers, + json=_json) + + _decoder = ConjureDecoder() + return _decoder.decode(_response.json(), scout_catalog_EnrichedDataset, self._return_none_for_unknown_union_types) + + def delete_dataset_series(self, auth_header: str, dataset_rid: str) -> "scout_catalog_DeleteSeriesResult": + + _headers: Dict[str, Any] = { + 'Accept': 'application/json', + 'Authorization': auth_header, + } + + _params: Dict[str, Any] = { + } + + _path_params: Dict[str, Any] = { + 'datasetRid': dataset_rid, + } + + _json: Any = None + + _path = '/catalog/v1/series/for-dataset/{datasetRid}' + _path = _path.format(**_path_params) + + _response: Response = self._request( + 'DELETE', + self._uri + _path, + params=_params, + headers=_headers, + json=_json) + + _decoder = ConjureDecoder() + return _decoder.decode(_response.json(), scout_catalog_DeleteSeriesResult, self._return_none_for_unknown_union_types) + + def archive_dataset(self, auth_header: str, dataset_rid: str) -> None: + """ + Archives a dataset, which will hide it from search results unless the includeArchived flag is set to true. The +dataset can still be directly accessed by its UUID/rid. + """ + + _headers: Dict[str, Any] = { + 'Accept': 'application/json', + 'Authorization': auth_header, + } + + _params: Dict[str, Any] = { + } + + _path_params: Dict[str, Any] = { + 'datasetRid': dataset_rid, + } + + _json: Any = None + + _path = '/catalog/v1/datasets/{datasetRid}/archive' + _path = _path.format(**_path_params) + + _response: Response = self._request( + 'POST', + self._uri + _path, + params=_params, + headers=_headers, + json=_json) + + return + + def unarchive_dataset(self, auth_header: str, dataset_rid: str) -> None: + """ + Undoes the archiving of a dataset. + """ + + _headers: Dict[str, Any] = { + 'Accept': 'application/json', + 'Authorization': auth_header, + } + + _params: Dict[str, Any] = { + } + + _path_params: Dict[str, Any] = { + 'datasetRid': dataset_rid, + } + + _json: Any = None + + _path = '/catalog/v1/datasets/{datasetRid}/unarchive' + _path = _path.format(**_path_params) + + _response: Response = self._request( + 'POST', + self._uri + _path, + params=_params, + headers=_headers, + json=_json) + + return + + def get_all_properties_and_labels(self, auth_header: str) -> "scout_catalog_AllPropertiesAndLabelsResponse": + + _headers: Dict[str, Any] = { + 'Accept': 'application/json', + 'Authorization': auth_header, + } + + _params: Dict[str, Any] = { + } + + _path_params: Dict[str, Any] = { + } + + _json: Any = None + + _path = '/catalog/v1/datasets/all-properties-labels' + _path = _path.format(**_path_params) + + _response: Response = self._request( + 'GET', + self._uri + _path, + params=_params, + headers=_headers, + json=_json) + + _decoder = ConjureDecoder() + return _decoder.decode(_response.json(), scout_catalog_AllPropertiesAndLabelsResponse, self._return_none_for_unknown_union_types) + + +scout_catalog_CatalogService.__name__ = "CatalogService" +scout_catalog_CatalogService.__qualname__ = "CatalogService" +scout_catalog_CatalogService.__module__ = "scout_service_api.scout_catalog" + + +class scout_catalog_Channel(ConjureBeanType): + + @builtins.classmethod + def _fields(cls) -> Dict[str, ConjureFieldDefinition]: + return { + 'uuid': ConjureFieldDefinition('uuid', str), + 'name': ConjureFieldDefinition('name', str), + 'dataset_uuid': ConjureFieldDefinition('datasetUuid', str) + } + + __slots__: List[str] = ['_uuid', '_name', '_dataset_uuid'] + + def __init__(self, dataset_uuid: str, name: str, uuid: str) -> None: + self._uuid = uuid + self._name = name + self._dataset_uuid = dataset_uuid + + @builtins.property + def uuid(self) -> str: + return self._uuid + + @builtins.property + def name(self) -> str: + return self._name + + @builtins.property + def dataset_uuid(self) -> str: + return self._dataset_uuid + + +scout_catalog_Channel.__name__ = "Channel" +scout_catalog_Channel.__qualname__ = "Channel" +scout_catalog_Channel.__module__ = "scout_service_api.scout_catalog" + + +class scout_catalog_ChannelConfig(ConjureBeanType): + + @builtins.classmethod + def _fields(cls) -> Dict[str, ConjureFieldDefinition]: + return { + 'prefix_tree_delimiter': ConjureFieldDefinition('prefixTreeDelimiter', OptionalTypeWrapper[str]) + } + + __slots__: List[str] = ['_prefix_tree_delimiter'] + + def __init__(self, prefix_tree_delimiter: Optional[str] = None) -> None: + self._prefix_tree_delimiter = prefix_tree_delimiter + + @builtins.property + def prefix_tree_delimiter(self) -> Optional[str]: + """ + If set, will construct a prefix tree for channels of the dataset using the given delimiter. + """ + return self._prefix_tree_delimiter + + +scout_catalog_ChannelConfig.__name__ = "ChannelConfig" +scout_catalog_ChannelConfig.__qualname__ = "ChannelConfig" +scout_catalog_ChannelConfig.__module__ = "scout_service_api.scout_catalog" + + +class scout_catalog_ChannelDetails(ConjureBeanType): + + @builtins.classmethod + def _fields(cls) -> Dict[str, ConjureFieldDefinition]: + return { + 'uuid': ConjureFieldDefinition('uuid', str), + 'name': ConjureFieldDefinition('name', str), + 'origin_metadata': ConjureFieldDefinition('originMetadata', Dict[str, str]), + 'csv_index': ConjureFieldDefinition('csvIndex', int), + 'dataset_uuid': ConjureFieldDefinition('datasetUuid', str), + 'handle': ConjureFieldDefinition('handle', scout_catalog_Handle) + } + + __slots__: List[str] = ['_uuid', '_name', '_origin_metadata', '_csv_index', '_dataset_uuid', '_handle'] + + def __init__(self, csv_index: int, dataset_uuid: str, handle: "scout_catalog_Handle", name: str, origin_metadata: Dict[str, str], uuid: str) -> None: + self._uuid = uuid + self._name = name + self._origin_metadata = origin_metadata + self._csv_index = csv_index + self._dataset_uuid = dataset_uuid + self._handle = handle + + @builtins.property + def uuid(self) -> str: + return self._uuid + + @builtins.property + def name(self) -> str: + return self._name + + @builtins.property + def origin_metadata(self) -> Dict[str, str]: + return self._origin_metadata + + @builtins.property + def csv_index(self) -> int: + return self._csv_index + + @builtins.property + def dataset_uuid(self) -> str: + return self._dataset_uuid + + @builtins.property + def handle(self) -> "scout_catalog_Handle": + return self._handle + + +scout_catalog_ChannelDetails.__name__ = "ChannelDetails" +scout_catalog_ChannelDetails.__qualname__ = "ChannelDetails" +scout_catalog_ChannelDetails.__module__ = "scout_service_api.scout_catalog" + + +class scout_catalog_CreateDataset(ConjureBeanType): + + @builtins.classmethod + def _fields(cls) -> Dict[str, ConjureFieldDefinition]: + return { + 'name': ConjureFieldDefinition('name', str), + 'handle': ConjureFieldDefinition('handle', scout_catalog_Handle), + 'metadata': ConjureFieldDefinition('metadata', Dict[str, str]), + 'origin_metadata': ConjureFieldDefinition('originMetadata', scout_catalog_DatasetOriginMetadata), + 'labels': ConjureFieldDefinition('labels', List[datasource_Label]), + 'properties': ConjureFieldDefinition('properties', Dict[datasource_PropertyName, datasource_PropertyValue]), + 'description': ConjureFieldDefinition('description', OptionalTypeWrapper[str]) + } + + __slots__: List[str] = ['_name', '_handle', '_metadata', '_origin_metadata', '_labels', '_properties', '_description'] + + def __init__(self, handle: "scout_catalog_Handle", labels: List[str], metadata: Dict[str, str], name: str, origin_metadata: "scout_catalog_DatasetOriginMetadata", properties: Dict[str, str], description: Optional[str] = None) -> None: + self._name = name + self._handle = handle + self._metadata = metadata + self._origin_metadata = origin_metadata + self._labels = labels + self._properties = properties + self._description = description + + @builtins.property + def name(self) -> str: + return self._name + + @builtins.property + def handle(self) -> "scout_catalog_Handle": + return self._handle + + @builtins.property + def metadata(self) -> Dict[str, str]: + return self._metadata + + @builtins.property + def origin_metadata(self) -> "scout_catalog_DatasetOriginMetadata": + return self._origin_metadata + + @builtins.property + def labels(self) -> List[str]: + return self._labels + + @builtins.property + def properties(self) -> Dict[str, str]: + return self._properties + + @builtins.property + def description(self) -> Optional[str]: + return self._description + + +scout_catalog_CreateDataset.__name__ = "CreateDataset" +scout_catalog_CreateDataset.__qualname__ = "CreateDataset" +scout_catalog_CreateDataset.__module__ = "scout_service_api.scout_catalog" + + +class scout_catalog_CustomTimestamp(ConjureBeanType): + + @builtins.classmethod + def _fields(cls) -> Dict[str, ConjureFieldDefinition]: + return { + 'format': ConjureFieldDefinition('format', str), + 'default_year': ConjureFieldDefinition('defaultYear', OptionalTypeWrapper[int]) + } + + __slots__: List[str] = ['_format', '_default_year'] + + def __init__(self, format: str, default_year: Optional[int] = None) -> None: + self._format = format + self._default_year = default_year + + @builtins.property + def format(self) -> str: + """ + The format string should be in the format of the `DateTimeFormatter` class in Java. + """ + return self._format + + @builtins.property + def default_year(self) -> Optional[int]: + """ + Year is accepted as an optional field for cases like IRIG time format, and will be assumed as current year if not provided. + """ + return self._default_year + + +scout_catalog_CustomTimestamp.__name__ = "CustomTimestamp" +scout_catalog_CustomTimestamp.__qualname__ = "CustomTimestamp" +scout_catalog_CustomTimestamp.__module__ = "scout_service_api.scout_catalog" + + +class scout_catalog_Dataset(ConjureBeanType): + + @builtins.classmethod + def _fields(cls) -> Dict[str, ConjureFieldDefinition]: + return { + 'rid': ConjureFieldDefinition('rid', str), + 'name': ConjureFieldDefinition('name', str), + 'handle': ConjureFieldDefinition('handle', scout_catalog_Handle), + 'description': ConjureFieldDefinition('description', OptionalTypeWrapper[str]), + 'origin_metadata': ConjureFieldDefinition('originMetadata', scout_catalog_DatasetOriginMetadata), + 'bounds': ConjureFieldDefinition('bounds', OptionalTypeWrapper[scout_catalog_Bounds]), + 'properties': ConjureFieldDefinition('properties', Dict[datasource_PropertyName, datasource_PropertyValue]), + 'labels': ConjureFieldDefinition('labels', List[datasource_Label]), + 'timestamp_type': ConjureFieldDefinition('timestampType', scout_catalog_WeakTimestampType) + } + + __slots__: List[str] = ['_rid', '_name', '_handle', '_description', '_origin_metadata', '_bounds', '_properties', '_labels', '_timestamp_type'] + + def __init__(self, handle: "scout_catalog_Handle", labels: List[str], name: str, origin_metadata: "scout_catalog_DatasetOriginMetadata", properties: Dict[str, str], rid: str, timestamp_type: "scout_catalog_WeakTimestampType", bounds: Optional["scout_catalog_Bounds"] = None, description: Optional[str] = None) -> None: + self._rid = rid + self._name = name + self._handle = handle + self._description = description + self._origin_metadata = origin_metadata + self._bounds = bounds + self._properties = properties + self._labels = labels + self._timestamp_type = timestamp_type + + @builtins.property + def rid(self) -> str: + return self._rid + + @builtins.property + def name(self) -> str: + return self._name + + @builtins.property + def handle(self) -> "scout_catalog_Handle": + return self._handle + + @builtins.property + def description(self) -> Optional[str]: + return self._description + + @builtins.property + def origin_metadata(self) -> "scout_catalog_DatasetOriginMetadata": + return self._origin_metadata + + @builtins.property + def bounds(self) -> Optional["scout_catalog_Bounds"]: + return self._bounds + + @builtins.property + def properties(self) -> Dict[str, str]: + return self._properties + + @builtins.property + def labels(self) -> List[str]: + return self._labels + + @builtins.property + def timestamp_type(self) -> "scout_catalog_WeakTimestampType": + return self._timestamp_type + + +scout_catalog_Dataset.__name__ = "Dataset" +scout_catalog_Dataset.__qualname__ = "Dataset" +scout_catalog_Dataset.__module__ = "scout_service_api.scout_catalog" + + +class scout_catalog_DatasetFile(ConjureBeanType): + + @builtins.classmethod + def _fields(cls) -> Dict[str, ConjureFieldDefinition]: + return { + 'id': ConjureFieldDefinition('id', datasource_DatasetFileId), + 'dataset_rid': ConjureFieldDefinition('datasetRid', datasource_DatasetRid), + 'name': ConjureFieldDefinition('name', str), + 'handle': ConjureFieldDefinition('handle', scout_catalog_Handle), + 'bounds': ConjureFieldDefinition('bounds', OptionalTypeWrapper[scout_catalog_Bounds]), + 'uploaded_at': ConjureFieldDefinition('uploadedAt', str), + 'ingested_at': ConjureFieldDefinition('ingestedAt', OptionalTypeWrapper[str]), + 'timestamp_metadata': ConjureFieldDefinition('timestampMetadata', OptionalTypeWrapper[scout_catalog_TimestampMetadata]) + } + + __slots__: List[str] = ['_id', '_dataset_rid', '_name', '_handle', '_bounds', '_uploaded_at', '_ingested_at', '_timestamp_metadata'] + + def __init__(self, dataset_rid: str, handle: "scout_catalog_Handle", id: str, name: str, uploaded_at: str, bounds: Optional["scout_catalog_Bounds"] = None, ingested_at: Optional[str] = None, timestamp_metadata: Optional["scout_catalog_TimestampMetadata"] = None) -> None: + self._id = id + self._dataset_rid = dataset_rid + self._name = name + self._handle = handle + self._bounds = bounds + self._uploaded_at = uploaded_at + self._ingested_at = ingested_at + self._timestamp_metadata = timestamp_metadata + + @builtins.property + def id(self) -> str: + return self._id + + @builtins.property + def dataset_rid(self) -> str: + return self._dataset_rid + + @builtins.property + def name(self) -> str: + return self._name + + @builtins.property + def handle(self) -> "scout_catalog_Handle": + return self._handle + + @builtins.property + def bounds(self) -> Optional["scout_catalog_Bounds"]: + return self._bounds + + @builtins.property + def uploaded_at(self) -> str: + """ + Timestamp that the file was received and stored, but not processed or made available to consumers. + """ + return self._uploaded_at + + @builtins.property + def ingested_at(self) -> Optional[str]: + """ + Timestamp that the file is ingested at and made available for processing. If the file has failed to be +ingested for any reason or is still being processed, then this value will be empty. + """ + return self._ingested_at + + @builtins.property + def timestamp_metadata(self) -> Optional["scout_catalog_TimestampMetadata"]: + return self._timestamp_metadata + + +scout_catalog_DatasetFile.__name__ = "DatasetFile" +scout_catalog_DatasetFile.__qualname__ = "DatasetFile" +scout_catalog_DatasetFile.__module__ = "scout_service_api.scout_catalog" + + +class scout_catalog_DatasetFilesPage(ConjureBeanType): + + @builtins.classmethod + def _fields(cls) -> Dict[str, ConjureFieldDefinition]: + return { + 'files': ConjureFieldDefinition('files', List[scout_catalog_DatasetFile]), + 'next_page': ConjureFieldDefinition('nextPage', OptionalTypeWrapper[datasource_Token]) + } + + __slots__: List[str] = ['_files', '_next_page'] + + def __init__(self, files: List["scout_catalog_DatasetFile"], next_page: Optional[str] = None) -> None: + self._files = files + self._next_page = next_page + + @builtins.property + def files(self) -> List["scout_catalog_DatasetFile"]: + return self._files + + @builtins.property + def next_page(self) -> Optional[str]: + return self._next_page + + +scout_catalog_DatasetFilesPage.__name__ = "DatasetFilesPage" +scout_catalog_DatasetFilesPage.__qualname__ = "DatasetFilesPage" +scout_catalog_DatasetFilesPage.__module__ = "scout_service_api.scout_catalog" + + +class scout_catalog_DatasetFilter(ConjureBeanType): + + @builtins.classmethod + def _fields(cls) -> Dict[str, ConjureFieldDefinition]: + return { + 'name': ConjureFieldDefinition('name', str), + 'value': ConjureFieldDefinition('value', str) + } + + __slots__: List[str] = ['_name', '_value'] + + def __init__(self, name: str, value: str) -> None: + self._name = name + self._value = value + + @builtins.property + def name(self) -> str: + return self._name + + @builtins.property + def value(self) -> str: + return self._value + + +scout_catalog_DatasetFilter.__name__ = "DatasetFilter" +scout_catalog_DatasetFilter.__qualname__ = "DatasetFilter" +scout_catalog_DatasetFilter.__module__ = "scout_service_api.scout_catalog" + + +class scout_catalog_DatasetOriginMetadata(ConjureBeanType): + + @builtins.classmethod + def _fields(cls) -> Dict[str, ConjureFieldDefinition]: + return { + 'path': ConjureFieldDefinition('path', OptionalTypeWrapper[str]), + 'x_series_is_absolute': ConjureFieldDefinition('xSeriesIsAbsolute', OptionalTypeWrapper[bool]), + 'schema_directive_path': ConjureFieldDefinition('schemaDirectivePath', OptionalTypeWrapper[str]), + 'x_series_column_name': ConjureFieldDefinition('xSeriesColumnName', OptionalTypeWrapper[str]), + 'x_series_time_unit': ConjureFieldDefinition('xSeriesTimeUnit', OptionalTypeWrapper[scout_catalog_TimeUnit]), + 'timestamp_metadata': ConjureFieldDefinition('timestampMetadata', OptionalTypeWrapper[scout_catalog_TimestampMetadata]), + 'channel_config': ConjureFieldDefinition('channelConfig', OptionalTypeWrapper[scout_catalog_ChannelConfig]) + } + + __slots__: List[str] = ['_path', '_x_series_is_absolute', '_schema_directive_path', '_x_series_column_name', '_x_series_time_unit', '_timestamp_metadata', '_channel_config'] + + def __init__(self, channel_config: Optional["scout_catalog_ChannelConfig"] = None, path: Optional[str] = None, schema_directive_path: Optional[str] = None, timestamp_metadata: Optional["scout_catalog_TimestampMetadata"] = None, x_series_column_name: Optional[str] = None, x_series_is_absolute: Optional[bool] = None, x_series_time_unit: Optional["scout_catalog_TimeUnit"] = None) -> None: + self._path = path + self._x_series_is_absolute = x_series_is_absolute + self._schema_directive_path = schema_directive_path + self._x_series_column_name = x_series_column_name + self._x_series_time_unit = x_series_time_unit + self._timestamp_metadata = timestamp_metadata + self._channel_config = channel_config + + @builtins.property + def path(self) -> Optional[str]: + return self._path + + @builtins.property + def x_series_is_absolute(self) -> Optional[bool]: + return self._x_series_is_absolute + + @builtins.property + def schema_directive_path(self) -> Optional[str]: + return self._schema_directive_path + + @builtins.property + def x_series_column_name(self) -> Optional[str]: + return self._x_series_column_name + + @builtins.property + def x_series_time_unit(self) -> Optional["scout_catalog_TimeUnit"]: + return self._x_series_time_unit + + @builtins.property + def timestamp_metadata(self) -> Optional["scout_catalog_TimestampMetadata"]: + return self._timestamp_metadata + + @builtins.property + def channel_config(self) -> Optional["scout_catalog_ChannelConfig"]: + return self._channel_config + + +scout_catalog_DatasetOriginMetadata.__name__ = "DatasetOriginMetadata" +scout_catalog_DatasetOriginMetadata.__qualname__ = "DatasetOriginMetadata" +scout_catalog_DatasetOriginMetadata.__module__ = "scout_service_api.scout_catalog" + + +class scout_catalog_DeleteSeriesResult(ConjureBeanType): + + @builtins.classmethod + def _fields(cls) -> Dict[str, ConjureFieldDefinition]: + return { + 'number_deleted': ConjureFieldDefinition('numberDeleted', int) + } + + __slots__: List[str] = ['_number_deleted'] + + def __init__(self, number_deleted: int) -> None: + self._number_deleted = number_deleted + + @builtins.property + def number_deleted(self) -> int: + return self._number_deleted + + +scout_catalog_DeleteSeriesResult.__name__ = "DeleteSeriesResult" +scout_catalog_DeleteSeriesResult.__qualname__ = "DeleteSeriesResult" +scout_catalog_DeleteSeriesResult.__module__ = "scout_service_api.scout_catalog" + + +class scout_catalog_EnrichedDataset(ConjureBeanType): + + @builtins.classmethod + def _fields(cls) -> Dict[str, ConjureFieldDefinition]: + return { + 'rid': ConjureFieldDefinition('rid', str), + 'uuid': ConjureFieldDefinition('uuid', str), + 'name': ConjureFieldDefinition('name', str), + 'description': ConjureFieldDefinition('description', OptionalTypeWrapper[str]), + 'display_name': ConjureFieldDefinition('displayName', str), + 'metadata': ConjureFieldDefinition('metadata', Dict[str, str]), + 'handle': ConjureFieldDefinition('handle', scout_catalog_Handle), + 'origin_metadata': ConjureFieldDefinition('originMetadata', scout_catalog_DatasetOriginMetadata), + 'ingest_date': ConjureFieldDefinition('ingestDate', str), + 'ingest_status': ConjureFieldDefinition('ingestStatus', scout_catalog_IngestStatus), + 'retention_policy': ConjureFieldDefinition('retentionPolicy', scout_catalog_RetentionPolicy), + 'run_rid': ConjureFieldDefinition('runRid', OptionalTypeWrapper[str]), + 'run_date': ConjureFieldDefinition('runDate', OptionalTypeWrapper[str]), + 'shorthand': ConjureFieldDefinition('shorthand', OptionalTypeWrapper[str]), + 'source': ConjureFieldDefinition('source', OptionalTypeWrapper[str]), + 'bounds': ConjureFieldDefinition('bounds', OptionalTypeWrapper[scout_catalog_Bounds]), + 'timestamp_type': ConjureFieldDefinition('timestampType', scout_catalog_WeakTimestampType), + 'labels': ConjureFieldDefinition('labels', List[datasource_Label]), + 'properties': ConjureFieldDefinition('properties', Dict[datasource_PropertyName, datasource_PropertyValue]) + } + + __slots__: List[str] = ['_rid', '_uuid', '_name', '_description', '_display_name', '_metadata', '_handle', '_origin_metadata', '_ingest_date', '_ingest_status', '_retention_policy', '_run_rid', '_run_date', '_shorthand', '_source', '_bounds', '_timestamp_type', '_labels', '_properties'] + + def __init__(self, display_name: str, handle: "scout_catalog_Handle", ingest_date: str, ingest_status: "scout_catalog_IngestStatus", labels: List[str], metadata: Dict[str, str], name: str, origin_metadata: "scout_catalog_DatasetOriginMetadata", properties: Dict[str, str], retention_policy: "scout_catalog_RetentionPolicy", rid: str, timestamp_type: "scout_catalog_WeakTimestampType", uuid: str, bounds: Optional["scout_catalog_Bounds"] = None, description: Optional[str] = None, run_date: Optional[str] = None, run_rid: Optional[str] = None, shorthand: Optional[str] = None, source: Optional[str] = None) -> None: + self._rid = rid + self._uuid = uuid + self._name = name + self._description = description + self._display_name = display_name + self._metadata = metadata + self._handle = handle + self._origin_metadata = origin_metadata + self._ingest_date = ingest_date + self._ingest_status = ingest_status + self._retention_policy = retention_policy + self._run_rid = run_rid + self._run_date = run_date + self._shorthand = shorthand + self._source = source + self._bounds = bounds + self._timestamp_type = timestamp_type + self._labels = labels + self._properties = properties + + @builtins.property + def rid(self) -> str: + return self._rid + + @builtins.property + def uuid(self) -> str: + return self._uuid + + @builtins.property + def name(self) -> str: + return self._name + + @builtins.property + def description(self) -> Optional[str]: + return self._description + + @builtins.property + def display_name(self) -> str: + return self._display_name + + @builtins.property + def metadata(self) -> Dict[str, str]: + return self._metadata + + @builtins.property + def handle(self) -> "scout_catalog_Handle": + return self._handle + + @builtins.property + def origin_metadata(self) -> "scout_catalog_DatasetOriginMetadata": + return self._origin_metadata + + @builtins.property + def ingest_date(self) -> str: + return self._ingest_date + + @builtins.property + def ingest_status(self) -> "scout_catalog_IngestStatus": + return self._ingest_status + + @builtins.property + def retention_policy(self) -> "scout_catalog_RetentionPolicy": + return self._retention_policy + + @builtins.property + def run_rid(self) -> Optional[str]: + return self._run_rid + + @builtins.property + def run_date(self) -> Optional[str]: + return self._run_date + + @builtins.property + def shorthand(self) -> Optional[str]: + return self._shorthand + + @builtins.property + def source(self) -> Optional[str]: + return self._source + + @builtins.property + def bounds(self) -> Optional["scout_catalog_Bounds"]: + return self._bounds + + @builtins.property + def timestamp_type(self) -> "scout_catalog_WeakTimestampType": + return self._timestamp_type + + @builtins.property + def labels(self) -> List[str]: + return self._labels + + @builtins.property + def properties(self) -> Dict[str, str]: + return self._properties + + +scout_catalog_EnrichedDataset.__name__ = "EnrichedDataset" +scout_catalog_EnrichedDataset.__qualname__ = "EnrichedDataset" +scout_catalog_EnrichedDataset.__module__ = "scout_service_api.scout_catalog" + + +class scout_catalog_EpochTimestamp(ConjureBeanType): + + @builtins.classmethod + def _fields(cls) -> Dict[str, ConjureFieldDefinition]: + return { + 'time_unit': ConjureFieldDefinition('timeUnit', scout_catalog_TimeUnit) + } + + __slots__: List[str] = ['_time_unit'] + + def __init__(self, time_unit: "scout_catalog_TimeUnit") -> None: + self._time_unit = time_unit + + @builtins.property + def time_unit(self) -> "scout_catalog_TimeUnit": + return self._time_unit + + +scout_catalog_EpochTimestamp.__name__ = "EpochTimestamp" +scout_catalog_EpochTimestamp.__qualname__ = "EpochTimestamp" +scout_catalog_EpochTimestamp.__module__ = "scout_service_api.scout_catalog" + + +class scout_catalog_ErrorResult(ConjureBeanType): + + @builtins.classmethod + def _fields(cls) -> Dict[str, ConjureFieldDefinition]: + return { + 'error_type': ConjureFieldDefinition('errorType', scout_catalog_ErrorType), + 'message': ConjureFieldDefinition('message', str) + } + + __slots__: List[str] = ['_error_type', '_message'] + + def __init__(self, error_type: str, message: str) -> None: + self._error_type = error_type + self._message = message + + @builtins.property + def error_type(self) -> str: + return self._error_type + + @builtins.property + def message(self) -> str: + return self._message + + +scout_catalog_ErrorResult.__name__ = "ErrorResult" +scout_catalog_ErrorResult.__qualname__ = "ErrorResult" +scout_catalog_ErrorResult.__module__ = "scout_service_api.scout_catalog" + + +class scout_catalog_GetChannelsForDatasetsRequest(ConjureBeanType): + + @builtins.classmethod + def _fields(cls) -> Dict[str, ConjureFieldDefinition]: + return { + 'dataset_uuids': ConjureFieldDefinition('datasetUuids', List[str]) + } + + __slots__: List[str] = ['_dataset_uuids'] + + def __init__(self, dataset_uuids: List[str]) -> None: + self._dataset_uuids = dataset_uuids + + @builtins.property + def dataset_uuids(self) -> List[str]: + return self._dataset_uuids + + +scout_catalog_GetChannelsForDatasetsRequest.__name__ = "GetChannelsForDatasetsRequest" +scout_catalog_GetChannelsForDatasetsRequest.__qualname__ = "GetChannelsForDatasetsRequest" +scout_catalog_GetChannelsForDatasetsRequest.__module__ = "scout_service_api.scout_catalog" + + +class scout_catalog_GetDatasetsRequest(ConjureBeanType): + + @builtins.classmethod + def _fields(cls) -> Dict[str, ConjureFieldDefinition]: + return { + 'dataset_rids': ConjureFieldDefinition('datasetRids', List[str]) + } + + __slots__: List[str] = ['_dataset_rids'] + + def __init__(self, dataset_rids: List[str]) -> None: + self._dataset_rids = dataset_rids + + @builtins.property + def dataset_rids(self) -> List[str]: + return self._dataset_rids + + +scout_catalog_GetDatasetsRequest.__name__ = "GetDatasetsRequest" +scout_catalog_GetDatasetsRequest.__qualname__ = "GetDatasetsRequest" +scout_catalog_GetDatasetsRequest.__module__ = "scout_service_api.scout_catalog" + + +class scout_catalog_GetDetailsForChannelsRequest(ConjureBeanType): @builtins.classmethod def _fields(cls) -> Dict[str, ConjureFieldDefinition]: return { - 'time_unit': ConjureFieldDefinition('timeUnit', scout_catalog_TimeUnit) + 'channel_uuids': ConjureFieldDefinition('channelUuids', List[str]) } - __slots__: List[str] = ['_time_unit'] + __slots__: List[str] = ['_channel_uuids'] - def __init__(self, time_unit: "scout_catalog_TimeUnit") -> None: + def __init__(self, channel_uuids: List[str]) -> None: + self._channel_uuids = channel_uuids + + @builtins.property + def channel_uuids(self) -> List[str]: + return self._channel_uuids + + +scout_catalog_GetDetailsForChannelsRequest.__name__ = "GetDetailsForChannelsRequest" +scout_catalog_GetDetailsForChannelsRequest.__qualname__ = "GetDetailsForChannelsRequest" +scout_catalog_GetDetailsForChannelsRequest.__module__ = "scout_service_api.scout_catalog" + + +class scout_catalog_GetHandlesForDatasetsRequest(ConjureBeanType): + + @builtins.classmethod + def _fields(cls) -> Dict[str, ConjureFieldDefinition]: + return { + 'dataset_uuids': ConjureFieldDefinition('datasetUuids', List[str]) + } + + __slots__: List[str] = ['_dataset_uuids'] + + def __init__(self, dataset_uuids: List[str]) -> None: + self._dataset_uuids = dataset_uuids + + @builtins.property + def dataset_uuids(self) -> List[str]: + return self._dataset_uuids + + +scout_catalog_GetHandlesForDatasetsRequest.__name__ = "GetHandlesForDatasetsRequest" +scout_catalog_GetHandlesForDatasetsRequest.__qualname__ = "GetHandlesForDatasetsRequest" +scout_catalog_GetHandlesForDatasetsRequest.__module__ = "scout_service_api.scout_catalog" + + +class scout_catalog_GetSeriesDetailsByName(ConjureBeanType): + + @builtins.classmethod + def _fields(cls) -> Dict[str, ConjureFieldDefinition]: + return { + 'dataset_rid': ConjureFieldDefinition('datasetRid', str), + 'name': ConjureFieldDefinition('name', str) + } + + __slots__: List[str] = ['_dataset_rid', '_name'] + + def __init__(self, dataset_rid: str, name: str) -> None: + self._dataset_rid = dataset_rid + self._name = name + + @builtins.property + def dataset_rid(self) -> str: + return self._dataset_rid + + @builtins.property + def name(self) -> str: + return self._name + + +scout_catalog_GetSeriesDetailsByName.__name__ = "GetSeriesDetailsByName" +scout_catalog_GetSeriesDetailsByName.__qualname__ = "GetSeriesDetailsByName" +scout_catalog_GetSeriesDetailsByName.__module__ = "scout_service_api.scout_catalog" + + +class scout_catalog_GetSeriesDetailsByRid(ConjureBeanType): + + @builtins.classmethod + def _fields(cls) -> Dict[str, ConjureFieldDefinition]: + return { + 'rid': ConjureFieldDefinition('rid', str) + } + + __slots__: List[str] = ['_rid'] + + def __init__(self, rid: str) -> None: + self._rid = rid + + @builtins.property + def rid(self) -> str: + return self._rid + + +scout_catalog_GetSeriesDetailsByRid.__name__ = "GetSeriesDetailsByRid" +scout_catalog_GetSeriesDetailsByRid.__qualname__ = "GetSeriesDetailsByRid" +scout_catalog_GetSeriesDetailsByRid.__module__ = "scout_service_api.scout_catalog" + + +class scout_catalog_GetSeriesDetailsRequest(ConjureUnionType): + _by_rid: Optional["scout_catalog_GetSeriesDetailsByRid"] = None + _by_name: Optional["scout_catalog_GetSeriesDetailsByName"] = None + + @builtins.classmethod + def _options(cls) -> Dict[str, ConjureFieldDefinition]: + return { + 'by_rid': ConjureFieldDefinition('byRid', scout_catalog_GetSeriesDetailsByRid), + 'by_name': ConjureFieldDefinition('byName', scout_catalog_GetSeriesDetailsByName) + } + + def __init__( + self, + by_rid: Optional["scout_catalog_GetSeriesDetailsByRid"] = None, + by_name: Optional["scout_catalog_GetSeriesDetailsByName"] = None, + type_of_union: Optional[str] = None + ) -> None: + if type_of_union is None: + if (by_rid is not None) + (by_name is not None) != 1: + raise ValueError('a union must contain a single member') + + if by_rid is not None: + self._by_rid = by_rid + self._type = 'byRid' + if by_name is not None: + self._by_name = by_name + self._type = 'byName' + + elif type_of_union == 'byRid': + if by_rid is None: + raise ValueError('a union value must not be None') + self._by_rid = by_rid + self._type = 'byRid' + elif type_of_union == 'byName': + if by_name is None: + raise ValueError('a union value must not be None') + self._by_name = by_name + self._type = 'byName' + + @builtins.property + def by_rid(self) -> Optional["scout_catalog_GetSeriesDetailsByRid"]: + return self._by_rid + + @builtins.property + def by_name(self) -> Optional["scout_catalog_GetSeriesDetailsByName"]: + return self._by_name + + def accept(self, visitor) -> Any: + if not isinstance(visitor, scout_catalog_GetSeriesDetailsRequestVisitor): + raise ValueError('{} is not an instance of scout_catalog_GetSeriesDetailsRequestVisitor'.format(visitor.__class__.__name__)) + if self._type == 'byRid' and self.by_rid is not None: + return visitor._by_rid(self.by_rid) + if self._type == 'byName' and self.by_name is not None: + return visitor._by_name(self.by_name) + + +scout_catalog_GetSeriesDetailsRequest.__name__ = "GetSeriesDetailsRequest" +scout_catalog_GetSeriesDetailsRequest.__qualname__ = "GetSeriesDetailsRequest" +scout_catalog_GetSeriesDetailsRequest.__module__ = "scout_service_api.scout_catalog" + + +class scout_catalog_GetSeriesDetailsRequestVisitor: + + @abstractmethod + def _by_rid(self, by_rid: "scout_catalog_GetSeriesDetailsByRid") -> Any: + pass + + @abstractmethod + def _by_name(self, by_name: "scout_catalog_GetSeriesDetailsByName") -> Any: + pass + + +scout_catalog_GetSeriesDetailsRequestVisitor.__name__ = "GetSeriesDetailsRequestVisitor" +scout_catalog_GetSeriesDetailsRequestVisitor.__qualname__ = "GetSeriesDetailsRequestVisitor" +scout_catalog_GetSeriesDetailsRequestVisitor.__module__ = "scout_service_api.scout_catalog" + + +class scout_catalog_Handle(ConjureUnionType): + _s3: Optional["scout_catalog_S3Handle"] = None + + @builtins.classmethod + def _options(cls) -> Dict[str, ConjureFieldDefinition]: + return { + 's3': ConjureFieldDefinition('s3', scout_catalog_S3Handle) + } + + def __init__( + self, + s3: Optional["scout_catalog_S3Handle"] = None, + type_of_union: Optional[str] = None + ) -> None: + if type_of_union is None: + if (s3 is not None) != 1: + raise ValueError('a union must contain a single member') + + if s3 is not None: + self._s3 = s3 + self._type = 's3' + + elif type_of_union == 's3': + if s3 is None: + raise ValueError('a union value must not be None') + self._s3 = s3 + self._type = 's3' + + @builtins.property + def s3(self) -> Optional["scout_catalog_S3Handle"]: + return self._s3 + + def accept(self, visitor) -> Any: + if not isinstance(visitor, scout_catalog_HandleVisitor): + raise ValueError('{} is not an instance of scout_catalog_HandleVisitor'.format(visitor.__class__.__name__)) + if self._type == 's3' and self.s3 is not None: + return visitor._s3(self.s3) + + +scout_catalog_Handle.__name__ = "Handle" +scout_catalog_Handle.__qualname__ = "Handle" +scout_catalog_Handle.__module__ = "scout_service_api.scout_catalog" + + +class scout_catalog_HandleVisitor: + + @abstractmethod + def _s3(self, s3: "scout_catalog_S3Handle") -> Any: + pass + + +scout_catalog_HandleVisitor.__name__ = "HandleVisitor" +scout_catalog_HandleVisitor.__qualname__ = "HandleVisitor" +scout_catalog_HandleVisitor.__module__ = "scout_service_api.scout_catalog" + + +class scout_catalog_InProgressResult(ConjureBeanType): + + @builtins.classmethod + def _fields(cls) -> Dict[str, ConjureFieldDefinition]: + return { + } + + __slots__: List[str] = [] + + + +scout_catalog_InProgressResult.__name__ = "InProgressResult" +scout_catalog_InProgressResult.__qualname__ = "InProgressResult" +scout_catalog_InProgressResult.__module__ = "scout_service_api.scout_catalog" + + +class scout_catalog_IngestProgressV2(ConjureBeanType): + + @builtins.classmethod + def _fields(cls) -> Dict[str, ConjureFieldDefinition]: + return { + 'start_time': ConjureFieldDefinition('startTime', str), + 'end_time': ConjureFieldDefinition('endTime', OptionalTypeWrapper[str]), + 'ingest_status': ConjureFieldDefinition('ingestStatus', scout_catalog_IngestStatusV2), + 'incalculable': ConjureFieldDefinition('incalculable', OptionalTypeWrapper[bool]) + } + + __slots__: List[str] = ['_start_time', '_end_time', '_ingest_status', '_incalculable'] + + def __init__(self, ingest_status: "scout_catalog_IngestStatusV2", start_time: str, end_time: Optional[str] = None, incalculable: Optional[bool] = None) -> None: + self._start_time = start_time + self._end_time = end_time + self._ingest_status = ingest_status + self._incalculable = incalculable + + @builtins.property + def start_time(self) -> str: + """ + Timestamp at start of ingest + """ + return self._start_time + + @builtins.property + def end_time(self) -> Optional[str]: + """ + Timestamp at end of ingest, empty if still in progress + """ + return self._end_time + + @builtins.property + def ingest_status(self) -> "scout_catalog_IngestStatusV2": + """ + Status of ingest, contains error if failed + """ + return self._ingest_status + + @builtins.property + def incalculable(self) -> Optional[bool]: + """ + Whether ingest duration can be reliably calculated + """ + return self._incalculable + + +scout_catalog_IngestProgressV2.__name__ = "IngestProgressV2" +scout_catalog_IngestProgressV2.__qualname__ = "IngestProgressV2" +scout_catalog_IngestProgressV2.__module__ = "scout_service_api.scout_catalog" + + +class scout_catalog_IngestStatus(ConjureEnumType): + + IN_PROGRESS = 'IN_PROGRESS' + '''IN_PROGRESS''' + COMPLETED = 'COMPLETED' + '''COMPLETED''' + FAILED = 'FAILED' + '''FAILED''' + UNKNOWN = 'UNKNOWN' + '''UNKNOWN''' + + def __reduce_ex__(self, proto): + return self.__class__, (self.name,) + + +scout_catalog_IngestStatus.__name__ = "IngestStatus" +scout_catalog_IngestStatus.__qualname__ = "IngestStatus" +scout_catalog_IngestStatus.__module__ = "scout_service_api.scout_catalog" + + +class scout_catalog_IngestStatusV2(ConjureUnionType): + _success: Optional["scout_catalog_SuccessResult"] = None + _error: Optional["scout_catalog_ErrorResult"] = None + _in_progress: Optional["scout_catalog_InProgressResult"] = None + + @builtins.classmethod + def _options(cls) -> Dict[str, ConjureFieldDefinition]: + return { + 'success': ConjureFieldDefinition('success', scout_catalog_SuccessResult), + 'error': ConjureFieldDefinition('error', scout_catalog_ErrorResult), + 'in_progress': ConjureFieldDefinition('inProgress', scout_catalog_InProgressResult) + } + + def __init__( + self, + success: Optional["scout_catalog_SuccessResult"] = None, + error: Optional["scout_catalog_ErrorResult"] = None, + in_progress: Optional["scout_catalog_InProgressResult"] = None, + type_of_union: Optional[str] = None + ) -> None: + if type_of_union is None: + if (success is not None) + (error is not None) + (in_progress is not None) != 1: + raise ValueError('a union must contain a single member') + + if success is not None: + self._success = success + self._type = 'success' + if error is not None: + self._error = error + self._type = 'error' + if in_progress is not None: + self._in_progress = in_progress + self._type = 'inProgress' + + elif type_of_union == 'success': + if success is None: + raise ValueError('a union value must not be None') + self._success = success + self._type = 'success' + elif type_of_union == 'error': + if error is None: + raise ValueError('a union value must not be None') + self._error = error + self._type = 'error' + elif type_of_union == 'inProgress': + if in_progress is None: + raise ValueError('a union value must not be None') + self._in_progress = in_progress + self._type = 'inProgress' + + @builtins.property + def success(self) -> Optional["scout_catalog_SuccessResult"]: + return self._success + + @builtins.property + def error(self) -> Optional["scout_catalog_ErrorResult"]: + return self._error + + @builtins.property + def in_progress(self) -> Optional["scout_catalog_InProgressResult"]: + return self._in_progress + + def accept(self, visitor) -> Any: + if not isinstance(visitor, scout_catalog_IngestStatusV2Visitor): + raise ValueError('{} is not an instance of scout_catalog_IngestStatusV2Visitor'.format(visitor.__class__.__name__)) + if self._type == 'success' and self.success is not None: + return visitor._success(self.success) + if self._type == 'error' and self.error is not None: + return visitor._error(self.error) + if self._type == 'inProgress' and self.in_progress is not None: + return visitor._in_progress(self.in_progress) + + +scout_catalog_IngestStatusV2.__name__ = "IngestStatusV2" +scout_catalog_IngestStatusV2.__qualname__ = "IngestStatusV2" +scout_catalog_IngestStatusV2.__module__ = "scout_service_api.scout_catalog" + + +class scout_catalog_IngestStatusV2Visitor: + + @abstractmethod + def _success(self, success: "scout_catalog_SuccessResult") -> Any: + pass + + @abstractmethod + def _error(self, error: "scout_catalog_ErrorResult") -> Any: + pass + + @abstractmethod + def _in_progress(self, in_progress: "scout_catalog_InProgressResult") -> Any: + pass + + +scout_catalog_IngestStatusV2Visitor.__name__ = "IngestStatusV2Visitor" +scout_catalog_IngestStatusV2Visitor.__qualname__ = "IngestStatusV2Visitor" +scout_catalog_IngestStatusV2Visitor.__module__ = "scout_service_api.scout_catalog" + + +class scout_catalog_Iso8601Timestamp(ConjureBeanType): + + @builtins.classmethod + def _fields(cls) -> Dict[str, ConjureFieldDefinition]: + return { + } + + __slots__: List[str] = [] + + + +scout_catalog_Iso8601Timestamp.__name__ = "Iso8601Timestamp" +scout_catalog_Iso8601Timestamp.__qualname__ = "Iso8601Timestamp" +scout_catalog_Iso8601Timestamp.__module__ = "scout_service_api.scout_catalog" + + +class scout_catalog_ListDatasetsRequest(ConjureBeanType): + + @builtins.classmethod + def _fields(cls) -> Dict[str, ConjureFieldDefinition]: + return { + 'include_filters': ConjureFieldDefinition('includeFilters', OptionalTypeWrapper[List[scout_catalog_DatasetFilter]]), + 'exclude_filters': ConjureFieldDefinition('excludeFilters', OptionalTypeWrapper[List[scout_catalog_DatasetFilter]]) + } + + __slots__: List[str] = ['_include_filters', '_exclude_filters'] + + def __init__(self, exclude_filters: Optional[List["scout_catalog_DatasetFilter"]] = None, include_filters: Optional[List["scout_catalog_DatasetFilter"]] = None) -> None: + self._include_filters = include_filters + self._exclude_filters = exclude_filters + + @builtins.property + def include_filters(self) -> Optional[List["scout_catalog_DatasetFilter"]]: + return self._include_filters + + @builtins.property + def exclude_filters(self) -> Optional[List["scout_catalog_DatasetFilter"]]: + return self._exclude_filters + + +scout_catalog_ListDatasetsRequest.__name__ = "ListDatasetsRequest" +scout_catalog_ListDatasetsRequest.__qualname__ = "ListDatasetsRequest" +scout_catalog_ListDatasetsRequest.__module__ = "scout_service_api.scout_catalog" + + +class scout_catalog_MarkFileIngestError(ConjureBeanType): + + @builtins.classmethod + def _fields(cls) -> Dict[str, ConjureFieldDefinition]: + return { + 'error_result': ConjureFieldDefinition('errorResult', scout_catalog_ErrorResult) + } + + __slots__: List[str] = ['_error_result'] + + def __init__(self, error_result: "scout_catalog_ErrorResult") -> None: + self._error_result = error_result + + @builtins.property + def error_result(self) -> "scout_catalog_ErrorResult": + return self._error_result + + +scout_catalog_MarkFileIngestError.__name__ = "MarkFileIngestError" +scout_catalog_MarkFileIngestError.__qualname__ = "MarkFileIngestError" +scout_catalog_MarkFileIngestError.__module__ = "scout_service_api.scout_catalog" + + +class scout_catalog_MarkFileIngestSuccessful(ConjureBeanType): + + @builtins.classmethod + def _fields(cls) -> Dict[str, ConjureFieldDefinition]: + return { + 'bounds': ConjureFieldDefinition('bounds', scout_catalog_Bounds), + 'ingested_at': ConjureFieldDefinition('ingestedAt', datasource_Timestamp) + } + + __slots__: List[str] = ['_bounds', '_ingested_at'] + + def __init__(self, bounds: "scout_catalog_Bounds", ingested_at: "datasource_Timestamp") -> None: + self._bounds = bounds + self._ingested_at = ingested_at + + @builtins.property + def bounds(self) -> "scout_catalog_Bounds": + return self._bounds + + @builtins.property + def ingested_at(self) -> "datasource_Timestamp": + """ + The ingestion timestamp is produced by CSV splitter and stored directly in the clickhouse table. +It's produced externally and passed here to handle retries and failures, and must be nanosecond precision. +Two files cannot have the same ingested at timestamp. + """ + return self._ingested_at + + +scout_catalog_MarkFileIngestSuccessful.__name__ = "MarkFileIngestSuccessful" +scout_catalog_MarkFileIngestSuccessful.__qualname__ = "MarkFileIngestSuccessful" +scout_catalog_MarkFileIngestSuccessful.__module__ = "scout_service_api.scout_catalog" + + +class scout_catalog_RelativeTimestamp(ConjureBeanType): + + @builtins.classmethod + def _fields(cls) -> Dict[str, ConjureFieldDefinition]: + return { + 'time_unit': ConjureFieldDefinition('timeUnit', scout_catalog_TimeUnit), + 'offset': ConjureFieldDefinition('offset', OptionalTypeWrapper[str]) + } + + __slots__: List[str] = ['_time_unit', '_offset'] + + def __init__(self, time_unit: "scout_catalog_TimeUnit", offset: Optional[str] = None) -> None: self._time_unit = time_unit + self._offset = offset @builtins.property def time_unit(self) -> "scout_catalog_TimeUnit": return self._time_unit + @builtins.property + def offset(self) -> Optional[str]: + return self._offset + scout_catalog_RelativeTimestamp.__name__ = "RelativeTimestamp" scout_catalog_RelativeTimestamp.__qualname__ = "RelativeTimestamp" @@ -10127,216 +13638,6 @@ def _v1(self, v1: str) -> Any: scout_channelvariables_api_ComputeSpecVisitor.__module__ = "scout_service_api.scout_channelvariables_api" -class scout_chart_api_BatchGetChartsRequest(ConjureBeanType): - - @builtins.classmethod - def _fields(cls) -> Dict[str, ConjureFieldDefinition]: - return { - 'requests': ConjureFieldDefinition('requests', List[scout_rids_api_VersionedChartRid]) - } - - __slots__: List[str] = ['_requests'] - - def __init__(self, requests: List["scout_rids_api_VersionedChartRid"]) -> None: - self._requests = requests - - @builtins.property - def requests(self) -> List["scout_rids_api_VersionedChartRid"]: - return self._requests - - -scout_chart_api_BatchGetChartsRequest.__name__ = "BatchGetChartsRequest" -scout_chart_api_BatchGetChartsRequest.__qualname__ = "BatchGetChartsRequest" -scout_chart_api_BatchGetChartsRequest.__module__ = "scout_service_api.scout_chart_api" - - -class scout_chart_api_BatchGetChartsResponse(ConjureBeanType): - - @builtins.classmethod - def _fields(cls) -> Dict[str, ConjureFieldDefinition]: - return { - 'responses': ConjureFieldDefinition('responses', List[scout_chart_api_VersionedChart]) - } - - __slots__: List[str] = ['_responses'] - - def __init__(self, responses: List["scout_chart_api_VersionedChart"]) -> None: - self._responses = responses - - @builtins.property - def responses(self) -> List["scout_chart_api_VersionedChart"]: - return self._responses - - -scout_chart_api_BatchGetChartsResponse.__name__ = "BatchGetChartsResponse" -scout_chart_api_BatchGetChartsResponse.__qualname__ = "BatchGetChartsResponse" -scout_chart_api_BatchGetChartsResponse.__module__ = "scout_service_api.scout_chart_api" - - -class scout_chart_api_ChartService(Service): - """ - This service is deprecated and no longer used. - """ - - def create_chart(self, auth_header: str, request: "scout_chart_api_CreateChartRequest") -> "scout_rids_api_VersionedChartRid": - - _headers: Dict[str, Any] = { - 'Accept': 'application/json', - 'Content-Type': 'application/json', - 'Authorization': auth_header, - } - - _params: Dict[str, Any] = { - } - - _path_params: Dict[str, Any] = { - } - - _json: Any = ConjureEncoder().default(request) - - _path = '/scout/v1/chart' - _path = _path.format(**_path_params) - - _response: Response = self._request( - 'POST', - self._uri + _path, - params=_params, - headers=_headers, - json=_json) - - _decoder = ConjureDecoder() - return _decoder.decode(_response.json(), scout_rids_api_VersionedChartRid, self._return_none_for_unknown_union_types) - - def update_chart(self, auth_header: str, chart_rid: str, request: "scout_chart_api_UpdateChartRequest") -> int: - - _headers: Dict[str, Any] = { - 'Accept': 'application/json', - 'Content-Type': 'application/json', - 'Authorization': auth_header, - } - - _params: Dict[str, Any] = { - } - - _path_params: Dict[str, Any] = { - 'chartRid': chart_rid, - } - - _json: Any = ConjureEncoder().default(request) - - _path = '/scout/v1/chart/{chartRid}' - _path = _path.format(**_path_params) - - _response: Response = self._request( - 'PUT', - self._uri + _path, - params=_params, - headers=_headers, - json=_json) - - _decoder = ConjureDecoder() - return _decoder.decode(_response.json(), scout_rids_api_Version, self._return_none_for_unknown_union_types) - - def get_chart(self, auth_header: str, chart_rid: str, version: Optional[int] = None) -> "scout_chart_api_VersionedChart": - - _headers: Dict[str, Any] = { - 'Accept': 'application/json', - 'Authorization': auth_header, - } - - _params: Dict[str, Any] = { - 'version': version, - } - - _path_params: Dict[str, Any] = { - 'chartRid': chart_rid, - } - - _json: Any = None - - _path = '/scout/v1/chart/{chartRid}' - _path = _path.format(**_path_params) - - _response: Response = self._request( - 'GET', - self._uri + _path, - params=_params, - headers=_headers, - json=_json) - - _decoder = ConjureDecoder() - return _decoder.decode(_response.json(), scout_chart_api_VersionedChart, self._return_none_for_unknown_union_types) - - def get_batch(self, auth_header: str, request: "scout_chart_api_BatchGetChartsRequest") -> "scout_chart_api_BatchGetChartsResponse": - - _headers: Dict[str, Any] = { - 'Accept': 'application/json', - 'Content-Type': 'application/json', - 'Authorization': auth_header, - } - - _params: Dict[str, Any] = { - } - - _path_params: Dict[str, Any] = { - } - - _json: Any = ConjureEncoder().default(request) - - _path = '/scout/v1/chart/batchGet' - _path = _path.format(**_path_params) - - _response: Response = self._request( - 'POST', - self._uri + _path, - params=_params, - headers=_headers, - json=_json) - - _decoder = ConjureDecoder() - return _decoder.decode(_response.json(), scout_chart_api_BatchGetChartsResponse, self._return_none_for_unknown_union_types) - - -scout_chart_api_ChartService.__name__ = "ChartService" -scout_chart_api_ChartService.__qualname__ = "ChartService" -scout_chart_api_ChartService.__module__ = "scout_service_api.scout_chart_api" - - -class scout_chart_api_CreateChartRequest(ConjureBeanType): - - @builtins.classmethod - def _fields(cls) -> Dict[str, ConjureFieldDefinition]: - return { - 'title': ConjureFieldDefinition('title', OptionalTypeWrapper[str]), - 'definition': ConjureFieldDefinition('definition', scout_chart_api_JsonString), - 'schema_version': ConjureFieldDefinition('schemaVersion', str) - } - - __slots__: List[str] = ['_title', '_definition', '_schema_version'] - - def __init__(self, definition: str, schema_version: str, title: Optional[str] = None) -> None: - self._title = title - self._definition = definition - self._schema_version = schema_version - - @builtins.property - def title(self) -> Optional[str]: - return self._title - - @builtins.property - def definition(self) -> str: - return self._definition - - @builtins.property - def schema_version(self) -> str: - return self._schema_version - - -scout_chart_api_CreateChartRequest.__name__ = "CreateChartRequest" -scout_chart_api_CreateChartRequest.__qualname__ = "CreateChartRequest" -scout_chart_api_CreateChartRequest.__module__ = "scout_service_api.scout_chart_api" - - class scout_chart_api_DeprecatedDefinitionAndSchemaVersion(ConjureBeanType): @builtins.classmethod @@ -10366,88 +13667,6 @@ def definition(self) -> str: scout_chart_api_DeprecatedDefinitionAndSchemaVersion.__module__ = "scout_service_api.scout_chart_api" -class scout_chart_api_UpdateChartRequest(ConjureBeanType): - - @builtins.classmethod - def _fields(cls) -> Dict[str, ConjureFieldDefinition]: - return { - 'title': ConjureFieldDefinition('title', OptionalTypeWrapper[str]), - 'definition_and_schema_version': ConjureFieldDefinition('definitionAndSchemaVersion', OptionalTypeWrapper[scout_chart_api_DeprecatedDefinitionAndSchemaVersion]) - } - - __slots__: List[str] = ['_title', '_definition_and_schema_version'] - - def __init__(self, definition_and_schema_version: Optional["scout_chart_api_DeprecatedDefinitionAndSchemaVersion"] = None, title: Optional[str] = None) -> None: - self._title = title - self._definition_and_schema_version = definition_and_schema_version - - @builtins.property - def title(self) -> Optional[str]: - """ - If present, will replace the existing title. - """ - return self._title - - @builtins.property - def definition_and_schema_version(self) -> Optional["scout_chart_api_DeprecatedDefinitionAndSchemaVersion"]: - """ - If present, will replace the existing definition and schema version. - """ - return self._definition_and_schema_version - - -scout_chart_api_UpdateChartRequest.__name__ = "UpdateChartRequest" -scout_chart_api_UpdateChartRequest.__qualname__ = "UpdateChartRequest" -scout_chart_api_UpdateChartRequest.__module__ = "scout_service_api.scout_chart_api" - - -class scout_chart_api_VersionedChart(ConjureBeanType): - - @builtins.classmethod - def _fields(cls) -> Dict[str, ConjureFieldDefinition]: - return { - 'rid': ConjureFieldDefinition('rid', scout_rids_api_ChartRid), - 'version': ConjureFieldDefinition('version', scout_rids_api_Version), - 'schema_version': ConjureFieldDefinition('schemaVersion', str), - 'title': ConjureFieldDefinition('title', OptionalTypeWrapper[str]), - 'definition': ConjureFieldDefinition('definition', scout_chart_api_JsonString) - } - - __slots__: List[str] = ['_rid', '_version', '_schema_version', '_title', '_definition'] - - def __init__(self, definition: str, rid: str, schema_version: str, version: int, title: Optional[str] = None) -> None: - self._rid = rid - self._version = version - self._schema_version = schema_version - self._title = title - self._definition = definition - - @builtins.property - def rid(self) -> str: - return self._rid - - @builtins.property - def version(self) -> int: - return self._version - - @builtins.property - def schema_version(self) -> str: - return self._schema_version - - @builtins.property - def title(self) -> Optional[str]: - return self._title - - @builtins.property - def definition(self) -> str: - return self._definition - - -scout_chart_api_VersionedChart.__name__ = "VersionedChart" -scout_chart_api_VersionedChart.__qualname__ = "VersionedChart" -scout_chart_api_VersionedChart.__module__ = "scout_service_api.scout_chart_api" - - class scout_chartdefinition_api_AxisDisplayOptions(ConjureBeanType): @builtins.classmethod @@ -13296,6 +16515,39 @@ def checklist_live_status(self, auth_header: str, request: "scout_checklistexecu _decoder = ConjureDecoder() return _decoder.decode(_response.json(), scout_checklistexecution_api_BatchChecklistLiveStatusResponse, self._return_none_for_unknown_union_types) + def execute_checklist_on_assets(self, auth_header: str, request: "scout_checklistexecution_api_ExecuteChecklistForAssetsRequest") -> "scout_checklistexecution_api_ExecuteChecklistForAssetsResponse": + """ + Triggers a checklist to run continuously against assets. Returns a ChecklistAlreadyRunning error if the +checklist is already running for the given asset. + """ + + _headers: Dict[str, Any] = { + 'Accept': 'application/json', + 'Content-Type': 'application/json', + 'Authorization': auth_header, + } + + _params: Dict[str, Any] = { + } + + _path_params: Dict[str, Any] = { + } + + _json: Any = ConjureEncoder().default(request) + + _path = '/scout/v2/checklist-execution/execute-checklist-on-assets' + _path = _path.format(**_path_params) + + _response: Response = self._request( + 'POST', + self._uri + _path, + params=_params, + headers=_headers, + json=_json) + + _decoder = ConjureDecoder() + return _decoder.decode(_response.json(), scout_checklistexecution_api_ExecuteChecklistForAssetsResponse, self._return_none_for_unknown_union_types) + scout_checklistexecution_api_ChecklistExecutionService.__name__ = "ChecklistExecutionService" scout_checklistexecution_api_ChecklistExecutionService.__qualname__ = "ChecklistExecutionService" @@ -13458,6 +16710,69 @@ def _fields(cls) -> Dict[str, ConjureFieldDefinition]: scout_checklistexecution_api_Computing.__module__ = "scout_service_api.scout_checklistexecution_api" +class scout_checklistexecution_api_ExecuteChecklistForAssetsRequest(ConjureBeanType): + + @builtins.classmethod + def _fields(cls) -> Dict[str, ConjureFieldDefinition]: + return { + 'checklist': ConjureFieldDefinition('checklist', scout_rids_api_ChecklistRid), + 'assets': ConjureFieldDefinition('assets', List[scout_rids_api_AssetRid]), + 'notification_configurations': ConjureFieldDefinition('notificationConfigurations', List[scout_integrations_api_NotificationConfiguration]), + 'stream_delay': ConjureFieldDefinition('streamDelay', scout_run_api_Duration) + } + + __slots__: List[str] = ['_checklist', '_assets', '_notification_configurations', '_stream_delay'] + + def __init__(self, assets: List[str], checklist: str, notification_configurations: List["scout_integrations_api_NotificationConfiguration"], stream_delay: "scout_run_api_Duration") -> None: + self._checklist = checklist + self._assets = assets + self._notification_configurations = notification_configurations + self._stream_delay = stream_delay + + @builtins.property + def checklist(self) -> str: + return self._checklist + + @builtins.property + def assets(self) -> List[str]: + return self._assets + + @builtins.property + def notification_configurations(self) -> List["scout_integrations_api_NotificationConfiguration"]: + """ + If provided, checklist violations will be sent to the specified integrations. + """ + return self._notification_configurations + + @builtins.property + def stream_delay(self) -> "scout_run_api_Duration": + """ + Delays the execution of the streaming checklist. This is useful for when data is delayed. + """ + return self._stream_delay + + +scout_checklistexecution_api_ExecuteChecklistForAssetsRequest.__name__ = "ExecuteChecklistForAssetsRequest" +scout_checklistexecution_api_ExecuteChecklistForAssetsRequest.__qualname__ = "ExecuteChecklistForAssetsRequest" +scout_checklistexecution_api_ExecuteChecklistForAssetsRequest.__module__ = "scout_service_api.scout_checklistexecution_api" + + +class scout_checklistexecution_api_ExecuteChecklistForAssetsResponse(ConjureBeanType): + + @builtins.classmethod + def _fields(cls) -> Dict[str, ConjureFieldDefinition]: + return { + } + + __slots__: List[str] = [] + + + +scout_checklistexecution_api_ExecuteChecklistForAssetsResponse.__name__ = "ExecuteChecklistForAssetsResponse" +scout_checklistexecution_api_ExecuteChecklistForAssetsResponse.__qualname__ = "ExecuteChecklistForAssetsResponse" +scout_checklistexecution_api_ExecuteChecklistForAssetsResponse.__module__ = "scout_service_api.scout_checklistexecution_api" + + class scout_checklistexecution_api_Fail(ConjureBeanType): @builtins.classmethod @@ -13865,41 +17180,6 @@ def job_rids_to_job_reports(self) -> Dict[str, "scout_checks_api_JobReport"]: scout_checks_api_BatchGetJobReportsResponse.__module__ = "scout_service_api.scout_checks_api" -class scout_checks_api_ChannelLocator(ConjureBeanType): - - @builtins.classmethod - def _fields(cls) -> Dict[str, ConjureFieldDefinition]: - return { - 'data_source_ref': ConjureFieldDefinition('dataSourceRef', scout_run_api_DataSourceRefName), - 'channel': ConjureFieldDefinition('channel', scout_run_api_Channel), - 'tags': ConjureFieldDefinition('tags', Dict[scout_series_TagName, scout_series_TagValue]) - } - - __slots__: List[str] = ['_data_source_ref', '_channel', '_tags'] - - def __init__(self, channel: str, data_source_ref: str, tags: Dict[str, str]) -> None: - self._data_source_ref = data_source_ref - self._channel = channel - self._tags = tags - - @builtins.property - def data_source_ref(self) -> str: - return self._data_source_ref - - @builtins.property - def channel(self) -> str: - return self._channel - - @builtins.property - def tags(self) -> Dict[str, str]: - return self._tags - - -scout_checks_api_ChannelLocator.__name__ = "ChannelLocator" -scout_checks_api_ChannelLocator.__qualname__ = "ChannelLocator" -scout_checks_api_ChannelLocator.__module__ = "scout_service_api.scout_checks_api" - - class scout_checks_api_Check(ConjureBeanType): @builtins.classmethod @@ -14534,103 +17814,445 @@ def label(self) -> Optional[str]: def property(self) -> Optional["scout_run_api_Property"]: return self._property - @builtins.property - def author_rid(self) -> Optional[str]: - return self._author_rid + @builtins.property + def author_rid(self) -> Optional[str]: + return self._author_rid + + @builtins.property + def assignee_rid(self) -> Optional[str]: + return self._assignee_rid + + @builtins.property + def is_published(self) -> Optional[bool]: + return self._is_published + + @builtins.property + def not_(self) -> Optional["scout_checks_api_ChecklistSearchQuery"]: + return self._not_ + + def accept(self, visitor) -> Any: + if not isinstance(visitor, scout_checks_api_ChecklistSearchQueryVisitor): + raise ValueError('{} is not an instance of scout_checks_api_ChecklistSearchQueryVisitor'.format(visitor.__class__.__name__)) + if self._type == 'and' and self.and_ is not None: + return visitor._and(self.and_) + if self._type == 'or' and self.or_ is not None: + return visitor._or(self.or_) + if self._type == 'searchText' and self.search_text is not None: + return visitor._search_text(self.search_text) + if self._type == 'label' and self.label is not None: + return visitor._label(self.label) + if self._type == 'property' and self.property is not None: + return visitor._property(self.property) + if self._type == 'authorRid' and self.author_rid is not None: + return visitor._author_rid(self.author_rid) + if self._type == 'assigneeRid' and self.assignee_rid is not None: + return visitor._assignee_rid(self.assignee_rid) + if self._type == 'isPublished' and self.is_published is not None: + return visitor._is_published(self.is_published) + if self._type == 'not' and self.not_ is not None: + return visitor._not(self.not_) + + +scout_checks_api_ChecklistSearchQuery.__name__ = "ChecklistSearchQuery" +scout_checks_api_ChecklistSearchQuery.__qualname__ = "ChecklistSearchQuery" +scout_checks_api_ChecklistSearchQuery.__module__ = "scout_service_api.scout_checks_api" + + +class scout_checks_api_ChecklistSearchQueryVisitor: + + @abstractmethod + def _and(self, and_: List["scout_checks_api_ChecklistSearchQuery"]) -> Any: + pass + + @abstractmethod + def _or(self, or_: List["scout_checks_api_ChecklistSearchQuery"]) -> Any: + pass + + @abstractmethod + def _search_text(self, search_text: str) -> Any: + pass + + @abstractmethod + def _label(self, label: str) -> Any: + pass + + @abstractmethod + def _property(self, property: "scout_run_api_Property") -> Any: + pass + + @abstractmethod + def _author_rid(self, author_rid: str) -> Any: + pass + + @abstractmethod + def _assignee_rid(self, assignee_rid: str) -> Any: + pass + + @abstractmethod + def _is_published(self, is_published: bool) -> Any: + pass + + @abstractmethod + def _not(self, not_: "scout_checks_api_ChecklistSearchQuery") -> Any: + pass + + +scout_checks_api_ChecklistSearchQueryVisitor.__name__ = "ChecklistSearchQueryVisitor" +scout_checks_api_ChecklistSearchQueryVisitor.__qualname__ = "ChecklistSearchQueryVisitor" +scout_checks_api_ChecklistSearchQueryVisitor.__module__ = "scout_service_api.scout_checks_api" + + +class scout_checks_api_ChecklistService(Service): + """ + The Checklist Service is responsible for managing checklists and checks. +A checklist is a collection of checks and functions that can be executed against a set of data sources. + """ + + def create(self, auth_header: str, request: "scout_checks_api_CreateChecklistRequest") -> "scout_checks_api_VersionedChecklist": + """ + Creates a new checklist with the provided checks and functions. + """ + + _headers: Dict[str, Any] = { + 'Accept': 'application/json', + 'Content-Type': 'application/json', + 'Authorization': auth_header, + } + + _params: Dict[str, Any] = { + } + + _path_params: Dict[str, Any] = { + } + + _json: Any = ConjureEncoder().default(request) + + _path = '/scout/v1/checklists' + _path = _path.format(**_path_params) + + _response: Response = self._request( + 'POST', + self._uri + _path, + params=_params, + headers=_headers, + json=_json) + + _decoder = ConjureDecoder() + return _decoder.decode(_response.json(), scout_checks_api_VersionedChecklist, self._return_none_for_unknown_union_types) + + def commit(self, auth_header: str, checklist_rid: str, request: "scout_checks_api_CommitChecklistRequest", branch: Optional[str] = None) -> "scout_checks_api_VersionedChecklist": + """ + Creates a permanent commit with a commit message. +Throws if the checklist or branch doesn't exist. +Throws if the latest commit doesn't match the provided id. +Throws if you commit to an archived checklist. + """ + + _headers: Dict[str, Any] = { + 'Accept': 'application/json', + 'Content-Type': 'application/json', + 'Authorization': auth_header, + } + + _params: Dict[str, Any] = { + 'branch': branch, + } + + _path_params: Dict[str, Any] = { + 'checklistRid': checklist_rid, + } + + _json: Any = ConjureEncoder().default(request) + + _path = '/scout/v1/checklists/{checklistRid}/commit' + _path = _path.format(**_path_params) + + _response: Response = self._request( + 'POST', + self._uri + _path, + params=_params, + headers=_headers, + json=_json) + + _decoder = ConjureDecoder() + return _decoder.decode(_response.json(), scout_checks_api_VersionedChecklist, self._return_none_for_unknown_union_types) + + def save_working_state(self, auth_header: str, checklist_rid: str, request: "scout_checks_api_SaveChecklistRequest", branch: Optional[str] = None) -> "scout_checks_api_VersionedChecklist": + """ + Creates a commit that may be compacted, e.g cleaned up and not exist anymore. +Throws if the checklist or branch doesn't exist. +Throws if the latest commit doesn't match the provided id. +Throws if you save to an archived checklist. + """ + + _headers: Dict[str, Any] = { + 'Accept': 'application/json', + 'Content-Type': 'application/json', + 'Authorization': auth_header, + } + + _params: Dict[str, Any] = { + 'branch': branch, + } + + _path_params: Dict[str, Any] = { + 'checklistRid': checklist_rid, + } + + _json: Any = ConjureEncoder().default(request) + + _path = '/scout/v1/checklists/{checklistRid}/save-working-state' + _path = _path.format(**_path_params) + + _response: Response = self._request( + 'POST', + self._uri + _path, + params=_params, + headers=_headers, + json=_json) + + _decoder = ConjureDecoder() + return _decoder.decode(_response.json(), scout_checks_api_VersionedChecklist, self._return_none_for_unknown_union_types) + + def merge_to_main(self, auth_header: str, checklist_rid: str, request: "scout_checks_api_MergeToMainRequest") -> "scout_checks_api_VersionedChecklist": + """ + Merges the given branch to the "main" branch. +Throws if the checklist or branch doesn't exist. +Throws if the latest commit doesn't match the provided id. +Throws if you merge with an archived checklist. + """ + + _headers: Dict[str, Any] = { + 'Accept': 'application/json', + 'Content-Type': 'application/json', + 'Authorization': auth_header, + } + + _params: Dict[str, Any] = { + } + + _path_params: Dict[str, Any] = { + 'checklistRid': checklist_rid, + } + + _json: Any = ConjureEncoder().default(request) + + _path = '/scout/v1/checklists/{checklistRid}/merge-to-main' + _path = _path.format(**_path_params) + + _response: Response = self._request( + 'POST', + self._uri + _path, + params=_params, + headers=_headers, + json=_json) + + _decoder = ConjureDecoder() + return _decoder.decode(_response.json(), scout_checks_api_VersionedChecklist, self._return_none_for_unknown_union_types) + + def update_data_source_ref_names(self, auth_header: str, checklist_rid: str, ref_name_updates: Dict[str, str], branch: Optional[str] = None) -> "scout_checks_api_VersionedChecklist": + """ + Updates the data source ref names for all checks within a checklist. +Throws if the checklist doesn't exist. + """ + + _headers: Dict[str, Any] = { + 'Accept': 'application/json', + 'Content-Type': 'application/json', + 'Authorization': auth_header, + } + + _params: Dict[str, Any] = { + 'branch': branch, + } + + _path_params: Dict[str, Any] = { + 'checklistRid': checklist_rid, + } + + _json: Any = ConjureEncoder().default(ref_name_updates) + + _path = '/scout/v1/checklists/{checklistRid}/update-ref-names' + _path = _path.format(**_path_params) + + _response: Response = self._request( + 'POST', + self._uri + _path, + params=_params, + headers=_headers, + json=_json) + + _decoder = ConjureDecoder() + return _decoder.decode(_response.json(), scout_checks_api_VersionedChecklist, self._return_none_for_unknown_union_types) + + def update_metadata(self, auth_header: str, request: "scout_checks_api_UpdateChecklistMetadataRequest", rid: str) -> "scout_checks_api_ChecklistMetadata": + """ + Updates the metadata of a checklist. + """ + + _headers: Dict[str, Any] = { + 'Accept': 'application/json', + 'Content-Type': 'application/json', + 'Authorization': auth_header, + } + + _params: Dict[str, Any] = { + } + + _path_params: Dict[str, Any] = { + 'rid': rid, + } + + _json: Any = ConjureEncoder().default(request) + + _path = '/scout/v1/checklists/{rid}/update-metadata' + _path = _path.format(**_path_params) + + _response: Response = self._request( + 'PUT', + self._uri + _path, + params=_params, + headers=_headers, + json=_json) + + _decoder = ConjureDecoder() + return _decoder.decode(_response.json(), scout_checks_api_ChecklistMetadata, self._return_none_for_unknown_union_types) + + def get(self, auth_header: str, rid: str, branch: Optional[str] = None, commit: Optional[str] = None) -> "scout_checks_api_VersionedChecklist": + """ + Specify at most one of (branch, commit). +If neither is specified, branch = "main" is the default. + """ + + _headers: Dict[str, Any] = { + 'Accept': 'application/json', + 'Authorization': auth_header, + } + + _params: Dict[str, Any] = { + 'branch': branch, + 'commit': commit, + } + + _path_params: Dict[str, Any] = { + 'rid': rid, + } + + _json: Any = None + + _path = '/scout/v1/checklists/{rid}' + _path = _path.format(**_path_params) + + _response: Response = self._request( + 'GET', + self._uri + _path, + params=_params, + headers=_headers, + json=_json) + + _decoder = ConjureDecoder() + return _decoder.decode(_response.json(), scout_checks_api_VersionedChecklist, self._return_none_for_unknown_union_types) + + def batch_get(self, auth_header: str, checklist_refs: List["scout_checks_api_PinnedChecklistRef"] = None) -> List["scout_checks_api_VersionedChecklist"]: + """ + Returns the pinned commit for each provided checklist reference. + """ + checklist_refs = checklist_refs if checklist_refs is not None else [] + + _headers: Dict[str, Any] = { + 'Accept': 'application/json', + 'Content-Type': 'application/json', + 'Authorization': auth_header, + } + + _params: Dict[str, Any] = { + } - @builtins.property - def assignee_rid(self) -> Optional[str]: - return self._assignee_rid + _path_params: Dict[str, Any] = { + } - @builtins.property - def is_published(self) -> Optional[bool]: - return self._is_published + _json: Any = ConjureEncoder().default(checklist_refs) - @builtins.property - def not_(self) -> Optional["scout_checks_api_ChecklistSearchQuery"]: - return self._not_ + _path = '/scout/v1/checklists/batch-get' + _path = _path.format(**_path_params) - def accept(self, visitor) -> Any: - if not isinstance(visitor, scout_checks_api_ChecklistSearchQueryVisitor): - raise ValueError('{} is not an instance of scout_checks_api_ChecklistSearchQueryVisitor'.format(visitor.__class__.__name__)) - if self._type == 'and' and self.and_ is not None: - return visitor._and(self.and_) - if self._type == 'or' and self.or_ is not None: - return visitor._or(self.or_) - if self._type == 'searchText' and self.search_text is not None: - return visitor._search_text(self.search_text) - if self._type == 'label' and self.label is not None: - return visitor._label(self.label) - if self._type == 'property' and self.property is not None: - return visitor._property(self.property) - if self._type == 'authorRid' and self.author_rid is not None: - return visitor._author_rid(self.author_rid) - if self._type == 'assigneeRid' and self.assignee_rid is not None: - return visitor._assignee_rid(self.assignee_rid) - if self._type == 'isPublished' and self.is_published is not None: - return visitor._is_published(self.is_published) - if self._type == 'not' and self.not_ is not None: - return visitor._not(self.not_) + _response: Response = self._request( + 'POST', + self._uri + _path, + params=_params, + headers=_headers, + json=_json) + _decoder = ConjureDecoder() + return _decoder.decode(_response.json(), List[scout_checks_api_VersionedChecklist], self._return_none_for_unknown_union_types) -scout_checks_api_ChecklistSearchQuery.__name__ = "ChecklistSearchQuery" -scout_checks_api_ChecklistSearchQuery.__qualname__ = "ChecklistSearchQuery" -scout_checks_api_ChecklistSearchQuery.__module__ = "scout_service_api.scout_checks_api" + def batch_get_metadata(self, auth_header: str, request: "scout_checks_api_BatchGetChecklistMetadataRequest") -> "scout_checks_api_BatchGetChecklistMetadataResponse": + """ + Returns the metadata for each provided checklist. + """ + _headers: Dict[str, Any] = { + 'Accept': 'application/json', + 'Content-Type': 'application/json', + 'Authorization': auth_header, + } -class scout_checks_api_ChecklistSearchQueryVisitor: + _params: Dict[str, Any] = { + } - @abstractmethod - def _and(self, and_: List["scout_checks_api_ChecklistSearchQuery"]) -> Any: - pass + _path_params: Dict[str, Any] = { + } - @abstractmethod - def _or(self, or_: List["scout_checks_api_ChecklistSearchQuery"]) -> Any: - pass + _json: Any = ConjureEncoder().default(request) - @abstractmethod - def _search_text(self, search_text: str) -> Any: - pass + _path = '/scout/v1/checklists/batch-get-metadata' + _path = _path.format(**_path_params) - @abstractmethod - def _label(self, label: str) -> Any: - pass + _response: Response = self._request( + 'POST', + self._uri + _path, + params=_params, + headers=_headers, + json=_json) - @abstractmethod - def _property(self, property: "scout_run_api_Property") -> Any: - pass + _decoder = ConjureDecoder() + return _decoder.decode(_response.json(), scout_checks_api_BatchGetChecklistMetadataResponse, self._return_none_for_unknown_union_types) - @abstractmethod - def _author_rid(self, author_rid: str) -> Any: - pass + def search(self, auth_header: str, request: "scout_checks_api_SearchChecklistsRequest") -> "scout_checks_api_VersionedChecklistPage": + """ + Results will be the latest commit on main for each checklist. + """ - @abstractmethod - def _assignee_rid(self, assignee_rid: str) -> Any: - pass + _headers: Dict[str, Any] = { + 'Accept': 'application/json', + 'Content-Type': 'application/json', + 'Authorization': auth_header, + } - @abstractmethod - def _is_published(self, is_published: bool) -> Any: - pass + _params: Dict[str, Any] = { + } - @abstractmethod - def _not(self, not_: "scout_checks_api_ChecklistSearchQuery") -> Any: - pass + _path_params: Dict[str, Any] = { + } + _json: Any = ConjureEncoder().default(request) -scout_checks_api_ChecklistSearchQueryVisitor.__name__ = "ChecklistSearchQueryVisitor" -scout_checks_api_ChecklistSearchQueryVisitor.__qualname__ = "ChecklistSearchQueryVisitor" -scout_checks_api_ChecklistSearchQueryVisitor.__module__ = "scout_service_api.scout_checks_api" + _path = '/scout/v1/checklists/search' + _path = _path.format(**_path_params) + _response: Response = self._request( + 'POST', + self._uri + _path, + params=_params, + headers=_headers, + json=_json) -class scout_checks_api_ChecklistService(Service): - """ - The Checklist Service is responsible for managing checklists and checks. -A checklist is a collection of checks and functions that can be executed against a set of data sources. - """ + _decoder = ConjureDecoder() + return _decoder.decode(_response.json(), scout_checks_api_VersionedChecklistPage, self._return_none_for_unknown_union_types) - def create(self, auth_header: str, request: "scout_checks_api_CreateChecklistRequest") -> "scout_checks_api_VersionedChecklist": + def archive(self, auth_header: str, request: "scout_checks_api_ArchiveChecklistsRequest") -> None: """ - Creates a new checklist with the provided checks and functions. + Archives the provided checklists. """ _headers: Dict[str, Any] = { @@ -14647,7 +18269,7 @@ def create(self, auth_header: str, request: "scout_checks_api_CreateChecklistReq _json: Any = ConjureEncoder().default(request) - _path = '/scout/v1/checklists' + _path = '/scout/v1/checklists/archive' _path = _path.format(**_path_params) _response: Response = self._request( @@ -14657,15 +18279,11 @@ def create(self, auth_header: str, request: "scout_checks_api_CreateChecklistReq headers=_headers, json=_json) - _decoder = ConjureDecoder() - return _decoder.decode(_response.json(), scout_checks_api_VersionedChecklist, self._return_none_for_unknown_union_types) + return - def commit(self, auth_header: str, checklist_rid: str, request: "scout_checks_api_CommitChecklistRequest", branch: Optional[str] = None) -> "scout_checks_api_VersionedChecklist": + def unarchive(self, auth_header: str, request: "scout_checks_api_UnarchiveChecklistsRequest") -> None: """ - Creates a permanent commit with a commit message. -Throws if the checklist or branch doesn't exist. -Throws if the latest commit doesn't match the provided id. -Throws if you commit to an archived checklist. + Unarchives the provided checklists. """ _headers: Dict[str, Any] = { @@ -14675,16 +18293,14 @@ def commit(self, auth_header: str, checklist_rid: str, request: "scout_checks_ap } _params: Dict[str, Any] = { - 'branch': branch, } _path_params: Dict[str, Any] = { - 'checklistRid': checklist_rid, } _json: Any = ConjureEncoder().default(request) - _path = '/scout/v1/checklists/{checklistRid}/commit' + _path = '/scout/v1/checklists/unarchive' _path = _path.format(**_path_params) _response: Response = self._request( @@ -14694,16 +18310,45 @@ def commit(self, auth_header: str, checklist_rid: str, request: "scout_checks_ap headers=_headers, json=_json) + return + + def get_check(self, auth_header: str, rid: str) -> "scout_checks_api_Check": + """ + Returns the check with the given rid. + """ + + _headers: Dict[str, Any] = { + 'Accept': 'application/json', + 'Authorization': auth_header, + } + + _params: Dict[str, Any] = { + } + + _path_params: Dict[str, Any] = { + 'rid': rid, + } + + _json: Any = None + + _path = '/scout/v1/checklists/check/{rid}' + _path = _path.format(**_path_params) + + _response: Response = self._request( + 'GET', + self._uri + _path, + params=_params, + headers=_headers, + json=_json) + _decoder = ConjureDecoder() - return _decoder.decode(_response.json(), scout_checks_api_VersionedChecklist, self._return_none_for_unknown_union_types) + return _decoder.decode(_response.json(), scout_checks_api_Check, self._return_none_for_unknown_union_types) - def save_working_state(self, auth_header: str, checklist_rid: str, request: "scout_checks_api_SaveChecklistRequest", branch: Optional[str] = None) -> "scout_checks_api_VersionedChecklist": + def batch_get_checks(self, auth_header: str, rids: List[str] = None) -> List["scout_checks_api_Check"]: """ - Creates a commit that may be compacted, e.g cleaned up and not exist anymore. -Throws if the checklist or branch doesn't exist. -Throws if the latest commit doesn't match the provided id. -Throws if you save to an archived checklist. + Returns the checks with the given rids. """ + rids = rids if rids is not None else [] _headers: Dict[str, Any] = { 'Accept': 'application/json', @@ -14712,16 +18357,14 @@ def save_working_state(self, auth_header: str, checklist_rid: str, request: "sco } _params: Dict[str, Any] = { - 'branch': branch, } _path_params: Dict[str, Any] = { - 'checklistRid': checklist_rid, } - _json: Any = ConjureEncoder().default(request) + _json: Any = ConjureEncoder().default(rids) - _path = '/scout/v1/checklists/{checklistRid}/save-working-state' + _path = '/scout/v1/checklists/check/batch-get' _path = _path.format(**_path_params) _response: Response = self._request( @@ -14732,1441 +18375,1751 @@ def save_working_state(self, auth_header: str, checklist_rid: str, request: "sco json=_json) _decoder = ConjureDecoder() - return _decoder.decode(_response.json(), scout_checks_api_VersionedChecklist, self._return_none_for_unknown_union_types) + return _decoder.decode(_response.json(), List[scout_checks_api_Check], self._return_none_for_unknown_union_types) - def merge_to_main(self, auth_header: str, checklist_rid: str, request: "scout_checks_api_MergeToMainRequest") -> "scout_checks_api_VersionedChecklist": + def get_all_labels_and_properties(self, auth_header: str) -> "scout_checks_api_GetAllLabelsAndPropertiesResponse": """ - Merges the given branch to the "main" branch. -Throws if the checklist or branch doesn't exist. -Throws if the latest commit doesn't match the provided id. -Throws if you merge with an archived checklist. + Returns all labels and properties. """ _headers: Dict[str, Any] = { 'Accept': 'application/json', - 'Content-Type': 'application/json', 'Authorization': auth_header, } - _params: Dict[str, Any] = { - } + _params: Dict[str, Any] = { + } + + _path_params: Dict[str, Any] = { + } + + _json: Any = None + + _path = '/scout/v1/checklists/get-all-labels-properties' + _path = _path.format(**_path_params) + + _response: Response = self._request( + 'GET', + self._uri + _path, + params=_params, + headers=_headers, + json=_json) + + _decoder = ConjureDecoder() + return _decoder.decode(_response.json(), scout_checks_api_GetAllLabelsAndPropertiesResponse, self._return_none_for_unknown_union_types) + + +scout_checks_api_ChecklistService.__name__ = "ChecklistService" +scout_checks_api_ChecklistService.__qualname__ = "ChecklistService" +scout_checks_api_ChecklistService.__module__ = "scout_service_api.scout_checks_api" + + +class scout_checks_api_ChecklistVariable(ConjureBeanType): + + @builtins.classmethod + def _fields(cls) -> Dict[str, ConjureFieldDefinition]: + return { + 'name': ConjureFieldDefinition('name', scout_compute_api_VariableName), + 'display_name': ConjureFieldDefinition('displayName', OptionalTypeWrapper[str]), + 'value': ConjureFieldDefinition('value', scout_checks_api_VariableLocator) + } + + __slots__: List[str] = ['_name', '_display_name', '_value'] + + def __init__(self, name: str, value: "scout_checks_api_VariableLocator", display_name: Optional[str] = None) -> None: + self._name = name + self._display_name = display_name + self._value = value + + @builtins.property + def name(self) -> str: + return self._name + + @builtins.property + def display_name(self) -> Optional[str]: + return self._display_name + + @builtins.property + def value(self) -> "scout_checks_api_VariableLocator": + return self._value + + +scout_checks_api_ChecklistVariable.__name__ = "ChecklistVariable" +scout_checks_api_ChecklistVariable.__qualname__ = "ChecklistVariable" +scout_checks_api_ChecklistVariable.__module__ = "scout_service_api.scout_checks_api" + + +class scout_checks_api_CommitChecklistRequest(ConjureBeanType): + + @builtins.classmethod + def _fields(cls) -> Dict[str, ConjureFieldDefinition]: + return { + 'commit_message': ConjureFieldDefinition('commitMessage', str), + 'checks': ConjureFieldDefinition('checks', List[scout_checks_api_UpdateChecklistEntryRequest]), + 'functions': ConjureFieldDefinition('functions', Dict[scout_compute_api_FunctionReference, scout_checks_api_UpdateFunctionEntryRequest]), + 'checklist_variables': ConjureFieldDefinition('checklistVariables', List[scout_checks_api_UnresolvedChecklistVariable]), + 'latest_commit': ConjureFieldDefinition('latestCommit', OptionalTypeWrapper[scout_versioning_api_CommitId]) + } + + __slots__: List[str] = ['_commit_message', '_checks', '_functions', '_checklist_variables', '_latest_commit'] + + def __init__(self, checklist_variables: List["scout_checks_api_UnresolvedChecklistVariable"], checks: List["scout_checks_api_UpdateChecklistEntryRequest"], commit_message: str, functions: Dict[str, "scout_checks_api_UpdateFunctionEntryRequest"], latest_commit: Optional[str] = None) -> None: + self._commit_message = commit_message + self._checks = checks + self._functions = functions + self._checklist_variables = checklist_variables + self._latest_commit = latest_commit + + @builtins.property + def commit_message(self) -> str: + return self._commit_message + + @builtins.property + def checks(self) -> List["scout_checks_api_UpdateChecklistEntryRequest"]: + return self._checks + + @builtins.property + def functions(self) -> Dict[str, "scout_checks_api_UpdateFunctionEntryRequest"]: + """ + The keys of the map are references that can be used for checks to reference functions in the same request, before the function RIDs have been created. + """ + return self._functions + + @builtins.property + def checklist_variables(self) -> List["scout_checks_api_UnresolvedChecklistVariable"]: + """ + Variables that can be used in checks and functions. Variables are resolved in order of declaration. +If variable `a` depends on variable `b`, then `b` must be defined before `a` in the list. + """ + return self._checklist_variables + + @builtins.property + def latest_commit(self) -> Optional[str]: + """ + If present, will validate that the latest commit matches this id, +and otherwise throw CommitConflict. + """ + return self._latest_commit + + +scout_checks_api_CommitChecklistRequest.__name__ = "CommitChecklistRequest" +scout_checks_api_CommitChecklistRequest.__qualname__ = "CommitChecklistRequest" +scout_checks_api_CommitChecklistRequest.__module__ = "scout_service_api.scout_checks_api" + + +class scout_checks_api_Completed(ConjureBeanType): + + @builtins.classmethod + def _fields(cls) -> Dict[str, ConjureFieldDefinition]: + return { + 'result': ConjureFieldDefinition('result', scout_checks_api_JobResult), + 'execution_start_time': ConjureFieldDefinition('executionStartTime', str), + 'execution_end_time': ConjureFieldDefinition('executionEndTime', str) + } + + __slots__: List[str] = ['_result', '_execution_start_time', '_execution_end_time'] + + def __init__(self, execution_end_time: str, execution_start_time: str, result: "scout_checks_api_JobResult") -> None: + self._result = result + self._execution_start_time = execution_start_time + self._execution_end_time = execution_end_time + + @builtins.property + def result(self) -> "scout_checks_api_JobResult": + return self._result + + @builtins.property + def execution_start_time(self) -> str: + return self._execution_start_time + + @builtins.property + def execution_end_time(self) -> str: + return self._execution_end_time + + +scout_checks_api_Completed.__name__ = "Completed" +scout_checks_api_Completed.__qualname__ = "Completed" +scout_checks_api_Completed.__module__ = "scout_service_api.scout_checks_api" + + +class scout_checks_api_ComputeNodeWithContext(ConjureBeanType): + + @builtins.classmethod + def _fields(cls) -> Dict[str, ConjureFieldDefinition]: + return { + 'series_node': ConjureFieldDefinition('seriesNode', scout_compute_api_ComputeNode), + 'context': ConjureFieldDefinition('context', scout_checks_api_CheckContext) + } + + __slots__: List[str] = ['_series_node', '_context'] + + def __init__(self, context: "scout_checks_api_CheckContext", series_node: "scout_compute_api_ComputeNode") -> None: + self._series_node = series_node + self._context = context + + @builtins.property + def series_node(self) -> "scout_compute_api_ComputeNode": + return self._series_node + + @builtins.property + def context(self) -> "scout_checks_api_CheckContext": + return self._context + + +scout_checks_api_ComputeNodeWithContext.__name__ = "ComputeNodeWithContext" +scout_checks_api_ComputeNodeWithContext.__qualname__ = "ComputeNodeWithContext" +scout_checks_api_ComputeNodeWithContext.__module__ = "scout_service_api.scout_checks_api" + + +class scout_checks_api_CreateCheckRequest(ConjureBeanType): + + @builtins.classmethod + def _fields(cls) -> Dict[str, ConjureFieldDefinition]: + return { + 'check_lineage_rid': ConjureFieldDefinition('checkLineageRid', OptionalTypeWrapper[str]), + 'title': ConjureFieldDefinition('title', str), + 'description': ConjureFieldDefinition('description', str), + 'auto_generated_title': ConjureFieldDefinition('autoGeneratedTitle', OptionalTypeWrapper[str]), + 'auto_generated_description': ConjureFieldDefinition('autoGeneratedDescription', OptionalTypeWrapper[str]), + 'priority': ConjureFieldDefinition('priority', scout_checks_api_Priority), + 'chart': ConjureFieldDefinition('chart', OptionalTypeWrapper[scout_rids_api_VersionedChartRid]), + 'condition': ConjureFieldDefinition('condition', OptionalTypeWrapper[scout_checks_api_UnresolvedCheckCondition]) + } + + __slots__: List[str] = ['_check_lineage_rid', '_title', '_description', '_auto_generated_title', '_auto_generated_description', '_priority', '_chart', '_condition'] + + def __init__(self, description: str, priority: "scout_checks_api_Priority", title: str, auto_generated_description: Optional[str] = None, auto_generated_title: Optional[str] = None, chart: Optional["scout_rids_api_VersionedChartRid"] = None, check_lineage_rid: Optional[str] = None, condition: Optional["scout_checks_api_UnresolvedCheckCondition"] = None) -> None: + self._check_lineage_rid = check_lineage_rid + self._title = title + self._description = description + self._auto_generated_title = auto_generated_title + self._auto_generated_description = auto_generated_description + self._priority = priority + self._chart = chart + self._condition = condition + + @builtins.property + def check_lineage_rid(self) -> Optional[str]: + """ + Identifies the lineage of checks this check belongs to. If not specified, a new lineage will be created. +This is named checkLineageRid for historical reasons but is actually a UUID. + """ + return self._check_lineage_rid + + @builtins.property + def title(self) -> str: + return self._title + + @builtins.property + def description(self) -> str: + return self._description + + @builtins.property + def auto_generated_title(self) -> Optional[str]: + return self._auto_generated_title + + @builtins.property + def auto_generated_description(self) -> Optional[str]: + return self._auto_generated_description + + @builtins.property + def priority(self) -> "scout_checks_api_Priority": + return self._priority + + @builtins.property + def chart(self) -> Optional["scout_rids_api_VersionedChartRid"]: + return self._chart + + @builtins.property + def condition(self) -> Optional["scout_checks_api_UnresolvedCheckCondition"]: + """ + If omitted, this check represents a manual check. + """ + return self._condition + + +scout_checks_api_CreateCheckRequest.__name__ = "CreateCheckRequest" +scout_checks_api_CreateCheckRequest.__qualname__ = "CreateCheckRequest" +scout_checks_api_CreateCheckRequest.__module__ = "scout_service_api.scout_checks_api" + + +class scout_checks_api_CreateChecklistEntryRequest(ConjureUnionType): + _create_check: Optional["scout_checks_api_CreateCheckRequest"] = None + + @builtins.classmethod + def _options(cls) -> Dict[str, ConjureFieldDefinition]: + return { + 'create_check': ConjureFieldDefinition('createCheck', scout_checks_api_CreateCheckRequest) + } + + def __init__( + self, + create_check: Optional["scout_checks_api_CreateCheckRequest"] = None, + type_of_union: Optional[str] = None + ) -> None: + if type_of_union is None: + if (create_check is not None) != 1: + raise ValueError('a union must contain a single member') + + if create_check is not None: + self._create_check = create_check + self._type = 'createCheck' + + elif type_of_union == 'createCheck': + if create_check is None: + raise ValueError('a union value must not be None') + self._create_check = create_check + self._type = 'createCheck' + + @builtins.property + def create_check(self) -> Optional["scout_checks_api_CreateCheckRequest"]: + return self._create_check + + def accept(self, visitor) -> Any: + if not isinstance(visitor, scout_checks_api_CreateChecklistEntryRequestVisitor): + raise ValueError('{} is not an instance of scout_checks_api_CreateChecklistEntryRequestVisitor'.format(visitor.__class__.__name__)) + if self._type == 'createCheck' and self.create_check is not None: + return visitor._create_check(self.create_check) + + +scout_checks_api_CreateChecklistEntryRequest.__name__ = "CreateChecklistEntryRequest" +scout_checks_api_CreateChecklistEntryRequest.__qualname__ = "CreateChecklistEntryRequest" +scout_checks_api_CreateChecklistEntryRequest.__module__ = "scout_service_api.scout_checks_api" + - _path_params: Dict[str, Any] = { - 'checklistRid': checklist_rid, - } +class scout_checks_api_CreateChecklistEntryRequestVisitor: - _json: Any = ConjureEncoder().default(request) + @abstractmethod + def _create_check(self, create_check: "scout_checks_api_CreateCheckRequest") -> Any: + pass - _path = '/scout/v1/checklists/{checklistRid}/merge-to-main' - _path = _path.format(**_path_params) - _response: Response = self._request( - 'POST', - self._uri + _path, - params=_params, - headers=_headers, - json=_json) +scout_checks_api_CreateChecklistEntryRequestVisitor.__name__ = "CreateChecklistEntryRequestVisitor" +scout_checks_api_CreateChecklistEntryRequestVisitor.__qualname__ = "CreateChecklistEntryRequestVisitor" +scout_checks_api_CreateChecklistEntryRequestVisitor.__module__ = "scout_service_api.scout_checks_api" - _decoder = ConjureDecoder() - return _decoder.decode(_response.json(), scout_checks_api_VersionedChecklist, self._return_none_for_unknown_union_types) - def update_data_source_ref_names(self, auth_header: str, checklist_rid: str, ref_name_updates: Dict[str, str], branch: Optional[str] = None) -> "scout_checks_api_VersionedChecklist": - """ - Updates the data source ref names for all checks within a checklist. -Throws if the checklist doesn't exist. - """ +class scout_checks_api_CreateChecklistRequest(ConjureBeanType): - _headers: Dict[str, Any] = { - 'Accept': 'application/json', - 'Content-Type': 'application/json', - 'Authorization': auth_header, + @builtins.classmethod + def _fields(cls) -> Dict[str, ConjureFieldDefinition]: + return { + 'commit_message': ConjureFieldDefinition('commitMessage', str), + 'assignee_rid': ConjureFieldDefinition('assigneeRid', scout_rids_api_UserRid), + 'title': ConjureFieldDefinition('title', str), + 'description': ConjureFieldDefinition('description', str), + 'functions': ConjureFieldDefinition('functions', Dict[scout_compute_api_FunctionReference, scout_checks_api_CreateFunctionRequest]), + 'checks': ConjureFieldDefinition('checks', List[scout_checks_api_CreateChecklistEntryRequest]), + 'properties': ConjureFieldDefinition('properties', Dict[scout_run_api_PropertyName, scout_run_api_PropertyValue]), + 'labels': ConjureFieldDefinition('labels', List[scout_run_api_Label]), + 'checklist_variables': ConjureFieldDefinition('checklistVariables', List[scout_checks_api_UnresolvedChecklistVariable]), + 'is_published': ConjureFieldDefinition('isPublished', OptionalTypeWrapper[bool]) } - _params: Dict[str, Any] = { - 'branch': branch, - } + __slots__: List[str] = ['_commit_message', '_assignee_rid', '_title', '_description', '_functions', '_checks', '_properties', '_labels', '_checklist_variables', '_is_published'] - _path_params: Dict[str, Any] = { - 'checklistRid': checklist_rid, - } + def __init__(self, assignee_rid: str, checklist_variables: List["scout_checks_api_UnresolvedChecklistVariable"], checks: List["scout_checks_api_CreateChecklistEntryRequest"], commit_message: str, description: str, functions: Dict[str, "scout_checks_api_CreateFunctionRequest"], labels: List[str], properties: Dict[str, str], title: str, is_published: Optional[bool] = None) -> None: + self._commit_message = commit_message + self._assignee_rid = assignee_rid + self._title = title + self._description = description + self._functions = functions + self._checks = checks + self._properties = properties + self._labels = labels + self._checklist_variables = checklist_variables + self._is_published = is_published - _json: Any = ConjureEncoder().default(ref_name_updates) + @builtins.property + def commit_message(self) -> str: + return self._commit_message - _path = '/scout/v1/checklists/{checklistRid}/update-ref-names' - _path = _path.format(**_path_params) + @builtins.property + def assignee_rid(self) -> str: + return self._assignee_rid - _response: Response = self._request( - 'POST', - self._uri + _path, - params=_params, - headers=_headers, - json=_json) + @builtins.property + def title(self) -> str: + return self._title - _decoder = ConjureDecoder() - return _decoder.decode(_response.json(), scout_checks_api_VersionedChecklist, self._return_none_for_unknown_union_types) + @builtins.property + def description(self) -> str: + return self._description - def update_metadata(self, auth_header: str, request: "scout_checks_api_UpdateChecklistMetadataRequest", rid: str) -> "scout_checks_api_ChecklistMetadata": + @builtins.property + def functions(self) -> Dict[str, "scout_checks_api_CreateFunctionRequest"]: """ - Updates the metadata of a checklist. + The keys of the map are references that can be used for checks to reference functions in the same request, before the function RIDs have been created. """ + return self._functions - _headers: Dict[str, Any] = { - 'Accept': 'application/json', - 'Content-Type': 'application/json', - 'Authorization': auth_header, - } - - _params: Dict[str, Any] = { - } - - _path_params: Dict[str, Any] = { - 'rid': rid, - } - - _json: Any = ConjureEncoder().default(request) + @builtins.property + def checks(self) -> List["scout_checks_api_CreateChecklistEntryRequest"]: + return self._checks - _path = '/scout/v1/checklists/{rid}/update-metadata' - _path = _path.format(**_path_params) + @builtins.property + def properties(self) -> Dict[str, str]: + return self._properties - _response: Response = self._request( - 'PUT', - self._uri + _path, - params=_params, - headers=_headers, - json=_json) + @builtins.property + def labels(self) -> List[str]: + return self._labels - _decoder = ConjureDecoder() - return _decoder.decode(_response.json(), scout_checks_api_ChecklistMetadata, self._return_none_for_unknown_union_types) + @builtins.property + def checklist_variables(self) -> List["scout_checks_api_UnresolvedChecklistVariable"]: + """ + Variables that can be used in checks and functions. Variables are resolved in order of declaration. +If variable `a` depends on variable `b`, then `b` must be defined before `a` in the list. + """ + return self._checklist_variables - def get(self, auth_header: str, rid: str, branch: Optional[str] = None, commit: Optional[str] = None) -> "scout_checks_api_VersionedChecklist": + @builtins.property + def is_published(self) -> Optional[bool]: """ - Specify at most one of (branch, commit). -If neither is specified, branch = "main" is the default. + Default value is true. """ + return self._is_published - _headers: Dict[str, Any] = { - 'Accept': 'application/json', - 'Authorization': auth_header, - } - _params: Dict[str, Any] = { - 'branch': branch, - 'commit': commit, - } +scout_checks_api_CreateChecklistRequest.__name__ = "CreateChecklistRequest" +scout_checks_api_CreateChecklistRequest.__qualname__ = "CreateChecklistRequest" +scout_checks_api_CreateChecklistRequest.__module__ = "scout_service_api.scout_checks_api" - _path_params: Dict[str, Any] = { - 'rid': rid, - } - _json: Any = None +class scout_checks_api_CreateFunctionRequest(ConjureBeanType): - _path = '/scout/v1/checklists/{rid}' - _path = _path.format(**_path_params) + @builtins.classmethod + def _fields(cls) -> Dict[str, ConjureFieldDefinition]: + return { + 'function_lineage_rid': ConjureFieldDefinition('functionLineageRid', OptionalTypeWrapper[scout_rids_api_FunctionLineageRid]), + 'title': ConjureFieldDefinition('title', str), + 'description': ConjureFieldDefinition('description', str), + 'auto_generated_title': ConjureFieldDefinition('autoGeneratedTitle', OptionalTypeWrapper[str]), + 'auto_generated_description': ConjureFieldDefinition('autoGeneratedDescription', OptionalTypeWrapper[str]), + 'node': ConjureFieldDefinition('node', scout_checks_api_FunctionNode) + } - _response: Response = self._request( - 'GET', - self._uri + _path, - params=_params, - headers=_headers, - json=_json) + __slots__: List[str] = ['_function_lineage_rid', '_title', '_description', '_auto_generated_title', '_auto_generated_description', '_node'] - _decoder = ConjureDecoder() - return _decoder.decode(_response.json(), scout_checks_api_VersionedChecklist, self._return_none_for_unknown_union_types) + def __init__(self, description: str, node: "scout_checks_api_FunctionNode", title: str, auto_generated_description: Optional[str] = None, auto_generated_title: Optional[str] = None, function_lineage_rid: Optional[str] = None) -> None: + self._function_lineage_rid = function_lineage_rid + self._title = title + self._description = description + self._auto_generated_title = auto_generated_title + self._auto_generated_description = auto_generated_description + self._node = node - def batch_get(self, auth_header: str, checklist_refs: List["scout_checks_api_PinnedChecklistRef"] = None) -> List["scout_checks_api_VersionedChecklist"]: + @builtins.property + def function_lineage_rid(self) -> Optional[str]: """ - Returns the pinned commit for each provided checklist reference. + Identifies the lineage of functions this function belongs to. If not specified, a new lineage will be created. """ - checklist_refs = checklist_refs if checklist_refs is not None else [] - - _headers: Dict[str, Any] = { - 'Accept': 'application/json', - 'Content-Type': 'application/json', - 'Authorization': auth_header, - } + return self._function_lineage_rid - _params: Dict[str, Any] = { - } + @builtins.property + def title(self) -> str: + return self._title - _path_params: Dict[str, Any] = { - } + @builtins.property + def description(self) -> str: + return self._description - _json: Any = ConjureEncoder().default(checklist_refs) + @builtins.property + def auto_generated_title(self) -> Optional[str]: + return self._auto_generated_title - _path = '/scout/v1/checklists/batch-get' - _path = _path.format(**_path_params) + @builtins.property + def auto_generated_description(self) -> Optional[str]: + return self._auto_generated_description - _response: Response = self._request( - 'POST', - self._uri + _path, - params=_params, - headers=_headers, - json=_json) + @builtins.property + def node(self) -> "scout_checks_api_FunctionNode": + return self._node - _decoder = ConjureDecoder() - return _decoder.decode(_response.json(), List[scout_checks_api_VersionedChecklist], self._return_none_for_unknown_union_types) - def batch_get_metadata(self, auth_header: str, request: "scout_checks_api_BatchGetChecklistMetadataRequest") -> "scout_checks_api_BatchGetChecklistMetadataResponse": - """ - Returns the metadata for each provided checklist. - """ +scout_checks_api_CreateFunctionRequest.__name__ = "CreateFunctionRequest" +scout_checks_api_CreateFunctionRequest.__qualname__ = "CreateFunctionRequest" +scout_checks_api_CreateFunctionRequest.__module__ = "scout_service_api.scout_checks_api" - _headers: Dict[str, Any] = { - 'Accept': 'application/json', - 'Content-Type': 'application/json', - 'Authorization': auth_header, - } - _params: Dict[str, Any] = { - } +class scout_checks_api_DeprecatedCheckJobSpec(ConjureBeanType): - _path_params: Dict[str, Any] = { + @builtins.classmethod + def _fields(cls) -> Dict[str, ConjureFieldDefinition]: + return { + 'data_review_rid': ConjureFieldDefinition('dataReviewRid', scout_datareview_api_DataReviewRid), + 'check_rid': ConjureFieldDefinition('checkRid', scout_rids_api_CheckRid), + 'check_evaluation_rid': ConjureFieldDefinition('checkEvaluationRid', scout_datareview_api_AutomaticCheckEvaluationRid), + 'check_condition': ConjureFieldDefinition('checkCondition', scout_checks_api_CheckCondition), + 'start': ConjureFieldDefinition('start', scout_compute_api_Timestamp), + 'end': ConjureFieldDefinition('end', scout_compute_api_Timestamp), + 'context': ConjureFieldDefinition('context', scout_compute_api_deprecated_Context) } - _json: Any = ConjureEncoder().default(request) + __slots__: List[str] = ['_data_review_rid', '_check_rid', '_check_evaluation_rid', '_check_condition', '_start', '_end', '_context'] - _path = '/scout/v1/checklists/batch-get-metadata' - _path = _path.format(**_path_params) + def __init__(self, check_condition: "scout_checks_api_CheckCondition", check_evaluation_rid: str, check_rid: str, context: "scout_compute_api_deprecated_Context", data_review_rid: str, end: "scout_compute_api_Timestamp", start: "scout_compute_api_Timestamp") -> None: + self._data_review_rid = data_review_rid + self._check_rid = check_rid + self._check_evaluation_rid = check_evaluation_rid + self._check_condition = check_condition + self._start = start + self._end = end + self._context = context - _response: Response = self._request( - 'POST', - self._uri + _path, - params=_params, - headers=_headers, - json=_json) + @builtins.property + def data_review_rid(self) -> str: + return self._data_review_rid - _decoder = ConjureDecoder() - return _decoder.decode(_response.json(), scout_checks_api_BatchGetChecklistMetadataResponse, self._return_none_for_unknown_union_types) + @builtins.property + def check_rid(self) -> str: + return self._check_rid - def search(self, auth_header: str, request: "scout_checks_api_SearchChecklistsRequest") -> "scout_checks_api_VersionedChecklistPage": - """ - Results will be the latest commit on main for each checklist. - """ + @builtins.property + def check_evaluation_rid(self) -> str: + return self._check_evaluation_rid - _headers: Dict[str, Any] = { - 'Accept': 'application/json', - 'Content-Type': 'application/json', - 'Authorization': auth_header, - } + @builtins.property + def check_condition(self) -> "scout_checks_api_CheckCondition": + return self._check_condition - _params: Dict[str, Any] = { - } + @builtins.property + def start(self) -> "scout_compute_api_Timestamp": + return self._start - _path_params: Dict[str, Any] = { - } + @builtins.property + def end(self) -> "scout_compute_api_Timestamp": + return self._end - _json: Any = ConjureEncoder().default(request) + @builtins.property + def context(self) -> "scout_compute_api_deprecated_Context": + return self._context - _path = '/scout/v1/checklists/search' - _path = _path.format(**_path_params) - _response: Response = self._request( - 'POST', - self._uri + _path, - params=_params, - headers=_headers, - json=_json) +scout_checks_api_DeprecatedCheckJobSpec.__name__ = "DeprecatedCheckJobSpec" +scout_checks_api_DeprecatedCheckJobSpec.__qualname__ = "DeprecatedCheckJobSpec" +scout_checks_api_DeprecatedCheckJobSpec.__module__ = "scout_service_api.scout_checks_api" - _decoder = ConjureDecoder() - return _decoder.decode(_response.json(), scout_checks_api_VersionedChecklistPage, self._return_none_for_unknown_union_types) - def archive(self, auth_header: str, request: "scout_checks_api_ArchiveChecklistsRequest") -> None: - """ - Archives the provided checklists. - """ +class scout_checks_api_Failed(ConjureBeanType): - _headers: Dict[str, Any] = { - 'Accept': 'application/json', - 'Content-Type': 'application/json', - 'Authorization': auth_header, + @builtins.classmethod + def _fields(cls) -> Dict[str, ConjureFieldDefinition]: + return { + 'failure_message': ConjureFieldDefinition('failureMessage', OptionalTypeWrapper[str]), + 'execution_start_time': ConjureFieldDefinition('executionStartTime', OptionalTypeWrapper[str]), + 'execution_end_time': ConjureFieldDefinition('executionEndTime', str) } - _params: Dict[str, Any] = { - } + __slots__: List[str] = ['_failure_message', '_execution_start_time', '_execution_end_time'] - _path_params: Dict[str, Any] = { - } + def __init__(self, execution_end_time: str, execution_start_time: Optional[str] = None, failure_message: Optional[str] = None) -> None: + self._failure_message = failure_message + self._execution_start_time = execution_start_time + self._execution_end_time = execution_end_time - _json: Any = ConjureEncoder().default(request) + @builtins.property + def failure_message(self) -> Optional[str]: + return self._failure_message - _path = '/scout/v1/checklists/archive' - _path = _path.format(**_path_params) + @builtins.property + def execution_start_time(self) -> Optional[str]: + return self._execution_start_time - _response: Response = self._request( - 'POST', - self._uri + _path, - params=_params, - headers=_headers, - json=_json) + @builtins.property + def execution_end_time(self) -> str: + return self._execution_end_time - return - def unarchive(self, auth_header: str, request: "scout_checks_api_UnarchiveChecklistsRequest") -> None: - """ - Unarchives the provided checklists. - """ +scout_checks_api_Failed.__name__ = "Failed" +scout_checks_api_Failed.__qualname__ = "Failed" +scout_checks_api_Failed.__module__ = "scout_service_api.scout_checks_api" - _headers: Dict[str, Any] = { - 'Accept': 'application/json', - 'Content-Type': 'application/json', - 'Authorization': auth_header, - } - _params: Dict[str, Any] = { - } +class scout_checks_api_Function(ConjureBeanType): - _path_params: Dict[str, Any] = { + @builtins.classmethod + def _fields(cls) -> Dict[str, ConjureFieldDefinition]: + return { + 'rid': ConjureFieldDefinition('rid', scout_rids_api_FunctionRid), + 'function_lineage_rid': ConjureFieldDefinition('functionLineageRid', scout_rids_api_FunctionLineageRid), + 'title': ConjureFieldDefinition('title', str), + 'description': ConjureFieldDefinition('description', str), + 'auto_generated_title': ConjureFieldDefinition('autoGeneratedTitle', OptionalTypeWrapper[str]), + 'auto_generated_description': ConjureFieldDefinition('autoGeneratedDescription', OptionalTypeWrapper[str]), + 'function_node': ConjureFieldDefinition('functionNode', scout_checks_api_FunctionNode) } - _json: Any = ConjureEncoder().default(request) + __slots__: List[str] = ['_rid', '_function_lineage_rid', '_title', '_description', '_auto_generated_title', '_auto_generated_description', '_function_node'] - _path = '/scout/v1/checklists/unarchive' - _path = _path.format(**_path_params) + def __init__(self, description: str, function_lineage_rid: str, function_node: "scout_checks_api_FunctionNode", rid: str, title: str, auto_generated_description: Optional[str] = None, auto_generated_title: Optional[str] = None) -> None: + self._rid = rid + self._function_lineage_rid = function_lineage_rid + self._title = title + self._description = description + self._auto_generated_title = auto_generated_title + self._auto_generated_description = auto_generated_description + self._function_node = function_node - _response: Response = self._request( - 'POST', - self._uri + _path, - params=_params, - headers=_headers, - json=_json) + @builtins.property + def rid(self) -> str: + return self._rid - return + @builtins.property + def function_lineage_rid(self) -> str: + return self._function_lineage_rid - def get_check(self, auth_header: str, rid: str) -> "scout_checks_api_Check": - """ - Returns the check with the given rid. - """ + @builtins.property + def title(self) -> str: + return self._title - _headers: Dict[str, Any] = { - 'Accept': 'application/json', - 'Authorization': auth_header, - } + @builtins.property + def description(self) -> str: + return self._description - _params: Dict[str, Any] = { - } + @builtins.property + def auto_generated_title(self) -> Optional[str]: + return self._auto_generated_title - _path_params: Dict[str, Any] = { - 'rid': rid, - } + @builtins.property + def auto_generated_description(self) -> Optional[str]: + return self._auto_generated_description - _json: Any = None + @builtins.property + def function_node(self) -> "scout_checks_api_FunctionNode": + return self._function_node - _path = '/scout/v1/checklists/check/{rid}' - _path = _path.format(**_path_params) - _response: Response = self._request( - 'GET', - self._uri + _path, - params=_params, - headers=_headers, - json=_json) +scout_checks_api_Function.__name__ = "Function" +scout_checks_api_Function.__qualname__ = "Function" +scout_checks_api_Function.__module__ = "scout_service_api.scout_checks_api" - _decoder = ConjureDecoder() - return _decoder.decode(_response.json(), scout_checks_api_Check, self._return_none_for_unknown_union_types) - def batch_get_checks(self, auth_header: str, rids: List[str] = None) -> List["scout_checks_api_Check"]: - """ - Returns the checks with the given rids. - """ - rids = rids if rids is not None else [] +class scout_checks_api_FunctionNode(ConjureUnionType): + _enum: Optional["scout_compute_api_EnumSeriesNode"] = None + _numeric: Optional["scout_compute_api_NumericSeriesNode"] = None + _ranges: Optional["scout_compute_api_RangesNode"] = None - _headers: Dict[str, Any] = { - 'Accept': 'application/json', - 'Content-Type': 'application/json', - 'Authorization': auth_header, + @builtins.classmethod + def _options(cls) -> Dict[str, ConjureFieldDefinition]: + return { + 'enum': ConjureFieldDefinition('enum', scout_compute_api_EnumSeriesNode), + 'numeric': ConjureFieldDefinition('numeric', scout_compute_api_NumericSeriesNode), + 'ranges': ConjureFieldDefinition('ranges', scout_compute_api_RangesNode) } - _params: Dict[str, Any] = { - } + def __init__( + self, + enum: Optional["scout_compute_api_EnumSeriesNode"] = None, + numeric: Optional["scout_compute_api_NumericSeriesNode"] = None, + ranges: Optional["scout_compute_api_RangesNode"] = None, + type_of_union: Optional[str] = None + ) -> None: + if type_of_union is None: + if (enum is not None) + (numeric is not None) + (ranges is not None) != 1: + raise ValueError('a union must contain a single member') - _path_params: Dict[str, Any] = { - } + if enum is not None: + self._enum = enum + self._type = 'enum' + if numeric is not None: + self._numeric = numeric + self._type = 'numeric' + if ranges is not None: + self._ranges = ranges + self._type = 'ranges' - _json: Any = ConjureEncoder().default(rids) + elif type_of_union == 'enum': + if enum is None: + raise ValueError('a union value must not be None') + self._enum = enum + self._type = 'enum' + elif type_of_union == 'numeric': + if numeric is None: + raise ValueError('a union value must not be None') + self._numeric = numeric + self._type = 'numeric' + elif type_of_union == 'ranges': + if ranges is None: + raise ValueError('a union value must not be None') + self._ranges = ranges + self._type = 'ranges' - _path = '/scout/v1/checklists/check/batch-get' - _path = _path.format(**_path_params) + @builtins.property + def enum(self) -> Optional["scout_compute_api_EnumSeriesNode"]: + return self._enum - _response: Response = self._request( - 'POST', - self._uri + _path, - params=_params, - headers=_headers, - json=_json) + @builtins.property + def numeric(self) -> Optional["scout_compute_api_NumericSeriesNode"]: + return self._numeric - _decoder = ConjureDecoder() - return _decoder.decode(_response.json(), List[scout_checks_api_Check], self._return_none_for_unknown_union_types) + @builtins.property + def ranges(self) -> Optional["scout_compute_api_RangesNode"]: + return self._ranges - def get_all_labels_and_properties(self, auth_header: str) -> "scout_checks_api_GetAllLabelsAndPropertiesResponse": - """ - Returns all labels and properties. - """ + def accept(self, visitor) -> Any: + if not isinstance(visitor, scout_checks_api_FunctionNodeVisitor): + raise ValueError('{} is not an instance of scout_checks_api_FunctionNodeVisitor'.format(visitor.__class__.__name__)) + if self._type == 'enum' and self.enum is not None: + return visitor._enum(self.enum) + if self._type == 'numeric' and self.numeric is not None: + return visitor._numeric(self.numeric) + if self._type == 'ranges' and self.ranges is not None: + return visitor._ranges(self.ranges) - _headers: Dict[str, Any] = { - 'Accept': 'application/json', - 'Authorization': auth_header, - } - _params: Dict[str, Any] = { - } +scout_checks_api_FunctionNode.__name__ = "FunctionNode" +scout_checks_api_FunctionNode.__qualname__ = "FunctionNode" +scout_checks_api_FunctionNode.__module__ = "scout_service_api.scout_checks_api" - _path_params: Dict[str, Any] = { - } - _json: Any = None +class scout_checks_api_FunctionNodeVisitor: - _path = '/scout/v1/checklists/get-all-labels-properties' - _path = _path.format(**_path_params) + @abstractmethod + def _enum(self, enum: "scout_compute_api_EnumSeriesNode") -> Any: + pass - _response: Response = self._request( - 'GET', - self._uri + _path, - params=_params, - headers=_headers, - json=_json) + @abstractmethod + def _numeric(self, numeric: "scout_compute_api_NumericSeriesNode") -> Any: + pass - _decoder = ConjureDecoder() - return _decoder.decode(_response.json(), scout_checks_api_GetAllLabelsAndPropertiesResponse, self._return_none_for_unknown_union_types) + @abstractmethod + def _ranges(self, ranges: "scout_compute_api_RangesNode") -> Any: + pass -scout_checks_api_ChecklistService.__name__ = "ChecklistService" -scout_checks_api_ChecklistService.__qualname__ = "ChecklistService" -scout_checks_api_ChecklistService.__module__ = "scout_service_api.scout_checks_api" +scout_checks_api_FunctionNodeVisitor.__name__ = "FunctionNodeVisitor" +scout_checks_api_FunctionNodeVisitor.__qualname__ = "FunctionNodeVisitor" +scout_checks_api_FunctionNodeVisitor.__module__ = "scout_service_api.scout_checks_api" -class scout_checks_api_ChecklistVariable(ConjureBeanType): +class scout_checks_api_GetAllLabelsAndPropertiesResponse(ConjureBeanType): @builtins.classmethod def _fields(cls) -> Dict[str, ConjureFieldDefinition]: return { - 'name': ConjureFieldDefinition('name', scout_compute_api_VariableName), - 'display_name': ConjureFieldDefinition('displayName', OptionalTypeWrapper[str]), - 'value': ConjureFieldDefinition('value', scout_checks_api_VariableLocator) + 'properties': ConjureFieldDefinition('properties', Dict[scout_run_api_PropertyName, List[scout_run_api_PropertyValue]]), + 'labels': ConjureFieldDefinition('labels', List[scout_run_api_Label]) } - __slots__: List[str] = ['_name', '_display_name', '_value'] - - def __init__(self, name: str, value: "scout_checks_api_VariableLocator", display_name: Optional[str] = None) -> None: - self._name = name - self._display_name = display_name - self._value = value + __slots__: List[str] = ['_properties', '_labels'] - @builtins.property - def name(self) -> str: - return self._name + def __init__(self, labels: List[str], properties: Dict[str, List[str]]) -> None: + self._properties = properties + self._labels = labels @builtins.property - def display_name(self) -> Optional[str]: - return self._display_name + def properties(self) -> Dict[str, List[str]]: + return self._properties @builtins.property - def value(self) -> "scout_checks_api_VariableLocator": - return self._value + def labels(self) -> List[str]: + return self._labels -scout_checks_api_ChecklistVariable.__name__ = "ChecklistVariable" -scout_checks_api_ChecklistVariable.__qualname__ = "ChecklistVariable" -scout_checks_api_ChecklistVariable.__module__ = "scout_service_api.scout_checks_api" +scout_checks_api_GetAllLabelsAndPropertiesResponse.__name__ = "GetAllLabelsAndPropertiesResponse" +scout_checks_api_GetAllLabelsAndPropertiesResponse.__qualname__ = "GetAllLabelsAndPropertiesResponse" +scout_checks_api_GetAllLabelsAndPropertiesResponse.__module__ = "scout_service_api.scout_checks_api" -class scout_checks_api_CommitChecklistRequest(ConjureBeanType): +class scout_checks_api_InProgress(ConjureBeanType): @builtins.classmethod def _fields(cls) -> Dict[str, ConjureFieldDefinition]: return { - 'commit_message': ConjureFieldDefinition('commitMessage', str), - 'checks': ConjureFieldDefinition('checks', List[scout_checks_api_UpdateChecklistEntryRequest]), - 'functions': ConjureFieldDefinition('functions', Dict[scout_compute_api_FunctionReference, scout_checks_api_UpdateFunctionEntryRequest]), - 'checklist_variables': ConjureFieldDefinition('checklistVariables', List[scout_checks_api_UnresolvedChecklistVariable]), - 'latest_commit': ConjureFieldDefinition('latestCommit', OptionalTypeWrapper[scout_versioning_api_CommitId]) } - __slots__: List[str] = ['_commit_message', '_checks', '_functions', '_checklist_variables', '_latest_commit'] - - def __init__(self, checklist_variables: List["scout_checks_api_UnresolvedChecklistVariable"], checks: List["scout_checks_api_UpdateChecklistEntryRequest"], commit_message: str, functions: Dict[str, "scout_checks_api_UpdateFunctionEntryRequest"], latest_commit: Optional[str] = None) -> None: - self._commit_message = commit_message - self._checks = checks - self._functions = functions - self._checklist_variables = checklist_variables - self._latest_commit = latest_commit - - @builtins.property - def commit_message(self) -> str: - return self._commit_message - - @builtins.property - def checks(self) -> List["scout_checks_api_UpdateChecklistEntryRequest"]: - return self._checks - - @builtins.property - def functions(self) -> Dict[str, "scout_checks_api_UpdateFunctionEntryRequest"]: - """ - The keys of the map are references that can be used for checks to reference functions in the same request, before the function RIDs have been created. - """ - return self._functions - - @builtins.property - def checklist_variables(self) -> List["scout_checks_api_UnresolvedChecklistVariable"]: - """ - Variables that can be used in checks and functions. Variables are resolved in order of declaration. -If variable `a` depends on variable `b`, then `b` must be defined before `a` in the list. - """ - return self._checklist_variables + __slots__: List[str] = [] - @builtins.property - def latest_commit(self) -> Optional[str]: - """ - If present, will validate that the latest commit matches this id, -and otherwise throw CommitConflict. - """ - return self._latest_commit -scout_checks_api_CommitChecklistRequest.__name__ = "CommitChecklistRequest" -scout_checks_api_CommitChecklistRequest.__qualname__ = "CommitChecklistRequest" -scout_checks_api_CommitChecklistRequest.__module__ = "scout_service_api.scout_checks_api" +scout_checks_api_InProgress.__name__ = "InProgress" +scout_checks_api_InProgress.__qualname__ = "InProgress" +scout_checks_api_InProgress.__module__ = "scout_service_api.scout_checks_api" -class scout_checks_api_Completed(ConjureBeanType): +class scout_checks_api_JobReport(ConjureBeanType): @builtins.classmethod def _fields(cls) -> Dict[str, ConjureFieldDefinition]: return { - 'result': ConjureFieldDefinition('result', scout_checks_api_JobResult), - 'execution_start_time': ConjureFieldDefinition('executionStartTime', str), - 'execution_end_time': ConjureFieldDefinition('executionEndTime', str) + 'job_status': ConjureFieldDefinition('jobStatus', scout_checks_api_JobStatus), + 'job_rid': ConjureFieldDefinition('jobRid', scout_checks_api_JobRid), + 'submitted_at': ConjureFieldDefinition('submittedAt', str) } - __slots__: List[str] = ['_result', '_execution_start_time', '_execution_end_time'] + __slots__: List[str] = ['_job_status', '_job_rid', '_submitted_at'] - def __init__(self, execution_end_time: str, execution_start_time: str, result: "scout_checks_api_JobResult") -> None: - self._result = result - self._execution_start_time = execution_start_time - self._execution_end_time = execution_end_time + def __init__(self, job_rid: str, job_status: "scout_checks_api_JobStatus", submitted_at: str) -> None: + self._job_status = job_status + self._job_rid = job_rid + self._submitted_at = submitted_at @builtins.property - def result(self) -> "scout_checks_api_JobResult": - return self._result + def job_status(self) -> "scout_checks_api_JobStatus": + return self._job_status @builtins.property - def execution_start_time(self) -> str: - return self._execution_start_time + def job_rid(self) -> str: + return self._job_rid @builtins.property - def execution_end_time(self) -> str: - return self._execution_end_time + def submitted_at(self) -> str: + return self._submitted_at -scout_checks_api_Completed.__name__ = "Completed" -scout_checks_api_Completed.__qualname__ = "Completed" -scout_checks_api_Completed.__module__ = "scout_service_api.scout_checks_api" +scout_checks_api_JobReport.__name__ = "JobReport" +scout_checks_api_JobReport.__qualname__ = "JobReport" +scout_checks_api_JobReport.__module__ = "scout_service_api.scout_checks_api" -class scout_checks_api_ComputeNodeWithContext(ConjureBeanType): +class scout_checks_api_JobResult(ConjureUnionType): + _check_job_result: Optional["scout_checks_api_CheckJobResult"] = None @builtins.classmethod - def _fields(cls) -> Dict[str, ConjureFieldDefinition]: + def _options(cls) -> Dict[str, ConjureFieldDefinition]: return { - 'series_node': ConjureFieldDefinition('seriesNode', scout_compute_api_ComputeNode), - 'context': ConjureFieldDefinition('context', scout_checks_api_CheckContext) + 'check_job_result': ConjureFieldDefinition('checkJobResult', scout_checks_api_CheckJobResult) } - __slots__: List[str] = ['_series_node', '_context'] + def __init__( + self, + check_job_result: Optional["scout_checks_api_CheckJobResult"] = None, + type_of_union: Optional[str] = None + ) -> None: + if type_of_union is None: + if (check_job_result is not None) != 1: + raise ValueError('a union must contain a single member') - def __init__(self, context: "scout_checks_api_CheckContext", series_node: "scout_compute_api_ComputeNode") -> None: - self._series_node = series_node - self._context = context + if check_job_result is not None: + self._check_job_result = check_job_result + self._type = 'checkJobResult' - @builtins.property - def series_node(self) -> "scout_compute_api_ComputeNode": - return self._series_node + elif type_of_union == 'checkJobResult': + if check_job_result is None: + raise ValueError('a union value must not be None') + self._check_job_result = check_job_result + self._type = 'checkJobResult' @builtins.property - def context(self) -> "scout_checks_api_CheckContext": - return self._context + def check_job_result(self) -> Optional["scout_checks_api_CheckJobResult"]: + return self._check_job_result + + def accept(self, visitor) -> Any: + if not isinstance(visitor, scout_checks_api_JobResultVisitor): + raise ValueError('{} is not an instance of scout_checks_api_JobResultVisitor'.format(visitor.__class__.__name__)) + if self._type == 'checkJobResult' and self.check_job_result is not None: + return visitor._check_job_result(self.check_job_result) -scout_checks_api_ComputeNodeWithContext.__name__ = "ComputeNodeWithContext" -scout_checks_api_ComputeNodeWithContext.__qualname__ = "ComputeNodeWithContext" -scout_checks_api_ComputeNodeWithContext.__module__ = "scout_service_api.scout_checks_api" +scout_checks_api_JobResult.__name__ = "JobResult" +scout_checks_api_JobResult.__qualname__ = "JobResult" +scout_checks_api_JobResult.__module__ = "scout_service_api.scout_checks_api" -class scout_checks_api_CreateCheckRequest(ConjureBeanType): +class scout_checks_api_JobResultVisitor: + + @abstractmethod + def _check_job_result(self, check_job_result: "scout_checks_api_CheckJobResult") -> Any: + pass + + +scout_checks_api_JobResultVisitor.__name__ = "JobResultVisitor" +scout_checks_api_JobResultVisitor.__qualname__ = "JobResultVisitor" +scout_checks_api_JobResultVisitor.__module__ = "scout_service_api.scout_checks_api" + + +class scout_checks_api_JobSpec(ConjureUnionType): + _check: Optional["scout_checks_api_DeprecatedCheckJobSpec"] = None + _check_v2: Optional["scout_checks_api_CheckJobSpec"] = None @builtins.classmethod - def _fields(cls) -> Dict[str, ConjureFieldDefinition]: + def _options(cls) -> Dict[str, ConjureFieldDefinition]: return { - 'check_lineage_rid': ConjureFieldDefinition('checkLineageRid', OptionalTypeWrapper[str]), - 'title': ConjureFieldDefinition('title', str), - 'description': ConjureFieldDefinition('description', str), - 'auto_generated_title': ConjureFieldDefinition('autoGeneratedTitle', OptionalTypeWrapper[str]), - 'auto_generated_description': ConjureFieldDefinition('autoGeneratedDescription', OptionalTypeWrapper[str]), - 'priority': ConjureFieldDefinition('priority', scout_checks_api_Priority), - 'chart': ConjureFieldDefinition('chart', OptionalTypeWrapper[scout_rids_api_VersionedChartRid]), - 'condition': ConjureFieldDefinition('condition', OptionalTypeWrapper[scout_checks_api_UnresolvedCheckCondition]) + 'check': ConjureFieldDefinition('check', scout_checks_api_DeprecatedCheckJobSpec), + 'check_v2': ConjureFieldDefinition('checkV2', scout_checks_api_CheckJobSpec) } - __slots__: List[str] = ['_check_lineage_rid', '_title', '_description', '_auto_generated_title', '_auto_generated_description', '_priority', '_chart', '_condition'] + def __init__( + self, + check: Optional["scout_checks_api_DeprecatedCheckJobSpec"] = None, + check_v2: Optional["scout_checks_api_CheckJobSpec"] = None, + type_of_union: Optional[str] = None + ) -> None: + if type_of_union is None: + if (check is not None) + (check_v2 is not None) != 1: + raise ValueError('a union must contain a single member') - def __init__(self, description: str, priority: "scout_checks_api_Priority", title: str, auto_generated_description: Optional[str] = None, auto_generated_title: Optional[str] = None, chart: Optional["scout_rids_api_VersionedChartRid"] = None, check_lineage_rid: Optional[str] = None, condition: Optional["scout_checks_api_UnresolvedCheckCondition"] = None) -> None: - self._check_lineage_rid = check_lineage_rid - self._title = title - self._description = description - self._auto_generated_title = auto_generated_title - self._auto_generated_description = auto_generated_description - self._priority = priority - self._chart = chart - self._condition = condition + if check is not None: + self._check = check + self._type = 'check' + if check_v2 is not None: + self._check_v2 = check_v2 + self._type = 'checkV2' - @builtins.property - def check_lineage_rid(self) -> Optional[str]: - """ - Identifies the lineage of checks this check belongs to. If not specified, a new lineage will be created. -This is named checkLineageRid for historical reasons but is actually a UUID. - """ - return self._check_lineage_rid + elif type_of_union == 'check': + if check is None: + raise ValueError('a union value must not be None') + self._check = check + self._type = 'check' + elif type_of_union == 'checkV2': + if check_v2 is None: + raise ValueError('a union value must not be None') + self._check_v2 = check_v2 + self._type = 'checkV2' @builtins.property - def title(self) -> str: - return self._title + def check(self) -> Optional["scout_checks_api_DeprecatedCheckJobSpec"]: + return self._check @builtins.property - def description(self) -> str: - return self._description + def check_v2(self) -> Optional["scout_checks_api_CheckJobSpec"]: + return self._check_v2 - @builtins.property - def auto_generated_title(self) -> Optional[str]: - return self._auto_generated_title + def accept(self, visitor) -> Any: + if not isinstance(visitor, scout_checks_api_JobSpecVisitor): + raise ValueError('{} is not an instance of scout_checks_api_JobSpecVisitor'.format(visitor.__class__.__name__)) + if self._type == 'check' and self.check is not None: + return visitor._check(self.check) + if self._type == 'checkV2' and self.check_v2 is not None: + return visitor._check_v2(self.check_v2) - @builtins.property - def auto_generated_description(self) -> Optional[str]: - return self._auto_generated_description - @builtins.property - def priority(self) -> "scout_checks_api_Priority": - return self._priority +scout_checks_api_JobSpec.__name__ = "JobSpec" +scout_checks_api_JobSpec.__qualname__ = "JobSpec" +scout_checks_api_JobSpec.__module__ = "scout_service_api.scout_checks_api" - @builtins.property - def chart(self) -> Optional["scout_rids_api_VersionedChartRid"]: - return self._chart - @builtins.property - def condition(self) -> Optional["scout_checks_api_UnresolvedCheckCondition"]: - """ - If omitted, this check represents a manual check. - """ - return self._condition +class scout_checks_api_JobSpecVisitor: + + @abstractmethod + def _check(self, check: "scout_checks_api_DeprecatedCheckJobSpec") -> Any: + pass + + @abstractmethod + def _check_v2(self, check_v2: "scout_checks_api_CheckJobSpec") -> Any: + pass -scout_checks_api_CreateCheckRequest.__name__ = "CreateCheckRequest" -scout_checks_api_CreateCheckRequest.__qualname__ = "CreateCheckRequest" -scout_checks_api_CreateCheckRequest.__module__ = "scout_service_api.scout_checks_api" +scout_checks_api_JobSpecVisitor.__name__ = "JobSpecVisitor" +scout_checks_api_JobSpecVisitor.__qualname__ = "JobSpecVisitor" +scout_checks_api_JobSpecVisitor.__module__ = "scout_service_api.scout_checks_api" -class scout_checks_api_CreateChecklistEntryRequest(ConjureUnionType): - _create_check: Optional["scout_checks_api_CreateCheckRequest"] = None +class scout_checks_api_JobStatus(ConjureUnionType): + _in_progress: Optional["scout_checks_api_InProgress"] = None + _completed: Optional["scout_checks_api_Completed"] = None + _failed: Optional["scout_checks_api_Failed"] = None @builtins.classmethod def _options(cls) -> Dict[str, ConjureFieldDefinition]: return { - 'create_check': ConjureFieldDefinition('createCheck', scout_checks_api_CreateCheckRequest) + 'in_progress': ConjureFieldDefinition('inProgress', scout_checks_api_InProgress), + 'completed': ConjureFieldDefinition('completed', scout_checks_api_Completed), + 'failed': ConjureFieldDefinition('failed', scout_checks_api_Failed) } def __init__( self, - create_check: Optional["scout_checks_api_CreateCheckRequest"] = None, + in_progress: Optional["scout_checks_api_InProgress"] = None, + completed: Optional["scout_checks_api_Completed"] = None, + failed: Optional["scout_checks_api_Failed"] = None, type_of_union: Optional[str] = None ) -> None: if type_of_union is None: - if (create_check is not None) != 1: + if (in_progress is not None) + (completed is not None) + (failed is not None) != 1: raise ValueError('a union must contain a single member') - if create_check is not None: - self._create_check = create_check - self._type = 'createCheck' + if in_progress is not None: + self._in_progress = in_progress + self._type = 'inProgress' + if completed is not None: + self._completed = completed + self._type = 'completed' + if failed is not None: + self._failed = failed + self._type = 'failed' - elif type_of_union == 'createCheck': - if create_check is None: + elif type_of_union == 'inProgress': + if in_progress is None: raise ValueError('a union value must not be None') - self._create_check = create_check - self._type = 'createCheck' + self._in_progress = in_progress + self._type = 'inProgress' + elif type_of_union == 'completed': + if completed is None: + raise ValueError('a union value must not be None') + self._completed = completed + self._type = 'completed' + elif type_of_union == 'failed': + if failed is None: + raise ValueError('a union value must not be None') + self._failed = failed + self._type = 'failed' @builtins.property - def create_check(self) -> Optional["scout_checks_api_CreateCheckRequest"]: - return self._create_check + def in_progress(self) -> Optional["scout_checks_api_InProgress"]: + return self._in_progress + + @builtins.property + def completed(self) -> Optional["scout_checks_api_Completed"]: + return self._completed + + @builtins.property + def failed(self) -> Optional["scout_checks_api_Failed"]: + return self._failed def accept(self, visitor) -> Any: - if not isinstance(visitor, scout_checks_api_CreateChecklistEntryRequestVisitor): - raise ValueError('{} is not an instance of scout_checks_api_CreateChecklistEntryRequestVisitor'.format(visitor.__class__.__name__)) - if self._type == 'createCheck' and self.create_check is not None: - return visitor._create_check(self.create_check) + if not isinstance(visitor, scout_checks_api_JobStatusVisitor): + raise ValueError('{} is not an instance of scout_checks_api_JobStatusVisitor'.format(visitor.__class__.__name__)) + if self._type == 'inProgress' and self.in_progress is not None: + return visitor._in_progress(self.in_progress) + if self._type == 'completed' and self.completed is not None: + return visitor._completed(self.completed) + if self._type == 'failed' and self.failed is not None: + return visitor._failed(self.failed) -scout_checks_api_CreateChecklistEntryRequest.__name__ = "CreateChecklistEntryRequest" -scout_checks_api_CreateChecklistEntryRequest.__qualname__ = "CreateChecklistEntryRequest" -scout_checks_api_CreateChecklistEntryRequest.__module__ = "scout_service_api.scout_checks_api" +scout_checks_api_JobStatus.__name__ = "JobStatus" +scout_checks_api_JobStatus.__qualname__ = "JobStatus" +scout_checks_api_JobStatus.__module__ = "scout_service_api.scout_checks_api" -class scout_checks_api_CreateChecklistEntryRequestVisitor: +class scout_checks_api_JobStatusVisitor: @abstractmethod - def _create_check(self, create_check: "scout_checks_api_CreateCheckRequest") -> Any: + def _in_progress(self, in_progress: "scout_checks_api_InProgress") -> Any: pass + @abstractmethod + def _completed(self, completed: "scout_checks_api_Completed") -> Any: + pass -scout_checks_api_CreateChecklistEntryRequestVisitor.__name__ = "CreateChecklistEntryRequestVisitor" -scout_checks_api_CreateChecklistEntryRequestVisitor.__qualname__ = "CreateChecklistEntryRequestVisitor" -scout_checks_api_CreateChecklistEntryRequestVisitor.__module__ = "scout_service_api.scout_checks_api" + @abstractmethod + def _failed(self, failed: "scout_checks_api_Failed") -> Any: + pass -class scout_checks_api_CreateChecklistRequest(ConjureBeanType): +scout_checks_api_JobStatusVisitor.__name__ = "JobStatusVisitor" +scout_checks_api_JobStatusVisitor.__qualname__ = "JobStatusVisitor" +scout_checks_api_JobStatusVisitor.__module__ = "scout_service_api.scout_checks_api" + + +class scout_checks_api_MergeToMainRequest(ConjureBeanType): @builtins.classmethod def _fields(cls) -> Dict[str, ConjureFieldDefinition]: return { - 'commit_message': ConjureFieldDefinition('commitMessage', str), - 'assignee_rid': ConjureFieldDefinition('assigneeRid', scout_rids_api_UserRid), - 'title': ConjureFieldDefinition('title', str), - 'description': ConjureFieldDefinition('description', str), - 'functions': ConjureFieldDefinition('functions', Dict[scout_compute_api_FunctionReference, scout_checks_api_CreateFunctionRequest]), - 'checks': ConjureFieldDefinition('checks', List[scout_checks_api_CreateChecklistEntryRequest]), - 'properties': ConjureFieldDefinition('properties', Dict[scout_run_api_PropertyName, scout_run_api_PropertyValue]), - 'labels': ConjureFieldDefinition('labels', List[scout_run_api_Label]), - 'checklist_variables': ConjureFieldDefinition('checklistVariables', List[scout_checks_api_UnresolvedChecklistVariable]), - 'is_published': ConjureFieldDefinition('isPublished', OptionalTypeWrapper[bool]) + 'branch_name': ConjureFieldDefinition('branchName', scout_versioning_api_BranchName), + 'message': ConjureFieldDefinition('message', str), + 'latest_commit_on_main': ConjureFieldDefinition('latestCommitOnMain', OptionalTypeWrapper[scout_versioning_api_CommitId]) } - __slots__: List[str] = ['_commit_message', '_assignee_rid', '_title', '_description', '_functions', '_checks', '_properties', '_labels', '_checklist_variables', '_is_published'] + __slots__: List[str] = ['_branch_name', '_message', '_latest_commit_on_main'] - def __init__(self, assignee_rid: str, checklist_variables: List["scout_checks_api_UnresolvedChecklistVariable"], checks: List["scout_checks_api_CreateChecklistEntryRequest"], commit_message: str, description: str, functions: Dict[str, "scout_checks_api_CreateFunctionRequest"], labels: List[str], properties: Dict[str, str], title: str, is_published: Optional[bool] = None) -> None: - self._commit_message = commit_message - self._assignee_rid = assignee_rid - self._title = title - self._description = description - self._functions = functions - self._checks = checks - self._properties = properties - self._labels = labels - self._checklist_variables = checklist_variables - self._is_published = is_published + def __init__(self, branch_name: str, message: str, latest_commit_on_main: Optional[str] = None) -> None: + self._branch_name = branch_name + self._message = message + self._latest_commit_on_main = latest_commit_on_main + + @builtins.property + def branch_name(self) -> str: + """ + If "main", the request will throw. + """ + return self._branch_name + + @builtins.property + def message(self) -> str: + return self._message + + @builtins.property + def latest_commit_on_main(self) -> Optional[str]: + """ + If present, will validate that the latest commit matches this id, +and otherwise throw CommitConflict. + """ + return self._latest_commit_on_main + + +scout_checks_api_MergeToMainRequest.__name__ = "MergeToMainRequest" +scout_checks_api_MergeToMainRequest.__qualname__ = "MergeToMainRequest" +scout_checks_api_MergeToMainRequest.__module__ = "scout_service_api.scout_checks_api" - @builtins.property - def commit_message(self) -> str: - return self._commit_message - @builtins.property - def assignee_rid(self) -> str: - return self._assignee_rid +class scout_checks_api_NumRangesConditionV1(ConjureBeanType): - @builtins.property - def title(self) -> str: - return self._title + @builtins.classmethod + def _fields(cls) -> Dict[str, ConjureFieldDefinition]: + return { + 'ranges': ConjureFieldDefinition('ranges', scout_compute_api_deprecated_RangesNode), + 'function_spec': ConjureFieldDefinition('functionSpec', object), + 'threshold': ConjureFieldDefinition('threshold', int), + 'operator': ConjureFieldDefinition('operator', scout_compute_api_ThresholdOperator), + 'variables': ConjureFieldDefinition('variables', Dict[scout_compute_api_VariableName, scout_api_ChannelLocator]) + } - @builtins.property - def description(self) -> str: - return self._description + __slots__: List[str] = ['_ranges', '_function_spec', '_threshold', '_operator', '_variables'] - @builtins.property - def functions(self) -> Dict[str, "scout_checks_api_CreateFunctionRequest"]: - """ - The keys of the map are references that can be used for checks to reference functions in the same request, before the function RIDs have been created. - """ - return self._functions + def __init__(self, function_spec: Any, operator: "scout_compute_api_ThresholdOperator", ranges: "scout_compute_api_deprecated_RangesNode", threshold: int, variables: Dict[str, "scout_api_ChannelLocator"]) -> None: + self._ranges = ranges + self._function_spec = function_spec + self._threshold = threshold + self._operator = operator + self._variables = variables @builtins.property - def checks(self) -> List["scout_checks_api_CreateChecklistEntryRequest"]: - return self._checks + def ranges(self) -> "scout_compute_api_deprecated_RangesNode": + return self._ranges @builtins.property - def properties(self) -> Dict[str, str]: - return self._properties + def function_spec(self) -> Any: + return self._function_spec @builtins.property - def labels(self) -> List[str]: - return self._labels + def threshold(self) -> int: + return self._threshold @builtins.property - def checklist_variables(self) -> List["scout_checks_api_UnresolvedChecklistVariable"]: - """ - Variables that can be used in checks and functions. Variables are resolved in order of declaration. -If variable `a` depends on variable `b`, then `b` must be defined before `a` in the list. - """ - return self._checklist_variables + def operator(self) -> "scout_compute_api_ThresholdOperator": + return self._operator @builtins.property - def is_published(self) -> Optional[bool]: - """ - Default value is true. - """ - return self._is_published + def variables(self) -> Dict[str, "scout_api_ChannelLocator"]: + return self._variables -scout_checks_api_CreateChecklistRequest.__name__ = "CreateChecklistRequest" -scout_checks_api_CreateChecklistRequest.__qualname__ = "CreateChecklistRequest" -scout_checks_api_CreateChecklistRequest.__module__ = "scout_service_api.scout_checks_api" +scout_checks_api_NumRangesConditionV1.__name__ = "NumRangesConditionV1" +scout_checks_api_NumRangesConditionV1.__qualname__ = "NumRangesConditionV1" +scout_checks_api_NumRangesConditionV1.__module__ = "scout_service_api.scout_checks_api" -class scout_checks_api_CreateFunctionRequest(ConjureBeanType): +class scout_checks_api_NumRangesConditionV2(ConjureBeanType): @builtins.classmethod def _fields(cls) -> Dict[str, ConjureFieldDefinition]: return { - 'function_lineage_rid': ConjureFieldDefinition('functionLineageRid', OptionalTypeWrapper[scout_rids_api_FunctionLineageRid]), - 'title': ConjureFieldDefinition('title', str), - 'description': ConjureFieldDefinition('description', str), - 'auto_generated_title': ConjureFieldDefinition('autoGeneratedTitle', OptionalTypeWrapper[str]), - 'auto_generated_description': ConjureFieldDefinition('autoGeneratedDescription', OptionalTypeWrapper[str]), - 'node': ConjureFieldDefinition('node', scout_checks_api_FunctionNode) + 'ranges': ConjureFieldDefinition('ranges', scout_compute_api_deprecated_RangesNode), + 'function_spec': ConjureFieldDefinition('functionSpec', object), + 'threshold': ConjureFieldDefinition('threshold', int), + 'operator': ConjureFieldDefinition('operator', scout_compute_api_ThresholdOperator), + 'variables': ConjureFieldDefinition('variables', Dict[scout_compute_api_VariableName, scout_checks_api_VariableLocator]) } - __slots__: List[str] = ['_function_lineage_rid', '_title', '_description', '_auto_generated_title', '_auto_generated_description', '_node'] - - def __init__(self, description: str, node: "scout_checks_api_FunctionNode", title: str, auto_generated_description: Optional[str] = None, auto_generated_title: Optional[str] = None, function_lineage_rid: Optional[str] = None) -> None: - self._function_lineage_rid = function_lineage_rid - self._title = title - self._description = description - self._auto_generated_title = auto_generated_title - self._auto_generated_description = auto_generated_description - self._node = node + __slots__: List[str] = ['_ranges', '_function_spec', '_threshold', '_operator', '_variables'] - @builtins.property - def function_lineage_rid(self) -> Optional[str]: - """ - Identifies the lineage of functions this function belongs to. If not specified, a new lineage will be created. - """ - return self._function_lineage_rid + def __init__(self, function_spec: Any, operator: "scout_compute_api_ThresholdOperator", ranges: "scout_compute_api_deprecated_RangesNode", threshold: int, variables: Dict[str, "scout_checks_api_VariableLocator"]) -> None: + self._ranges = ranges + self._function_spec = function_spec + self._threshold = threshold + self._operator = operator + self._variables = variables @builtins.property - def title(self) -> str: - return self._title + def ranges(self) -> "scout_compute_api_deprecated_RangesNode": + return self._ranges @builtins.property - def description(self) -> str: - return self._description + def function_spec(self) -> Any: + return self._function_spec @builtins.property - def auto_generated_title(self) -> Optional[str]: - return self._auto_generated_title + def threshold(self) -> int: + return self._threshold @builtins.property - def auto_generated_description(self) -> Optional[str]: - return self._auto_generated_description + def operator(self) -> "scout_compute_api_ThresholdOperator": + return self._operator @builtins.property - def node(self) -> "scout_checks_api_FunctionNode": - return self._node + def variables(self) -> Dict[str, "scout_checks_api_VariableLocator"]: + return self._variables -scout_checks_api_CreateFunctionRequest.__name__ = "CreateFunctionRequest" -scout_checks_api_CreateFunctionRequest.__qualname__ = "CreateFunctionRequest" -scout_checks_api_CreateFunctionRequest.__module__ = "scout_service_api.scout_checks_api" +scout_checks_api_NumRangesConditionV2.__name__ = "NumRangesConditionV2" +scout_checks_api_NumRangesConditionV2.__qualname__ = "NumRangesConditionV2" +scout_checks_api_NumRangesConditionV2.__module__ = "scout_service_api.scout_checks_api" -class scout_checks_api_DeprecatedCheckJobSpec(ConjureBeanType): +class scout_checks_api_NumRangesConditionV3(ConjureBeanType): @builtins.classmethod def _fields(cls) -> Dict[str, ConjureFieldDefinition]: return { - 'data_review_rid': ConjureFieldDefinition('dataReviewRid', scout_datareview_api_DataReviewRid), - 'check_rid': ConjureFieldDefinition('checkRid', scout_rids_api_CheckRid), - 'check_evaluation_rid': ConjureFieldDefinition('checkEvaluationRid', scout_datareview_api_AutomaticCheckEvaluationRid), - 'check_condition': ConjureFieldDefinition('checkCondition', scout_checks_api_CheckCondition), - 'start': ConjureFieldDefinition('start', scout_compute_api_Timestamp), - 'end': ConjureFieldDefinition('end', scout_compute_api_Timestamp), - 'context': ConjureFieldDefinition('context', scout_compute_api_deprecated_Context) + 'ranges': ConjureFieldDefinition('ranges', scout_compute_api_RangesNode), + 'function_spec': ConjureFieldDefinition('functionSpec', object), + 'threshold': ConjureFieldDefinition('threshold', int), + 'operator': ConjureFieldDefinition('operator', scout_compute_api_ThresholdOperator), + 'variables': ConjureFieldDefinition('variables', Dict[scout_compute_api_VariableName, scout_checks_api_VariableLocator]), + 'function_variables': ConjureFieldDefinition('functionVariables', Dict[scout_compute_api_FunctionReference, scout_checks_api_CheckContext]) } - __slots__: List[str] = ['_data_review_rid', '_check_rid', '_check_evaluation_rid', '_check_condition', '_start', '_end', '_context'] - - def __init__(self, check_condition: "scout_checks_api_CheckCondition", check_evaluation_rid: str, check_rid: str, context: "scout_compute_api_deprecated_Context", data_review_rid: str, end: "scout_compute_api_Timestamp", start: "scout_compute_api_Timestamp") -> None: - self._data_review_rid = data_review_rid - self._check_rid = check_rid - self._check_evaluation_rid = check_evaluation_rid - self._check_condition = check_condition - self._start = start - self._end = end - self._context = context + __slots__: List[str] = ['_ranges', '_function_spec', '_threshold', '_operator', '_variables', '_function_variables'] - @builtins.property - def data_review_rid(self) -> str: - return self._data_review_rid + def __init__(self, function_spec: Any, function_variables: Dict[str, "scout_checks_api_CheckContext"], operator: "scout_compute_api_ThresholdOperator", ranges: "scout_compute_api_RangesNode", threshold: int, variables: Dict[str, "scout_checks_api_VariableLocator"]) -> None: + self._ranges = ranges + self._function_spec = function_spec + self._threshold = threshold + self._operator = operator + self._variables = variables + self._function_variables = function_variables @builtins.property - def check_rid(self) -> str: - return self._check_rid + def ranges(self) -> "scout_compute_api_RangesNode": + return self._ranges @builtins.property - def check_evaluation_rid(self) -> str: - return self._check_evaluation_rid + def function_spec(self) -> Any: + return self._function_spec @builtins.property - def check_condition(self) -> "scout_checks_api_CheckCondition": - return self._check_condition + def threshold(self) -> int: + return self._threshold @builtins.property - def start(self) -> "scout_compute_api_Timestamp": - return self._start + def operator(self) -> "scout_compute_api_ThresholdOperator": + return self._operator @builtins.property - def end(self) -> "scout_compute_api_Timestamp": - return self._end + def variables(self) -> Dict[str, "scout_checks_api_VariableLocator"]: + return self._variables @builtins.property - def context(self) -> "scout_compute_api_deprecated_Context": - return self._context + def function_variables(self) -> Dict[str, "scout_checks_api_CheckContext"]: + """ + The variables to be passed into functions referenced by the check condition. The function reference key +should match the FunctionReference in the function node definition. + """ + return self._function_variables -scout_checks_api_DeprecatedCheckJobSpec.__name__ = "DeprecatedCheckJobSpec" -scout_checks_api_DeprecatedCheckJobSpec.__qualname__ = "DeprecatedCheckJobSpec" -scout_checks_api_DeprecatedCheckJobSpec.__module__ = "scout_service_api.scout_checks_api" +scout_checks_api_NumRangesConditionV3.__name__ = "NumRangesConditionV3" +scout_checks_api_NumRangesConditionV3.__qualname__ = "NumRangesConditionV3" +scout_checks_api_NumRangesConditionV3.__module__ = "scout_service_api.scout_checks_api" -class scout_checks_api_Failed(ConjureBeanType): +class scout_checks_api_ParameterizedNumRangesConditionV1(ConjureBeanType): @builtins.classmethod def _fields(cls) -> Dict[str, ConjureFieldDefinition]: return { - 'failure_message': ConjureFieldDefinition('failureMessage', OptionalTypeWrapper[str]), - 'execution_start_time': ConjureFieldDefinition('executionStartTime', OptionalTypeWrapper[str]), - 'execution_end_time': ConjureFieldDefinition('executionEndTime', str) + 'ranges': ConjureFieldDefinition('ranges', scout_compute_api_RangesNode), + 'implementations': ConjureFieldDefinition('implementations', List[scout_checks_api_CheckContext]) } - __slots__: List[str] = ['_failure_message', '_execution_start_time', '_execution_end_time'] - - def __init__(self, execution_end_time: str, execution_start_time: Optional[str] = None, failure_message: Optional[str] = None) -> None: - self._failure_message = failure_message - self._execution_start_time = execution_start_time - self._execution_end_time = execution_end_time + __slots__: List[str] = ['_ranges', '_implementations'] - @builtins.property - def failure_message(self) -> Optional[str]: - return self._failure_message + def __init__(self, implementations: List["scout_checks_api_CheckContext"], ranges: "scout_compute_api_RangesNode") -> None: + self._ranges = ranges + self._implementations = implementations @builtins.property - def execution_start_time(self) -> Optional[str]: - return self._execution_start_time + def ranges(self) -> "scout_compute_api_RangesNode": + return self._ranges @builtins.property - def execution_end_time(self) -> str: - return self._execution_end_time + def implementations(self) -> List["scout_checks_api_CheckContext"]: + """ + Each permutation of check context in the list will be executed as a new a stand-alone check. Violations +produced will be associated with the context of the index. + """ + return self._implementations -scout_checks_api_Failed.__name__ = "Failed" -scout_checks_api_Failed.__qualname__ = "Failed" -scout_checks_api_Failed.__module__ = "scout_service_api.scout_checks_api" +scout_checks_api_ParameterizedNumRangesConditionV1.__name__ = "ParameterizedNumRangesConditionV1" +scout_checks_api_ParameterizedNumRangesConditionV1.__qualname__ = "ParameterizedNumRangesConditionV1" +scout_checks_api_ParameterizedNumRangesConditionV1.__module__ = "scout_service_api.scout_checks_api" -class scout_checks_api_Function(ConjureBeanType): +class scout_checks_api_PinnedChecklistRef(ConjureBeanType): + """ + A reference to a checklist that is pinned to a specific commit. + """ @builtins.classmethod def _fields(cls) -> Dict[str, ConjureFieldDefinition]: return { - 'rid': ConjureFieldDefinition('rid', scout_rids_api_FunctionRid), - 'function_lineage_rid': ConjureFieldDefinition('functionLineageRid', scout_rids_api_FunctionLineageRid), - 'title': ConjureFieldDefinition('title', str), - 'description': ConjureFieldDefinition('description', str), - 'auto_generated_title': ConjureFieldDefinition('autoGeneratedTitle', OptionalTypeWrapper[str]), - 'auto_generated_description': ConjureFieldDefinition('autoGeneratedDescription', OptionalTypeWrapper[str]), - 'function_node': ConjureFieldDefinition('functionNode', scout_checks_api_FunctionNode) + 'rid': ConjureFieldDefinition('rid', scout_rids_api_ChecklistRid), + 'commit': ConjureFieldDefinition('commit', scout_versioning_api_CommitId) } - __slots__: List[str] = ['_rid', '_function_lineage_rid', '_title', '_description', '_auto_generated_title', '_auto_generated_description', '_function_node'] + __slots__: List[str] = ['_rid', '_commit'] - def __init__(self, description: str, function_lineage_rid: str, function_node: "scout_checks_api_FunctionNode", rid: str, title: str, auto_generated_description: Optional[str] = None, auto_generated_title: Optional[str] = None) -> None: + def __init__(self, commit: str, rid: str) -> None: self._rid = rid - self._function_lineage_rid = function_lineage_rid - self._title = title - self._description = description - self._auto_generated_title = auto_generated_title - self._auto_generated_description = auto_generated_description - self._function_node = function_node + self._commit = commit @builtins.property def rid(self) -> str: return self._rid @builtins.property - def function_lineage_rid(self) -> str: - return self._function_lineage_rid + def commit(self) -> str: + return self._commit - @builtins.property - def title(self) -> str: - return self._title + +scout_checks_api_PinnedChecklistRef.__name__ = "PinnedChecklistRef" +scout_checks_api_PinnedChecklistRef.__qualname__ = "PinnedChecklistRef" +scout_checks_api_PinnedChecklistRef.__module__ = "scout_service_api.scout_checks_api" + + +class scout_checks_api_Priority(ConjureEnumType): + + P0 = 'P0' + '''P0''' + P1 = 'P1' + '''P1''' + P2 = 'P2' + '''P2''' + P3 = 'P3' + '''P3''' + P4 = 'P4' + '''P4''' + UNKNOWN = 'UNKNOWN' + '''UNKNOWN''' + + def __reduce_ex__(self, proto): + return self.__class__, (self.name,) + + +scout_checks_api_Priority.__name__ = "Priority" +scout_checks_api_Priority.__qualname__ = "Priority" +scout_checks_api_Priority.__module__ = "scout_service_api.scout_checks_api" + + +class scout_checks_api_SaveChecklistRequest(ConjureBeanType): + + @builtins.classmethod + def _fields(cls) -> Dict[str, ConjureFieldDefinition]: + return { + 'checks': ConjureFieldDefinition('checks', List[scout_checks_api_UpdateChecklistEntryRequest]), + 'functions': ConjureFieldDefinition('functions', Dict[scout_compute_api_FunctionReference, scout_checks_api_UpdateFunctionEntryRequest]), + 'checklist_variables': ConjureFieldDefinition('checklistVariables', List[scout_checks_api_UnresolvedChecklistVariable]), + 'latest_commit': ConjureFieldDefinition('latestCommit', OptionalTypeWrapper[scout_versioning_api_CommitId]) + } + + __slots__: List[str] = ['_checks', '_functions', '_checklist_variables', '_latest_commit'] + + def __init__(self, checklist_variables: List["scout_checks_api_UnresolvedChecklistVariable"], checks: List["scout_checks_api_UpdateChecklistEntryRequest"], functions: Dict[str, "scout_checks_api_UpdateFunctionEntryRequest"], latest_commit: Optional[str] = None) -> None: + self._checks = checks + self._functions = functions + self._checklist_variables = checklist_variables + self._latest_commit = latest_commit @builtins.property - def description(self) -> str: - return self._description + def checks(self) -> List["scout_checks_api_UpdateChecklistEntryRequest"]: + return self._checks @builtins.property - def auto_generated_title(self) -> Optional[str]: - return self._auto_generated_title + def functions(self) -> Dict[str, "scout_checks_api_UpdateFunctionEntryRequest"]: + """ + The keys of the map are references that can be used for checks to reference functions in the same request, before the function RIDs have been created. + """ + return self._functions @builtins.property - def auto_generated_description(self) -> Optional[str]: - return self._auto_generated_description + def checklist_variables(self) -> List["scout_checks_api_UnresolvedChecklistVariable"]: + """ + Variables that can be used in checks and functions. Variables are resolved in order of declaration. +If variable `a` depends on variable `b`, then `b` must be defined before `a` in the list. + """ + return self._checklist_variables @builtins.property - def function_node(self) -> "scout_checks_api_FunctionNode": - return self._function_node + def latest_commit(self) -> Optional[str]: + """ + If present, will validate that the latest commit matches this id, +and otherwise throw CommitConflict. + """ + return self._latest_commit -scout_checks_api_Function.__name__ = "Function" -scout_checks_api_Function.__qualname__ = "Function" -scout_checks_api_Function.__module__ = "scout_service_api.scout_checks_api" +scout_checks_api_SaveChecklistRequest.__name__ = "SaveChecklistRequest" +scout_checks_api_SaveChecklistRequest.__qualname__ = "SaveChecklistRequest" +scout_checks_api_SaveChecklistRequest.__module__ = "scout_service_api.scout_checks_api" -class scout_checks_api_FunctionNode(ConjureUnionType): - _enum: Optional["scout_compute_api_EnumSeriesNode"] = None - _numeric: Optional["scout_compute_api_NumericSeriesNode"] = None - _ranges: Optional["scout_compute_api_RangesNode"] = None +class scout_checks_api_SearchChecklistsRequest(ConjureBeanType): @builtins.classmethod - def _options(cls) -> Dict[str, ConjureFieldDefinition]: + def _fields(cls) -> Dict[str, ConjureFieldDefinition]: return { - 'enum': ConjureFieldDefinition('enum', scout_compute_api_EnumSeriesNode), - 'numeric': ConjureFieldDefinition('numeric', scout_compute_api_NumericSeriesNode), - 'ranges': ConjureFieldDefinition('ranges', scout_compute_api_RangesNode) + 'query': ConjureFieldDefinition('query', scout_checks_api_ChecklistSearchQuery), + 'sort_by': ConjureFieldDefinition('sortBy', OptionalTypeWrapper[scout_checks_api_SortOptions]), + 'next_page_token': ConjureFieldDefinition('nextPageToken', OptionalTypeWrapper[scout_api_Token]), + 'page_size': ConjureFieldDefinition('pageSize', OptionalTypeWrapper[int]), + 'archived_statuses': ConjureFieldDefinition('archivedStatuses', OptionalTypeWrapper[List[scout_rids_api_ArchivedStatus]]) } - def __init__( - self, - enum: Optional["scout_compute_api_EnumSeriesNode"] = None, - numeric: Optional["scout_compute_api_NumericSeriesNode"] = None, - ranges: Optional["scout_compute_api_RangesNode"] = None, - type_of_union: Optional[str] = None - ) -> None: - if type_of_union is None: - if (enum is not None) + (numeric is not None) + (ranges is not None) != 1: - raise ValueError('a union must contain a single member') - - if enum is not None: - self._enum = enum - self._type = 'enum' - if numeric is not None: - self._numeric = numeric - self._type = 'numeric' - if ranges is not None: - self._ranges = ranges - self._type = 'ranges' + __slots__: List[str] = ['_query', '_sort_by', '_next_page_token', '_page_size', '_archived_statuses'] - elif type_of_union == 'enum': - if enum is None: - raise ValueError('a union value must not be None') - self._enum = enum - self._type = 'enum' - elif type_of_union == 'numeric': - if numeric is None: - raise ValueError('a union value must not be None') - self._numeric = numeric - self._type = 'numeric' - elif type_of_union == 'ranges': - if ranges is None: - raise ValueError('a union value must not be None') - self._ranges = ranges - self._type = 'ranges' + def __init__(self, query: "scout_checks_api_ChecklistSearchQuery", archived_statuses: Optional[List["scout_rids_api_ArchivedStatus"]] = None, next_page_token: Optional[str] = None, page_size: Optional[int] = None, sort_by: Optional["scout_checks_api_SortOptions"] = None) -> None: + self._query = query + self._sort_by = sort_by + self._next_page_token = next_page_token + self._page_size = page_size + self._archived_statuses = archived_statuses @builtins.property - def enum(self) -> Optional["scout_compute_api_EnumSeriesNode"]: - return self._enum + def query(self) -> "scout_checks_api_ChecklistSearchQuery": + return self._query @builtins.property - def numeric(self) -> Optional["scout_compute_api_NumericSeriesNode"]: - return self._numeric + def sort_by(self) -> Optional["scout_checks_api_SortOptions"]: + """ + If not present, will sort by LAST_USED in descending order. + """ + return self._sort_by @builtins.property - def ranges(self) -> Optional["scout_compute_api_RangesNode"]: - return self._ranges + def next_page_token(self) -> Optional[str]: + return self._next_page_token - def accept(self, visitor) -> Any: - if not isinstance(visitor, scout_checks_api_FunctionNodeVisitor): - raise ValueError('{} is not an instance of scout_checks_api_FunctionNodeVisitor'.format(visitor.__class__.__name__)) - if self._type == 'enum' and self.enum is not None: - return visitor._enum(self.enum) - if self._type == 'numeric' and self.numeric is not None: - return visitor._numeric(self.numeric) - if self._type == 'ranges' and self.ranges is not None: - return visitor._ranges(self.ranges) + @builtins.property + def page_size(self) -> Optional[int]: + """ + Defaults to 100. Will throw if larger than 1000. + """ + return self._page_size + @builtins.property + def archived_statuses(self) -> Optional[List["scout_rids_api_ArchivedStatus"]]: + """ + Default search status is NOT_ARCHIVED if none are provided. Allows for including archived checklists in search. + """ + return self._archived_statuses -scout_checks_api_FunctionNode.__name__ = "FunctionNode" -scout_checks_api_FunctionNode.__qualname__ = "FunctionNode" -scout_checks_api_FunctionNode.__module__ = "scout_service_api.scout_checks_api" +scout_checks_api_SearchChecklistsRequest.__name__ = "SearchChecklistsRequest" +scout_checks_api_SearchChecklistsRequest.__qualname__ = "SearchChecklistsRequest" +scout_checks_api_SearchChecklistsRequest.__module__ = "scout_service_api.scout_checks_api" -class scout_checks_api_FunctionNodeVisitor: - @abstractmethod - def _enum(self, enum: "scout_compute_api_EnumSeriesNode") -> Any: - pass +class scout_checks_api_SortField(ConjureEnumType): - @abstractmethod - def _numeric(self, numeric: "scout_compute_api_NumericSeriesNode") -> Any: - pass + CREATED_AT = 'CREATED_AT' + '''CREATED_AT''' + LAST_USED = 'LAST_USED' + '''LAST_USED''' + UNKNOWN = 'UNKNOWN' + '''UNKNOWN''' - @abstractmethod - def _ranges(self, ranges: "scout_compute_api_RangesNode") -> Any: - pass + def __reduce_ex__(self, proto): + return self.__class__, (self.name,) -scout_checks_api_FunctionNodeVisitor.__name__ = "FunctionNodeVisitor" -scout_checks_api_FunctionNodeVisitor.__qualname__ = "FunctionNodeVisitor" -scout_checks_api_FunctionNodeVisitor.__module__ = "scout_service_api.scout_checks_api" +scout_checks_api_SortField.__name__ = "SortField" +scout_checks_api_SortField.__qualname__ = "SortField" +scout_checks_api_SortField.__module__ = "scout_service_api.scout_checks_api" -class scout_checks_api_GetAllLabelsAndPropertiesResponse(ConjureBeanType): +class scout_checks_api_SortOptions(ConjureBeanType): @builtins.classmethod def _fields(cls) -> Dict[str, ConjureFieldDefinition]: return { - 'properties': ConjureFieldDefinition('properties', Dict[scout_run_api_PropertyName, List[scout_run_api_PropertyValue]]), - 'labels': ConjureFieldDefinition('labels', List[scout_run_api_Label]) + 'is_descending': ConjureFieldDefinition('isDescending', bool), + 'field': ConjureFieldDefinition('field', scout_checks_api_SortField) } - __slots__: List[str] = ['_properties', '_labels'] + __slots__: List[str] = ['_is_descending', '_field'] - def __init__(self, labels: List[str], properties: Dict[str, List[str]]) -> None: - self._properties = properties - self._labels = labels + def __init__(self, field: "scout_checks_api_SortField", is_descending: bool) -> None: + self._is_descending = is_descending + self._field = field @builtins.property - def properties(self) -> Dict[str, List[str]]: - return self._properties + def is_descending(self) -> bool: + return self._is_descending + + @builtins.property + def field(self) -> "scout_checks_api_SortField": + return self._field + + +scout_checks_api_SortOptions.__name__ = "SortOptions" +scout_checks_api_SortOptions.__qualname__ = "SortOptions" +scout_checks_api_SortOptions.__module__ = "scout_service_api.scout_checks_api" + + +class scout_checks_api_SubmitJobsRequest(ConjureBeanType): + + @builtins.classmethod + def _fields(cls) -> Dict[str, ConjureFieldDefinition]: + return { + 'jobs_to_execute': ConjureFieldDefinition('jobsToExecute', List[scout_checks_api_JobSpec]) + } + + __slots__: List[str] = ['_jobs_to_execute'] + + def __init__(self, jobs_to_execute: List["scout_checks_api_JobSpec"]) -> None: + self._jobs_to_execute = jobs_to_execute @builtins.property - def labels(self) -> List[str]: - return self._labels + def jobs_to_execute(self) -> List["scout_checks_api_JobSpec"]: + return self._jobs_to_execute -scout_checks_api_GetAllLabelsAndPropertiesResponse.__name__ = "GetAllLabelsAndPropertiesResponse" -scout_checks_api_GetAllLabelsAndPropertiesResponse.__qualname__ = "GetAllLabelsAndPropertiesResponse" -scout_checks_api_GetAllLabelsAndPropertiesResponse.__module__ = "scout_service_api.scout_checks_api" +scout_checks_api_SubmitJobsRequest.__name__ = "SubmitJobsRequest" +scout_checks_api_SubmitJobsRequest.__qualname__ = "SubmitJobsRequest" +scout_checks_api_SubmitJobsRequest.__module__ = "scout_service_api.scout_checks_api" -class scout_checks_api_InProgress(ConjureBeanType): +class scout_checks_api_SubmitJobsResponse(ConjureBeanType): @builtins.classmethod def _fields(cls) -> Dict[str, ConjureFieldDefinition]: return { + 'jobs': ConjureFieldDefinition('jobs', List[scout_checks_api_SubmittedJob]) } - __slots__: List[str] = [] + __slots__: List[str] = ['_jobs'] + def __init__(self, jobs: List["scout_checks_api_SubmittedJob"]) -> None: + self._jobs = jobs + @builtins.property + def jobs(self) -> List["scout_checks_api_SubmittedJob"]: + return self._jobs -scout_checks_api_InProgress.__name__ = "InProgress" -scout_checks_api_InProgress.__qualname__ = "InProgress" -scout_checks_api_InProgress.__module__ = "scout_service_api.scout_checks_api" +scout_checks_api_SubmitJobsResponse.__name__ = "SubmitJobsResponse" +scout_checks_api_SubmitJobsResponse.__qualname__ = "SubmitJobsResponse" +scout_checks_api_SubmitJobsResponse.__module__ = "scout_service_api.scout_checks_api" -class scout_checks_api_JobReport(ConjureBeanType): + +class scout_checks_api_SubmittedJob(ConjureBeanType): @builtins.classmethod def _fields(cls) -> Dict[str, ConjureFieldDefinition]: return { - 'job_status': ConjureFieldDefinition('jobStatus', scout_checks_api_JobStatus), 'job_rid': ConjureFieldDefinition('jobRid', scout_checks_api_JobRid), - 'submitted_at': ConjureFieldDefinition('submittedAt', str) + 'job_spec': ConjureFieldDefinition('jobSpec', scout_checks_api_JobSpec) } - __slots__: List[str] = ['_job_status', '_job_rid', '_submitted_at'] + __slots__: List[str] = ['_job_rid', '_job_spec'] - def __init__(self, job_rid: str, job_status: "scout_checks_api_JobStatus", submitted_at: str) -> None: - self._job_status = job_status + def __init__(self, job_rid: str, job_spec: "scout_checks_api_JobSpec") -> None: self._job_rid = job_rid - self._submitted_at = submitted_at - - @builtins.property - def job_status(self) -> "scout_checks_api_JobStatus": - return self._job_status + self._job_spec = job_spec @builtins.property def job_rid(self) -> str: return self._job_rid @builtins.property - def submitted_at(self) -> str: - return self._submitted_at - + def job_spec(self) -> "scout_checks_api_JobSpec": + return self._job_spec -scout_checks_api_JobReport.__name__ = "JobReport" -scout_checks_api_JobReport.__qualname__ = "JobReport" -scout_checks_api_JobReport.__module__ = "scout_service_api.scout_checks_api" +scout_checks_api_SubmittedJob.__name__ = "SubmittedJob" +scout_checks_api_SubmittedJob.__qualname__ = "SubmittedJob" +scout_checks_api_SubmittedJob.__module__ = "scout_service_api.scout_checks_api" -class scout_checks_api_JobResult(ConjureUnionType): - _check_job_result: Optional["scout_checks_api_CheckJobResult"] = None - @builtins.classmethod - def _options(cls) -> Dict[str, ConjureFieldDefinition]: - return { - 'check_job_result': ConjureFieldDefinition('checkJobResult', scout_checks_api_CheckJobResult) - } +class scout_checks_api_TimestampLocator(ConjureEnumType): - def __init__( - self, - check_job_result: Optional["scout_checks_api_CheckJobResult"] = None, - type_of_union: Optional[str] = None - ) -> None: - if type_of_union is None: - if (check_job_result is not None) != 1: - raise ValueError('a union must contain a single member') + RUN_START = 'RUN_START' + '''RUN_START''' + RUN_END = 'RUN_END' + '''RUN_END''' + UNKNOWN = 'UNKNOWN' + '''UNKNOWN''' - if check_job_result is not None: - self._check_job_result = check_job_result - self._type = 'checkJobResult' + def __reduce_ex__(self, proto): + return self.__class__, (self.name,) - elif type_of_union == 'checkJobResult': - if check_job_result is None: - raise ValueError('a union value must not be None') - self._check_job_result = check_job_result - self._type = 'checkJobResult' - @builtins.property - def check_job_result(self) -> Optional["scout_checks_api_CheckJobResult"]: - return self._check_job_result +scout_checks_api_TimestampLocator.__name__ = "TimestampLocator" +scout_checks_api_TimestampLocator.__qualname__ = "TimestampLocator" +scout_checks_api_TimestampLocator.__module__ = "scout_service_api.scout_checks_api" - def accept(self, visitor) -> Any: - if not isinstance(visitor, scout_checks_api_JobResultVisitor): - raise ValueError('{} is not an instance of scout_checks_api_JobResultVisitor'.format(visitor.__class__.__name__)) - if self._type == 'checkJobResult' and self.check_job_result is not None: - return visitor._check_job_result(self.check_job_result) +class scout_checks_api_UnarchiveChecklistsRequest(ConjureBeanType): -scout_checks_api_JobResult.__name__ = "JobResult" -scout_checks_api_JobResult.__qualname__ = "JobResult" -scout_checks_api_JobResult.__module__ = "scout_service_api.scout_checks_api" + @builtins.classmethod + def _fields(cls) -> Dict[str, ConjureFieldDefinition]: + return { + 'rids': ConjureFieldDefinition('rids', List[scout_rids_api_ChecklistRid]) + } + __slots__: List[str] = ['_rids'] -class scout_checks_api_JobResultVisitor: + def __init__(self, rids: List[str]) -> None: + self._rids = rids - @abstractmethod - def _check_job_result(self, check_job_result: "scout_checks_api_CheckJobResult") -> Any: - pass + @builtins.property + def rids(self) -> List[str]: + return self._rids -scout_checks_api_JobResultVisitor.__name__ = "JobResultVisitor" -scout_checks_api_JobResultVisitor.__qualname__ = "JobResultVisitor" -scout_checks_api_JobResultVisitor.__module__ = "scout_service_api.scout_checks_api" +scout_checks_api_UnarchiveChecklistsRequest.__name__ = "UnarchiveChecklistsRequest" +scout_checks_api_UnarchiveChecklistsRequest.__qualname__ = "UnarchiveChecklistsRequest" +scout_checks_api_UnarchiveChecklistsRequest.__module__ = "scout_service_api.scout_checks_api" -class scout_checks_api_JobSpec(ConjureUnionType): - _check: Optional["scout_checks_api_DeprecatedCheckJobSpec"] = None - _check_v2: Optional["scout_checks_api_CheckJobSpec"] = None +class scout_checks_api_UnresolvedCheckCondition(ConjureUnionType): + _num_ranges_v2: Optional["scout_checks_api_UnresolvedNumRangesConditionV2"] = None + _num_ranges_v3: Optional["scout_checks_api_UnresolvedNumRangesConditionV3"] = None + _parameterized_num_ranges_v1: Optional["scout_checks_api_UnresolvedParameterizedNumRangesConditionV1"] = None @builtins.classmethod def _options(cls) -> Dict[str, ConjureFieldDefinition]: return { - 'check': ConjureFieldDefinition('check', scout_checks_api_DeprecatedCheckJobSpec), - 'check_v2': ConjureFieldDefinition('checkV2', scout_checks_api_CheckJobSpec) + 'num_ranges_v2': ConjureFieldDefinition('numRangesV2', scout_checks_api_UnresolvedNumRangesConditionV2), + 'num_ranges_v3': ConjureFieldDefinition('numRangesV3', scout_checks_api_UnresolvedNumRangesConditionV3), + 'parameterized_num_ranges_v1': ConjureFieldDefinition('parameterizedNumRangesV1', scout_checks_api_UnresolvedParameterizedNumRangesConditionV1) } def __init__( self, - check: Optional["scout_checks_api_DeprecatedCheckJobSpec"] = None, - check_v2: Optional["scout_checks_api_CheckJobSpec"] = None, + num_ranges_v2: Optional["scout_checks_api_UnresolvedNumRangesConditionV2"] = None, + num_ranges_v3: Optional["scout_checks_api_UnresolvedNumRangesConditionV3"] = None, + parameterized_num_ranges_v1: Optional["scout_checks_api_UnresolvedParameterizedNumRangesConditionV1"] = None, type_of_union: Optional[str] = None ) -> None: if type_of_union is None: - if (check is not None) + (check_v2 is not None) != 1: + if (num_ranges_v2 is not None) + (num_ranges_v3 is not None) + (parameterized_num_ranges_v1 is not None) != 1: raise ValueError('a union must contain a single member') - if check is not None: - self._check = check - self._type = 'check' - if check_v2 is not None: - self._check_v2 = check_v2 - self._type = 'checkV2' + if num_ranges_v2 is not None: + self._num_ranges_v2 = num_ranges_v2 + self._type = 'numRangesV2' + if num_ranges_v3 is not None: + self._num_ranges_v3 = num_ranges_v3 + self._type = 'numRangesV3' + if parameterized_num_ranges_v1 is not None: + self._parameterized_num_ranges_v1 = parameterized_num_ranges_v1 + self._type = 'parameterizedNumRangesV1' - elif type_of_union == 'check': - if check is None: + elif type_of_union == 'numRangesV2': + if num_ranges_v2 is None: raise ValueError('a union value must not be None') - self._check = check - self._type = 'check' - elif type_of_union == 'checkV2': - if check_v2 is None: + self._num_ranges_v2 = num_ranges_v2 + self._type = 'numRangesV2' + elif type_of_union == 'numRangesV3': + if num_ranges_v3 is None: raise ValueError('a union value must not be None') - self._check_v2 = check_v2 - self._type = 'checkV2' + self._num_ranges_v3 = num_ranges_v3 + self._type = 'numRangesV3' + elif type_of_union == 'parameterizedNumRangesV1': + if parameterized_num_ranges_v1 is None: + raise ValueError('a union value must not be None') + self._parameterized_num_ranges_v1 = parameterized_num_ranges_v1 + self._type = 'parameterizedNumRangesV1' @builtins.property - def check(self) -> Optional["scout_checks_api_DeprecatedCheckJobSpec"]: - return self._check + def num_ranges_v2(self) -> Optional["scout_checks_api_UnresolvedNumRangesConditionV2"]: + return self._num_ranges_v2 @builtins.property - def check_v2(self) -> Optional["scout_checks_api_CheckJobSpec"]: - return self._check_v2 + def num_ranges_v3(self) -> Optional["scout_checks_api_UnresolvedNumRangesConditionV3"]: + return self._num_ranges_v3 + + @builtins.property + def parameterized_num_ranges_v1(self) -> Optional["scout_checks_api_UnresolvedParameterizedNumRangesConditionV1"]: + return self._parameterized_num_ranges_v1 def accept(self, visitor) -> Any: - if not isinstance(visitor, scout_checks_api_JobSpecVisitor): - raise ValueError('{} is not an instance of scout_checks_api_JobSpecVisitor'.format(visitor.__class__.__name__)) - if self._type == 'check' and self.check is not None: - return visitor._check(self.check) - if self._type == 'checkV2' and self.check_v2 is not None: - return visitor._check_v2(self.check_v2) + if not isinstance(visitor, scout_checks_api_UnresolvedCheckConditionVisitor): + raise ValueError('{} is not an instance of scout_checks_api_UnresolvedCheckConditionVisitor'.format(visitor.__class__.__name__)) + if self._type == 'numRangesV2' and self.num_ranges_v2 is not None: + return visitor._num_ranges_v2(self.num_ranges_v2) + if self._type == 'numRangesV3' and self.num_ranges_v3 is not None: + return visitor._num_ranges_v3(self.num_ranges_v3) + if self._type == 'parameterizedNumRangesV1' and self.parameterized_num_ranges_v1 is not None: + return visitor._parameterized_num_ranges_v1(self.parameterized_num_ranges_v1) -scout_checks_api_JobSpec.__name__ = "JobSpec" -scout_checks_api_JobSpec.__qualname__ = "JobSpec" -scout_checks_api_JobSpec.__module__ = "scout_service_api.scout_checks_api" +scout_checks_api_UnresolvedCheckCondition.__name__ = "UnresolvedCheckCondition" +scout_checks_api_UnresolvedCheckCondition.__qualname__ = "UnresolvedCheckCondition" +scout_checks_api_UnresolvedCheckCondition.__module__ = "scout_service_api.scout_checks_api" -class scout_checks_api_JobSpecVisitor: +class scout_checks_api_UnresolvedCheckConditionVisitor: @abstractmethod - def _check(self, check: "scout_checks_api_DeprecatedCheckJobSpec") -> Any: + def _num_ranges_v2(self, num_ranges_v2: "scout_checks_api_UnresolvedNumRangesConditionV2") -> Any: pass @abstractmethod - def _check_v2(self, check_v2: "scout_checks_api_CheckJobSpec") -> Any: + def _num_ranges_v3(self, num_ranges_v3: "scout_checks_api_UnresolvedNumRangesConditionV3") -> Any: pass + @abstractmethod + def _parameterized_num_ranges_v1(self, parameterized_num_ranges_v1: "scout_checks_api_UnresolvedParameterizedNumRangesConditionV1") -> Any: + pass -scout_checks_api_JobSpecVisitor.__name__ = "JobSpecVisitor" -scout_checks_api_JobSpecVisitor.__qualname__ = "JobSpecVisitor" -scout_checks_api_JobSpecVisitor.__module__ = "scout_service_api.scout_checks_api" + +scout_checks_api_UnresolvedCheckConditionVisitor.__name__ = "UnresolvedCheckConditionVisitor" +scout_checks_api_UnresolvedCheckConditionVisitor.__qualname__ = "UnresolvedCheckConditionVisitor" +scout_checks_api_UnresolvedCheckConditionVisitor.__module__ = "scout_service_api.scout_checks_api" -class scout_checks_api_JobStatus(ConjureUnionType): - _in_progress: Optional["scout_checks_api_InProgress"] = None - _completed: Optional["scout_checks_api_Completed"] = None - _failed: Optional["scout_checks_api_Failed"] = None +class scout_checks_api_UnresolvedChecklistVariable(ConjureBeanType): @builtins.classmethod - def _options(cls) -> Dict[str, ConjureFieldDefinition]: + def _fields(cls) -> Dict[str, ConjureFieldDefinition]: return { - 'in_progress': ConjureFieldDefinition('inProgress', scout_checks_api_InProgress), - 'completed': ConjureFieldDefinition('completed', scout_checks_api_Completed), - 'failed': ConjureFieldDefinition('failed', scout_checks_api_Failed) + 'name': ConjureFieldDefinition('name', scout_compute_api_VariableName), + 'display_name': ConjureFieldDefinition('displayName', OptionalTypeWrapper[str]), + 'value': ConjureFieldDefinition('value', scout_checks_api_UnresolvedVariableLocator) } - def __init__( - self, - in_progress: Optional["scout_checks_api_InProgress"] = None, - completed: Optional["scout_checks_api_Completed"] = None, - failed: Optional["scout_checks_api_Failed"] = None, - type_of_union: Optional[str] = None - ) -> None: - if type_of_union is None: - if (in_progress is not None) + (completed is not None) + (failed is not None) != 1: - raise ValueError('a union must contain a single member') - - if in_progress is not None: - self._in_progress = in_progress - self._type = 'inProgress' - if completed is not None: - self._completed = completed - self._type = 'completed' - if failed is not None: - self._failed = failed - self._type = 'failed' + __slots__: List[str] = ['_name', '_display_name', '_value'] - elif type_of_union == 'inProgress': - if in_progress is None: - raise ValueError('a union value must not be None') - self._in_progress = in_progress - self._type = 'inProgress' - elif type_of_union == 'completed': - if completed is None: - raise ValueError('a union value must not be None') - self._completed = completed - self._type = 'completed' - elif type_of_union == 'failed': - if failed is None: - raise ValueError('a union value must not be None') - self._failed = failed - self._type = 'failed' + def __init__(self, name: str, value: "scout_checks_api_UnresolvedVariableLocator", display_name: Optional[str] = None) -> None: + self._name = name + self._display_name = display_name + self._value = value @builtins.property - def in_progress(self) -> Optional["scout_checks_api_InProgress"]: - return self._in_progress + def name(self) -> str: + return self._name @builtins.property - def completed(self) -> Optional["scout_checks_api_Completed"]: - return self._completed + def display_name(self) -> Optional[str]: + return self._display_name @builtins.property - def failed(self) -> Optional["scout_checks_api_Failed"]: - return self._failed - - def accept(self, visitor) -> Any: - if not isinstance(visitor, scout_checks_api_JobStatusVisitor): - raise ValueError('{} is not an instance of scout_checks_api_JobStatusVisitor'.format(visitor.__class__.__name__)) - if self._type == 'inProgress' and self.in_progress is not None: - return visitor._in_progress(self.in_progress) - if self._type == 'completed' and self.completed is not None: - return visitor._completed(self.completed) - if self._type == 'failed' and self.failed is not None: - return visitor._failed(self.failed) - - -scout_checks_api_JobStatus.__name__ = "JobStatus" -scout_checks_api_JobStatus.__qualname__ = "JobStatus" -scout_checks_api_JobStatus.__module__ = "scout_service_api.scout_checks_api" - - -class scout_checks_api_JobStatusVisitor: - - @abstractmethod - def _in_progress(self, in_progress: "scout_checks_api_InProgress") -> Any: - pass - - @abstractmethod - def _completed(self, completed: "scout_checks_api_Completed") -> Any: - pass - - @abstractmethod - def _failed(self, failed: "scout_checks_api_Failed") -> Any: - pass + def value(self) -> "scout_checks_api_UnresolvedVariableLocator": + return self._value -scout_checks_api_JobStatusVisitor.__name__ = "JobStatusVisitor" -scout_checks_api_JobStatusVisitor.__qualname__ = "JobStatusVisitor" -scout_checks_api_JobStatusVisitor.__module__ = "scout_service_api.scout_checks_api" +scout_checks_api_UnresolvedChecklistVariable.__name__ = "UnresolvedChecklistVariable" +scout_checks_api_UnresolvedChecklistVariable.__qualname__ = "UnresolvedChecklistVariable" +scout_checks_api_UnresolvedChecklistVariable.__module__ = "scout_service_api.scout_checks_api" -class scout_checks_api_MergeToMainRequest(ConjureBeanType): +class scout_checks_api_UnresolvedComputeNodeWithContext(ConjureBeanType): @builtins.classmethod def _fields(cls) -> Dict[str, ConjureFieldDefinition]: return { - 'branch_name': ConjureFieldDefinition('branchName', scout_versioning_api_BranchName), - 'message': ConjureFieldDefinition('message', str), - 'latest_commit_on_main': ConjureFieldDefinition('latestCommitOnMain', OptionalTypeWrapper[scout_versioning_api_CommitId]) + 'series_node': ConjureFieldDefinition('seriesNode', scout_compute_api_ComputeNode), + 'context': ConjureFieldDefinition('context', scout_checks_api_UnresolvedVariables) } - __slots__: List[str] = ['_branch_name', '_message', '_latest_commit_on_main'] - - def __init__(self, branch_name: str, message: str, latest_commit_on_main: Optional[str] = None) -> None: - self._branch_name = branch_name - self._message = message - self._latest_commit_on_main = latest_commit_on_main + __slots__: List[str] = ['_series_node', '_context'] - @builtins.property - def branch_name(self) -> str: - """ - If "main", the request will throw. - """ - return self._branch_name + def __init__(self, context: "scout_checks_api_UnresolvedVariables", series_node: "scout_compute_api_ComputeNode") -> None: + self._series_node = series_node + self._context = context @builtins.property - def message(self) -> str: - return self._message + def series_node(self) -> "scout_compute_api_ComputeNode": + return self._series_node @builtins.property - def latest_commit_on_main(self) -> Optional[str]: - """ - If present, will validate that the latest commit matches this id, -and otherwise throw CommitConflict. - """ - return self._latest_commit_on_main + def context(self) -> "scout_checks_api_UnresolvedVariables": + return self._context -scout_checks_api_MergeToMainRequest.__name__ = "MergeToMainRequest" -scout_checks_api_MergeToMainRequest.__qualname__ = "MergeToMainRequest" -scout_checks_api_MergeToMainRequest.__module__ = "scout_service_api.scout_checks_api" +scout_checks_api_UnresolvedComputeNodeWithContext.__name__ = "UnresolvedComputeNodeWithContext" +scout_checks_api_UnresolvedComputeNodeWithContext.__qualname__ = "UnresolvedComputeNodeWithContext" +scout_checks_api_UnresolvedComputeNodeWithContext.__module__ = "scout_service_api.scout_checks_api" -class scout_checks_api_NumRangesConditionV1(ConjureBeanType): +class scout_checks_api_UnresolvedNumRangesConditionV2(ConjureBeanType): @builtins.classmethod def _fields(cls) -> Dict[str, ConjureFieldDefinition]: @@ -16175,12 +20128,12 @@ def _fields(cls) -> Dict[str, ConjureFieldDefinition]: 'function_spec': ConjureFieldDefinition('functionSpec', object), 'threshold': ConjureFieldDefinition('threshold', int), 'operator': ConjureFieldDefinition('operator', scout_compute_api_ThresholdOperator), - 'variables': ConjureFieldDefinition('variables', Dict[scout_compute_api_VariableName, scout_checks_api_ChannelLocator]) + 'variables': ConjureFieldDefinition('variables', Dict[scout_compute_api_VariableName, scout_checks_api_UnresolvedVariableLocator]) } __slots__: List[str] = ['_ranges', '_function_spec', '_threshold', '_operator', '_variables'] - def __init__(self, function_spec: Any, operator: "scout_compute_api_ThresholdOperator", ranges: "scout_compute_api_deprecated_RangesNode", threshold: int, variables: Dict[str, "scout_checks_api_ChannelLocator"]) -> None: + def __init__(self, function_spec: Any, operator: "scout_compute_api_ThresholdOperator", ranges: "scout_compute_api_deprecated_RangesNode", threshold: int, variables: Dict[str, "scout_checks_api_UnresolvedVariableLocator"]) -> None: self._ranges = ranges self._function_spec = function_spec self._threshold = threshold @@ -16204,38 +20157,40 @@ def operator(self) -> "scout_compute_api_ThresholdOperator": return self._operator @builtins.property - def variables(self) -> Dict[str, "scout_checks_api_ChannelLocator"]: + def variables(self) -> Dict[str, "scout_checks_api_UnresolvedVariableLocator"]: return self._variables -scout_checks_api_NumRangesConditionV1.__name__ = "NumRangesConditionV1" -scout_checks_api_NumRangesConditionV1.__qualname__ = "NumRangesConditionV1" -scout_checks_api_NumRangesConditionV1.__module__ = "scout_service_api.scout_checks_api" +scout_checks_api_UnresolvedNumRangesConditionV2.__name__ = "UnresolvedNumRangesConditionV2" +scout_checks_api_UnresolvedNumRangesConditionV2.__qualname__ = "UnresolvedNumRangesConditionV2" +scout_checks_api_UnresolvedNumRangesConditionV2.__module__ = "scout_service_api.scout_checks_api" -class scout_checks_api_NumRangesConditionV2(ConjureBeanType): +class scout_checks_api_UnresolvedNumRangesConditionV3(ConjureBeanType): @builtins.classmethod def _fields(cls) -> Dict[str, ConjureFieldDefinition]: return { - 'ranges': ConjureFieldDefinition('ranges', scout_compute_api_deprecated_RangesNode), + 'ranges': ConjureFieldDefinition('ranges', scout_compute_api_RangesNode), 'function_spec': ConjureFieldDefinition('functionSpec', object), 'threshold': ConjureFieldDefinition('threshold', int), 'operator': ConjureFieldDefinition('operator', scout_compute_api_ThresholdOperator), - 'variables': ConjureFieldDefinition('variables', Dict[scout_compute_api_VariableName, scout_checks_api_VariableLocator]) + 'variables': ConjureFieldDefinition('variables', Dict[scout_compute_api_VariableName, scout_checks_api_UnresolvedVariableLocator]), + 'function_variables': ConjureFieldDefinition('functionVariables', Dict[scout_compute_api_FunctionReference, scout_checks_api_UnresolvedVariables]) } - __slots__: List[str] = ['_ranges', '_function_spec', '_threshold', '_operator', '_variables'] + __slots__: List[str] = ['_ranges', '_function_spec', '_threshold', '_operator', '_variables', '_function_variables'] - def __init__(self, function_spec: Any, operator: "scout_compute_api_ThresholdOperator", ranges: "scout_compute_api_deprecated_RangesNode", threshold: int, variables: Dict[str, "scout_checks_api_VariableLocator"]) -> None: + def __init__(self, function_spec: Any, function_variables: Dict[str, "scout_checks_api_UnresolvedVariables"], operator: "scout_compute_api_ThresholdOperator", ranges: "scout_compute_api_RangesNode", threshold: int, variables: Dict[str, "scout_checks_api_UnresolvedVariableLocator"]) -> None: self._ranges = ranges self._function_spec = function_spec self._threshold = threshold self._operator = operator self._variables = variables + self._function_variables = function_variables @builtins.property - def ranges(self) -> "scout_compute_api_deprecated_RangesNode": + def ranges(self) -> "scout_compute_api_RangesNode": return self._ranges @builtins.property @@ -16251,1345 +20206,1498 @@ def operator(self) -> "scout_compute_api_ThresholdOperator": return self._operator @builtins.property - def variables(self) -> Dict[str, "scout_checks_api_VariableLocator"]: + def variables(self) -> Dict[str, "scout_checks_api_UnresolvedVariableLocator"]: + """ + Default overrides for the variables used in the check condition. These variables can be overridden +at checklist execution time. + """ return self._variables + @builtins.property + def function_variables(self) -> Dict[str, "scout_checks_api_UnresolvedVariables"]: + """ + The variables to be passed into functions referenced by the check condition. The function reference key +should match the FunctionReference in the function node definition. These variables can be overridden +at checklist execution time. + """ + return self._function_variables + -scout_checks_api_NumRangesConditionV2.__name__ = "NumRangesConditionV2" -scout_checks_api_NumRangesConditionV2.__qualname__ = "NumRangesConditionV2" -scout_checks_api_NumRangesConditionV2.__module__ = "scout_service_api.scout_checks_api" +scout_checks_api_UnresolvedNumRangesConditionV3.__name__ = "UnresolvedNumRangesConditionV3" +scout_checks_api_UnresolvedNumRangesConditionV3.__qualname__ = "UnresolvedNumRangesConditionV3" +scout_checks_api_UnresolvedNumRangesConditionV3.__module__ = "scout_service_api.scout_checks_api" -class scout_checks_api_NumRangesConditionV3(ConjureBeanType): +class scout_checks_api_UnresolvedParameterizedNumRangesConditionV1(ConjureBeanType): @builtins.classmethod def _fields(cls) -> Dict[str, ConjureFieldDefinition]: return { 'ranges': ConjureFieldDefinition('ranges', scout_compute_api_RangesNode), - 'function_spec': ConjureFieldDefinition('functionSpec', object), - 'threshold': ConjureFieldDefinition('threshold', int), - 'operator': ConjureFieldDefinition('operator', scout_compute_api_ThresholdOperator), - 'variables': ConjureFieldDefinition('variables', Dict[scout_compute_api_VariableName, scout_checks_api_VariableLocator]), - 'function_variables': ConjureFieldDefinition('functionVariables', Dict[scout_compute_api_FunctionReference, scout_checks_api_CheckContext]) + 'implementations': ConjureFieldDefinition('implementations', List[scout_checks_api_UnresolvedVariables]) } - __slots__: List[str] = ['_ranges', '_function_spec', '_threshold', '_operator', '_variables', '_function_variables'] + __slots__: List[str] = ['_ranges', '_implementations'] - def __init__(self, function_spec: Any, function_variables: Dict[str, "scout_checks_api_CheckContext"], operator: "scout_compute_api_ThresholdOperator", ranges: "scout_compute_api_RangesNode", threshold: int, variables: Dict[str, "scout_checks_api_VariableLocator"]) -> None: + def __init__(self, implementations: List["scout_checks_api_UnresolvedVariables"], ranges: "scout_compute_api_RangesNode") -> None: self._ranges = ranges - self._function_spec = function_spec - self._threshold = threshold - self._operator = operator - self._variables = variables - self._function_variables = function_variables + self._implementations = implementations + + @builtins.property + def ranges(self) -> "scout_compute_api_RangesNode": + return self._ranges + + @builtins.property + def implementations(self) -> List["scout_checks_api_UnresolvedVariables"]: + """ + Each permutation of check context in the list will be executed as a new a stand-alone check. Violations +produced will be associated with the context of the index. + """ + return self._implementations + + +scout_checks_api_UnresolvedParameterizedNumRangesConditionV1.__name__ = "UnresolvedParameterizedNumRangesConditionV1" +scout_checks_api_UnresolvedParameterizedNumRangesConditionV1.__qualname__ = "UnresolvedParameterizedNumRangesConditionV1" +scout_checks_api_UnresolvedParameterizedNumRangesConditionV1.__module__ = "scout_service_api.scout_checks_api" + + +class scout_checks_api_UnresolvedVariableLocator(ConjureUnionType): + _checklist_function: Optional[str] = None + _checklist_variable: Optional[str] = None + _compute_node: Optional["scout_checks_api_UnresolvedComputeNodeWithContext"] = None + _series: Optional["scout_api_ChannelLocator"] = None + _timestamp: Optional["scout_checks_api_TimestampLocator"] = None + + @builtins.classmethod + def _options(cls) -> Dict[str, ConjureFieldDefinition]: + return { + 'checklist_function': ConjureFieldDefinition('checklistFunction', scout_compute_api_FunctionReference), + 'checklist_variable': ConjureFieldDefinition('checklistVariable', scout_compute_api_VariableName), + 'compute_node': ConjureFieldDefinition('computeNode', scout_checks_api_UnresolvedComputeNodeWithContext), + 'series': ConjureFieldDefinition('series', scout_api_ChannelLocator), + 'timestamp': ConjureFieldDefinition('timestamp', scout_checks_api_TimestampLocator) + } + + def __init__( + self, + checklist_function: Optional[str] = None, + checklist_variable: Optional[str] = None, + compute_node: Optional["scout_checks_api_UnresolvedComputeNodeWithContext"] = None, + series: Optional["scout_api_ChannelLocator"] = None, + timestamp: Optional["scout_checks_api_TimestampLocator"] = None, + type_of_union: Optional[str] = None + ) -> None: + if type_of_union is None: + if (checklist_function is not None) + (checklist_variable is not None) + (compute_node is not None) + (series is not None) + (timestamp is not None) != 1: + raise ValueError('a union must contain a single member') + + if checklist_function is not None: + self._checklist_function = checklist_function + self._type = 'checklistFunction' + if checklist_variable is not None: + self._checklist_variable = checklist_variable + self._type = 'checklistVariable' + if compute_node is not None: + self._compute_node = compute_node + self._type = 'computeNode' + if series is not None: + self._series = series + self._type = 'series' + if timestamp is not None: + self._timestamp = timestamp + self._type = 'timestamp' + + elif type_of_union == 'checklistFunction': + if checklist_function is None: + raise ValueError('a union value must not be None') + self._checklist_function = checklist_function + self._type = 'checklistFunction' + elif type_of_union == 'checklistVariable': + if checklist_variable is None: + raise ValueError('a union value must not be None') + self._checklist_variable = checklist_variable + self._type = 'checklistVariable' + elif type_of_union == 'computeNode': + if compute_node is None: + raise ValueError('a union value must not be None') + self._compute_node = compute_node + self._type = 'computeNode' + elif type_of_union == 'series': + if series is None: + raise ValueError('a union value must not be None') + self._series = series + self._type = 'series' + elif type_of_union == 'timestamp': + if timestamp is None: + raise ValueError('a union value must not be None') + self._timestamp = timestamp + self._type = 'timestamp' @builtins.property - def ranges(self) -> "scout_compute_api_RangesNode": - return self._ranges + def checklist_function(self) -> Optional[str]: + return self._checklist_function @builtins.property - def function_spec(self) -> Any: - return self._function_spec + def checklist_variable(self) -> Optional[str]: + """ + A pointer to a variable in the checklist. + """ + return self._checklist_variable @builtins.property - def threshold(self) -> int: - return self._threshold + def compute_node(self) -> Optional["scout_checks_api_UnresolvedComputeNodeWithContext"]: + return self._compute_node @builtins.property - def operator(self) -> "scout_compute_api_ThresholdOperator": - return self._operator + def series(self) -> Optional["scout_api_ChannelLocator"]: + return self._series @builtins.property - def variables(self) -> Dict[str, "scout_checks_api_VariableLocator"]: - return self._variables + def timestamp(self) -> Optional["scout_checks_api_TimestampLocator"]: + return self._timestamp - @builtins.property - def function_variables(self) -> Dict[str, "scout_checks_api_CheckContext"]: - """ - The variables to be passed into functions referenced by the check condition. The function reference key -should match the FunctionReference in the function node definition. - """ - return self._function_variables + def accept(self, visitor) -> Any: + if not isinstance(visitor, scout_checks_api_UnresolvedVariableLocatorVisitor): + raise ValueError('{} is not an instance of scout_checks_api_UnresolvedVariableLocatorVisitor'.format(visitor.__class__.__name__)) + if self._type == 'checklistFunction' and self.checklist_function is not None: + return visitor._checklist_function(self.checklist_function) + if self._type == 'checklistVariable' and self.checklist_variable is not None: + return visitor._checklist_variable(self.checklist_variable) + if self._type == 'computeNode' and self.compute_node is not None: + return visitor._compute_node(self.compute_node) + if self._type == 'series' and self.series is not None: + return visitor._series(self.series) + if self._type == 'timestamp' and self.timestamp is not None: + return visitor._timestamp(self.timestamp) -scout_checks_api_NumRangesConditionV3.__name__ = "NumRangesConditionV3" -scout_checks_api_NumRangesConditionV3.__qualname__ = "NumRangesConditionV3" -scout_checks_api_NumRangesConditionV3.__module__ = "scout_service_api.scout_checks_api" +scout_checks_api_UnresolvedVariableLocator.__name__ = "UnresolvedVariableLocator" +scout_checks_api_UnresolvedVariableLocator.__qualname__ = "UnresolvedVariableLocator" +scout_checks_api_UnresolvedVariableLocator.__module__ = "scout_service_api.scout_checks_api" -class scout_checks_api_ParameterizedNumRangesConditionV1(ConjureBeanType): +class scout_checks_api_UnresolvedVariableLocatorVisitor: + + @abstractmethod + def _checklist_function(self, checklist_function: str) -> Any: + pass + + @abstractmethod + def _checklist_variable(self, checklist_variable: str) -> Any: + pass + + @abstractmethod + def _compute_node(self, compute_node: "scout_checks_api_UnresolvedComputeNodeWithContext") -> Any: + pass + + @abstractmethod + def _series(self, series: "scout_api_ChannelLocator") -> Any: + pass + + @abstractmethod + def _timestamp(self, timestamp: "scout_checks_api_TimestampLocator") -> Any: + pass + + +scout_checks_api_UnresolvedVariableLocatorVisitor.__name__ = "UnresolvedVariableLocatorVisitor" +scout_checks_api_UnresolvedVariableLocatorVisitor.__qualname__ = "UnresolvedVariableLocatorVisitor" +scout_checks_api_UnresolvedVariableLocatorVisitor.__module__ = "scout_service_api.scout_checks_api" + + +class scout_checks_api_UnresolvedVariables(ConjureBeanType): @builtins.classmethod def _fields(cls) -> Dict[str, ConjureFieldDefinition]: return { - 'ranges': ConjureFieldDefinition('ranges', scout_compute_api_RangesNode), - 'implementations': ConjureFieldDefinition('implementations', List[scout_checks_api_CheckContext]) + 'variables': ConjureFieldDefinition('variables', Dict[scout_compute_api_VariableName, scout_checks_api_UnresolvedVariableLocator]), + 'sub_function_variables': ConjureFieldDefinition('subFunctionVariables', Dict[scout_compute_api_FunctionReference, scout_checks_api_UnresolvedVariables]) } - __slots__: List[str] = ['_ranges', '_implementations'] + __slots__: List[str] = ['_variables', '_sub_function_variables'] - def __init__(self, implementations: List["scout_checks_api_CheckContext"], ranges: "scout_compute_api_RangesNode") -> None: - self._ranges = ranges - self._implementations = implementations + def __init__(self, sub_function_variables: Dict[str, "scout_checks_api_UnresolvedVariables"], variables: Dict[str, "scout_checks_api_UnresolvedVariableLocator"]) -> None: + self._variables = variables + self._sub_function_variables = sub_function_variables @builtins.property - def ranges(self) -> "scout_compute_api_RangesNode": - return self._ranges + def variables(self) -> Dict[str, "scout_checks_api_UnresolvedVariableLocator"]: + return self._variables @builtins.property - def implementations(self) -> List["scout_checks_api_CheckContext"]: - """ - Each permutation of check context in the list will be executed as a new a stand-alone check. Violations -produced will be associated with the context of the index. - """ - return self._implementations + def sub_function_variables(self) -> Dict[str, "scout_checks_api_UnresolvedVariables"]: + return self._sub_function_variables -scout_checks_api_ParameterizedNumRangesConditionV1.__name__ = "ParameterizedNumRangesConditionV1" -scout_checks_api_ParameterizedNumRangesConditionV1.__qualname__ = "ParameterizedNumRangesConditionV1" -scout_checks_api_ParameterizedNumRangesConditionV1.__module__ = "scout_service_api.scout_checks_api" +scout_checks_api_UnresolvedVariables.__name__ = "UnresolvedVariables" +scout_checks_api_UnresolvedVariables.__qualname__ = "UnresolvedVariables" +scout_checks_api_UnresolvedVariables.__module__ = "scout_service_api.scout_checks_api" -class scout_checks_api_PinnedChecklistRef(ConjureBeanType): - """ - A reference to a checklist that is pinned to a specific commit. - """ +class scout_checks_api_UpdateChecklistEntryRequest(ConjureUnionType): + _create_check: Optional["scout_checks_api_CreateCheckRequest"] = None + _check: Optional[str] = None @builtins.classmethod - def _fields(cls) -> Dict[str, ConjureFieldDefinition]: + def _options(cls) -> Dict[str, ConjureFieldDefinition]: return { - 'rid': ConjureFieldDefinition('rid', scout_rids_api_ChecklistRid), - 'commit': ConjureFieldDefinition('commit', scout_versioning_api_CommitId) + 'create_check': ConjureFieldDefinition('createCheck', scout_checks_api_CreateCheckRequest), + 'check': ConjureFieldDefinition('check', scout_rids_api_CheckRid) } - __slots__: List[str] = ['_rid', '_commit'] + def __init__( + self, + create_check: Optional["scout_checks_api_CreateCheckRequest"] = None, + check: Optional[str] = None, + type_of_union: Optional[str] = None + ) -> None: + if type_of_union is None: + if (create_check is not None) + (check is not None) != 1: + raise ValueError('a union must contain a single member') - def __init__(self, commit: str, rid: str) -> None: - self._rid = rid - self._commit = commit + if create_check is not None: + self._create_check = create_check + self._type = 'createCheck' + if check is not None: + self._check = check + self._type = 'check' + + elif type_of_union == 'createCheck': + if create_check is None: + raise ValueError('a union value must not be None') + self._create_check = create_check + self._type = 'createCheck' + elif type_of_union == 'check': + if check is None: + raise ValueError('a union value must not be None') + self._check = check + self._type = 'check' @builtins.property - def rid(self) -> str: - return self._rid + def create_check(self) -> Optional["scout_checks_api_CreateCheckRequest"]: + return self._create_check @builtins.property - def commit(self) -> str: - return self._commit + def check(self) -> Optional[str]: + return self._check + def accept(self, visitor) -> Any: + if not isinstance(visitor, scout_checks_api_UpdateChecklistEntryRequestVisitor): + raise ValueError('{} is not an instance of scout_checks_api_UpdateChecklistEntryRequestVisitor'.format(visitor.__class__.__name__)) + if self._type == 'createCheck' and self.create_check is not None: + return visitor._create_check(self.create_check) + if self._type == 'check' and self.check is not None: + return visitor._check(self.check) -scout_checks_api_PinnedChecklistRef.__name__ = "PinnedChecklistRef" -scout_checks_api_PinnedChecklistRef.__qualname__ = "PinnedChecklistRef" -scout_checks_api_PinnedChecklistRef.__module__ = "scout_service_api.scout_checks_api" +scout_checks_api_UpdateChecklistEntryRequest.__name__ = "UpdateChecklistEntryRequest" +scout_checks_api_UpdateChecklistEntryRequest.__qualname__ = "UpdateChecklistEntryRequest" +scout_checks_api_UpdateChecklistEntryRequest.__module__ = "scout_service_api.scout_checks_api" -class scout_checks_api_Priority(ConjureEnumType): - P0 = 'P0' - '''P0''' - P1 = 'P1' - '''P1''' - P2 = 'P2' - '''P2''' - P3 = 'P3' - '''P3''' - P4 = 'P4' - '''P4''' - UNKNOWN = 'UNKNOWN' - '''UNKNOWN''' +class scout_checks_api_UpdateChecklistEntryRequestVisitor: - def __reduce_ex__(self, proto): - return self.__class__, (self.name,) + @abstractmethod + def _create_check(self, create_check: "scout_checks_api_CreateCheckRequest") -> Any: + pass + + @abstractmethod + def _check(self, check: str) -> Any: + pass -scout_checks_api_Priority.__name__ = "Priority" -scout_checks_api_Priority.__qualname__ = "Priority" -scout_checks_api_Priority.__module__ = "scout_service_api.scout_checks_api" +scout_checks_api_UpdateChecklistEntryRequestVisitor.__name__ = "UpdateChecklistEntryRequestVisitor" +scout_checks_api_UpdateChecklistEntryRequestVisitor.__qualname__ = "UpdateChecklistEntryRequestVisitor" +scout_checks_api_UpdateChecklistEntryRequestVisitor.__module__ = "scout_service_api.scout_checks_api" -class scout_checks_api_SaveChecklistRequest(ConjureBeanType): +class scout_checks_api_UpdateChecklistMetadataRequest(ConjureBeanType): @builtins.classmethod def _fields(cls) -> Dict[str, ConjureFieldDefinition]: return { - 'checks': ConjureFieldDefinition('checks', List[scout_checks_api_UpdateChecklistEntryRequest]), - 'functions': ConjureFieldDefinition('functions', Dict[scout_compute_api_FunctionReference, scout_checks_api_UpdateFunctionEntryRequest]), - 'checklist_variables': ConjureFieldDefinition('checklistVariables', List[scout_checks_api_UnresolvedChecklistVariable]), - 'latest_commit': ConjureFieldDefinition('latestCommit', OptionalTypeWrapper[scout_versioning_api_CommitId]) + 'assignee_rid': ConjureFieldDefinition('assigneeRid', OptionalTypeWrapper[scout_rids_api_UserRid]), + 'title': ConjureFieldDefinition('title', OptionalTypeWrapper[str]), + 'description': ConjureFieldDefinition('description', OptionalTypeWrapper[str]), + 'properties': ConjureFieldDefinition('properties', OptionalTypeWrapper[Dict[scout_run_api_PropertyName, scout_run_api_PropertyValue]]), + 'labels': ConjureFieldDefinition('labels', OptionalTypeWrapper[List[scout_run_api_Label]]), + 'is_published': ConjureFieldDefinition('isPublished', OptionalTypeWrapper[bool]) } - __slots__: List[str] = ['_checks', '_functions', '_checklist_variables', '_latest_commit'] + __slots__: List[str] = ['_assignee_rid', '_title', '_description', '_properties', '_labels', '_is_published'] - def __init__(self, checklist_variables: List["scout_checks_api_UnresolvedChecklistVariable"], checks: List["scout_checks_api_UpdateChecklistEntryRequest"], functions: Dict[str, "scout_checks_api_UpdateFunctionEntryRequest"], latest_commit: Optional[str] = None) -> None: - self._checks = checks - self._functions = functions - self._checklist_variables = checklist_variables - self._latest_commit = latest_commit + def __init__(self, assignee_rid: Optional[str] = None, description: Optional[str] = None, is_published: Optional[bool] = None, labels: Optional[List[str]] = None, properties: Optional[Dict[str, str]] = None, title: Optional[str] = None) -> None: + self._assignee_rid = assignee_rid + self._title = title + self._description = description + self._properties = properties + self._labels = labels + self._is_published = is_published @builtins.property - def checks(self) -> List["scout_checks_api_UpdateChecklistEntryRequest"]: - return self._checks + def assignee_rid(self) -> Optional[str]: + return self._assignee_rid @builtins.property - def functions(self) -> Dict[str, "scout_checks_api_UpdateFunctionEntryRequest"]: - """ - The keys of the map are references that can be used for checks to reference functions in the same request, before the function RIDs have been created. - """ - return self._functions + def title(self) -> Optional[str]: + return self._title @builtins.property - def checklist_variables(self) -> List["scout_checks_api_UnresolvedChecklistVariable"]: - """ - Variables that can be used in checks and functions. Variables are resolved in order of declaration. -If variable `a` depends on variable `b`, then `b` must be defined before `a` in the list. - """ - return self._checklist_variables + def description(self) -> Optional[str]: + return self._description @builtins.property - def latest_commit(self) -> Optional[str]: - """ - If present, will validate that the latest commit matches this id, -and otherwise throw CommitConflict. - """ - return self._latest_commit + def properties(self) -> Optional[Dict[str, str]]: + return self._properties + @builtins.property + def labels(self) -> Optional[List[str]]: + return self._labels -scout_checks_api_SaveChecklistRequest.__name__ = "SaveChecklistRequest" -scout_checks_api_SaveChecklistRequest.__qualname__ = "SaveChecklistRequest" -scout_checks_api_SaveChecklistRequest.__module__ = "scout_service_api.scout_checks_api" + @builtins.property + def is_published(self) -> Optional[bool]: + return self._is_published -class scout_checks_api_SearchChecklistsRequest(ConjureBeanType): +scout_checks_api_UpdateChecklistMetadataRequest.__name__ = "UpdateChecklistMetadataRequest" +scout_checks_api_UpdateChecklistMetadataRequest.__qualname__ = "UpdateChecklistMetadataRequest" +scout_checks_api_UpdateChecklistMetadataRequest.__module__ = "scout_service_api.scout_checks_api" + + +class scout_checks_api_UpdateFunctionEntryRequest(ConjureUnionType): + _create_function: Optional["scout_checks_api_CreateFunctionRequest"] = None + _function: Optional[str] = None @builtins.classmethod - def _fields(cls) -> Dict[str, ConjureFieldDefinition]: + def _options(cls) -> Dict[str, ConjureFieldDefinition]: return { - 'query': ConjureFieldDefinition('query', scout_checks_api_ChecklistSearchQuery), - 'sort_by': ConjureFieldDefinition('sortBy', OptionalTypeWrapper[scout_checks_api_SortOptions]), - 'next_page_token': ConjureFieldDefinition('nextPageToken', OptionalTypeWrapper[scout_api_Token]), - 'page_size': ConjureFieldDefinition('pageSize', OptionalTypeWrapper[int]), - 'archived_statuses': ConjureFieldDefinition('archivedStatuses', OptionalTypeWrapper[List[scout_rids_api_ArchivedStatus]]) + 'create_function': ConjureFieldDefinition('createFunction', scout_checks_api_CreateFunctionRequest), + 'function': ConjureFieldDefinition('function', scout_rids_api_FunctionRid) } - __slots__: List[str] = ['_query', '_sort_by', '_next_page_token', '_page_size', '_archived_statuses'] - - def __init__(self, query: "scout_checks_api_ChecklistSearchQuery", archived_statuses: Optional[List["scout_rids_api_ArchivedStatus"]] = None, next_page_token: Optional[str] = None, page_size: Optional[int] = None, sort_by: Optional["scout_checks_api_SortOptions"] = None) -> None: - self._query = query - self._sort_by = sort_by - self._next_page_token = next_page_token - self._page_size = page_size - self._archived_statuses = archived_statuses + def __init__( + self, + create_function: Optional["scout_checks_api_CreateFunctionRequest"] = None, + function: Optional[str] = None, + type_of_union: Optional[str] = None + ) -> None: + if type_of_union is None: + if (create_function is not None) + (function is not None) != 1: + raise ValueError('a union must contain a single member') - @builtins.property - def query(self) -> "scout_checks_api_ChecklistSearchQuery": - return self._query + if create_function is not None: + self._create_function = create_function + self._type = 'createFunction' + if function is not None: + self._function = function + self._type = 'function' - @builtins.property - def sort_by(self) -> Optional["scout_checks_api_SortOptions"]: - """ - If not present, will sort by LAST_USED in descending order. - """ - return self._sort_by + elif type_of_union == 'createFunction': + if create_function is None: + raise ValueError('a union value must not be None') + self._create_function = create_function + self._type = 'createFunction' + elif type_of_union == 'function': + if function is None: + raise ValueError('a union value must not be None') + self._function = function + self._type = 'function' @builtins.property - def next_page_token(self) -> Optional[str]: - return self._next_page_token + def create_function(self) -> Optional["scout_checks_api_CreateFunctionRequest"]: + return self._create_function @builtins.property - def page_size(self) -> Optional[int]: - """ - Defaults to 100. Will throw if larger than 1000. - """ - return self._page_size + def function(self) -> Optional[str]: + return self._function - @builtins.property - def archived_statuses(self) -> Optional[List["scout_rids_api_ArchivedStatus"]]: - """ - Default search status is NOT_ARCHIVED if none are provided. Allows for including archived checklists in search. - """ - return self._archived_statuses + def accept(self, visitor) -> Any: + if not isinstance(visitor, scout_checks_api_UpdateFunctionEntryRequestVisitor): + raise ValueError('{} is not an instance of scout_checks_api_UpdateFunctionEntryRequestVisitor'.format(visitor.__class__.__name__)) + if self._type == 'createFunction' and self.create_function is not None: + return visitor._create_function(self.create_function) + if self._type == 'function' and self.function is not None: + return visitor._function(self.function) -scout_checks_api_SearchChecklistsRequest.__name__ = "SearchChecklistsRequest" -scout_checks_api_SearchChecklistsRequest.__qualname__ = "SearchChecklistsRequest" -scout_checks_api_SearchChecklistsRequest.__module__ = "scout_service_api.scout_checks_api" +scout_checks_api_UpdateFunctionEntryRequest.__name__ = "UpdateFunctionEntryRequest" +scout_checks_api_UpdateFunctionEntryRequest.__qualname__ = "UpdateFunctionEntryRequest" +scout_checks_api_UpdateFunctionEntryRequest.__module__ = "scout_service_api.scout_checks_api" -class scout_checks_api_SortField(ConjureEnumType): +class scout_checks_api_UpdateFunctionEntryRequestVisitor: - CREATED_AT = 'CREATED_AT' - '''CREATED_AT''' - LAST_USED = 'LAST_USED' - '''LAST_USED''' - UNKNOWN = 'UNKNOWN' - '''UNKNOWN''' + @abstractmethod + def _create_function(self, create_function: "scout_checks_api_CreateFunctionRequest") -> Any: + pass - def __reduce_ex__(self, proto): - return self.__class__, (self.name,) + @abstractmethod + def _function(self, function: str) -> Any: + pass -scout_checks_api_SortField.__name__ = "SortField" -scout_checks_api_SortField.__qualname__ = "SortField" -scout_checks_api_SortField.__module__ = "scout_service_api.scout_checks_api" +scout_checks_api_UpdateFunctionEntryRequestVisitor.__name__ = "UpdateFunctionEntryRequestVisitor" +scout_checks_api_UpdateFunctionEntryRequestVisitor.__qualname__ = "UpdateFunctionEntryRequestVisitor" +scout_checks_api_UpdateFunctionEntryRequestVisitor.__module__ = "scout_service_api.scout_checks_api" -class scout_checks_api_SortOptions(ConjureBeanType): +class scout_checks_api_VariableLocator(ConjureUnionType): + _checklist_variable: Optional[str] = None + _compute_node: Optional["scout_checks_api_ComputeNodeWithContext"] = None + _function_rid: Optional[str] = None + _series: Optional["scout_api_ChannelLocator"] = None + _timestamp: Optional["scout_checks_api_TimestampLocator"] = None @builtins.classmethod - def _fields(cls) -> Dict[str, ConjureFieldDefinition]: + def _options(cls) -> Dict[str, ConjureFieldDefinition]: return { - 'is_descending': ConjureFieldDefinition('isDescending', bool), - 'field': ConjureFieldDefinition('field', scout_checks_api_SortField) + 'checklist_variable': ConjureFieldDefinition('checklistVariable', scout_compute_api_VariableName), + 'compute_node': ConjureFieldDefinition('computeNode', scout_checks_api_ComputeNodeWithContext), + 'function_rid': ConjureFieldDefinition('functionRid', scout_rids_api_FunctionRid), + 'series': ConjureFieldDefinition('series', scout_api_ChannelLocator), + 'timestamp': ConjureFieldDefinition('timestamp', scout_checks_api_TimestampLocator) } - __slots__: List[str] = ['_is_descending', '_field'] + def __init__( + self, + checklist_variable: Optional[str] = None, + compute_node: Optional["scout_checks_api_ComputeNodeWithContext"] = None, + function_rid: Optional[str] = None, + series: Optional["scout_api_ChannelLocator"] = None, + timestamp: Optional["scout_checks_api_TimestampLocator"] = None, + type_of_union: Optional[str] = None + ) -> None: + if type_of_union is None: + if (checklist_variable is not None) + (compute_node is not None) + (function_rid is not None) + (series is not None) + (timestamp is not None) != 1: + raise ValueError('a union must contain a single member') - def __init__(self, field: "scout_checks_api_SortField", is_descending: bool) -> None: - self._is_descending = is_descending - self._field = field + if checklist_variable is not None: + self._checklist_variable = checklist_variable + self._type = 'checklistVariable' + if compute_node is not None: + self._compute_node = compute_node + self._type = 'computeNode' + if function_rid is not None: + self._function_rid = function_rid + self._type = 'functionRid' + if series is not None: + self._series = series + self._type = 'series' + if timestamp is not None: + self._timestamp = timestamp + self._type = 'timestamp' - @builtins.property - def is_descending(self) -> bool: - return self._is_descending + elif type_of_union == 'checklistVariable': + if checklist_variable is None: + raise ValueError('a union value must not be None') + self._checklist_variable = checklist_variable + self._type = 'checklistVariable' + elif type_of_union == 'computeNode': + if compute_node is None: + raise ValueError('a union value must not be None') + self._compute_node = compute_node + self._type = 'computeNode' + elif type_of_union == 'functionRid': + if function_rid is None: + raise ValueError('a union value must not be None') + self._function_rid = function_rid + self._type = 'functionRid' + elif type_of_union == 'series': + if series is None: + raise ValueError('a union value must not be None') + self._series = series + self._type = 'series' + elif type_of_union == 'timestamp': + if timestamp is None: + raise ValueError('a union value must not be None') + self._timestamp = timestamp + self._type = 'timestamp' @builtins.property - def field(self) -> "scout_checks_api_SortField": - return self._field - - -scout_checks_api_SortOptions.__name__ = "SortOptions" -scout_checks_api_SortOptions.__qualname__ = "SortOptions" -scout_checks_api_SortOptions.__module__ = "scout_service_api.scout_checks_api" + def checklist_variable(self) -> Optional[str]: + """ + A pointer to a checklist level variable. + """ + return self._checklist_variable + @builtins.property + def compute_node(self) -> Optional["scout_checks_api_ComputeNodeWithContext"]: + return self._compute_node -class scout_checks_api_SubmitJobsRequest(ConjureBeanType): + @builtins.property + def function_rid(self) -> Optional[str]: + return self._function_rid - @builtins.classmethod - def _fields(cls) -> Dict[str, ConjureFieldDefinition]: - return { - 'jobs_to_execute': ConjureFieldDefinition('jobsToExecute', List[scout_checks_api_JobSpec]) - } + @builtins.property + def series(self) -> Optional["scout_api_ChannelLocator"]: + return self._series - __slots__: List[str] = ['_jobs_to_execute'] + @builtins.property + def timestamp(self) -> Optional["scout_checks_api_TimestampLocator"]: + return self._timestamp - def __init__(self, jobs_to_execute: List["scout_checks_api_JobSpec"]) -> None: - self._jobs_to_execute = jobs_to_execute + def accept(self, visitor) -> Any: + if not isinstance(visitor, scout_checks_api_VariableLocatorVisitor): + raise ValueError('{} is not an instance of scout_checks_api_VariableLocatorVisitor'.format(visitor.__class__.__name__)) + if self._type == 'checklistVariable' and self.checklist_variable is not None: + return visitor._checklist_variable(self.checklist_variable) + if self._type == 'computeNode' and self.compute_node is not None: + return visitor._compute_node(self.compute_node) + if self._type == 'functionRid' and self.function_rid is not None: + return visitor._function_rid(self.function_rid) + if self._type == 'series' and self.series is not None: + return visitor._series(self.series) + if self._type == 'timestamp' and self.timestamp is not None: + return visitor._timestamp(self.timestamp) - @builtins.property - def jobs_to_execute(self) -> List["scout_checks_api_JobSpec"]: - return self._jobs_to_execute +scout_checks_api_VariableLocator.__name__ = "VariableLocator" +scout_checks_api_VariableLocator.__qualname__ = "VariableLocator" +scout_checks_api_VariableLocator.__module__ = "scout_service_api.scout_checks_api" -scout_checks_api_SubmitJobsRequest.__name__ = "SubmitJobsRequest" -scout_checks_api_SubmitJobsRequest.__qualname__ = "SubmitJobsRequest" -scout_checks_api_SubmitJobsRequest.__module__ = "scout_service_api.scout_checks_api" +class scout_checks_api_VariableLocatorVisitor: -class scout_checks_api_SubmitJobsResponse(ConjureBeanType): + @abstractmethod + def _checklist_variable(self, checklist_variable: str) -> Any: + pass - @builtins.classmethod - def _fields(cls) -> Dict[str, ConjureFieldDefinition]: - return { - 'jobs': ConjureFieldDefinition('jobs', List[scout_checks_api_SubmittedJob]) - } + @abstractmethod + def _compute_node(self, compute_node: "scout_checks_api_ComputeNodeWithContext") -> Any: + pass - __slots__: List[str] = ['_jobs'] + @abstractmethod + def _function_rid(self, function_rid: str) -> Any: + pass - def __init__(self, jobs: List["scout_checks_api_SubmittedJob"]) -> None: - self._jobs = jobs + @abstractmethod + def _series(self, series: "scout_api_ChannelLocator") -> Any: + pass - @builtins.property - def jobs(self) -> List["scout_checks_api_SubmittedJob"]: - return self._jobs + @abstractmethod + def _timestamp(self, timestamp: "scout_checks_api_TimestampLocator") -> Any: + pass -scout_checks_api_SubmitJobsResponse.__name__ = "SubmitJobsResponse" -scout_checks_api_SubmitJobsResponse.__qualname__ = "SubmitJobsResponse" -scout_checks_api_SubmitJobsResponse.__module__ = "scout_service_api.scout_checks_api" +scout_checks_api_VariableLocatorVisitor.__name__ = "VariableLocatorVisitor" +scout_checks_api_VariableLocatorVisitor.__qualname__ = "VariableLocatorVisitor" +scout_checks_api_VariableLocatorVisitor.__module__ = "scout_service_api.scout_checks_api" -class scout_checks_api_SubmittedJob(ConjureBeanType): +class scout_checks_api_VersionedChecklist(ConjureBeanType): @builtins.classmethod def _fields(cls) -> Dict[str, ConjureFieldDefinition]: return { - 'job_rid': ConjureFieldDefinition('jobRid', scout_checks_api_JobRid), - 'job_spec': ConjureFieldDefinition('jobSpec', scout_checks_api_JobSpec) + 'rid': ConjureFieldDefinition('rid', scout_rids_api_ChecklistRid), + 'metadata': ConjureFieldDefinition('metadata', scout_checks_api_ChecklistMetadata), + 'commit': ConjureFieldDefinition('commit', scout_versioning_api_Commit), + 'functions': ConjureFieldDefinition('functions', List[scout_checks_api_Function]), + 'checks': ConjureFieldDefinition('checks', List[scout_checks_api_ChecklistEntry]), + 'checklist_variables': ConjureFieldDefinition('checklistVariables', List[scout_checks_api_ChecklistVariable]) } - __slots__: List[str] = ['_job_rid', '_job_spec'] + __slots__: List[str] = ['_rid', '_metadata', '_commit', '_functions', '_checks', '_checklist_variables'] - def __init__(self, job_rid: str, job_spec: "scout_checks_api_JobSpec") -> None: - self._job_rid = job_rid - self._job_spec = job_spec + def __init__(self, checklist_variables: List["scout_checks_api_ChecklistVariable"], checks: List["scout_checks_api_ChecklistEntry"], commit: "scout_versioning_api_Commit", functions: List["scout_checks_api_Function"], metadata: "scout_checks_api_ChecklistMetadata", rid: str) -> None: + self._rid = rid + self._metadata = metadata + self._commit = commit + self._functions = functions + self._checks = checks + self._checklist_variables = checklist_variables @builtins.property - def job_rid(self) -> str: - return self._job_rid + def rid(self) -> str: + return self._rid @builtins.property - def job_spec(self) -> "scout_checks_api_JobSpec": - return self._job_spec - - -scout_checks_api_SubmittedJob.__name__ = "SubmittedJob" -scout_checks_api_SubmittedJob.__qualname__ = "SubmittedJob" -scout_checks_api_SubmittedJob.__module__ = "scout_service_api.scout_checks_api" + def metadata(self) -> "scout_checks_api_ChecklistMetadata": + return self._metadata + @builtins.property + def commit(self) -> "scout_versioning_api_Commit": + return self._commit -class scout_checks_api_TimestampLocator(ConjureEnumType): + @builtins.property + def functions(self) -> List["scout_checks_api_Function"]: + """ + A list of functions that are available to be used by checks in this checklist. + """ + return self._functions - RUN_START = 'RUN_START' - '''RUN_START''' - RUN_END = 'RUN_END' - '''RUN_END''' - UNKNOWN = 'UNKNOWN' - '''UNKNOWN''' + @builtins.property + def checks(self) -> List["scout_checks_api_ChecklistEntry"]: + return self._checks - def __reduce_ex__(self, proto): - return self.__class__, (self.name,) + @builtins.property + def checklist_variables(self) -> List["scout_checks_api_ChecklistVariable"]: + """ + Variables that can be used in checks and functions. Variables are resolved in order of declaration. +If variable `a` depends on variable `b`, then `b` must be defined before `a` in the list. + """ + return self._checklist_variables -scout_checks_api_TimestampLocator.__name__ = "TimestampLocator" -scout_checks_api_TimestampLocator.__qualname__ = "TimestampLocator" -scout_checks_api_TimestampLocator.__module__ = "scout_service_api.scout_checks_api" +scout_checks_api_VersionedChecklist.__name__ = "VersionedChecklist" +scout_checks_api_VersionedChecklist.__qualname__ = "VersionedChecklist" +scout_checks_api_VersionedChecklist.__module__ = "scout_service_api.scout_checks_api" -class scout_checks_api_UnarchiveChecklistsRequest(ConjureBeanType): +class scout_checks_api_VersionedChecklistPage(ConjureBeanType): @builtins.classmethod def _fields(cls) -> Dict[str, ConjureFieldDefinition]: return { - 'rids': ConjureFieldDefinition('rids', List[scout_rids_api_ChecklistRid]) + 'values': ConjureFieldDefinition('values', List[scout_checks_api_VersionedChecklist]), + 'next_page_token': ConjureFieldDefinition('nextPageToken', OptionalTypeWrapper[scout_api_Token]) } - __slots__: List[str] = ['_rids'] + __slots__: List[str] = ['_values', '_next_page_token'] - def __init__(self, rids: List[str]) -> None: - self._rids = rids + def __init__(self, values: List["scout_checks_api_VersionedChecklist"], next_page_token: Optional[str] = None) -> None: + self._values = values + self._next_page_token = next_page_token @builtins.property - def rids(self) -> List[str]: - return self._rids + def values(self) -> List["scout_checks_api_VersionedChecklist"]: + return self._values + + @builtins.property + def next_page_token(self) -> Optional[str]: + return self._next_page_token -scout_checks_api_UnarchiveChecklistsRequest.__name__ = "UnarchiveChecklistsRequest" -scout_checks_api_UnarchiveChecklistsRequest.__qualname__ = "UnarchiveChecklistsRequest" -scout_checks_api_UnarchiveChecklistsRequest.__module__ = "scout_service_api.scout_checks_api" +scout_checks_api_VersionedChecklistPage.__name__ = "VersionedChecklistPage" +scout_checks_api_VersionedChecklistPage.__qualname__ = "VersionedChecklistPage" +scout_checks_api_VersionedChecklistPage.__module__ = "scout_service_api.scout_checks_api" -class scout_checks_api_UnresolvedCheckCondition(ConjureUnionType): - _num_ranges_v2: Optional["scout_checks_api_UnresolvedNumRangesConditionV2"] = None - _num_ranges_v3: Optional["scout_checks_api_UnresolvedNumRangesConditionV3"] = None - _parameterized_num_ranges_v1: Optional["scout_checks_api_UnresolvedParameterizedNumRangesConditionV1"] = None +class scout_comparisonnotebook_api_AggregationType(ConjureUnionType): + _max: Optional["scout_comparisonnotebook_api_Max"] = None + _min: Optional["scout_comparisonnotebook_api_Min"] = None + _mean: Optional["scout_comparisonnotebook_api_Mean"] = None + _standard_deviation: Optional["scout_comparisonnotebook_api_StandardDeviation"] = None @builtins.classmethod def _options(cls) -> Dict[str, ConjureFieldDefinition]: return { - 'num_ranges_v2': ConjureFieldDefinition('numRangesV2', scout_checks_api_UnresolvedNumRangesConditionV2), - 'num_ranges_v3': ConjureFieldDefinition('numRangesV3', scout_checks_api_UnresolvedNumRangesConditionV3), - 'parameterized_num_ranges_v1': ConjureFieldDefinition('parameterizedNumRangesV1', scout_checks_api_UnresolvedParameterizedNumRangesConditionV1) + 'max': ConjureFieldDefinition('max', scout_comparisonnotebook_api_Max), + 'min': ConjureFieldDefinition('min', scout_comparisonnotebook_api_Min), + 'mean': ConjureFieldDefinition('mean', scout_comparisonnotebook_api_Mean), + 'standard_deviation': ConjureFieldDefinition('standardDeviation', scout_comparisonnotebook_api_StandardDeviation) } def __init__( self, - num_ranges_v2: Optional["scout_checks_api_UnresolvedNumRangesConditionV2"] = None, - num_ranges_v3: Optional["scout_checks_api_UnresolvedNumRangesConditionV3"] = None, - parameterized_num_ranges_v1: Optional["scout_checks_api_UnresolvedParameterizedNumRangesConditionV1"] = None, + max: Optional["scout_comparisonnotebook_api_Max"] = None, + min: Optional["scout_comparisonnotebook_api_Min"] = None, + mean: Optional["scout_comparisonnotebook_api_Mean"] = None, + standard_deviation: Optional["scout_comparisonnotebook_api_StandardDeviation"] = None, type_of_union: Optional[str] = None ) -> None: if type_of_union is None: - if (num_ranges_v2 is not None) + (num_ranges_v3 is not None) + (parameterized_num_ranges_v1 is not None) != 1: + if (max is not None) + (min is not None) + (mean is not None) + (standard_deviation is not None) != 1: raise ValueError('a union must contain a single member') - if num_ranges_v2 is not None: - self._num_ranges_v2 = num_ranges_v2 - self._type = 'numRangesV2' - if num_ranges_v3 is not None: - self._num_ranges_v3 = num_ranges_v3 - self._type = 'numRangesV3' - if parameterized_num_ranges_v1 is not None: - self._parameterized_num_ranges_v1 = parameterized_num_ranges_v1 - self._type = 'parameterizedNumRangesV1' + if max is not None: + self._max = max + self._type = 'max' + if min is not None: + self._min = min + self._type = 'min' + if mean is not None: + self._mean = mean + self._type = 'mean' + if standard_deviation is not None: + self._standard_deviation = standard_deviation + self._type = 'standardDeviation' - elif type_of_union == 'numRangesV2': - if num_ranges_v2 is None: + elif type_of_union == 'max': + if max is None: raise ValueError('a union value must not be None') - self._num_ranges_v2 = num_ranges_v2 - self._type = 'numRangesV2' - elif type_of_union == 'numRangesV3': - if num_ranges_v3 is None: + self._max = max + self._type = 'max' + elif type_of_union == 'min': + if min is None: raise ValueError('a union value must not be None') - self._num_ranges_v3 = num_ranges_v3 - self._type = 'numRangesV3' - elif type_of_union == 'parameterizedNumRangesV1': - if parameterized_num_ranges_v1 is None: + self._min = min + self._type = 'min' + elif type_of_union == 'mean': + if mean is None: raise ValueError('a union value must not be None') - self._parameterized_num_ranges_v1 = parameterized_num_ranges_v1 - self._type = 'parameterizedNumRangesV1' + self._mean = mean + self._type = 'mean' + elif type_of_union == 'standardDeviation': + if standard_deviation is None: + raise ValueError('a union value must not be None') + self._standard_deviation = standard_deviation + self._type = 'standardDeviation' @builtins.property - def num_ranges_v2(self) -> Optional["scout_checks_api_UnresolvedNumRangesConditionV2"]: - return self._num_ranges_v2 + def max(self) -> Optional["scout_comparisonnotebook_api_Max"]: + return self._max @builtins.property - def num_ranges_v3(self) -> Optional["scout_checks_api_UnresolvedNumRangesConditionV3"]: - return self._num_ranges_v3 + def min(self) -> Optional["scout_comparisonnotebook_api_Min"]: + return self._min @builtins.property - def parameterized_num_ranges_v1(self) -> Optional["scout_checks_api_UnresolvedParameterizedNumRangesConditionV1"]: - return self._parameterized_num_ranges_v1 + def mean(self) -> Optional["scout_comparisonnotebook_api_Mean"]: + return self._mean + + @builtins.property + def standard_deviation(self) -> Optional["scout_comparisonnotebook_api_StandardDeviation"]: + return self._standard_deviation def accept(self, visitor) -> Any: - if not isinstance(visitor, scout_checks_api_UnresolvedCheckConditionVisitor): - raise ValueError('{} is not an instance of scout_checks_api_UnresolvedCheckConditionVisitor'.format(visitor.__class__.__name__)) - if self._type == 'numRangesV2' and self.num_ranges_v2 is not None: - return visitor._num_ranges_v2(self.num_ranges_v2) - if self._type == 'numRangesV3' and self.num_ranges_v3 is not None: - return visitor._num_ranges_v3(self.num_ranges_v3) - if self._type == 'parameterizedNumRangesV1' and self.parameterized_num_ranges_v1 is not None: - return visitor._parameterized_num_ranges_v1(self.parameterized_num_ranges_v1) + if not isinstance(visitor, scout_comparisonnotebook_api_AggregationTypeVisitor): + raise ValueError('{} is not an instance of scout_comparisonnotebook_api_AggregationTypeVisitor'.format(visitor.__class__.__name__)) + if self._type == 'max' and self.max is not None: + return visitor._max(self.max) + if self._type == 'min' and self.min is not None: + return visitor._min(self.min) + if self._type == 'mean' and self.mean is not None: + return visitor._mean(self.mean) + if self._type == 'standardDeviation' and self.standard_deviation is not None: + return visitor._standard_deviation(self.standard_deviation) -scout_checks_api_UnresolvedCheckCondition.__name__ = "UnresolvedCheckCondition" -scout_checks_api_UnresolvedCheckCondition.__qualname__ = "UnresolvedCheckCondition" -scout_checks_api_UnresolvedCheckCondition.__module__ = "scout_service_api.scout_checks_api" +scout_comparisonnotebook_api_AggregationType.__name__ = "AggregationType" +scout_comparisonnotebook_api_AggregationType.__qualname__ = "AggregationType" +scout_comparisonnotebook_api_AggregationType.__module__ = "scout_service_api.scout_comparisonnotebook_api" -class scout_checks_api_UnresolvedCheckConditionVisitor: +class scout_comparisonnotebook_api_AggregationTypeVisitor: @abstractmethod - def _num_ranges_v2(self, num_ranges_v2: "scout_checks_api_UnresolvedNumRangesConditionV2") -> Any: + def _max(self, max: "scout_comparisonnotebook_api_Max") -> Any: pass @abstractmethod - def _num_ranges_v3(self, num_ranges_v3: "scout_checks_api_UnresolvedNumRangesConditionV3") -> Any: + def _min(self, min: "scout_comparisonnotebook_api_Min") -> Any: pass @abstractmethod - def _parameterized_num_ranges_v1(self, parameterized_num_ranges_v1: "scout_checks_api_UnresolvedParameterizedNumRangesConditionV1") -> Any: + def _mean(self, mean: "scout_comparisonnotebook_api_Mean") -> Any: pass + @abstractmethod + def _standard_deviation(self, standard_deviation: "scout_comparisonnotebook_api_StandardDeviation") -> Any: + pass -scout_checks_api_UnresolvedCheckConditionVisitor.__name__ = "UnresolvedCheckConditionVisitor" -scout_checks_api_UnresolvedCheckConditionVisitor.__qualname__ = "UnresolvedCheckConditionVisitor" -scout_checks_api_UnresolvedCheckConditionVisitor.__module__ = "scout_service_api.scout_checks_api" +scout_comparisonnotebook_api_AggregationTypeVisitor.__name__ = "AggregationTypeVisitor" +scout_comparisonnotebook_api_AggregationTypeVisitor.__qualname__ = "AggregationTypeVisitor" +scout_comparisonnotebook_api_AggregationTypeVisitor.__module__ = "scout_service_api.scout_comparisonnotebook_api" -class scout_checks_api_UnresolvedChecklistVariable(ConjureBeanType): + +class scout_comparisonnotebook_api_ChannelVariable(ConjureBeanType): @builtins.classmethod def _fields(cls) -> Dict[str, ConjureFieldDefinition]: return { - 'name': ConjureFieldDefinition('name', scout_compute_api_VariableName), 'display_name': ConjureFieldDefinition('displayName', OptionalTypeWrapper[str]), - 'value': ConjureFieldDefinition('value', scout_checks_api_UnresolvedVariableLocator) + 'variable_name': ConjureFieldDefinition('variableName', scout_comparisonnotebook_api_VariableName), + 'value': ConjureFieldDefinition('value', scout_comparisonnotebook_api_ComputeNodeWithContext), + 'data_scope': ConjureFieldDefinition('dataScope', scout_comparisonnotebook_api_ComparisonWorkbookVariableDataScope) } - __slots__: List[str] = ['_name', '_display_name', '_value'] + __slots__: List[str] = ['_display_name', '_variable_name', '_value', '_data_scope'] - def __init__(self, name: str, value: "scout_checks_api_UnresolvedVariableLocator", display_name: Optional[str] = None) -> None: - self._name = name + def __init__(self, data_scope: "scout_comparisonnotebook_api_ComparisonWorkbookVariableDataScope", value: "scout_comparisonnotebook_api_ComputeNodeWithContext", variable_name: str, display_name: Optional[str] = None) -> None: self._display_name = display_name + self._variable_name = variable_name self._value = value - - @builtins.property - def name(self) -> str: - return self._name + self._data_scope = data_scope @builtins.property def display_name(self) -> Optional[str]: return self._display_name @builtins.property - def value(self) -> "scout_checks_api_UnresolvedVariableLocator": - return self._value - - -scout_checks_api_UnresolvedChecklistVariable.__name__ = "UnresolvedChecklistVariable" -scout_checks_api_UnresolvedChecklistVariable.__qualname__ = "UnresolvedChecklistVariable" -scout_checks_api_UnresolvedChecklistVariable.__module__ = "scout_service_api.scout_checks_api" - - -class scout_checks_api_UnresolvedComputeNodeWithContext(ConjureBeanType): - - @builtins.classmethod - def _fields(cls) -> Dict[str, ConjureFieldDefinition]: - return { - 'series_node': ConjureFieldDefinition('seriesNode', scout_compute_api_ComputeNode), - 'context': ConjureFieldDefinition('context', scout_checks_api_UnresolvedVariables) - } - - __slots__: List[str] = ['_series_node', '_context'] - - def __init__(self, context: "scout_checks_api_UnresolvedVariables", series_node: "scout_compute_api_ComputeNode") -> None: - self._series_node = series_node - self._context = context + def variable_name(self) -> str: + return self._variable_name @builtins.property - def series_node(self) -> "scout_compute_api_ComputeNode": - return self._series_node + def value(self) -> "scout_comparisonnotebook_api_ComputeNodeWithContext": + return self._value @builtins.property - def context(self) -> "scout_checks_api_UnresolvedVariables": - return self._context + def data_scope(self) -> "scout_comparisonnotebook_api_ComparisonWorkbookVariableDataScope": + return self._data_scope -scout_checks_api_UnresolvedComputeNodeWithContext.__name__ = "UnresolvedComputeNodeWithContext" -scout_checks_api_UnresolvedComputeNodeWithContext.__qualname__ = "UnresolvedComputeNodeWithContext" -scout_checks_api_UnresolvedComputeNodeWithContext.__module__ = "scout_service_api.scout_checks_api" +scout_comparisonnotebook_api_ChannelVariable.__name__ = "ChannelVariable" +scout_comparisonnotebook_api_ChannelVariable.__qualname__ = "ChannelVariable" +scout_comparisonnotebook_api_ChannelVariable.__module__ = "scout_service_api.scout_comparisonnotebook_api" -class scout_checks_api_UnresolvedNumRangesConditionV2(ConjureBeanType): +class scout_comparisonnotebook_api_ChartDefinition(ConjureUnionType): + _table: Optional["scout_comparisonnotebook_api_ComparisonTableDefinition"] = None @builtins.classmethod - def _fields(cls) -> Dict[str, ConjureFieldDefinition]: + def _options(cls) -> Dict[str, ConjureFieldDefinition]: return { - 'ranges': ConjureFieldDefinition('ranges', scout_compute_api_deprecated_RangesNode), - 'function_spec': ConjureFieldDefinition('functionSpec', object), - 'threshold': ConjureFieldDefinition('threshold', int), - 'operator': ConjureFieldDefinition('operator', scout_compute_api_ThresholdOperator), - 'variables': ConjureFieldDefinition('variables', Dict[scout_compute_api_VariableName, scout_checks_api_UnresolvedVariableLocator]) + 'table': ConjureFieldDefinition('table', scout_comparisonnotebook_api_ComparisonTableDefinition) } - __slots__: List[str] = ['_ranges', '_function_spec', '_threshold', '_operator', '_variables'] + def __init__( + self, + table: Optional["scout_comparisonnotebook_api_ComparisonTableDefinition"] = None, + type_of_union: Optional[str] = None + ) -> None: + if type_of_union is None: + if (table is not None) != 1: + raise ValueError('a union must contain a single member') - def __init__(self, function_spec: Any, operator: "scout_compute_api_ThresholdOperator", ranges: "scout_compute_api_deprecated_RangesNode", threshold: int, variables: Dict[str, "scout_checks_api_UnresolvedVariableLocator"]) -> None: - self._ranges = ranges - self._function_spec = function_spec - self._threshold = threshold - self._operator = operator - self._variables = variables + if table is not None: + self._table = table + self._type = 'table' - @builtins.property - def ranges(self) -> "scout_compute_api_deprecated_RangesNode": - return self._ranges + elif type_of_union == 'table': + if table is None: + raise ValueError('a union value must not be None') + self._table = table + self._type = 'table' @builtins.property - def function_spec(self) -> Any: - return self._function_spec + def table(self) -> Optional["scout_comparisonnotebook_api_ComparisonTableDefinition"]: + return self._table - @builtins.property - def threshold(self) -> int: - return self._threshold + def accept(self, visitor) -> Any: + if not isinstance(visitor, scout_comparisonnotebook_api_ChartDefinitionVisitor): + raise ValueError('{} is not an instance of scout_comparisonnotebook_api_ChartDefinitionVisitor'.format(visitor.__class__.__name__)) + if self._type == 'table' and self.table is not None: + return visitor._table(self.table) - @builtins.property - def operator(self) -> "scout_compute_api_ThresholdOperator": - return self._operator - @builtins.property - def variables(self) -> Dict[str, "scout_checks_api_UnresolvedVariableLocator"]: - return self._variables +scout_comparisonnotebook_api_ChartDefinition.__name__ = "ChartDefinition" +scout_comparisonnotebook_api_ChartDefinition.__qualname__ = "ChartDefinition" +scout_comparisonnotebook_api_ChartDefinition.__module__ = "scout_service_api.scout_comparisonnotebook_api" -scout_checks_api_UnresolvedNumRangesConditionV2.__name__ = "UnresolvedNumRangesConditionV2" -scout_checks_api_UnresolvedNumRangesConditionV2.__qualname__ = "UnresolvedNumRangesConditionV2" -scout_checks_api_UnresolvedNumRangesConditionV2.__module__ = "scout_service_api.scout_checks_api" +class scout_comparisonnotebook_api_ChartDefinitionVisitor: + + @abstractmethod + def _table(self, table: "scout_comparisonnotebook_api_ComparisonTableDefinition") -> Any: + pass -class scout_checks_api_UnresolvedNumRangesConditionV3(ConjureBeanType): +scout_comparisonnotebook_api_ChartDefinitionVisitor.__name__ = "ChartDefinitionVisitor" +scout_comparisonnotebook_api_ChartDefinitionVisitor.__qualname__ = "ChartDefinitionVisitor" +scout_comparisonnotebook_api_ChartDefinitionVisitor.__module__ = "scout_service_api.scout_comparisonnotebook_api" + + +class scout_comparisonnotebook_api_ComparisonTableColumn(ConjureBeanType): @builtins.classmethod def _fields(cls) -> Dict[str, ConjureFieldDefinition]: return { - 'ranges': ConjureFieldDefinition('ranges', scout_compute_api_RangesNode), - 'function_spec': ConjureFieldDefinition('functionSpec', object), - 'threshold': ConjureFieldDefinition('threshold', int), - 'operator': ConjureFieldDefinition('operator', scout_compute_api_ThresholdOperator), - 'variables': ConjureFieldDefinition('variables', Dict[scout_compute_api_VariableName, scout_checks_api_UnresolvedVariableLocator]), - 'function_variables': ConjureFieldDefinition('functionVariables', Dict[scout_compute_api_FunctionReference, scout_checks_api_UnresolvedVariables]) + 'title': ConjureFieldDefinition('title', OptionalTypeWrapper[str]), + 'channel': ConjureFieldDefinition('channel', scout_comparisonnotebook_api_VariableName), + 'visualization_options': ConjureFieldDefinition('visualizationOptions', scout_comparisonnotebook_api_ComparisonTableColumnVisualizationOptions) } - __slots__: List[str] = ['_ranges', '_function_spec', '_threshold', '_operator', '_variables', '_function_variables'] + __slots__: List[str] = ['_title', '_channel', '_visualization_options'] - def __init__(self, function_spec: Any, function_variables: Dict[str, "scout_checks_api_UnresolvedVariables"], operator: "scout_compute_api_ThresholdOperator", ranges: "scout_compute_api_RangesNode", threshold: int, variables: Dict[str, "scout_checks_api_UnresolvedVariableLocator"]) -> None: - self._ranges = ranges - self._function_spec = function_spec - self._threshold = threshold - self._operator = operator - self._variables = variables - self._function_variables = function_variables + def __init__(self, channel: str, visualization_options: "scout_comparisonnotebook_api_ComparisonTableColumnVisualizationOptions", title: Optional[str] = None) -> None: + self._title = title + self._channel = channel + self._visualization_options = visualization_options @builtins.property - def ranges(self) -> "scout_compute_api_RangesNode": - return self._ranges + def title(self) -> Optional[str]: + return self._title @builtins.property - def function_spec(self) -> Any: - return self._function_spec + def channel(self) -> str: + return self._channel @builtins.property - def threshold(self) -> int: - return self._threshold + def visualization_options(self) -> "scout_comparisonnotebook_api_ComparisonTableColumnVisualizationOptions": + return self._visualization_options - @builtins.property - def operator(self) -> "scout_compute_api_ThresholdOperator": - return self._operator - @builtins.property - def variables(self) -> Dict[str, "scout_checks_api_UnresolvedVariableLocator"]: - """ - Default overrides for the variables used in the check condition. These variables can be overridden -at checklist execution time. - """ - return self._variables +scout_comparisonnotebook_api_ComparisonTableColumn.__name__ = "ComparisonTableColumn" +scout_comparisonnotebook_api_ComparisonTableColumn.__qualname__ = "ComparisonTableColumn" +scout_comparisonnotebook_api_ComparisonTableColumn.__module__ = "scout_service_api.scout_comparisonnotebook_api" - @builtins.property - def function_variables(self) -> Dict[str, "scout_checks_api_UnresolvedVariables"]: - """ - The variables to be passed into functions referenced by the check condition. The function reference key -should match the FunctionReference in the function node definition. These variables can be overridden -at checklist execution time. - """ - return self._function_variables +class scout_comparisonnotebook_api_ComparisonTableColumnOptions(ConjureEnumType): -scout_checks_api_UnresolvedNumRangesConditionV3.__name__ = "UnresolvedNumRangesConditionV3" -scout_checks_api_UnresolvedNumRangesConditionV3.__qualname__ = "UnresolvedNumRangesConditionV3" -scout_checks_api_UnresolvedNumRangesConditionV3.__module__ = "scout_service_api.scout_checks_api" + AXIS = 'AXIS' + '''AXIS''' + BARS = 'BARS' + '''BARS''' + UNKNOWN = 'UNKNOWN' + '''UNKNOWN''' + def __reduce_ex__(self, proto): + return self.__class__, (self.name,) -class scout_checks_api_UnresolvedParameterizedNumRangesConditionV1(ConjureBeanType): + +scout_comparisonnotebook_api_ComparisonTableColumnOptions.__name__ = "ComparisonTableColumnOptions" +scout_comparisonnotebook_api_ComparisonTableColumnOptions.__qualname__ = "ComparisonTableColumnOptions" +scout_comparisonnotebook_api_ComparisonTableColumnOptions.__module__ = "scout_service_api.scout_comparisonnotebook_api" + + +class scout_comparisonnotebook_api_ComparisonTableColumnVisualizationOptions(ConjureBeanType): @builtins.classmethod def _fields(cls) -> Dict[str, ConjureFieldDefinition]: return { - 'ranges': ConjureFieldDefinition('ranges', scout_compute_api_RangesNode), - 'implementations': ConjureFieldDefinition('implementations', List[scout_checks_api_UnresolvedVariables]) + 'format': ConjureFieldDefinition('format', scout_comparisonnotebook_api_ComparisonTableColumnOptions) } - __slots__: List[str] = ['_ranges', '_implementations'] - - def __init__(self, implementations: List["scout_checks_api_UnresolvedVariables"], ranges: "scout_compute_api_RangesNode") -> None: - self._ranges = ranges - self._implementations = implementations + __slots__: List[str] = ['_format'] - @builtins.property - def ranges(self) -> "scout_compute_api_RangesNode": - return self._ranges + def __init__(self, format: "scout_comparisonnotebook_api_ComparisonTableColumnOptions") -> None: + self._format = format @builtins.property - def implementations(self) -> List["scout_checks_api_UnresolvedVariables"]: - """ - Each permutation of check context in the list will be executed as a new a stand-alone check. Violations -produced will be associated with the context of the index. - """ - return self._implementations + def format(self) -> "scout_comparisonnotebook_api_ComparisonTableColumnOptions": + return self._format -scout_checks_api_UnresolvedParameterizedNumRangesConditionV1.__name__ = "UnresolvedParameterizedNumRangesConditionV1" -scout_checks_api_UnresolvedParameterizedNumRangesConditionV1.__qualname__ = "UnresolvedParameterizedNumRangesConditionV1" -scout_checks_api_UnresolvedParameterizedNumRangesConditionV1.__module__ = "scout_service_api.scout_checks_api" +scout_comparisonnotebook_api_ComparisonTableColumnVisualizationOptions.__name__ = "ComparisonTableColumnVisualizationOptions" +scout_comparisonnotebook_api_ComparisonTableColumnVisualizationOptions.__qualname__ = "ComparisonTableColumnVisualizationOptions" +scout_comparisonnotebook_api_ComparisonTableColumnVisualizationOptions.__module__ = "scout_service_api.scout_comparisonnotebook_api" -class scout_checks_api_UnresolvedVariableLocator(ConjureUnionType): - _checklist_function: Optional[str] = None - _checklist_variable: Optional[str] = None - _compute_node: Optional["scout_checks_api_UnresolvedComputeNodeWithContext"] = None - _series: Optional["scout_checks_api_ChannelLocator"] = None - _timestamp: Optional["scout_checks_api_TimestampLocator"] = None +class scout_comparisonnotebook_api_ComparisonTableDefinition(ConjureUnionType): + _v1: Optional["scout_comparisonnotebook_api_ComparisonTableDefinitionV1"] = None @builtins.classmethod def _options(cls) -> Dict[str, ConjureFieldDefinition]: return { - 'checklist_function': ConjureFieldDefinition('checklistFunction', scout_compute_api_FunctionReference), - 'checklist_variable': ConjureFieldDefinition('checklistVariable', scout_compute_api_VariableName), - 'compute_node': ConjureFieldDefinition('computeNode', scout_checks_api_UnresolvedComputeNodeWithContext), - 'series': ConjureFieldDefinition('series', scout_checks_api_ChannelLocator), - 'timestamp': ConjureFieldDefinition('timestamp', scout_checks_api_TimestampLocator) + 'v1': ConjureFieldDefinition('v1', scout_comparisonnotebook_api_ComparisonTableDefinitionV1) } def __init__( self, - checklist_function: Optional[str] = None, - checklist_variable: Optional[str] = None, - compute_node: Optional["scout_checks_api_UnresolvedComputeNodeWithContext"] = None, - series: Optional["scout_checks_api_ChannelLocator"] = None, - timestamp: Optional["scout_checks_api_TimestampLocator"] = None, + v1: Optional["scout_comparisonnotebook_api_ComparisonTableDefinitionV1"] = None, type_of_union: Optional[str] = None ) -> None: if type_of_union is None: - if (checklist_function is not None) + (checklist_variable is not None) + (compute_node is not None) + (series is not None) + (timestamp is not None) != 1: + if (v1 is not None) != 1: raise ValueError('a union must contain a single member') - if checklist_function is not None: - self._checklist_function = checklist_function - self._type = 'checklistFunction' - if checklist_variable is not None: - self._checklist_variable = checklist_variable - self._type = 'checklistVariable' - if compute_node is not None: - self._compute_node = compute_node - self._type = 'computeNode' - if series is not None: - self._series = series - self._type = 'series' - if timestamp is not None: - self._timestamp = timestamp - self._type = 'timestamp' + if v1 is not None: + self._v1 = v1 + self._type = 'v1' - elif type_of_union == 'checklistFunction': - if checklist_function is None: - raise ValueError('a union value must not be None') - self._checklist_function = checklist_function - self._type = 'checklistFunction' - elif type_of_union == 'checklistVariable': - if checklist_variable is None: - raise ValueError('a union value must not be None') - self._checklist_variable = checklist_variable - self._type = 'checklistVariable' - elif type_of_union == 'computeNode': - if compute_node is None: - raise ValueError('a union value must not be None') - self._compute_node = compute_node - self._type = 'computeNode' - elif type_of_union == 'series': - if series is None: - raise ValueError('a union value must not be None') - self._series = series - self._type = 'series' - elif type_of_union == 'timestamp': - if timestamp is None: + elif type_of_union == 'v1': + if v1 is None: raise ValueError('a union value must not be None') - self._timestamp = timestamp - self._type = 'timestamp' + self._v1 = v1 + self._type = 'v1' @builtins.property - def checklist_function(self) -> Optional[str]: - return self._checklist_function + def v1(self) -> Optional["scout_comparisonnotebook_api_ComparisonTableDefinitionV1"]: + return self._v1 + + def accept(self, visitor) -> Any: + if not isinstance(visitor, scout_comparisonnotebook_api_ComparisonTableDefinitionVisitor): + raise ValueError('{} is not an instance of scout_comparisonnotebook_api_ComparisonTableDefinitionVisitor'.format(visitor.__class__.__name__)) + if self._type == 'v1' and self.v1 is not None: + return visitor._v1(self.v1) + + +scout_comparisonnotebook_api_ComparisonTableDefinition.__name__ = "ComparisonTableDefinition" +scout_comparisonnotebook_api_ComparisonTableDefinition.__qualname__ = "ComparisonTableDefinition" +scout_comparisonnotebook_api_ComparisonTableDefinition.__module__ = "scout_service_api.scout_comparisonnotebook_api" + + +class scout_comparisonnotebook_api_ComparisonTableDefinitionVisitor: + + @abstractmethod + def _v1(self, v1: "scout_comparisonnotebook_api_ComparisonTableDefinitionV1") -> Any: + pass + + +scout_comparisonnotebook_api_ComparisonTableDefinitionVisitor.__name__ = "ComparisonTableDefinitionVisitor" +scout_comparisonnotebook_api_ComparisonTableDefinitionVisitor.__qualname__ = "ComparisonTableDefinitionVisitor" +scout_comparisonnotebook_api_ComparisonTableDefinitionVisitor.__module__ = "scout_service_api.scout_comparisonnotebook_api" + + +class scout_comparisonnotebook_api_ComparisonTableDefinitionV1(ConjureBeanType): + + @builtins.classmethod + def _fields(cls) -> Dict[str, ConjureFieldDefinition]: + return { + 'title': ConjureFieldDefinition('title', OptionalTypeWrapper[str]), + 'range_aggregations': ConjureFieldDefinition('rangeAggregations', List[scout_comparisonnotebook_api_VariableName]), + 'visualization_options': ConjureFieldDefinition('visualizationOptions', scout_comparisonnotebook_api_ComparisonTableVisualizationOptions), + 'columns': ConjureFieldDefinition('columns', List[scout_comparisonnotebook_api_ComparisonTableColumn]) + } + + __slots__: List[str] = ['_title', '_range_aggregations', '_visualization_options', '_columns'] + + def __init__(self, columns: List["scout_comparisonnotebook_api_ComparisonTableColumn"], range_aggregations: List[str], visualization_options: "scout_comparisonnotebook_api_ComparisonTableVisualizationOptions", title: Optional[str] = None) -> None: + self._title = title + self._range_aggregations = range_aggregations + self._visualization_options = visualization_options + self._columns = columns @builtins.property - def checklist_variable(self) -> Optional[str]: - """ - A pointer to a variable in the checklist. - """ - return self._checklist_variable + def title(self) -> Optional[str]: + return self._title + + @builtins.property + def range_aggregations(self) -> List[str]: + return self._range_aggregations + + @builtins.property + def visualization_options(self) -> "scout_comparisonnotebook_api_ComparisonTableVisualizationOptions": + return self._visualization_options + + @builtins.property + def columns(self) -> List["scout_comparisonnotebook_api_ComparisonTableColumn"]: + return self._columns + + +scout_comparisonnotebook_api_ComparisonTableDefinitionV1.__name__ = "ComparisonTableDefinitionV1" +scout_comparisonnotebook_api_ComparisonTableDefinitionV1.__qualname__ = "ComparisonTableDefinitionV1" +scout_comparisonnotebook_api_ComparisonTableDefinitionV1.__module__ = "scout_service_api.scout_comparisonnotebook_api" + + +class scout_comparisonnotebook_api_ComparisonTableVisualizationOptions(ConjureBeanType): + + @builtins.classmethod + def _fields(cls) -> Dict[str, ConjureFieldDefinition]: + return { + 'aggregation_colors': ConjureFieldDefinition('aggregationColors', Dict[scout_comparisonnotebook_api_VariableName, scout_api_HexColor]) + } - @builtins.property - def compute_node(self) -> Optional["scout_checks_api_UnresolvedComputeNodeWithContext"]: - return self._compute_node + __slots__: List[str] = ['_aggregation_colors'] - @builtins.property - def series(self) -> Optional["scout_checks_api_ChannelLocator"]: - return self._series + def __init__(self, aggregation_colors: Dict[str, str]) -> None: + self._aggregation_colors = aggregation_colors @builtins.property - def timestamp(self) -> Optional["scout_checks_api_TimestampLocator"]: - return self._timestamp - - def accept(self, visitor) -> Any: - if not isinstance(visitor, scout_checks_api_UnresolvedVariableLocatorVisitor): - raise ValueError('{} is not an instance of scout_checks_api_UnresolvedVariableLocatorVisitor'.format(visitor.__class__.__name__)) - if self._type == 'checklistFunction' and self.checklist_function is not None: - return visitor._checklist_function(self.checklist_function) - if self._type == 'checklistVariable' and self.checklist_variable is not None: - return visitor._checklist_variable(self.checklist_variable) - if self._type == 'computeNode' and self.compute_node is not None: - return visitor._compute_node(self.compute_node) - if self._type == 'series' and self.series is not None: - return visitor._series(self.series) - if self._type == 'timestamp' and self.timestamp is not None: - return visitor._timestamp(self.timestamp) + def aggregation_colors(self) -> Dict[str, str]: + return self._aggregation_colors -scout_checks_api_UnresolvedVariableLocator.__name__ = "UnresolvedVariableLocator" -scout_checks_api_UnresolvedVariableLocator.__qualname__ = "UnresolvedVariableLocator" -scout_checks_api_UnresolvedVariableLocator.__module__ = "scout_service_api.scout_checks_api" +scout_comparisonnotebook_api_ComparisonTableVisualizationOptions.__name__ = "ComparisonTableVisualizationOptions" +scout_comparisonnotebook_api_ComparisonTableVisualizationOptions.__qualname__ = "ComparisonTableVisualizationOptions" +scout_comparisonnotebook_api_ComparisonTableVisualizationOptions.__module__ = "scout_service_api.scout_comparisonnotebook_api" -class scout_checks_api_UnresolvedVariableLocatorVisitor: +class scout_comparisonnotebook_api_ComparisonWorkbookContent(ConjureBeanType): - @abstractmethod - def _checklist_function(self, checklist_function: str) -> Any: - pass + @builtins.classmethod + def _fields(cls) -> Dict[str, ConjureFieldDefinition]: + return { + 'channel_variables': ConjureFieldDefinition('channelVariables', scout_comparisonnotebook_api_ComparisonChannelVariableMap), + 'charts': ConjureFieldDefinition('charts', scout_comparisonnotebook_api_ComparisonChartDefinitionMap) + } - @abstractmethod - def _checklist_variable(self, checklist_variable: str) -> Any: - pass + __slots__: List[str] = ['_channel_variables', '_charts'] - @abstractmethod - def _compute_node(self, compute_node: "scout_checks_api_UnresolvedComputeNodeWithContext") -> Any: - pass + def __init__(self, channel_variables: Dict[str, "scout_comparisonnotebook_api_ChannelVariable"], charts: Dict[str, "scout_comparisonnotebook_api_ChartDefinition"]) -> None: + self._channel_variables = channel_variables + self._charts = charts - @abstractmethod - def _series(self, series: "scout_checks_api_ChannelLocator") -> Any: - pass + @builtins.property + def channel_variables(self) -> Dict[str, "scout_comparisonnotebook_api_ChannelVariable"]: + return self._channel_variables - @abstractmethod - def _timestamp(self, timestamp: "scout_checks_api_TimestampLocator") -> Any: - pass + @builtins.property + def charts(self) -> Dict[str, "scout_comparisonnotebook_api_ChartDefinition"]: + return self._charts -scout_checks_api_UnresolvedVariableLocatorVisitor.__name__ = "UnresolvedVariableLocatorVisitor" -scout_checks_api_UnresolvedVariableLocatorVisitor.__qualname__ = "UnresolvedVariableLocatorVisitor" -scout_checks_api_UnresolvedVariableLocatorVisitor.__module__ = "scout_service_api.scout_checks_api" +scout_comparisonnotebook_api_ComparisonWorkbookContent.__name__ = "ComparisonWorkbookContent" +scout_comparisonnotebook_api_ComparisonWorkbookContent.__qualname__ = "ComparisonWorkbookContent" +scout_comparisonnotebook_api_ComparisonWorkbookContent.__module__ = "scout_service_api.scout_comparisonnotebook_api" -class scout_checks_api_UnresolvedVariables(ConjureBeanType): +class scout_comparisonnotebook_api_ComparisonWorkbookContext(ConjureBeanType): @builtins.classmethod def _fields(cls) -> Dict[str, ConjureFieldDefinition]: return { - 'variables': ConjureFieldDefinition('variables', Dict[scout_compute_api_VariableName, scout_checks_api_UnresolvedVariableLocator]), - 'sub_function_variables': ConjureFieldDefinition('subFunctionVariables', Dict[scout_compute_api_FunctionReference, scout_checks_api_UnresolvedVariables]) + 'variables': ConjureFieldDefinition('variables', Dict[scout_comparisonnotebook_api_VariableName, scout_comparisonnotebook_api_VariableLocator]) } - __slots__: List[str] = ['_variables', '_sub_function_variables'] + __slots__: List[str] = ['_variables'] - def __init__(self, sub_function_variables: Dict[str, "scout_checks_api_UnresolvedVariables"], variables: Dict[str, "scout_checks_api_UnresolvedVariableLocator"]) -> None: + def __init__(self, variables: Dict[str, "scout_comparisonnotebook_api_VariableLocator"]) -> None: self._variables = variables - self._sub_function_variables = sub_function_variables @builtins.property - def variables(self) -> Dict[str, "scout_checks_api_UnresolvedVariableLocator"]: + def variables(self) -> Dict[str, "scout_comparisonnotebook_api_VariableLocator"]: return self._variables - @builtins.property - def sub_function_variables(self) -> Dict[str, "scout_checks_api_UnresolvedVariables"]: - return self._sub_function_variables - -scout_checks_api_UnresolvedVariables.__name__ = "UnresolvedVariables" -scout_checks_api_UnresolvedVariables.__qualname__ = "UnresolvedVariables" -scout_checks_api_UnresolvedVariables.__module__ = "scout_service_api.scout_checks_api" +scout_comparisonnotebook_api_ComparisonWorkbookContext.__name__ = "ComparisonWorkbookContext" +scout_comparisonnotebook_api_ComparisonWorkbookContext.__qualname__ = "ComparisonWorkbookContext" +scout_comparisonnotebook_api_ComparisonWorkbookContext.__module__ = "scout_service_api.scout_comparisonnotebook_api" -class scout_checks_api_UpdateChecklistEntryRequest(ConjureUnionType): - _create_check: Optional["scout_checks_api_CreateCheckRequest"] = None - _check: Optional[str] = None +class scout_comparisonnotebook_api_ComparisonWorkbookVariableDataScope(ConjureUnionType): + _runs: Optional[List[str]] = None @builtins.classmethod def _options(cls) -> Dict[str, ConjureFieldDefinition]: return { - 'create_check': ConjureFieldDefinition('createCheck', scout_checks_api_CreateCheckRequest), - 'check': ConjureFieldDefinition('check', scout_rids_api_CheckRid) + 'runs': ConjureFieldDefinition('runs', List[scout_run_api_RunRid]) } def __init__( self, - create_check: Optional["scout_checks_api_CreateCheckRequest"] = None, - check: Optional[str] = None, + runs: Optional[List[str]] = None, type_of_union: Optional[str] = None ) -> None: if type_of_union is None: - if (create_check is not None) + (check is not None) != 1: + if (runs is not None) != 1: raise ValueError('a union must contain a single member') - if create_check is not None: - self._create_check = create_check - self._type = 'createCheck' - if check is not None: - self._check = check - self._type = 'check' + if runs is not None: + self._runs = runs + self._type = 'runs' - elif type_of_union == 'createCheck': - if create_check is None: - raise ValueError('a union value must not be None') - self._create_check = create_check - self._type = 'createCheck' - elif type_of_union == 'check': - if check is None: + elif type_of_union == 'runs': + if runs is None: raise ValueError('a union value must not be None') - self._check = check - self._type = 'check' - - @builtins.property - def create_check(self) -> Optional["scout_checks_api_CreateCheckRequest"]: - return self._create_check + self._runs = runs + self._type = 'runs' @builtins.property - def check(self) -> Optional[str]: - return self._check + def runs(self) -> Optional[List[str]]: + return self._runs def accept(self, visitor) -> Any: - if not isinstance(visitor, scout_checks_api_UpdateChecklistEntryRequestVisitor): - raise ValueError('{} is not an instance of scout_checks_api_UpdateChecklistEntryRequestVisitor'.format(visitor.__class__.__name__)) - if self._type == 'createCheck' and self.create_check is not None: - return visitor._create_check(self.create_check) - if self._type == 'check' and self.check is not None: - return visitor._check(self.check) - + if not isinstance(visitor, scout_comparisonnotebook_api_ComparisonWorkbookVariableDataScopeVisitor): + raise ValueError('{} is not an instance of scout_comparisonnotebook_api_ComparisonWorkbookVariableDataScopeVisitor'.format(visitor.__class__.__name__)) + if self._type == 'runs' and self.runs is not None: + return visitor._runs(self.runs) -scout_checks_api_UpdateChecklistEntryRequest.__name__ = "UpdateChecklistEntryRequest" -scout_checks_api_UpdateChecklistEntryRequest.__qualname__ = "UpdateChecklistEntryRequest" -scout_checks_api_UpdateChecklistEntryRequest.__module__ = "scout_service_api.scout_checks_api" +scout_comparisonnotebook_api_ComparisonWorkbookVariableDataScope.__name__ = "ComparisonWorkbookVariableDataScope" +scout_comparisonnotebook_api_ComparisonWorkbookVariableDataScope.__qualname__ = "ComparisonWorkbookVariableDataScope" +scout_comparisonnotebook_api_ComparisonWorkbookVariableDataScope.__module__ = "scout_service_api.scout_comparisonnotebook_api" -class scout_checks_api_UpdateChecklistEntryRequestVisitor: - @abstractmethod - def _create_check(self, create_check: "scout_checks_api_CreateCheckRequest") -> Any: - pass +class scout_comparisonnotebook_api_ComparisonWorkbookVariableDataScopeVisitor: @abstractmethod - def _check(self, check: str) -> Any: + def _runs(self, runs: List[str]) -> Any: pass -scout_checks_api_UpdateChecklistEntryRequestVisitor.__name__ = "UpdateChecklistEntryRequestVisitor" -scout_checks_api_UpdateChecklistEntryRequestVisitor.__qualname__ = "UpdateChecklistEntryRequestVisitor" -scout_checks_api_UpdateChecklistEntryRequestVisitor.__module__ = "scout_service_api.scout_checks_api" +scout_comparisonnotebook_api_ComparisonWorkbookVariableDataScopeVisitor.__name__ = "ComparisonWorkbookVariableDataScopeVisitor" +scout_comparisonnotebook_api_ComparisonWorkbookVariableDataScopeVisitor.__qualname__ = "ComparisonWorkbookVariableDataScopeVisitor" +scout_comparisonnotebook_api_ComparisonWorkbookVariableDataScopeVisitor.__module__ = "scout_service_api.scout_comparisonnotebook_api" -class scout_checks_api_UpdateChecklistMetadataRequest(ConjureBeanType): +class scout_comparisonnotebook_api_ComputeNodeWithContext(ConjureBeanType): @builtins.classmethod def _fields(cls) -> Dict[str, ConjureFieldDefinition]: return { - 'assignee_rid': ConjureFieldDefinition('assigneeRid', OptionalTypeWrapper[scout_rids_api_UserRid]), - 'title': ConjureFieldDefinition('title', OptionalTypeWrapper[str]), - 'description': ConjureFieldDefinition('description', OptionalTypeWrapper[str]), - 'properties': ConjureFieldDefinition('properties', OptionalTypeWrapper[Dict[scout_run_api_PropertyName, scout_run_api_PropertyValue]]), - 'labels': ConjureFieldDefinition('labels', OptionalTypeWrapper[List[scout_run_api_Label]]), - 'is_published': ConjureFieldDefinition('isPublished', OptionalTypeWrapper[bool]) + 'compute_node': ConjureFieldDefinition('computeNode', scout_compute_api_ComputeNode), + 'context': ConjureFieldDefinition('context', scout_comparisonnotebook_api_ComparisonWorkbookContext), + 'supplemental_context': ConjureFieldDefinition('supplementalContext', scout_comparisonnotebook_api_SupplementalComparisonWorkbookContext) } - __slots__: List[str] = ['_assignee_rid', '_title', '_description', '_properties', '_labels', '_is_published'] + __slots__: List[str] = ['_compute_node', '_context', '_supplemental_context'] - def __init__(self, assignee_rid: Optional[str] = None, description: Optional[str] = None, is_published: Optional[bool] = None, labels: Optional[List[str]] = None, properties: Optional[Dict[str, str]] = None, title: Optional[str] = None) -> None: - self._assignee_rid = assignee_rid - self._title = title - self._description = description - self._properties = properties - self._labels = labels - self._is_published = is_published + def __init__(self, compute_node: "scout_compute_api_ComputeNode", context: "scout_comparisonnotebook_api_ComparisonWorkbookContext", supplemental_context: "scout_comparisonnotebook_api_SupplementalComparisonWorkbookContext") -> None: + self._compute_node = compute_node + self._context = context + self._supplemental_context = supplemental_context @builtins.property - def assignee_rid(self) -> Optional[str]: - return self._assignee_rid + def compute_node(self) -> "scout_compute_api_ComputeNode": + return self._compute_node @builtins.property - def title(self) -> Optional[str]: - return self._title + def context(self) -> "scout_comparisonnotebook_api_ComparisonWorkbookContext": + return self._context @builtins.property - def description(self) -> Optional[str]: - return self._description + def supplemental_context(self) -> "scout_comparisonnotebook_api_SupplementalComparisonWorkbookContext": + return self._supplemental_context - @builtins.property - def properties(self) -> Optional[Dict[str, str]]: - return self._properties - @builtins.property - def labels(self) -> Optional[List[str]]: - return self._labels +scout_comparisonnotebook_api_ComputeNodeWithContext.__name__ = "ComputeNodeWithContext" +scout_comparisonnotebook_api_ComputeNodeWithContext.__qualname__ = "ComputeNodeWithContext" +scout_comparisonnotebook_api_ComputeNodeWithContext.__module__ = "scout_service_api.scout_comparisonnotebook_api" + + +class scout_comparisonnotebook_api_Max(ConjureBeanType): + + @builtins.classmethod + def _fields(cls) -> Dict[str, ConjureFieldDefinition]: + return { + } + + __slots__: List[str] = [] + + + +scout_comparisonnotebook_api_Max.__name__ = "Max" +scout_comparisonnotebook_api_Max.__qualname__ = "Max" +scout_comparisonnotebook_api_Max.__module__ = "scout_service_api.scout_comparisonnotebook_api" + + +class scout_comparisonnotebook_api_Mean(ConjureBeanType): + + @builtins.classmethod + def _fields(cls) -> Dict[str, ConjureFieldDefinition]: + return { + } + + __slots__: List[str] = [] + + + +scout_comparisonnotebook_api_Mean.__name__ = "Mean" +scout_comparisonnotebook_api_Mean.__qualname__ = "Mean" +scout_comparisonnotebook_api_Mean.__module__ = "scout_service_api.scout_comparisonnotebook_api" + + +class scout_comparisonnotebook_api_Min(ConjureBeanType): + + @builtins.classmethod + def _fields(cls) -> Dict[str, ConjureFieldDefinition]: + return { + } + + __slots__: List[str] = [] + + + +scout_comparisonnotebook_api_Min.__name__ = "Min" +scout_comparisonnotebook_api_Min.__qualname__ = "Min" +scout_comparisonnotebook_api_Min.__module__ = "scout_service_api.scout_comparisonnotebook_api" + + +class scout_comparisonnotebook_api_RangeAggregationContext(ConjureBeanType): + + @builtins.classmethod + def _fields(cls) -> Dict[str, ConjureFieldDefinition]: + return { + 'variables_to_aggregate': ConjureFieldDefinition('variablesToAggregate', List[scout_comparisonnotebook_api_VariableWithAggregation]) + } + + __slots__: List[str] = ['_variables_to_aggregate'] + + def __init__(self, variables_to_aggregate: List["scout_comparisonnotebook_api_VariableWithAggregation"]) -> None: + self._variables_to_aggregate = variables_to_aggregate @builtins.property - def is_published(self) -> Optional[bool]: - return self._is_published + def variables_to_aggregate(self) -> List["scout_comparisonnotebook_api_VariableWithAggregation"]: + return self._variables_to_aggregate -scout_checks_api_UpdateChecklistMetadataRequest.__name__ = "UpdateChecklistMetadataRequest" -scout_checks_api_UpdateChecklistMetadataRequest.__qualname__ = "UpdateChecklistMetadataRequest" -scout_checks_api_UpdateChecklistMetadataRequest.__module__ = "scout_service_api.scout_checks_api" +scout_comparisonnotebook_api_RangeAggregationContext.__name__ = "RangeAggregationContext" +scout_comparisonnotebook_api_RangeAggregationContext.__qualname__ = "RangeAggregationContext" +scout_comparisonnotebook_api_RangeAggregationContext.__module__ = "scout_service_api.scout_comparisonnotebook_api" -class scout_checks_api_UpdateFunctionEntryRequest(ConjureUnionType): - _create_function: Optional["scout_checks_api_CreateFunctionRequest"] = None - _function: Optional[str] = None +class scout_comparisonnotebook_api_StandardDeviation(ConjureBeanType): + + @builtins.classmethod + def _fields(cls) -> Dict[str, ConjureFieldDefinition]: + return { + } + + __slots__: List[str] = [] + + + +scout_comparisonnotebook_api_StandardDeviation.__name__ = "StandardDeviation" +scout_comparisonnotebook_api_StandardDeviation.__qualname__ = "StandardDeviation" +scout_comparisonnotebook_api_StandardDeviation.__module__ = "scout_service_api.scout_comparisonnotebook_api" + + +class scout_comparisonnotebook_api_SupplementalComparisonWorkbookContext(ConjureUnionType): + """This is used to allow variables to specify additional context that does not fit well into the general shape of +a compute node. For example, a range aggregation variable represents a bulk computation across several inputs, +whose context is specified here instead.""" + _none: Optional["scout_rids_api_Empty"] = None + _range_aggregation: Optional["scout_comparisonnotebook_api_RangeAggregationContext"] = None @builtins.classmethod def _options(cls) -> Dict[str, ConjureFieldDefinition]: return { - 'create_function': ConjureFieldDefinition('createFunction', scout_checks_api_CreateFunctionRequest), - 'function': ConjureFieldDefinition('function', scout_rids_api_FunctionRid) + 'none': ConjureFieldDefinition('none', scout_rids_api_Empty), + 'range_aggregation': ConjureFieldDefinition('rangeAggregation', scout_comparisonnotebook_api_RangeAggregationContext) } def __init__( self, - create_function: Optional["scout_checks_api_CreateFunctionRequest"] = None, - function: Optional[str] = None, + none: Optional["scout_rids_api_Empty"] = None, + range_aggregation: Optional["scout_comparisonnotebook_api_RangeAggregationContext"] = None, type_of_union: Optional[str] = None ) -> None: if type_of_union is None: - if (create_function is not None) + (function is not None) != 1: + if (none is not None) + (range_aggregation is not None) != 1: raise ValueError('a union must contain a single member') - if create_function is not None: - self._create_function = create_function - self._type = 'createFunction' - if function is not None: - self._function = function - self._type = 'function' + if none is not None: + self._none = none + self._type = 'none' + if range_aggregation is not None: + self._range_aggregation = range_aggregation + self._type = 'rangeAggregation' - elif type_of_union == 'createFunction': - if create_function is None: + elif type_of_union == 'none': + if none is None: raise ValueError('a union value must not be None') - self._create_function = create_function - self._type = 'createFunction' - elif type_of_union == 'function': - if function is None: + self._none = none + self._type = 'none' + elif type_of_union == 'rangeAggregation': + if range_aggregation is None: raise ValueError('a union value must not be None') - self._function = function - self._type = 'function' + self._range_aggregation = range_aggregation + self._type = 'rangeAggregation' @builtins.property - def create_function(self) -> Optional["scout_checks_api_CreateFunctionRequest"]: - return self._create_function + def none(self) -> Optional["scout_rids_api_Empty"]: + return self._none @builtins.property - def function(self) -> Optional[str]: - return self._function + def range_aggregation(self) -> Optional["scout_comparisonnotebook_api_RangeAggregationContext"]: + return self._range_aggregation def accept(self, visitor) -> Any: - if not isinstance(visitor, scout_checks_api_UpdateFunctionEntryRequestVisitor): - raise ValueError('{} is not an instance of scout_checks_api_UpdateFunctionEntryRequestVisitor'.format(visitor.__class__.__name__)) - if self._type == 'createFunction' and self.create_function is not None: - return visitor._create_function(self.create_function) - if self._type == 'function' and self.function is not None: - return visitor._function(self.function) + if not isinstance(visitor, scout_comparisonnotebook_api_SupplementalComparisonWorkbookContextVisitor): + raise ValueError('{} is not an instance of scout_comparisonnotebook_api_SupplementalComparisonWorkbookContextVisitor'.format(visitor.__class__.__name__)) + if self._type == 'none' and self.none is not None: + return visitor._none(self.none) + if self._type == 'rangeAggregation' and self.range_aggregation is not None: + return visitor._range_aggregation(self.range_aggregation) -scout_checks_api_UpdateFunctionEntryRequest.__name__ = "UpdateFunctionEntryRequest" -scout_checks_api_UpdateFunctionEntryRequest.__qualname__ = "UpdateFunctionEntryRequest" -scout_checks_api_UpdateFunctionEntryRequest.__module__ = "scout_service_api.scout_checks_api" +scout_comparisonnotebook_api_SupplementalComparisonWorkbookContext.__name__ = "SupplementalComparisonWorkbookContext" +scout_comparisonnotebook_api_SupplementalComparisonWorkbookContext.__qualname__ = "SupplementalComparisonWorkbookContext" +scout_comparisonnotebook_api_SupplementalComparisonWorkbookContext.__module__ = "scout_service_api.scout_comparisonnotebook_api" -class scout_checks_api_UpdateFunctionEntryRequestVisitor: +class scout_comparisonnotebook_api_SupplementalComparisonWorkbookContextVisitor: @abstractmethod - def _create_function(self, create_function: "scout_checks_api_CreateFunctionRequest") -> Any: + def _none(self, none: "scout_rids_api_Empty") -> Any: pass @abstractmethod - def _function(self, function: str) -> Any: + def _range_aggregation(self, range_aggregation: "scout_comparisonnotebook_api_RangeAggregationContext") -> Any: pass -scout_checks_api_UpdateFunctionEntryRequestVisitor.__name__ = "UpdateFunctionEntryRequestVisitor" -scout_checks_api_UpdateFunctionEntryRequestVisitor.__qualname__ = "UpdateFunctionEntryRequestVisitor" -scout_checks_api_UpdateFunctionEntryRequestVisitor.__module__ = "scout_service_api.scout_checks_api" +scout_comparisonnotebook_api_SupplementalComparisonWorkbookContextVisitor.__name__ = "SupplementalComparisonWorkbookContextVisitor" +scout_comparisonnotebook_api_SupplementalComparisonWorkbookContextVisitor.__qualname__ = "SupplementalComparisonWorkbookContextVisitor" +scout_comparisonnotebook_api_SupplementalComparisonWorkbookContextVisitor.__module__ = "scout_service_api.scout_comparisonnotebook_api" -class scout_checks_api_VariableLocator(ConjureUnionType): - _checklist_variable: Optional[str] = None - _compute_node: Optional["scout_checks_api_ComputeNodeWithContext"] = None - _function_rid: Optional[str] = None - _series: Optional["scout_checks_api_ChannelLocator"] = None - _timestamp: Optional["scout_checks_api_TimestampLocator"] = None +class scout_comparisonnotebook_api_VariableLocator(ConjureUnionType): + _comparison_workbook_variable: Optional[str] = None + _series: Optional["scout_api_ChannelLocator"] = None @builtins.classmethod def _options(cls) -> Dict[str, ConjureFieldDefinition]: return { - 'checklist_variable': ConjureFieldDefinition('checklistVariable', scout_compute_api_VariableName), - 'compute_node': ConjureFieldDefinition('computeNode', scout_checks_api_ComputeNodeWithContext), - 'function_rid': ConjureFieldDefinition('functionRid', scout_rids_api_FunctionRid), - 'series': ConjureFieldDefinition('series', scout_checks_api_ChannelLocator), - 'timestamp': ConjureFieldDefinition('timestamp', scout_checks_api_TimestampLocator) + 'comparison_workbook_variable': ConjureFieldDefinition('comparisonWorkbookVariable', scout_comparisonnotebook_api_VariableName), + 'series': ConjureFieldDefinition('series', scout_api_ChannelLocator) } def __init__( self, - checklist_variable: Optional[str] = None, - compute_node: Optional["scout_checks_api_ComputeNodeWithContext"] = None, - function_rid: Optional[str] = None, - series: Optional["scout_checks_api_ChannelLocator"] = None, - timestamp: Optional["scout_checks_api_TimestampLocator"] = None, + comparison_workbook_variable: Optional[str] = None, + series: Optional["scout_api_ChannelLocator"] = None, type_of_union: Optional[str] = None ) -> None: if type_of_union is None: - if (checklist_variable is not None) + (compute_node is not None) + (function_rid is not None) + (series is not None) + (timestamp is not None) != 1: + if (comparison_workbook_variable is not None) + (series is not None) != 1: raise ValueError('a union must contain a single member') - if checklist_variable is not None: - self._checklist_variable = checklist_variable - self._type = 'checklistVariable' - if compute_node is not None: - self._compute_node = compute_node - self._type = 'computeNode' - if function_rid is not None: - self._function_rid = function_rid - self._type = 'functionRid' + if comparison_workbook_variable is not None: + self._comparison_workbook_variable = comparison_workbook_variable + self._type = 'comparisonWorkbookVariable' if series is not None: self._series = series self._type = 'series' - if timestamp is not None: - self._timestamp = timestamp - self._type = 'timestamp' - elif type_of_union == 'checklistVariable': - if checklist_variable is None: - raise ValueError('a union value must not be None') - self._checklist_variable = checklist_variable - self._type = 'checklistVariable' - elif type_of_union == 'computeNode': - if compute_node is None: + elif type_of_union == 'comparisonWorkbookVariable': + if comparison_workbook_variable is None: raise ValueError('a union value must not be None') - self._compute_node = compute_node - self._type = 'computeNode' - elif type_of_union == 'functionRid': - if function_rid is None: - raise ValueError('a union value must not be None') - self._function_rid = function_rid - self._type = 'functionRid' + self._comparison_workbook_variable = comparison_workbook_variable + self._type = 'comparisonWorkbookVariable' elif type_of_union == 'series': if series is None: raise ValueError('a union value must not be None') self._series = series self._type = 'series' - elif type_of_union == 'timestamp': - if timestamp is None: - raise ValueError('a union value must not be None') - self._timestamp = timestamp - self._type = 'timestamp' - - @builtins.property - def checklist_variable(self) -> Optional[str]: - """ - A pointer to a checklist level variable. - """ - return self._checklist_variable - - @builtins.property - def compute_node(self) -> Optional["scout_checks_api_ComputeNodeWithContext"]: - return self._compute_node @builtins.property - def function_rid(self) -> Optional[str]: - return self._function_rid + def comparison_workbook_variable(self) -> Optional[str]: + return self._comparison_workbook_variable @builtins.property - def series(self) -> Optional["scout_checks_api_ChannelLocator"]: + def series(self) -> Optional["scout_api_ChannelLocator"]: return self._series - @builtins.property - def timestamp(self) -> Optional["scout_checks_api_TimestampLocator"]: - return self._timestamp - def accept(self, visitor) -> Any: - if not isinstance(visitor, scout_checks_api_VariableLocatorVisitor): - raise ValueError('{} is not an instance of scout_checks_api_VariableLocatorVisitor'.format(visitor.__class__.__name__)) - if self._type == 'checklistVariable' and self.checklist_variable is not None: - return visitor._checklist_variable(self.checklist_variable) - if self._type == 'computeNode' and self.compute_node is not None: - return visitor._compute_node(self.compute_node) - if self._type == 'functionRid' and self.function_rid is not None: - return visitor._function_rid(self.function_rid) + if not isinstance(visitor, scout_comparisonnotebook_api_VariableLocatorVisitor): + raise ValueError('{} is not an instance of scout_comparisonnotebook_api_VariableLocatorVisitor'.format(visitor.__class__.__name__)) + if self._type == 'comparisonWorkbookVariable' and self.comparison_workbook_variable is not None: + return visitor._comparison_workbook_variable(self.comparison_workbook_variable) if self._type == 'series' and self.series is not None: return visitor._series(self.series) - if self._type == 'timestamp' and self.timestamp is not None: - return visitor._timestamp(self.timestamp) - - -scout_checks_api_VariableLocator.__name__ = "VariableLocator" -scout_checks_api_VariableLocator.__qualname__ = "VariableLocator" -scout_checks_api_VariableLocator.__module__ = "scout_service_api.scout_checks_api" -class scout_checks_api_VariableLocatorVisitor: - - @abstractmethod - def _checklist_variable(self, checklist_variable: str) -> Any: - pass +scout_comparisonnotebook_api_VariableLocator.__name__ = "VariableLocator" +scout_comparisonnotebook_api_VariableLocator.__qualname__ = "VariableLocator" +scout_comparisonnotebook_api_VariableLocator.__module__ = "scout_service_api.scout_comparisonnotebook_api" - @abstractmethod - def _compute_node(self, compute_node: "scout_checks_api_ComputeNodeWithContext") -> Any: - pass - @abstractmethod - def _function_rid(self, function_rid: str) -> Any: - pass +class scout_comparisonnotebook_api_VariableLocatorVisitor: @abstractmethod - def _series(self, series: "scout_checks_api_ChannelLocator") -> Any: + def _comparison_workbook_variable(self, comparison_workbook_variable: str) -> Any: pass @abstractmethod - def _timestamp(self, timestamp: "scout_checks_api_TimestampLocator") -> Any: + def _series(self, series: "scout_api_ChannelLocator") -> Any: pass -scout_checks_api_VariableLocatorVisitor.__name__ = "VariableLocatorVisitor" -scout_checks_api_VariableLocatorVisitor.__qualname__ = "VariableLocatorVisitor" -scout_checks_api_VariableLocatorVisitor.__module__ = "scout_service_api.scout_checks_api" - - -class scout_checks_api_VersionedChecklist(ConjureBeanType): - - @builtins.classmethod - def _fields(cls) -> Dict[str, ConjureFieldDefinition]: - return { - 'rid': ConjureFieldDefinition('rid', scout_rids_api_ChecklistRid), - 'metadata': ConjureFieldDefinition('metadata', scout_checks_api_ChecklistMetadata), - 'commit': ConjureFieldDefinition('commit', scout_versioning_api_Commit), - 'functions': ConjureFieldDefinition('functions', List[scout_checks_api_Function]), - 'checks': ConjureFieldDefinition('checks', List[scout_checks_api_ChecklistEntry]), - 'checklist_variables': ConjureFieldDefinition('checklistVariables', List[scout_checks_api_ChecklistVariable]) - } - - __slots__: List[str] = ['_rid', '_metadata', '_commit', '_functions', '_checks', '_checklist_variables'] - - def __init__(self, checklist_variables: List["scout_checks_api_ChecklistVariable"], checks: List["scout_checks_api_ChecklistEntry"], commit: "scout_versioning_api_Commit", functions: List["scout_checks_api_Function"], metadata: "scout_checks_api_ChecklistMetadata", rid: str) -> None: - self._rid = rid - self._metadata = metadata - self._commit = commit - self._functions = functions - self._checks = checks - self._checklist_variables = checklist_variables - - @builtins.property - def rid(self) -> str: - return self._rid - - @builtins.property - def metadata(self) -> "scout_checks_api_ChecklistMetadata": - return self._metadata - - @builtins.property - def commit(self) -> "scout_versioning_api_Commit": - return self._commit - - @builtins.property - def functions(self) -> List["scout_checks_api_Function"]: - """ - A list of functions that are available to be used by checks in this checklist. - """ - return self._functions - - @builtins.property - def checks(self) -> List["scout_checks_api_ChecklistEntry"]: - return self._checks - - @builtins.property - def checklist_variables(self) -> List["scout_checks_api_ChecklistVariable"]: - """ - Variables that can be used in checks and functions. Variables are resolved in order of declaration. -If variable `a` depends on variable `b`, then `b` must be defined before `a` in the list. - """ - return self._checklist_variables - - -scout_checks_api_VersionedChecklist.__name__ = "VersionedChecklist" -scout_checks_api_VersionedChecklist.__qualname__ = "VersionedChecklist" -scout_checks_api_VersionedChecklist.__module__ = "scout_service_api.scout_checks_api" +scout_comparisonnotebook_api_VariableLocatorVisitor.__name__ = "VariableLocatorVisitor" +scout_comparisonnotebook_api_VariableLocatorVisitor.__qualname__ = "VariableLocatorVisitor" +scout_comparisonnotebook_api_VariableLocatorVisitor.__module__ = "scout_service_api.scout_comparisonnotebook_api" -class scout_checks_api_VersionedChecklistPage(ConjureBeanType): +class scout_comparisonnotebook_api_VariableWithAggregation(ConjureBeanType): @builtins.classmethod def _fields(cls) -> Dict[str, ConjureFieldDefinition]: return { - 'values': ConjureFieldDefinition('values', List[scout_checks_api_VersionedChecklist]), - 'next_page_token': ConjureFieldDefinition('nextPageToken', OptionalTypeWrapper[scout_api_Token]) + 'locator': ConjureFieldDefinition('locator', scout_comparisonnotebook_api_VariableLocator), + 'aggregation_type': ConjureFieldDefinition('aggregationType', scout_comparisonnotebook_api_AggregationType) } - __slots__: List[str] = ['_values', '_next_page_token'] + __slots__: List[str] = ['_locator', '_aggregation_type'] - def __init__(self, values: List["scout_checks_api_VersionedChecklist"], next_page_token: Optional[str] = None) -> None: - self._values = values - self._next_page_token = next_page_token + def __init__(self, aggregation_type: "scout_comparisonnotebook_api_AggregationType", locator: "scout_comparisonnotebook_api_VariableLocator") -> None: + self._locator = locator + self._aggregation_type = aggregation_type @builtins.property - def values(self) -> List["scout_checks_api_VersionedChecklist"]: - return self._values + def locator(self) -> "scout_comparisonnotebook_api_VariableLocator": + return self._locator @builtins.property - def next_page_token(self) -> Optional[str]: - return self._next_page_token + def aggregation_type(self) -> "scout_comparisonnotebook_api_AggregationType": + return self._aggregation_type -scout_checks_api_VersionedChecklistPage.__name__ = "VersionedChecklistPage" -scout_checks_api_VersionedChecklistPage.__qualname__ = "VersionedChecklistPage" -scout_checks_api_VersionedChecklistPage.__module__ = "scout_service_api.scout_checks_api" +scout_comparisonnotebook_api_VariableWithAggregation.__name__ = "VariableWithAggregation" +scout_comparisonnotebook_api_VariableWithAggregation.__qualname__ = "VariableWithAggregation" +scout_comparisonnotebook_api_VariableWithAggregation.__module__ = "scout_service_api.scout_comparisonnotebook_api" class scout_comparisonrun_api_ComparisonRun(ConjureBeanType): @@ -19450,7 +23558,41 @@ def compute(self, auth_header: str, request: "scout_compute_api_ComputeNodeReque _decoder = ConjureDecoder() return _decoder.decode(_response.json(), scout_compute_api_ComputeNodeResponse, self._return_none_for_unknown_union_types) - def compute_units(self, auth_header: str, request: "scout_compute_api_ComputeNodeRequest") -> "scout_compute_api_ComputeUnitResult": + def parameterized_compute(self, auth_header: str, request: "scout_compute_api_ParameterizedComputeNodeRequest") -> "scout_compute_api_ParameterizedComputeNodeResponse": + """ + Computes the output of the compute graph specified by a ParameterizedComputeNodeRequest. A parameterized +compute request supports multiple values for a single variable, supplied by the ParameterizedContext. +Results are returned in the same order of the request. + """ + + _headers: Dict[str, Any] = { + 'Accept': 'application/json', + 'Content-Type': 'application/json', + 'Authorization': auth_header, + } + + _params: Dict[str, Any] = { + } + + _path_params: Dict[str, Any] = { + } + + _json: Any = ConjureEncoder().default(request) + + _path = '/compute/v2/compute/parameterized' + _path = _path.format(**_path_params) + + _response: Response = self._request( + 'POST', + self._uri + _path, + params=_params, + headers=_headers, + json=_json) + + _decoder = ConjureDecoder() + return _decoder.decode(_response.json(), scout_compute_api_ParameterizedComputeNodeResponse, self._return_none_for_unknown_union_types) + + def compute_units(self, auth_header: str, request: "scout_compute_api_ComputeUnitsRequest") -> "scout_compute_api_ComputeUnitResult": """ Returns the resulting unit for the output of a compute graph. If the resulting unit is equivalent to exactly one existing unit in the system, it will be returned (for example, a series in Coulombs divided by a series @@ -19569,6 +23711,35 @@ def _cartesian(self, cartesian: "scout_compute_api_CartesianUnitResult") -> Any: scout_compute_api_ComputeUnitResultVisitor.__module__ = "scout_service_api.scout_compute_api" +class scout_compute_api_ComputeUnitsRequest(ConjureBeanType): + + @builtins.classmethod + def _fields(cls) -> Dict[str, ConjureFieldDefinition]: + return { + 'node': ConjureFieldDefinition('node', scout_compute_api_ComputableNode), + 'context': ConjureFieldDefinition('context', scout_compute_api_Context) + } + + __slots__: List[str] = ['_node', '_context'] + + def __init__(self, context: "scout_compute_api_Context", node: "scout_compute_api_ComputableNode") -> None: + self._node = node + self._context = context + + @builtins.property + def node(self) -> "scout_compute_api_ComputableNode": + return self._node + + @builtins.property + def context(self) -> "scout_compute_api_Context": + return self._context + + +scout_compute_api_ComputeUnitsRequest.__name__ = "ComputeUnitsRequest" +scout_compute_api_ComputeUnitsRequest.__qualname__ = "ComputeUnitsRequest" +scout_compute_api_ComputeUnitsRequest.__module__ = "scout_service_api.scout_compute_api" + + class scout_compute_api_Context(ConjureBeanType): @builtins.classmethod @@ -19852,6 +24023,22 @@ def _variable(self, variable: str) -> Any: scout_compute_api_DurationConstantVisitor.__module__ = "scout_service_api.scout_compute_api" +class scout_compute_api_Empty(ConjureBeanType): + + @builtins.classmethod + def _fields(cls) -> Dict[str, ConjureFieldDefinition]: + return { + } + + __slots__: List[str] = [] + + + +scout_compute_api_Empty.__name__ = "Empty" +scout_compute_api_Empty.__qualname__ = "Empty" +scout_compute_api_Empty.__module__ = "scout_service_api.scout_compute_api" + + class scout_compute_api_EnumAggregationFunction(ConjureEnumType): MIN = 'MIN' @@ -20623,6 +24810,35 @@ def __reduce_ex__(self, proto): scout_compute_api_EqualityOperator.__module__ = "scout_service_api.scout_compute_api" +class scout_compute_api_ErrorResult(ConjureBeanType): + + @builtins.classmethod + def _fields(cls) -> Dict[str, ConjureFieldDefinition]: + return { + 'error_type': ConjureFieldDefinition('errorType', scout_compute_api_ErrorType), + 'code': ConjureFieldDefinition('code', scout_compute_api_ErrorCode) + } + + __slots__: List[str] = ['_error_type', '_code'] + + def __init__(self, code: int, error_type: str) -> None: + self._error_type = error_type + self._code = code + + @builtins.property + def error_type(self) -> str: + return self._error_type + + @builtins.property + def code(self) -> int: + return self._code + + +scout_compute_api_ErrorResult.__name__ = "ErrorResult" +scout_compute_api_ErrorResult.__qualname__ = "ErrorResult" +scout_compute_api_ErrorResult.__module__ = "scout_service_api.scout_compute_api" + + class scout_compute_api_ExcludeNegativeValues(ConjureBeanType): @builtins.classmethod @@ -23324,6 +27540,227 @@ def _after_persistence_window(self, after_persistence_window: "scout_compute_api scout_compute_api_OutputRangeStartVisitor.__module__ = "scout_service_api.scout_compute_api" +class scout_compute_api_ParameterInput(ConjureBeanType): + + @builtins.classmethod + def _fields(cls) -> Dict[str, ConjureFieldDefinition]: + return { + 'variables': ConjureFieldDefinition('variables', Dict[scout_compute_api_VariableName, scout_compute_api_VariableValue]), + 'function_variables': ConjureFieldDefinition('functionVariables', Dict[scout_compute_api_FunctionReference, scout_compute_api_FunctionVariables]), + 'time_range': ConjureFieldDefinition('timeRange', OptionalTypeWrapper[scout_compute_api_Range]) + } + + __slots__: List[str] = ['_variables', '_function_variables', '_time_range'] + + def __init__(self, function_variables: Dict[str, "scout_compute_api_FunctionVariables"], variables: Dict[str, "scout_compute_api_VariableValue"], time_range: Optional["scout_compute_api_Range"] = None) -> None: + self._variables = variables + self._function_variables = function_variables + self._time_range = time_range + + @builtins.property + def variables(self) -> Dict[str, "scout_compute_api_VariableValue"]: + return self._variables + + @builtins.property + def function_variables(self) -> Dict[str, "scout_compute_api_FunctionVariables"]: + """ + Map of function references to their variables. The function reference is defined in the FunctionNode definition. +If a function references another function, the variables for the referenced function should be in the +subFunctionVariables field of the FunctionVariables. + """ + return self._function_variables + + @builtins.property + def time_range(self) -> Optional["scout_compute_api_Range"]: + """ + Overrides the start and end time of the compute request. If either the start or end are not present, we +default back to the start/end specified in the request. + """ + return self._time_range + + +scout_compute_api_ParameterInput.__name__ = "ParameterInput" +scout_compute_api_ParameterInput.__qualname__ = "ParameterInput" +scout_compute_api_ParameterInput.__module__ = "scout_service_api.scout_compute_api" + + +class scout_compute_api_ParameterizedComputeNodeRequest(ConjureBeanType): + + @builtins.classmethod + def _fields(cls) -> Dict[str, ConjureFieldDefinition]: + return { + 'node': ConjureFieldDefinition('node', scout_compute_api_ComputableNode), + 'start': ConjureFieldDefinition('start', scout_compute_api_Timestamp), + 'end': ConjureFieldDefinition('end', scout_compute_api_Timestamp), + 'context': ConjureFieldDefinition('context', scout_compute_api_Context), + 'parameterized_context': ConjureFieldDefinition('parameterizedContext', scout_compute_api_ParameterizedContext) + } + + __slots__: List[str] = ['_node', '_start', '_end', '_context', '_parameterized_context'] + + def __init__(self, context: "scout_compute_api_Context", end: "scout_compute_api_Timestamp", node: "scout_compute_api_ComputableNode", parameterized_context: "scout_compute_api_ParameterizedContext", start: "scout_compute_api_Timestamp") -> None: + self._node = node + self._start = start + self._end = end + self._context = context + self._parameterized_context = parameterized_context + + @builtins.property + def node(self) -> "scout_compute_api_ComputableNode": + return self._node + + @builtins.property + def start(self) -> "scout_compute_api_Timestamp": + return self._start + + @builtins.property + def end(self) -> "scout_compute_api_Timestamp": + return self._end + + @builtins.property + def context(self) -> "scout_compute_api_Context": + return self._context + + @builtins.property + def parameterized_context(self) -> "scout_compute_api_ParameterizedContext": + """ + Specifies how certain variables should be parameterized. If a variable name appears in both the context +and the parameterized context, it will be treated as parameterized. + """ + return self._parameterized_context + + +scout_compute_api_ParameterizedComputeNodeRequest.__name__ = "ParameterizedComputeNodeRequest" +scout_compute_api_ParameterizedComputeNodeRequest.__qualname__ = "ParameterizedComputeNodeRequest" +scout_compute_api_ParameterizedComputeNodeRequest.__module__ = "scout_service_api.scout_compute_api" + + +class scout_compute_api_ParameterizedComputeNodeResponse(ConjureBeanType): + + @builtins.classmethod + def _fields(cls) -> Dict[str, ConjureFieldDefinition]: + return { + 'results': ConjureFieldDefinition('results', List[scout_compute_api_ParameterizedComputeNodeResult]) + } + + __slots__: List[str] = ['_results'] + + def __init__(self, results: List["scout_compute_api_ParameterizedComputeNodeResult"]) -> None: + self._results = results + + @builtins.property + def results(self) -> List["scout_compute_api_ParameterizedComputeNodeResult"]: + return self._results + + +scout_compute_api_ParameterizedComputeNodeResponse.__name__ = "ParameterizedComputeNodeResponse" +scout_compute_api_ParameterizedComputeNodeResponse.__qualname__ = "ParameterizedComputeNodeResponse" +scout_compute_api_ParameterizedComputeNodeResponse.__module__ = "scout_service_api.scout_compute_api" + + +class scout_compute_api_ParameterizedComputeNodeResult(ConjureUnionType): + _success: Optional["scout_compute_api_ComputeNodeResponse"] = None + _error: Optional["scout_compute_api_ErrorResult"] = None + + @builtins.classmethod + def _options(cls) -> Dict[str, ConjureFieldDefinition]: + return { + 'success': ConjureFieldDefinition('success', scout_compute_api_ComputeNodeResponse), + 'error': ConjureFieldDefinition('error', scout_compute_api_ErrorResult) + } + + def __init__( + self, + success: Optional["scout_compute_api_ComputeNodeResponse"] = None, + error: Optional["scout_compute_api_ErrorResult"] = None, + type_of_union: Optional[str] = None + ) -> None: + if type_of_union is None: + if (success is not None) + (error is not None) != 1: + raise ValueError('a union must contain a single member') + + if success is not None: + self._success = success + self._type = 'success' + if error is not None: + self._error = error + self._type = 'error' + + elif type_of_union == 'success': + if success is None: + raise ValueError('a union value must not be None') + self._success = success + self._type = 'success' + elif type_of_union == 'error': + if error is None: + raise ValueError('a union value must not be None') + self._error = error + self._type = 'error' + + @builtins.property + def success(self) -> Optional["scout_compute_api_ComputeNodeResponse"]: + return self._success + + @builtins.property + def error(self) -> Optional["scout_compute_api_ErrorResult"]: + return self._error + + def accept(self, visitor) -> Any: + if not isinstance(visitor, scout_compute_api_ParameterizedComputeNodeResultVisitor): + raise ValueError('{} is not an instance of scout_compute_api_ParameterizedComputeNodeResultVisitor'.format(visitor.__class__.__name__)) + if self._type == 'success' and self.success is not None: + return visitor._success(self.success) + if self._type == 'error' and self.error is not None: + return visitor._error(self.error) + + +scout_compute_api_ParameterizedComputeNodeResult.__name__ = "ParameterizedComputeNodeResult" +scout_compute_api_ParameterizedComputeNodeResult.__qualname__ = "ParameterizedComputeNodeResult" +scout_compute_api_ParameterizedComputeNodeResult.__module__ = "scout_service_api.scout_compute_api" + + +class scout_compute_api_ParameterizedComputeNodeResultVisitor: + + @abstractmethod + def _success(self, success: "scout_compute_api_ComputeNodeResponse") -> Any: + pass + + @abstractmethod + def _error(self, error: "scout_compute_api_ErrorResult") -> Any: + pass + + +scout_compute_api_ParameterizedComputeNodeResultVisitor.__name__ = "ParameterizedComputeNodeResultVisitor" +scout_compute_api_ParameterizedComputeNodeResultVisitor.__qualname__ = "ParameterizedComputeNodeResultVisitor" +scout_compute_api_ParameterizedComputeNodeResultVisitor.__module__ = "scout_service_api.scout_compute_api" + + +class scout_compute_api_ParameterizedContext(ConjureBeanType): + + @builtins.classmethod + def _fields(cls) -> Dict[str, ConjureFieldDefinition]: + return { + 'parameter_inputs': ConjureFieldDefinition('parameterInputs', List[scout_compute_api_ParameterInput]) + } + + __slots__: List[str] = ['_parameter_inputs'] + + def __init__(self, parameter_inputs: List["scout_compute_api_ParameterInput"]) -> None: + self._parameter_inputs = parameter_inputs + + @builtins.property + def parameter_inputs(self) -> List["scout_compute_api_ParameterInput"]: + """ + Each parameter input provides a satisfying set of values for the parameterized compute node. + """ + return self._parameter_inputs + + +scout_compute_api_ParameterizedContext.__name__ = "ParameterizedContext" +scout_compute_api_ParameterizedContext.__qualname__ = "ParameterizedContext" +scout_compute_api_ParameterizedContext.__module__ = "scout_service_api.scout_compute_api" + + class scout_compute_api_PeakRangesNode(ConjureBeanType): """ Produces a list of ranges for each point that is greater than its neighbors. @@ -23498,14 +27935,16 @@ class scout_compute_api_Range(ConjureBeanType): def _fields(cls) -> Dict[str, ConjureFieldDefinition]: return { 'start': ConjureFieldDefinition('start', OptionalTypeWrapper[scout_compute_api_Timestamp]), - 'end': ConjureFieldDefinition('end', OptionalTypeWrapper[scout_compute_api_Timestamp]) + 'end': ConjureFieldDefinition('end', OptionalTypeWrapper[scout_compute_api_Timestamp]), + 'value': ConjureFieldDefinition('value', OptionalTypeWrapper[scout_compute_api_RangeValue]) } - __slots__: List[str] = ['_start', '_end'] + __slots__: List[str] = ['_start', '_end', '_value'] - def __init__(self, end: Optional["scout_compute_api_Timestamp"] = None, start: Optional["scout_compute_api_Timestamp"] = None) -> None: + def __init__(self, end: Optional["scout_compute_api_Timestamp"] = None, start: Optional["scout_compute_api_Timestamp"] = None, value: Optional["scout_compute_api_RangeValue"] = None) -> None: self._start = start self._end = end + self._value = value @builtins.property def start(self) -> Optional["scout_compute_api_Timestamp"]: @@ -23515,12 +27954,197 @@ def start(self) -> Optional["scout_compute_api_Timestamp"]: def end(self) -> Optional["scout_compute_api_Timestamp"]: return self._end + @builtins.property + def value(self) -> Optional["scout_compute_api_RangeValue"]: + return self._value + scout_compute_api_Range.__name__ = "Range" scout_compute_api_Range.__qualname__ = "Range" scout_compute_api_Range.__module__ = "scout_service_api.scout_compute_api" +class scout_compute_api_RangeAggregation(ConjureBeanType): + + @builtins.classmethod + def _fields(cls) -> Dict[str, ConjureFieldDefinition]: + return { + 'average': ConjureFieldDefinition('average', float), + 'min': ConjureFieldDefinition('min', float), + 'max': ConjureFieldDefinition('max', float), + 'standard_deviation': ConjureFieldDefinition('standardDeviation', float) + } + + __slots__: List[str] = ['_average', '_min', '_max', '_standard_deviation'] + + def __init__(self, average: float, max: float, min: float, standard_deviation: float) -> None: + self._average = average + self._min = min + self._max = max + self._standard_deviation = standard_deviation + + @builtins.property + def average(self) -> float: + return self._average + + @builtins.property + def min(self) -> float: + return self._min + + @builtins.property + def max(self) -> float: + return self._max + + @builtins.property + def standard_deviation(self) -> float: + return self._standard_deviation + + +scout_compute_api_RangeAggregation.__name__ = "RangeAggregation" +scout_compute_api_RangeAggregation.__qualname__ = "RangeAggregation" +scout_compute_api_RangeAggregation.__module__ = "scout_service_api.scout_compute_api" + + +class scout_compute_api_RangeAggregationOperation(ConjureUnionType): + _average: Optional["scout_compute_api_Average"] = None + _min: Optional["scout_compute_api_Minimum"] = None + _max: Optional["scout_compute_api_Maximum"] = None + _standard_deviation: Optional["scout_compute_api_StandardDeviation"] = None + _all: Optional["scout_compute_api_Empty"] = None + + @builtins.classmethod + def _options(cls) -> Dict[str, ConjureFieldDefinition]: + return { + 'average': ConjureFieldDefinition('average', scout_compute_api_Average), + 'min': ConjureFieldDefinition('min', scout_compute_api_Minimum), + 'max': ConjureFieldDefinition('max', scout_compute_api_Maximum), + 'standard_deviation': ConjureFieldDefinition('standardDeviation', scout_compute_api_StandardDeviation), + 'all': ConjureFieldDefinition('all', scout_compute_api_Empty) + } + + def __init__( + self, + average: Optional["scout_compute_api_Average"] = None, + min: Optional["scout_compute_api_Minimum"] = None, + max: Optional["scout_compute_api_Maximum"] = None, + standard_deviation: Optional["scout_compute_api_StandardDeviation"] = None, + all: Optional["scout_compute_api_Empty"] = None, + type_of_union: Optional[str] = None + ) -> None: + if type_of_union is None: + if (average is not None) + (min is not None) + (max is not None) + (standard_deviation is not None) + (all is not None) != 1: + raise ValueError('a union must contain a single member') + + if average is not None: + self._average = average + self._type = 'average' + if min is not None: + self._min = min + self._type = 'min' + if max is not None: + self._max = max + self._type = 'max' + if standard_deviation is not None: + self._standard_deviation = standard_deviation + self._type = 'standardDeviation' + if all is not None: + self._all = all + self._type = 'all' + + elif type_of_union == 'average': + if average is None: + raise ValueError('a union value must not be None') + self._average = average + self._type = 'average' + elif type_of_union == 'min': + if min is None: + raise ValueError('a union value must not be None') + self._min = min + self._type = 'min' + elif type_of_union == 'max': + if max is None: + raise ValueError('a union value must not be None') + self._max = max + self._type = 'max' + elif type_of_union == 'standardDeviation': + if standard_deviation is None: + raise ValueError('a union value must not be None') + self._standard_deviation = standard_deviation + self._type = 'standardDeviation' + elif type_of_union == 'all': + if all is None: + raise ValueError('a union value must not be None') + self._all = all + self._type = 'all' + + @builtins.property + def average(self) -> Optional["scout_compute_api_Average"]: + return self._average + + @builtins.property + def min(self) -> Optional["scout_compute_api_Minimum"]: + return self._min + + @builtins.property + def max(self) -> Optional["scout_compute_api_Maximum"]: + return self._max + + @builtins.property + def standard_deviation(self) -> Optional["scout_compute_api_StandardDeviation"]: + return self._standard_deviation + + @builtins.property + def all(self) -> Optional["scout_compute_api_Empty"]: + return self._all + + def accept(self, visitor) -> Any: + if not isinstance(visitor, scout_compute_api_RangeAggregationOperationVisitor): + raise ValueError('{} is not an instance of scout_compute_api_RangeAggregationOperationVisitor'.format(visitor.__class__.__name__)) + if self._type == 'average' and self.average is not None: + return visitor._average(self.average) + if self._type == 'min' and self.min is not None: + return visitor._min(self.min) + if self._type == 'max' and self.max is not None: + return visitor._max(self.max) + if self._type == 'standardDeviation' and self.standard_deviation is not None: + return visitor._standard_deviation(self.standard_deviation) + if self._type == 'all' and self.all is not None: + return visitor._all(self.all) + + +scout_compute_api_RangeAggregationOperation.__name__ = "RangeAggregationOperation" +scout_compute_api_RangeAggregationOperation.__qualname__ = "RangeAggregationOperation" +scout_compute_api_RangeAggregationOperation.__module__ = "scout_service_api.scout_compute_api" + + +class scout_compute_api_RangeAggregationOperationVisitor: + + @abstractmethod + def _average(self, average: "scout_compute_api_Average") -> Any: + pass + + @abstractmethod + def _min(self, min: "scout_compute_api_Minimum") -> Any: + pass + + @abstractmethod + def _max(self, max: "scout_compute_api_Maximum") -> Any: + pass + + @abstractmethod + def _standard_deviation(self, standard_deviation: "scout_compute_api_StandardDeviation") -> Any: + pass + + @abstractmethod + def _all(self, all: "scout_compute_api_Empty") -> Any: + pass + + +scout_compute_api_RangeAggregationOperationVisitor.__name__ = "RangeAggregationOperationVisitor" +scout_compute_api_RangeAggregationOperationVisitor.__qualname__ = "RangeAggregationOperationVisitor" +scout_compute_api_RangeAggregationOperationVisitor.__module__ = "scout_service_api.scout_compute_api" + + class scout_compute_api_RangeSummary(ConjureBeanType): """ Summary of a set of ranges @@ -23559,6 +28183,104 @@ def sub_range_count(self) -> int: scout_compute_api_RangeSummary.__module__ = "scout_service_api.scout_compute_api" +class scout_compute_api_RangeValue(ConjureUnionType): + _double: Optional[float] = None + _aggregation: Optional["scout_compute_api_RangeAggregation"] = None + _no_points_in_range: Optional["scout_compute_api_Empty"] = None + + @builtins.classmethod + def _options(cls) -> Dict[str, ConjureFieldDefinition]: + return { + 'double': ConjureFieldDefinition('double', float), + 'aggregation': ConjureFieldDefinition('aggregation', scout_compute_api_RangeAggregation), + 'no_points_in_range': ConjureFieldDefinition('noPointsInRange', scout_compute_api_Empty) + } + + def __init__( + self, + double: Optional[float] = None, + aggregation: Optional["scout_compute_api_RangeAggregation"] = None, + no_points_in_range: Optional["scout_compute_api_Empty"] = None, + type_of_union: Optional[str] = None + ) -> None: + if type_of_union is None: + if (double is not None) + (aggregation is not None) + (no_points_in_range is not None) != 1: + raise ValueError('a union must contain a single member') + + if double is not None: + self._double = double + self._type = 'double' + if aggregation is not None: + self._aggregation = aggregation + self._type = 'aggregation' + if no_points_in_range is not None: + self._no_points_in_range = no_points_in_range + self._type = 'noPointsInRange' + + elif type_of_union == 'double': + if double is None: + raise ValueError('a union value must not be None') + self._double = double + self._type = 'double' + elif type_of_union == 'aggregation': + if aggregation is None: + raise ValueError('a union value must not be None') + self._aggregation = aggregation + self._type = 'aggregation' + elif type_of_union == 'noPointsInRange': + if no_points_in_range is None: + raise ValueError('a union value must not be None') + self._no_points_in_range = no_points_in_range + self._type = 'noPointsInRange' + + @builtins.property + def double(self) -> Optional[float]: + return self._double + + @builtins.property + def aggregation(self) -> Optional["scout_compute_api_RangeAggregation"]: + return self._aggregation + + @builtins.property + def no_points_in_range(self) -> Optional["scout_compute_api_Empty"]: + return self._no_points_in_range + + def accept(self, visitor) -> Any: + if not isinstance(visitor, scout_compute_api_RangeValueVisitor): + raise ValueError('{} is not an instance of scout_compute_api_RangeValueVisitor'.format(visitor.__class__.__name__)) + if self._type == 'double' and self.double is not None: + return visitor._double(self.double) + if self._type == 'aggregation' and self.aggregation is not None: + return visitor._aggregation(self.aggregation) + if self._type == 'noPointsInRange' and self.no_points_in_range is not None: + return visitor._no_points_in_range(self.no_points_in_range) + + +scout_compute_api_RangeValue.__name__ = "RangeValue" +scout_compute_api_RangeValue.__qualname__ = "RangeValue" +scout_compute_api_RangeValue.__module__ = "scout_service_api.scout_compute_api" + + +class scout_compute_api_RangeValueVisitor: + + @abstractmethod + def _double(self, double: float) -> Any: + pass + + @abstractmethod + def _aggregation(self, aggregation: "scout_compute_api_RangeAggregation") -> Any: + pass + + @abstractmethod + def _no_points_in_range(self, no_points_in_range: "scout_compute_api_Empty") -> Any: + pass + + +scout_compute_api_RangeValueVisitor.__name__ = "RangeValueVisitor" +scout_compute_api_RangeValueVisitor.__qualname__ = "RangeValueVisitor" +scout_compute_api_RangeValueVisitor.__module__ = "scout_service_api.scout_compute_api" + + class scout_compute_api_RangesFunction(ConjureBeanType): """ A function reference that outputs a ranges series. @@ -23612,6 +28334,7 @@ class scout_compute_api_RangesNode(ConjureUnionType): _stale_range: Optional["scout_compute_api_StaleRangesNode"] = None _threshold: Optional["scout_compute_api_ThresholdingRangesNode"] = None _union_range: Optional["scout_compute_api_UnionRangesNode"] = None + _range_numeric_aggregation: Optional["scout_compute_api_RangesNumericAggregationNode"] = None @builtins.classmethod def _options(cls) -> Dict[str, ConjureFieldDefinition]: @@ -23629,7 +28352,8 @@ def _options(cls) -> Dict[str, ConjureFieldDefinition]: 'enum_series_equality_ranges_node': ConjureFieldDefinition('enumSeriesEqualityRangesNode', scout_compute_api_EnumSeriesEqualityRangesNode), 'stale_range': ConjureFieldDefinition('staleRange', scout_compute_api_StaleRangesNode), 'threshold': ConjureFieldDefinition('threshold', scout_compute_api_ThresholdingRangesNode), - 'union_range': ConjureFieldDefinition('unionRange', scout_compute_api_UnionRangesNode) + 'union_range': ConjureFieldDefinition('unionRange', scout_compute_api_UnionRangesNode), + 'range_numeric_aggregation': ConjureFieldDefinition('rangeNumericAggregation', scout_compute_api_RangesNumericAggregationNode) } def __init__( @@ -23648,10 +28372,11 @@ def __init__( stale_range: Optional["scout_compute_api_StaleRangesNode"] = None, threshold: Optional["scout_compute_api_ThresholdingRangesNode"] = None, union_range: Optional["scout_compute_api_UnionRangesNode"] = None, + range_numeric_aggregation: Optional["scout_compute_api_RangesNumericAggregationNode"] = None, type_of_union: Optional[str] = None ) -> None: if type_of_union is None: - if (enum_filter is not None) + (function is not None) + (intersect_range is not None) + (not_ is not None) + (on_change is not None) + (min_max_threshold is not None) + (peak is not None) + (raw is not None) + (series_crossover_ranges_node is not None) + (series_equality_ranges_node is not None) + (enum_series_equality_ranges_node is not None) + (stale_range is not None) + (threshold is not None) + (union_range is not None) != 1: + if (enum_filter is not None) + (function is not None) + (intersect_range is not None) + (not_ is not None) + (on_change is not None) + (min_max_threshold is not None) + (peak is not None) + (raw is not None) + (series_crossover_ranges_node is not None) + (series_equality_ranges_node is not None) + (enum_series_equality_ranges_node is not None) + (stale_range is not None) + (threshold is not None) + (union_range is not None) + (range_numeric_aggregation is not None) != 1: raise ValueError('a union must contain a single member') if enum_filter is not None: @@ -23696,6 +28421,9 @@ def __init__( if union_range is not None: self._union_range = union_range self._type = 'unionRange' + if range_numeric_aggregation is not None: + self._range_numeric_aggregation = range_numeric_aggregation + self._type = 'rangeNumericAggregation' elif type_of_union == 'enumFilter': if enum_filter is None: @@ -23767,6 +28495,11 @@ def __init__( raise ValueError('a union value must not be None') self._union_range = union_range self._type = 'unionRange' + elif type_of_union == 'rangeNumericAggregation': + if range_numeric_aggregation is None: + raise ValueError('a union value must not be None') + self._range_numeric_aggregation = range_numeric_aggregation + self._type = 'rangeNumericAggregation' @builtins.property def enum_filter(self) -> Optional["scout_compute_api_EnumFilterRangesNode"]: @@ -23830,6 +28563,10 @@ def threshold(self) -> Optional["scout_compute_api_ThresholdingRangesNode"]: def union_range(self) -> Optional["scout_compute_api_UnionRangesNode"]: return self._union_range + @builtins.property + def range_numeric_aggregation(self) -> Optional["scout_compute_api_RangesNumericAggregationNode"]: + return self._range_numeric_aggregation + def accept(self, visitor) -> Any: if not isinstance(visitor, scout_compute_api_RangesNodeVisitor): raise ValueError('{} is not an instance of scout_compute_api_RangesNodeVisitor'.format(visitor.__class__.__name__)) @@ -23861,6 +28598,8 @@ def accept(self, visitor) -> Any: return visitor._threshold(self.threshold) if self._type == 'unionRange' and self.union_range is not None: return visitor._union_range(self.union_range) + if self._type == 'rangeNumericAggregation' and self.range_numeric_aggregation is not None: + return visitor._range_numeric_aggregation(self.range_numeric_aggregation) scout_compute_api_RangesNode.__name__ = "RangesNode" @@ -23926,12 +28665,54 @@ def _threshold(self, threshold: "scout_compute_api_ThresholdingRangesNode") -> A def _union_range(self, union_range: "scout_compute_api_UnionRangesNode") -> Any: pass + @abstractmethod + def _range_numeric_aggregation(self, range_numeric_aggregation: "scout_compute_api_RangesNumericAggregationNode") -> Any: + pass + scout_compute_api_RangesNodeVisitor.__name__ = "RangesNodeVisitor" scout_compute_api_RangesNodeVisitor.__qualname__ = "RangesNodeVisitor" scout_compute_api_RangesNodeVisitor.__module__ = "scout_service_api.scout_compute_api" +class scout_compute_api_RangesNumericAggregationNode(ConjureBeanType): + """ + Aggregates the values of a numeric series at each range specified by the input ranges. + """ + + @builtins.classmethod + def _fields(cls) -> Dict[str, ConjureFieldDefinition]: + return { + 'ranges': ConjureFieldDefinition('ranges', scout_compute_api_RangesNode), + 'input': ConjureFieldDefinition('input', scout_compute_api_NumericSeriesNode), + 'operation': ConjureFieldDefinition('operation', scout_compute_api_RangeAggregationOperation) + } + + __slots__: List[str] = ['_ranges', '_input', '_operation'] + + def __init__(self, input: "scout_compute_api_NumericSeriesNode", operation: "scout_compute_api_RangeAggregationOperation", ranges: "scout_compute_api_RangesNode") -> None: + self._ranges = ranges + self._input = input + self._operation = operation + + @builtins.property + def ranges(self) -> "scout_compute_api_RangesNode": + return self._ranges + + @builtins.property + def input(self) -> "scout_compute_api_NumericSeriesNode": + return self._input + + @builtins.property + def operation(self) -> "scout_compute_api_RangeAggregationOperation": + return self._operation + + +scout_compute_api_RangesNumericAggregationNode.__name__ = "RangesNumericAggregationNode" +scout_compute_api_RangesNumericAggregationNode.__qualname__ = "RangesNumericAggregationNode" +scout_compute_api_RangesNumericAggregationNode.__module__ = "scout_service_api.scout_compute_api" + + class scout_compute_api_RangesSummary(ConjureBeanType): """ A summary of the ranges returned from a SummarizeRangesNode request. Returned when the number of ranges @@ -24752,13 +29533,13 @@ def _fields(cls) -> Dict[str, ConjureFieldDefinition]: return { 'input': ConjureFieldDefinition('input', scout_compute_api_SeriesNode), 'threshold': ConjureFieldDefinition('threshold', scout_compute_api_DurationConstant), - 'start_timestamp': ConjureFieldDefinition('startTimestamp', OptionalTypeWrapper[scout_compute_api_TimestampConstant]), + 'start_timestamp': ConjureFieldDefinition('startTimestamp', scout_compute_api_TimestampConstant), 'end_timestamp': ConjureFieldDefinition('endTimestamp', OptionalTypeWrapper[scout_compute_api_TimestampConstant]) } __slots__: List[str] = ['_input', '_threshold', '_start_timestamp', '_end_timestamp'] - def __init__(self, input: "scout_compute_api_SeriesNode", threshold: "scout_compute_api_DurationConstant", end_timestamp: Optional["scout_compute_api_TimestampConstant"] = None, start_timestamp: Optional["scout_compute_api_TimestampConstant"] = None) -> None: + def __init__(self, input: "scout_compute_api_SeriesNode", start_timestamp: "scout_compute_api_TimestampConstant", threshold: "scout_compute_api_DurationConstant", end_timestamp: Optional["scout_compute_api_TimestampConstant"] = None) -> None: self._input = input self._threshold = threshold self._start_timestamp = start_timestamp @@ -24773,7 +29554,7 @@ def threshold(self) -> "scout_compute_api_DurationConstant": return self._threshold @builtins.property - def start_timestamp(self) -> Optional["scout_compute_api_TimestampConstant"]: + def start_timestamp(self) -> "scout_compute_api_TimestampConstant": return self._start_timestamp @builtins.property @@ -27807,247 +32588,799 @@ def persistence_window_configuration(self) -> Optional["scout_compute_api_deprec scout_compute_api_deprecated_ThresholdingRangesNode.__module__ = "scout_service_api.scout_compute_api_deprecated" -class scout_compute_api_deprecated_TimeDifferenceSeriesNode(ConjureBeanType): +class scout_compute_api_deprecated_TimeDifferenceSeriesNode(ConjureBeanType): + + @builtins.classmethod + def _fields(cls) -> Dict[str, ConjureFieldDefinition]: + return { + 'input': ConjureFieldDefinition('input', scout_compute_api_deprecated_SeriesNode), + 'time_unit': ConjureFieldDefinition('timeUnit', OptionalTypeWrapper[scout_compute_api_TimeUnit]) + } + + __slots__: List[str] = ['_input', '_time_unit'] + + def __init__(self, input: "scout_compute_api_deprecated_SeriesNode", time_unit: Optional["scout_compute_api_TimeUnit"] = None) -> None: + self._input = input + self._time_unit = time_unit + + @builtins.property + def input(self) -> "scout_compute_api_deprecated_SeriesNode": + return self._input + + @builtins.property + def time_unit(self) -> Optional["scout_compute_api_TimeUnit"]: + return self._time_unit + + +scout_compute_api_deprecated_TimeDifferenceSeriesNode.__name__ = "TimeDifferenceSeriesNode" +scout_compute_api_deprecated_TimeDifferenceSeriesNode.__qualname__ = "TimeDifferenceSeriesNode" +scout_compute_api_deprecated_TimeDifferenceSeriesNode.__module__ = "scout_service_api.scout_compute_api_deprecated" + + +class scout_compute_api_deprecated_UnaryArithmeticSeriesNode(ConjureBeanType): + + @builtins.classmethod + def _fields(cls) -> Dict[str, ConjureFieldDefinition]: + return { + 'input': ConjureFieldDefinition('input', scout_compute_api_deprecated_NumericSeriesNode), + 'operation': ConjureFieldDefinition('operation', scout_compute_api_UnaryArithmeticOperation) + } + + __slots__: List[str] = ['_input', '_operation'] + + def __init__(self, input: "scout_compute_api_deprecated_NumericSeriesNode", operation: "scout_compute_api_UnaryArithmeticOperation") -> None: + self._input = input + self._operation = operation + + @builtins.property + def input(self) -> "scout_compute_api_deprecated_NumericSeriesNode": + return self._input + + @builtins.property + def operation(self) -> "scout_compute_api_UnaryArithmeticOperation": + return self._operation + + +scout_compute_api_deprecated_UnaryArithmeticSeriesNode.__name__ = "UnaryArithmeticSeriesNode" +scout_compute_api_deprecated_UnaryArithmeticSeriesNode.__qualname__ = "UnaryArithmeticSeriesNode" +scout_compute_api_deprecated_UnaryArithmeticSeriesNode.__module__ = "scout_service_api.scout_compute_api_deprecated" + + +class scout_compute_api_deprecated_UnionRangesNode(ConjureBeanType): + + @builtins.classmethod + def _fields(cls) -> Dict[str, ConjureFieldDefinition]: + return { + 'inputs': ConjureFieldDefinition('inputs', List[scout_compute_api_deprecated_RangesNode]) + } + + __slots__: List[str] = ['_inputs'] + + def __init__(self, inputs: List["scout_compute_api_deprecated_RangesNode"]) -> None: + self._inputs = inputs + + @builtins.property + def inputs(self) -> List["scout_compute_api_deprecated_RangesNode"]: + return self._inputs + + +scout_compute_api_deprecated_UnionRangesNode.__name__ = "UnionRangesNode" +scout_compute_api_deprecated_UnionRangesNode.__qualname__ = "UnionRangesNode" +scout_compute_api_deprecated_UnionRangesNode.__module__ = "scout_service_api.scout_compute_api_deprecated" + + +class scout_compute_api_deprecated_ValueDifferenceSeriesNode(ConjureBeanType): + + @builtins.classmethod + def _fields(cls) -> Dict[str, ConjureFieldDefinition]: + return { + 'input': ConjureFieldDefinition('input', scout_compute_api_deprecated_NumericSeriesNode), + 'negative_values_configuration': ConjureFieldDefinition('negativeValuesConfiguration', OptionalTypeWrapper[scout_compute_api_NegativeValueConfiguration]) + } + + __slots__: List[str] = ['_input', '_negative_values_configuration'] + + def __init__(self, input: "scout_compute_api_deprecated_NumericSeriesNode", negative_values_configuration: Optional["scout_compute_api_NegativeValueConfiguration"] = None) -> None: + self._input = input + self._negative_values_configuration = negative_values_configuration + + @builtins.property + def input(self) -> "scout_compute_api_deprecated_NumericSeriesNode": + return self._input + + @builtins.property + def negative_values_configuration(self) -> Optional["scout_compute_api_NegativeValueConfiguration"]: + return self._negative_values_configuration + + +scout_compute_api_deprecated_ValueDifferenceSeriesNode.__name__ = "ValueDifferenceSeriesNode" +scout_compute_api_deprecated_ValueDifferenceSeriesNode.__qualname__ = "ValueDifferenceSeriesNode" +scout_compute_api_deprecated_ValueDifferenceSeriesNode.__module__ = "scout_service_api.scout_compute_api_deprecated" + + +class scout_compute_api_deprecated_VariableValue(ConjureUnionType): + _series: Optional["scout_compute_api_SeriesSpec"] = None + _timestamp: Optional["scout_compute_api_Timestamp"] = None + + @builtins.classmethod + def _options(cls) -> Dict[str, ConjureFieldDefinition]: + return { + 'series': ConjureFieldDefinition('series', scout_compute_api_SeriesSpec), + 'timestamp': ConjureFieldDefinition('timestamp', scout_compute_api_Timestamp) + } + + def __init__( + self, + series: Optional["scout_compute_api_SeriesSpec"] = None, + timestamp: Optional["scout_compute_api_Timestamp"] = None, + type_of_union: Optional[str] = None + ) -> None: + if type_of_union is None: + if (series is not None) + (timestamp is not None) != 1: + raise ValueError('a union must contain a single member') + + if series is not None: + self._series = series + self._type = 'series' + if timestamp is not None: + self._timestamp = timestamp + self._type = 'timestamp' + + elif type_of_union == 'series': + if series is None: + raise ValueError('a union value must not be None') + self._series = series + self._type = 'series' + elif type_of_union == 'timestamp': + if timestamp is None: + raise ValueError('a union value must not be None') + self._timestamp = timestamp + self._type = 'timestamp' + + @builtins.property + def series(self) -> Optional["scout_compute_api_SeriesSpec"]: + return self._series + + @builtins.property + def timestamp(self) -> Optional["scout_compute_api_Timestamp"]: + return self._timestamp + + def accept(self, visitor) -> Any: + if not isinstance(visitor, scout_compute_api_deprecated_VariableValueVisitor): + raise ValueError('{} is not an instance of scout_compute_api_deprecated_VariableValueVisitor'.format(visitor.__class__.__name__)) + if self._type == 'series' and self.series is not None: + return visitor._series(self.series) + if self._type == 'timestamp' and self.timestamp is not None: + return visitor._timestamp(self.timestamp) + + +scout_compute_api_deprecated_VariableValue.__name__ = "VariableValue" +scout_compute_api_deprecated_VariableValue.__qualname__ = "VariableValue" +scout_compute_api_deprecated_VariableValue.__module__ = "scout_service_api.scout_compute_api_deprecated" + + +class scout_compute_api_deprecated_VariableValueVisitor: + + @abstractmethod + def _series(self, series: "scout_compute_api_SeriesSpec") -> Any: + pass + + @abstractmethod + def _timestamp(self, timestamp: "scout_compute_api_Timestamp") -> Any: + pass + + +scout_compute_api_deprecated_VariableValueVisitor.__name__ = "VariableValueVisitor" +scout_compute_api_deprecated_VariableValueVisitor.__qualname__ = "VariableValueVisitor" +scout_compute_api_deprecated_VariableValueVisitor.__module__ = "scout_service_api.scout_compute_api_deprecated" + + +class scout_compute_api_deprecated_Window(ConjureUnionType): + _duration: Optional["scout_run_api_Duration"] = None + + @builtins.classmethod + def _options(cls) -> Dict[str, ConjureFieldDefinition]: + return { + 'duration': ConjureFieldDefinition('duration', scout_run_api_Duration) + } + + def __init__( + self, + duration: Optional["scout_run_api_Duration"] = None, + type_of_union: Optional[str] = None + ) -> None: + if type_of_union is None: + if (duration is not None) != 1: + raise ValueError('a union must contain a single member') + + if duration is not None: + self._duration = duration + self._type = 'duration' + + elif type_of_union == 'duration': + if duration is None: + raise ValueError('a union value must not be None') + self._duration = duration + self._type = 'duration' + + @builtins.property + def duration(self) -> Optional["scout_run_api_Duration"]: + return self._duration + + def accept(self, visitor) -> Any: + if not isinstance(visitor, scout_compute_api_deprecated_WindowVisitor): + raise ValueError('{} is not an instance of scout_compute_api_deprecated_WindowVisitor'.format(visitor.__class__.__name__)) + if self._type == 'duration' and self.duration is not None: + return visitor._duration(self.duration) + + +scout_compute_api_deprecated_Window.__name__ = "Window" +scout_compute_api_deprecated_Window.__qualname__ = "Window" +scout_compute_api_deprecated_Window.__module__ = "scout_service_api.scout_compute_api_deprecated" + + +class scout_compute_api_deprecated_WindowVisitor: + + @abstractmethod + def _duration(self, duration: "scout_run_api_Duration") -> Any: + pass + + +scout_compute_api_deprecated_WindowVisitor.__name__ = "WindowVisitor" +scout_compute_api_deprecated_WindowVisitor.__qualname__ = "WindowVisitor" +scout_compute_api_deprecated_WindowVisitor.__module__ = "scout_service_api.scout_compute_api_deprecated" + + +class scout_compute_representation_api_ChannelLocator(ConjureBeanType): + + @builtins.classmethod + def _fields(cls) -> Dict[str, ConjureFieldDefinition]: + return { + 'data_source_ref': ConjureFieldDefinition('dataSourceRef', scout_api_DataSourceRefName), + 'channel': ConjureFieldDefinition('channel', scout_api_Channel) + } + + __slots__: List[str] = ['_data_source_ref', '_channel'] + + def __init__(self, channel: str, data_source_ref: str) -> None: + self._data_source_ref = data_source_ref + self._channel = channel + + @builtins.property + def data_source_ref(self) -> str: + return self._data_source_ref + + @builtins.property + def channel(self) -> str: + return self._channel + + +scout_compute_representation_api_ChannelLocator.__name__ = "ChannelLocator" +scout_compute_representation_api_ChannelLocator.__qualname__ = "ChannelLocator" +scout_compute_representation_api_ChannelLocator.__module__ = "scout_service_api.scout_compute_representation_api" + + +class scout_compute_representation_api_CompiledEnumeratedSeries(ConjureBeanType): + + @builtins.classmethod + def _fields(cls) -> Dict[str, ConjureFieldDefinition]: + return { + 'node': ConjureFieldDefinition('node', scout_compute_api_EnumSeriesNode), + 'context': ConjureFieldDefinition('context', scout_compute_representation_api_ComputeRepresentationContext) + } + + __slots__: List[str] = ['_node', '_context'] + + def __init__(self, context: "scout_compute_representation_api_ComputeRepresentationContext", node: "scout_compute_api_EnumSeriesNode") -> None: + self._node = node + self._context = context + + @builtins.property + def node(self) -> "scout_compute_api_EnumSeriesNode": + return self._node + + @builtins.property + def context(self) -> "scout_compute_representation_api_ComputeRepresentationContext": + return self._context + + +scout_compute_representation_api_CompiledEnumeratedSeries.__name__ = "CompiledEnumeratedSeries" +scout_compute_representation_api_CompiledEnumeratedSeries.__qualname__ = "CompiledEnumeratedSeries" +scout_compute_representation_api_CompiledEnumeratedSeries.__module__ = "scout_service_api.scout_compute_representation_api" + + +class scout_compute_representation_api_CompiledNode(ConjureBeanType): + + @builtins.classmethod + def _fields(cls) -> Dict[str, ConjureFieldDefinition]: + return { + 'node': ConjureFieldDefinition('node', scout_compute_representation_api_Node), + 'context': ConjureFieldDefinition('context', scout_compute_representation_api_ComputeRepresentationContext) + } + + __slots__: List[str] = ['_node', '_context'] + + def __init__(self, context: "scout_compute_representation_api_ComputeRepresentationContext", node: "scout_compute_representation_api_Node") -> None: + self._node = node + self._context = context + + @builtins.property + def node(self) -> "scout_compute_representation_api_Node": + return self._node + + @builtins.property + def context(self) -> "scout_compute_representation_api_ComputeRepresentationContext": + return self._context + + +scout_compute_representation_api_CompiledNode.__name__ = "CompiledNode" +scout_compute_representation_api_CompiledNode.__qualname__ = "CompiledNode" +scout_compute_representation_api_CompiledNode.__module__ = "scout_service_api.scout_compute_representation_api" + + +class scout_compute_representation_api_CompiledNumericSeries(ConjureBeanType): + + @builtins.classmethod + def _fields(cls) -> Dict[str, ConjureFieldDefinition]: + return { + 'node': ConjureFieldDefinition('node', scout_compute_api_NumericSeriesNode), + 'context': ConjureFieldDefinition('context', scout_compute_representation_api_ComputeRepresentationContext) + } + + __slots__: List[str] = ['_node', '_context'] + + def __init__(self, context: "scout_compute_representation_api_ComputeRepresentationContext", node: "scout_compute_api_NumericSeriesNode") -> None: + self._node = node + self._context = context + + @builtins.property + def node(self) -> "scout_compute_api_NumericSeriesNode": + return self._node + + @builtins.property + def context(self) -> "scout_compute_representation_api_ComputeRepresentationContext": + return self._context + + +scout_compute_representation_api_CompiledNumericSeries.__name__ = "CompiledNumericSeries" +scout_compute_representation_api_CompiledNumericSeries.__qualname__ = "CompiledNumericSeries" +scout_compute_representation_api_CompiledNumericSeries.__module__ = "scout_service_api.scout_compute_representation_api" + + +class scout_compute_representation_api_CompiledRangeSeries(ConjureBeanType): @builtins.classmethod def _fields(cls) -> Dict[str, ConjureFieldDefinition]: return { - 'input': ConjureFieldDefinition('input', scout_compute_api_deprecated_SeriesNode), - 'time_unit': ConjureFieldDefinition('timeUnit', OptionalTypeWrapper[scout_compute_api_TimeUnit]) + 'node': ConjureFieldDefinition('node', scout_compute_api_RangesNode), + 'context': ConjureFieldDefinition('context', scout_compute_representation_api_ComputeRepresentationContext) } - __slots__: List[str] = ['_input', '_time_unit'] + __slots__: List[str] = ['_node', '_context'] - def __init__(self, input: "scout_compute_api_deprecated_SeriesNode", time_unit: Optional["scout_compute_api_TimeUnit"] = None) -> None: - self._input = input - self._time_unit = time_unit + def __init__(self, context: "scout_compute_representation_api_ComputeRepresentationContext", node: "scout_compute_api_RangesNode") -> None: + self._node = node + self._context = context @builtins.property - def input(self) -> "scout_compute_api_deprecated_SeriesNode": - return self._input + def node(self) -> "scout_compute_api_RangesNode": + return self._node @builtins.property - def time_unit(self) -> Optional["scout_compute_api_TimeUnit"]: - return self._time_unit + def context(self) -> "scout_compute_representation_api_ComputeRepresentationContext": + return self._context -scout_compute_api_deprecated_TimeDifferenceSeriesNode.__name__ = "TimeDifferenceSeriesNode" -scout_compute_api_deprecated_TimeDifferenceSeriesNode.__qualname__ = "TimeDifferenceSeriesNode" -scout_compute_api_deprecated_TimeDifferenceSeriesNode.__module__ = "scout_service_api.scout_compute_api_deprecated" +scout_compute_representation_api_CompiledRangeSeries.__name__ = "CompiledRangeSeries" +scout_compute_representation_api_CompiledRangeSeries.__qualname__ = "CompiledRangeSeries" +scout_compute_representation_api_CompiledRangeSeries.__module__ = "scout_service_api.scout_compute_representation_api" -class scout_compute_api_deprecated_UnaryArithmeticSeriesNode(ConjureBeanType): +class scout_compute_representation_api_ComputeRepresentationContext(ConjureBeanType): @builtins.classmethod def _fields(cls) -> Dict[str, ConjureFieldDefinition]: return { - 'input': ConjureFieldDefinition('input', scout_compute_api_deprecated_NumericSeriesNode), - 'operation': ConjureFieldDefinition('operation', scout_compute_api_UnaryArithmeticOperation) + 'variables': ConjureFieldDefinition('variables', Dict[scout_compute_api_VariableName, scout_compute_representation_api_ComputeRepresentationVariableValue]), + 'function_variables': ConjureFieldDefinition('functionVariables', Dict[scout_compute_api_FunctionReference, scout_compute_representation_api_ComputeRepresentationContext]) } - __slots__: List[str] = ['_input', '_operation'] + __slots__: List[str] = ['_variables', '_function_variables'] - def __init__(self, input: "scout_compute_api_deprecated_NumericSeriesNode", operation: "scout_compute_api_UnaryArithmeticOperation") -> None: - self._input = input - self._operation = operation + def __init__(self, function_variables: Dict[str, "scout_compute_representation_api_ComputeRepresentationContext"], variables: Dict[str, "scout_compute_representation_api_ComputeRepresentationVariableValue"]) -> None: + self._variables = variables + self._function_variables = function_variables @builtins.property - def input(self) -> "scout_compute_api_deprecated_NumericSeriesNode": - return self._input + def variables(self) -> Dict[str, "scout_compute_representation_api_ComputeRepresentationVariableValue"]: + return self._variables @builtins.property - def operation(self) -> "scout_compute_api_UnaryArithmeticOperation": - return self._operation + def function_variables(self) -> Dict[str, "scout_compute_representation_api_ComputeRepresentationContext"]: + return self._function_variables -scout_compute_api_deprecated_UnaryArithmeticSeriesNode.__name__ = "UnaryArithmeticSeriesNode" -scout_compute_api_deprecated_UnaryArithmeticSeriesNode.__qualname__ = "UnaryArithmeticSeriesNode" -scout_compute_api_deprecated_UnaryArithmeticSeriesNode.__module__ = "scout_service_api.scout_compute_api_deprecated" +scout_compute_representation_api_ComputeRepresentationContext.__name__ = "ComputeRepresentationContext" +scout_compute_representation_api_ComputeRepresentationContext.__qualname__ = "ComputeRepresentationContext" +scout_compute_representation_api_ComputeRepresentationContext.__module__ = "scout_service_api.scout_compute_representation_api" -class scout_compute_api_deprecated_UnionRangesNode(ConjureBeanType): +class scout_compute_representation_api_ComputeRepresentationService(Service): + """ + The Compute Representation Service provides the ability to translate between a human-readable expression language +and a compute graph. Bidirectional translation is supported. + """ - @builtins.classmethod - def _fields(cls) -> Dict[str, ConjureFieldDefinition]: - return { - 'inputs': ConjureFieldDefinition('inputs', List[scout_compute_api_deprecated_RangesNode]) + def compute_to_expression(self, auth_header: str, request: "scout_compute_representation_api_CompiledNode") -> str: + """ + Converts a compute graph and its context into a its expression language representation. + """ + + _headers: Dict[str, Any] = { + 'Accept': 'application/json', + 'Content-Type': 'application/json', + 'Authorization': auth_header, } - __slots__: List[str] = ['_inputs'] + _params: Dict[str, Any] = { + } - def __init__(self, inputs: List["scout_compute_api_deprecated_RangesNode"]) -> None: - self._inputs = inputs + _path_params: Dict[str, Any] = { + } - @builtins.property - def inputs(self) -> List["scout_compute_api_deprecated_RangesNode"]: - return self._inputs + _json: Any = ConjureEncoder().default(request) + + _path = '/compute/representation/v1/compute-to-expression' + _path = _path.format(**_path_params) + _response: Response = self._request( + 'POST', + self._uri + _path, + params=_params, + headers=_headers, + json=_json) -scout_compute_api_deprecated_UnionRangesNode.__name__ = "UnionRangesNode" -scout_compute_api_deprecated_UnionRangesNode.__qualname__ = "UnionRangesNode" -scout_compute_api_deprecated_UnionRangesNode.__module__ = "scout_service_api.scout_compute_api_deprecated" + _decoder = ConjureDecoder() + return _decoder.decode(_response.json(), scout_compute_representation_api_ComputeExpression, self._return_none_for_unknown_union_types) + def expression_to_compute(self, auth_header: str, request: str) -> "scout_compute_representation_api_CompiledNode": + """ + Converts an expression language representation into a compute graph. The outputted graph can be passed to +the compute service or checks service for execution. + """ -class scout_compute_api_deprecated_ValueDifferenceSeriesNode(ConjureBeanType): + _headers: Dict[str, Any] = { + 'Accept': 'application/json', + 'Content-Type': 'application/json', + 'Authorization': auth_header, + } - @builtins.classmethod - def _fields(cls) -> Dict[str, ConjureFieldDefinition]: - return { - 'input': ConjureFieldDefinition('input', scout_compute_api_deprecated_NumericSeriesNode), - 'negative_values_configuration': ConjureFieldDefinition('negativeValuesConfiguration', OptionalTypeWrapper[scout_compute_api_NegativeValueConfiguration]) + _params: Dict[str, Any] = { } - __slots__: List[str] = ['_input', '_negative_values_configuration'] + _path_params: Dict[str, Any] = { + } - def __init__(self, input: "scout_compute_api_deprecated_NumericSeriesNode", negative_values_configuration: Optional["scout_compute_api_NegativeValueConfiguration"] = None) -> None: - self._input = input - self._negative_values_configuration = negative_values_configuration + _json: Any = ConjureEncoder().default(request) - @builtins.property - def input(self) -> "scout_compute_api_deprecated_NumericSeriesNode": - return self._input + _path = '/compute/representation/v1/expression-to-compute' + _path = _path.format(**_path_params) - @builtins.property - def negative_values_configuration(self) -> Optional["scout_compute_api_NegativeValueConfiguration"]: - return self._negative_values_configuration + _response: Response = self._request( + 'POST', + self._uri + _path, + params=_params, + headers=_headers, + json=_json) + _decoder = ConjureDecoder() + return _decoder.decode(_response.json(), scout_compute_representation_api_CompiledNode, self._return_none_for_unknown_union_types) -scout_compute_api_deprecated_ValueDifferenceSeriesNode.__name__ = "ValueDifferenceSeriesNode" -scout_compute_api_deprecated_ValueDifferenceSeriesNode.__qualname__ = "ValueDifferenceSeriesNode" -scout_compute_api_deprecated_ValueDifferenceSeriesNode.__module__ = "scout_service_api.scout_compute_api_deprecated" +scout_compute_representation_api_ComputeRepresentationService.__name__ = "ComputeRepresentationService" +scout_compute_representation_api_ComputeRepresentationService.__qualname__ = "ComputeRepresentationService" +scout_compute_representation_api_ComputeRepresentationService.__module__ = "scout_service_api.scout_compute_representation_api" -class scout_compute_api_deprecated_VariableValue(ConjureUnionType): - _series: Optional["scout_compute_api_SeriesSpec"] = None + +class scout_compute_representation_api_ComputeRepresentationVariableValue(ConjureUnionType): + _double: Optional[float] = None + _duration: Optional["scout_run_api_Duration"] = None + _integer: Optional[int] = None + _string_set: Optional[List[str]] = None _timestamp: Optional["scout_compute_api_Timestamp"] = None + _function_rid: Optional[str] = None + _series: Optional["scout_compute_representation_api_ChannelLocator"] = None + _external_variable_reference: Optional[str] = None @builtins.classmethod def _options(cls) -> Dict[str, ConjureFieldDefinition]: return { - 'series': ConjureFieldDefinition('series', scout_compute_api_SeriesSpec), - 'timestamp': ConjureFieldDefinition('timestamp', scout_compute_api_Timestamp) + 'double': ConjureFieldDefinition('double', float), + 'duration': ConjureFieldDefinition('duration', scout_run_api_Duration), + 'integer': ConjureFieldDefinition('integer', int), + 'string_set': ConjureFieldDefinition('stringSet', List[str]), + 'timestamp': ConjureFieldDefinition('timestamp', scout_compute_api_Timestamp), + 'function_rid': ConjureFieldDefinition('functionRid', scout_rids_api_FunctionRid), + 'series': ConjureFieldDefinition('series', scout_compute_representation_api_ChannelLocator), + 'external_variable_reference': ConjureFieldDefinition('externalVariableReference', str) } def __init__( self, - series: Optional["scout_compute_api_SeriesSpec"] = None, + double: Optional[float] = None, + duration: Optional["scout_run_api_Duration"] = None, + integer: Optional[int] = None, + string_set: Optional[List[str]] = None, timestamp: Optional["scout_compute_api_Timestamp"] = None, + function_rid: Optional[str] = None, + series: Optional["scout_compute_representation_api_ChannelLocator"] = None, + external_variable_reference: Optional[str] = None, type_of_union: Optional[str] = None ) -> None: if type_of_union is None: - if (series is not None) + (timestamp is not None) != 1: + if (double is not None) + (duration is not None) + (integer is not None) + (string_set is not None) + (timestamp is not None) + (function_rid is not None) + (series is not None) + (external_variable_reference is not None) != 1: raise ValueError('a union must contain a single member') - if series is not None: - self._series = series - self._type = 'series' + if double is not None: + self._double = double + self._type = 'double' + if duration is not None: + self._duration = duration + self._type = 'duration' + if integer is not None: + self._integer = integer + self._type = 'integer' + if string_set is not None: + self._string_set = string_set + self._type = 'stringSet' if timestamp is not None: self._timestamp = timestamp self._type = 'timestamp' + if function_rid is not None: + self._function_rid = function_rid + self._type = 'functionRid' + if series is not None: + self._series = series + self._type = 'series' + if external_variable_reference is not None: + self._external_variable_reference = external_variable_reference + self._type = 'externalVariableReference' - elif type_of_union == 'series': - if series is None: + elif type_of_union == 'double': + if double is None: raise ValueError('a union value must not be None') - self._series = series - self._type = 'series' + self._double = double + self._type = 'double' + elif type_of_union == 'duration': + if duration is None: + raise ValueError('a union value must not be None') + self._duration = duration + self._type = 'duration' + elif type_of_union == 'integer': + if integer is None: + raise ValueError('a union value must not be None') + self._integer = integer + self._type = 'integer' + elif type_of_union == 'stringSet': + if string_set is None: + raise ValueError('a union value must not be None') + self._string_set = string_set + self._type = 'stringSet' elif type_of_union == 'timestamp': if timestamp is None: raise ValueError('a union value must not be None') self._timestamp = timestamp self._type = 'timestamp' + elif type_of_union == 'functionRid': + if function_rid is None: + raise ValueError('a union value must not be None') + self._function_rid = function_rid + self._type = 'functionRid' + elif type_of_union == 'series': + if series is None: + raise ValueError('a union value must not be None') + self._series = series + self._type = 'series' + elif type_of_union == 'externalVariableReference': + if external_variable_reference is None: + raise ValueError('a union value must not be None') + self._external_variable_reference = external_variable_reference + self._type = 'externalVariableReference' @builtins.property - def series(self) -> Optional["scout_compute_api_SeriesSpec"]: - return self._series + def double(self) -> Optional[float]: + return self._double + + @builtins.property + def duration(self) -> Optional["scout_run_api_Duration"]: + return self._duration + + @builtins.property + def integer(self) -> Optional[int]: + return self._integer + + @builtins.property + def string_set(self) -> Optional[List[str]]: + return self._string_set @builtins.property def timestamp(self) -> Optional["scout_compute_api_Timestamp"]: return self._timestamp + @builtins.property + def function_rid(self) -> Optional[str]: + return self._function_rid + + @builtins.property + def series(self) -> Optional["scout_compute_representation_api_ChannelLocator"]: + return self._series + + @builtins.property + def external_variable_reference(self) -> Optional[str]: + return self._external_variable_reference + def accept(self, visitor) -> Any: - if not isinstance(visitor, scout_compute_api_deprecated_VariableValueVisitor): - raise ValueError('{} is not an instance of scout_compute_api_deprecated_VariableValueVisitor'.format(visitor.__class__.__name__)) - if self._type == 'series' and self.series is not None: - return visitor._series(self.series) + if not isinstance(visitor, scout_compute_representation_api_ComputeRepresentationVariableValueVisitor): + raise ValueError('{} is not an instance of scout_compute_representation_api_ComputeRepresentationVariableValueVisitor'.format(visitor.__class__.__name__)) + if self._type == 'double' and self.double is not None: + return visitor._double(self.double) + if self._type == 'duration' and self.duration is not None: + return visitor._duration(self.duration) + if self._type == 'integer' and self.integer is not None: + return visitor._integer(self.integer) + if self._type == 'stringSet' and self.string_set is not None: + return visitor._string_set(self.string_set) if self._type == 'timestamp' and self.timestamp is not None: return visitor._timestamp(self.timestamp) + if self._type == 'functionRid' and self.function_rid is not None: + return visitor._function_rid(self.function_rid) + if self._type == 'series' and self.series is not None: + return visitor._series(self.series) + if self._type == 'externalVariableReference' and self.external_variable_reference is not None: + return visitor._external_variable_reference(self.external_variable_reference) -scout_compute_api_deprecated_VariableValue.__name__ = "VariableValue" -scout_compute_api_deprecated_VariableValue.__qualname__ = "VariableValue" -scout_compute_api_deprecated_VariableValue.__module__ = "scout_service_api.scout_compute_api_deprecated" +scout_compute_representation_api_ComputeRepresentationVariableValue.__name__ = "ComputeRepresentationVariableValue" +scout_compute_representation_api_ComputeRepresentationVariableValue.__qualname__ = "ComputeRepresentationVariableValue" +scout_compute_representation_api_ComputeRepresentationVariableValue.__module__ = "scout_service_api.scout_compute_representation_api" -class scout_compute_api_deprecated_VariableValueVisitor: +class scout_compute_representation_api_ComputeRepresentationVariableValueVisitor: @abstractmethod - def _series(self, series: "scout_compute_api_SeriesSpec") -> Any: + def _double(self, double: float) -> Any: + pass + + @abstractmethod + def _duration(self, duration: "scout_run_api_Duration") -> Any: + pass + + @abstractmethod + def _integer(self, integer: int) -> Any: + pass + + @abstractmethod + def _string_set(self, string_set: List[str]) -> Any: pass @abstractmethod def _timestamp(self, timestamp: "scout_compute_api_Timestamp") -> Any: pass + @abstractmethod + def _function_rid(self, function_rid: str) -> Any: + pass -scout_compute_api_deprecated_VariableValueVisitor.__name__ = "VariableValueVisitor" -scout_compute_api_deprecated_VariableValueVisitor.__qualname__ = "VariableValueVisitor" -scout_compute_api_deprecated_VariableValueVisitor.__module__ = "scout_service_api.scout_compute_api_deprecated" + @abstractmethod + def _series(self, series: "scout_compute_representation_api_ChannelLocator") -> Any: + pass + + @abstractmethod + def _external_variable_reference(self, external_variable_reference: str) -> Any: + pass -class scout_compute_api_deprecated_Window(ConjureUnionType): - _duration: Optional["scout_run_api_Duration"] = None +scout_compute_representation_api_ComputeRepresentationVariableValueVisitor.__name__ = "ComputeRepresentationVariableValueVisitor" +scout_compute_representation_api_ComputeRepresentationVariableValueVisitor.__qualname__ = "ComputeRepresentationVariableValueVisitor" +scout_compute_representation_api_ComputeRepresentationVariableValueVisitor.__module__ = "scout_service_api.scout_compute_representation_api" + + +class scout_compute_representation_api_Node(ConjureUnionType): + _enumerated_series: Optional["scout_compute_api_EnumSeriesNode"] = None + _numeric_series: Optional["scout_compute_api_NumericSeriesNode"] = None + _range_series: Optional["scout_compute_api_RangesNode"] = None @builtins.classmethod def _options(cls) -> Dict[str, ConjureFieldDefinition]: return { - 'duration': ConjureFieldDefinition('duration', scout_run_api_Duration) + 'enumerated_series': ConjureFieldDefinition('enumeratedSeries', scout_compute_api_EnumSeriesNode), + 'numeric_series': ConjureFieldDefinition('numericSeries', scout_compute_api_NumericSeriesNode), + 'range_series': ConjureFieldDefinition('rangeSeries', scout_compute_api_RangesNode) } def __init__( self, - duration: Optional["scout_run_api_Duration"] = None, + enumerated_series: Optional["scout_compute_api_EnumSeriesNode"] = None, + numeric_series: Optional["scout_compute_api_NumericSeriesNode"] = None, + range_series: Optional["scout_compute_api_RangesNode"] = None, type_of_union: Optional[str] = None ) -> None: if type_of_union is None: - if (duration is not None) != 1: + if (enumerated_series is not None) + (numeric_series is not None) + (range_series is not None) != 1: raise ValueError('a union must contain a single member') - if duration is not None: - self._duration = duration - self._type = 'duration' + if enumerated_series is not None: + self._enumerated_series = enumerated_series + self._type = 'enumeratedSeries' + if numeric_series is not None: + self._numeric_series = numeric_series + self._type = 'numericSeries' + if range_series is not None: + self._range_series = range_series + self._type = 'rangeSeries' - elif type_of_union == 'duration': - if duration is None: + elif type_of_union == 'enumeratedSeries': + if enumerated_series is None: raise ValueError('a union value must not be None') - self._duration = duration - self._type = 'duration' + self._enumerated_series = enumerated_series + self._type = 'enumeratedSeries' + elif type_of_union == 'numericSeries': + if numeric_series is None: + raise ValueError('a union value must not be None') + self._numeric_series = numeric_series + self._type = 'numericSeries' + elif type_of_union == 'rangeSeries': + if range_series is None: + raise ValueError('a union value must not be None') + self._range_series = range_series + self._type = 'rangeSeries' @builtins.property - def duration(self) -> Optional["scout_run_api_Duration"]: - return self._duration + def enumerated_series(self) -> Optional["scout_compute_api_EnumSeriesNode"]: + return self._enumerated_series + + @builtins.property + def numeric_series(self) -> Optional["scout_compute_api_NumericSeriesNode"]: + return self._numeric_series + + @builtins.property + def range_series(self) -> Optional["scout_compute_api_RangesNode"]: + return self._range_series def accept(self, visitor) -> Any: - if not isinstance(visitor, scout_compute_api_deprecated_WindowVisitor): - raise ValueError('{} is not an instance of scout_compute_api_deprecated_WindowVisitor'.format(visitor.__class__.__name__)) - if self._type == 'duration' and self.duration is not None: - return visitor._duration(self.duration) + if not isinstance(visitor, scout_compute_representation_api_NodeVisitor): + raise ValueError('{} is not an instance of scout_compute_representation_api_NodeVisitor'.format(visitor.__class__.__name__)) + if self._type == 'enumeratedSeries' and self.enumerated_series is not None: + return visitor._enumerated_series(self.enumerated_series) + if self._type == 'numericSeries' and self.numeric_series is not None: + return visitor._numeric_series(self.numeric_series) + if self._type == 'rangeSeries' and self.range_series is not None: + return visitor._range_series(self.range_series) -scout_compute_api_deprecated_Window.__name__ = "Window" -scout_compute_api_deprecated_Window.__qualname__ = "Window" -scout_compute_api_deprecated_Window.__module__ = "scout_service_api.scout_compute_api_deprecated" +scout_compute_representation_api_Node.__name__ = "Node" +scout_compute_representation_api_Node.__qualname__ = "Node" +scout_compute_representation_api_Node.__module__ = "scout_service_api.scout_compute_representation_api" -class scout_compute_api_deprecated_WindowVisitor: +class scout_compute_representation_api_NodeVisitor: @abstractmethod - def _duration(self, duration: "scout_run_api_Duration") -> Any: + def _enumerated_series(self, enumerated_series: "scout_compute_api_EnumSeriesNode") -> Any: pass + @abstractmethod + def _numeric_series(self, numeric_series: "scout_compute_api_NumericSeriesNode") -> Any: + pass + + @abstractmethod + def _range_series(self, range_series: "scout_compute_api_RangesNode") -> Any: + pass -scout_compute_api_deprecated_WindowVisitor.__name__ = "WindowVisitor" -scout_compute_api_deprecated_WindowVisitor.__qualname__ = "WindowVisitor" -scout_compute_api_deprecated_WindowVisitor.__module__ = "scout_service_api.scout_compute_api_deprecated" + +scout_compute_representation_api_NodeVisitor.__name__ = "NodeVisitor" +scout_compute_representation_api_NodeVisitor.__qualname__ = "NodeVisitor" +scout_compute_representation_api_NodeVisitor.__module__ = "scout_service_api.scout_compute_representation_api" class scout_compute_resolved_api_AggregateEnumSeriesNode(ConjureBeanType): @@ -30495,6 +35828,7 @@ class scout_compute_resolved_api_RangesNode(ConjureUnionType): _series_crossover_ranges_node: Optional["scout_compute_resolved_api_SeriesCrossoverRangesNode"] = None _stale_range: Optional["scout_compute_resolved_api_StaleRangesNode"] = None _union_range: Optional["scout_compute_resolved_api_UnionRangesNode"] = None + _range_numeric_aggregation: Optional["scout_compute_resolved_api_RangesNumericAggregationNode"] = None @builtins.classmethod def _options(cls) -> Dict[str, ConjureFieldDefinition]: @@ -30509,7 +35843,8 @@ def _options(cls) -> Dict[str, ConjureFieldDefinition]: 'threshold': ConjureFieldDefinition('threshold', scout_compute_resolved_api_ThresholdingRangesNode), 'series_crossover_ranges_node': ConjureFieldDefinition('seriesCrossoverRangesNode', scout_compute_resolved_api_SeriesCrossoverRangesNode), 'stale_range': ConjureFieldDefinition('staleRange', scout_compute_resolved_api_StaleRangesNode), - 'union_range': ConjureFieldDefinition('unionRange', scout_compute_resolved_api_UnionRangesNode) + 'union_range': ConjureFieldDefinition('unionRange', scout_compute_resolved_api_UnionRangesNode), + 'range_numeric_aggregation': ConjureFieldDefinition('rangeNumericAggregation', scout_compute_resolved_api_RangesNumericAggregationNode) } def __init__( @@ -30525,10 +35860,11 @@ def __init__( series_crossover_ranges_node: Optional["scout_compute_resolved_api_SeriesCrossoverRangesNode"] = None, stale_range: Optional["scout_compute_resolved_api_StaleRangesNode"] = None, union_range: Optional["scout_compute_resolved_api_UnionRangesNode"] = None, + range_numeric_aggregation: Optional["scout_compute_resolved_api_RangesNumericAggregationNode"] = None, type_of_union: Optional[str] = None ) -> None: if type_of_union is None: - if (enum_filter is not None) + (enum_equality is not None) + (extrema is not None) + (intersect_range is not None) + (not_ is not None) + (min_max_threshold is not None) + (on_change is not None) + (threshold is not None) + (series_crossover_ranges_node is not None) + (stale_range is not None) + (union_range is not None) != 1: + if (enum_filter is not None) + (enum_equality is not None) + (extrema is not None) + (intersect_range is not None) + (not_ is not None) + (min_max_threshold is not None) + (on_change is not None) + (threshold is not None) + (series_crossover_ranges_node is not None) + (stale_range is not None) + (union_range is not None) + (range_numeric_aggregation is not None) != 1: raise ValueError('a union must contain a single member') if enum_filter is not None: @@ -30564,6 +35900,9 @@ def __init__( if union_range is not None: self._union_range = union_range self._type = 'unionRange' + if range_numeric_aggregation is not None: + self._range_numeric_aggregation = range_numeric_aggregation + self._type = 'rangeNumericAggregation' elif type_of_union == 'enumFilter': if enum_filter is None: @@ -30620,6 +35959,11 @@ def __init__( raise ValueError('a union value must not be None') self._union_range = union_range self._type = 'unionRange' + elif type_of_union == 'rangeNumericAggregation': + if range_numeric_aggregation is None: + raise ValueError('a union value must not be None') + self._range_numeric_aggregation = range_numeric_aggregation + self._type = 'rangeNumericAggregation' @builtins.property def enum_filter(self) -> Optional["scout_compute_resolved_api_EnumFilterRangesNode"]: @@ -30665,6 +36009,10 @@ def stale_range(self) -> Optional["scout_compute_resolved_api_StaleRangesNode"]: def union_range(self) -> Optional["scout_compute_resolved_api_UnionRangesNode"]: return self._union_range + @builtins.property + def range_numeric_aggregation(self) -> Optional["scout_compute_resolved_api_RangesNumericAggregationNode"]: + return self._range_numeric_aggregation + def accept(self, visitor) -> Any: if not isinstance(visitor, scout_compute_resolved_api_RangesNodeVisitor): raise ValueError('{} is not an instance of scout_compute_resolved_api_RangesNodeVisitor'.format(visitor.__class__.__name__)) @@ -30690,6 +36038,8 @@ def accept(self, visitor) -> Any: return visitor._stale_range(self.stale_range) if self._type == 'unionRange' and self.union_range is not None: return visitor._union_range(self.union_range) + if self._type == 'rangeNumericAggregation' and self.range_numeric_aggregation is not None: + return visitor._range_numeric_aggregation(self.range_numeric_aggregation) scout_compute_resolved_api_RangesNode.__name__ = "RangesNode" @@ -30743,12 +36093,51 @@ def _stale_range(self, stale_range: "scout_compute_resolved_api_StaleRangesNode" def _union_range(self, union_range: "scout_compute_resolved_api_UnionRangesNode") -> Any: pass + @abstractmethod + def _range_numeric_aggregation(self, range_numeric_aggregation: "scout_compute_resolved_api_RangesNumericAggregationNode") -> Any: + pass + scout_compute_resolved_api_RangesNodeVisitor.__name__ = "RangesNodeVisitor" scout_compute_resolved_api_RangesNodeVisitor.__qualname__ = "RangesNodeVisitor" scout_compute_resolved_api_RangesNodeVisitor.__module__ = "scout_service_api.scout_compute_resolved_api" +class scout_compute_resolved_api_RangesNumericAggregationNode(ConjureBeanType): + + @builtins.classmethod + def _fields(cls) -> Dict[str, ConjureFieldDefinition]: + return { + 'ranges': ConjureFieldDefinition('ranges', scout_compute_resolved_api_RangesNode), + 'input': ConjureFieldDefinition('input', scout_compute_resolved_api_NumericSeriesNode), + 'operation': ConjureFieldDefinition('operation', scout_compute_api_RangeAggregationOperation) + } + + __slots__: List[str] = ['_ranges', '_input', '_operation'] + + def __init__(self, input: "scout_compute_resolved_api_NumericSeriesNode", operation: "scout_compute_api_RangeAggregationOperation", ranges: "scout_compute_resolved_api_RangesNode") -> None: + self._ranges = ranges + self._input = input + self._operation = operation + + @builtins.property + def ranges(self) -> "scout_compute_resolved_api_RangesNode": + return self._ranges + + @builtins.property + def input(self) -> "scout_compute_resolved_api_NumericSeriesNode": + return self._input + + @builtins.property + def operation(self) -> "scout_compute_api_RangeAggregationOperation": + return self._operation + + +scout_compute_resolved_api_RangesNumericAggregationNode.__name__ = "RangesNumericAggregationNode" +scout_compute_resolved_api_RangesNumericAggregationNode.__qualname__ = "RangesNumericAggregationNode" +scout_compute_resolved_api_RangesNumericAggregationNode.__module__ = "scout_service_api.scout_compute_resolved_api" + + class scout_compute_resolved_api_RawEnumSeriesNode(ConjureBeanType): @builtins.classmethod @@ -31394,14 +36783,16 @@ class scout_compute_resolved_api_StaleRangesNode(ConjureBeanType): def _fields(cls) -> Dict[str, ConjureFieldDefinition]: return { 'input': ConjureFieldDefinition('input', scout_compute_resolved_api_SeriesNode), - 'threshold': ConjureFieldDefinition('threshold', scout_run_api_Duration) + 'threshold': ConjureFieldDefinition('threshold', scout_run_api_Duration), + 'start_timestamp': ConjureFieldDefinition('startTimestamp', scout_compute_api_Timestamp) } - __slots__: List[str] = ['_input', '_threshold'] + __slots__: List[str] = ['_input', '_threshold', '_start_timestamp'] - def __init__(self, input: "scout_compute_resolved_api_SeriesNode", threshold: "scout_run_api_Duration") -> None: + def __init__(self, input: "scout_compute_resolved_api_SeriesNode", start_timestamp: "scout_compute_api_Timestamp", threshold: "scout_run_api_Duration") -> None: self._input = input self._threshold = threshold + self._start_timestamp = start_timestamp @builtins.property def input(self) -> "scout_compute_resolved_api_SeriesNode": @@ -31411,6 +36802,10 @@ def input(self) -> "scout_compute_resolved_api_SeriesNode": def threshold(self) -> "scout_run_api_Duration": return self._threshold + @builtins.property + def start_timestamp(self) -> "scout_compute_api_Timestamp": + return self._start_timestamp + scout_compute_resolved_api_StaleRangesNode.__name__ = "StaleRangesNode" scout_compute_resolved_api_StaleRangesNode.__qualname__ = "StaleRangesNode" @@ -37216,8 +42611,7 @@ class scout_datasource_connection_ConnectionService(Service): def create_connection(self, auth_header: str, create_connection: "scout_datasource_connection_api_CreateConnection") -> "scout_datasource_connection_api_Connection": """ - Creates a new connection. Requires the admin token but will change in the future once we have -secrets as first class resources. + Creates a new connection. """ _headers: Dict[str, Any] = { @@ -37249,8 +42643,7 @@ def create_connection(self, auth_header: str, create_connection: "scout_datasour def update_connection(self, auth_header: str, request: "scout_datasource_connection_api_UpdateConnectionRequest", rid: str) -> "scout_datasource_connection_api_Connection": """ - Updates an existing connection. Requires the admin token but will change in the future once we have -secrets as first class resources. + Updates an existing connection. """ _headers: Dict[str, Any] = { @@ -37283,8 +42676,7 @@ def update_connection(self, auth_header: str, request: "scout_datasource_connect def update_connection_status(self, auth_header: str, request: "scout_datasource_connection_api_ConnectionStatus", rid: str) -> None: """ - Updates an existing connection status. Requires the admin token but will change in the future once we have -secrets as first class resources. + Updates an existing connection status. """ _headers: Dict[str, Any] = { @@ -37443,6 +42835,68 @@ def list_connections(self, auth_header: str) -> List["scout_datasource_connectio _decoder = ConjureDecoder() return _decoder.decode(_response.json(), List[scout_datasource_connection_api_Connection], self._return_none_for_unknown_union_types) + def archive_connection(self, auth_header: str, rid: str) -> None: + """ + Archives a connection, which simply tags the connection for a client to filter. + """ + + _headers: Dict[str, Any] = { + 'Accept': 'application/json', + 'Authorization': auth_header, + } + + _params: Dict[str, Any] = { + } + + _path_params: Dict[str, Any] = { + 'rid': rid, + } + + _json: Any = None + + _path = '/data-source/connection/v1/connections/{rid}/archive' + _path = _path.format(**_path_params) + + _response: Response = self._request( + 'POST', + self._uri + _path, + params=_params, + headers=_headers, + json=_json) + + return + + def unarchive_connection(self, auth_header: str, rid: str) -> None: + """ + Undoes the archiving of a connection. + """ + + _headers: Dict[str, Any] = { + 'Accept': 'application/json', + 'Authorization': auth_header, + } + + _params: Dict[str, Any] = { + } + + _path_params: Dict[str, Any] = { + 'rid': rid, + } + + _json: Any = None + + _path = '/data-source/connection/v1/connections/{rid}/unarchive' + _path = _path.format(**_path_params) + + _response: Response = self._request( + 'POST', + self._uri + _path, + params=_params, + headers=_headers, + json=_json) + + return + scout_datasource_connection_ConnectionService.__name__ = "ConnectionService" scout_datasource_connection_ConnectionService.__qualname__ = "ConnectionService" @@ -37464,12 +42918,13 @@ def _fields(cls) -> Dict[str, ConjureFieldDefinition]: 'scraping': ConjureFieldDefinition('scraping', OptionalTypeWrapper[scout_datasource_connection_api_ScrapingConfig]), 'should_scrape': ConjureFieldDefinition('shouldScrape', bool), 'limits': ConjureFieldDefinition('limits', OptionalTypeWrapper[scout_datasource_connection_api_LimitsConfig]), - 'connection_status': ConjureFieldDefinition('connectionStatus', scout_datasource_connection_api_ConnectionStatus) + 'connection_status': ConjureFieldDefinition('connectionStatus', scout_datasource_connection_api_ConnectionStatus), + 'is_archived': ConjureFieldDefinition('isArchived', bool) } - __slots__: List[str] = ['_rid', '_display_name', '_description', '_connection_details', '_required_tag_names', '_available_tag_values', '_metadata', '_scraping', '_should_scrape', '_limits', '_connection_status'] + __slots__: List[str] = ['_rid', '_display_name', '_description', '_connection_details', '_required_tag_names', '_available_tag_values', '_metadata', '_scraping', '_should_scrape', '_limits', '_connection_status', '_is_archived'] - def __init__(self, available_tag_values: Dict[str, List[str]], connection_details: "scout_datasource_connection_api_ConnectionDetails", connection_status: "scout_datasource_connection_api_ConnectionStatus", display_name: str, metadata: Dict[str, str], required_tag_names: List[str], rid: str, should_scrape: bool, description: Optional[str] = None, limits: Optional["scout_datasource_connection_api_LimitsConfig"] = None, scraping: Optional["scout_datasource_connection_api_ScrapingConfig"] = None) -> None: + def __init__(self, available_tag_values: Dict[str, List[str]], connection_details: "scout_datasource_connection_api_ConnectionDetails", connection_status: "scout_datasource_connection_api_ConnectionStatus", display_name: str, is_archived: bool, metadata: Dict[str, str], required_tag_names: List[str], rid: str, should_scrape: bool, description: Optional[str] = None, limits: Optional["scout_datasource_connection_api_LimitsConfig"] = None, scraping: Optional["scout_datasource_connection_api_ScrapingConfig"] = None) -> None: self._rid = rid self._display_name = display_name self._description = description @@ -37481,6 +42936,7 @@ def __init__(self, available_tag_values: Dict[str, List[str]], connection_detail self._should_scrape = should_scrape self._limits = limits self._connection_status = connection_status + self._is_archived = is_archived @builtins.property def rid(self) -> str: @@ -37539,6 +42995,10 @@ def limits(self) -> Optional["scout_datasource_connection_api_LimitsConfig"]: def connection_status(self) -> "scout_datasource_connection_api_ConnectionStatus": return self._connection_status + @builtins.property + def is_archived(self) -> bool: + return self._is_archived + scout_datasource_connection_api_Connection.__name__ = "Connection" scout_datasource_connection_api_Connection.__qualname__ = "Connection" @@ -37800,7 +43260,6 @@ def _fields(cls) -> Dict[str, ConjureFieldDefinition]: 'description': ConjureFieldDefinition('description', OptionalTypeWrapper[str]), 'connection_details': ConjureFieldDefinition('connectionDetails', scout_datasource_connection_api_ConnectionDetails), 'metadata': ConjureFieldDefinition('metadata', Dict[str, str]), - 'organization_rid': ConjureFieldDefinition('organizationRid', scout_datasource_connection_api_OrganizationRid), 'required_tag_names': ConjureFieldDefinition('requiredTagNames', List[scout_datasource_connection_api_TagName]), 'available_tag_values': ConjureFieldDefinition('availableTagValues', Dict[scout_datasource_connection_api_TagName, List[scout_datasource_connection_api_TagValue]]), 'scraping': ConjureFieldDefinition('scraping', OptionalTypeWrapper[scout_datasource_connection_api_ScrapingConfig]), @@ -37808,14 +43267,13 @@ def _fields(cls) -> Dict[str, ConjureFieldDefinition]: 'limits': ConjureFieldDefinition('limits', OptionalTypeWrapper[scout_datasource_connection_api_LimitsConfig]) } - __slots__: List[str] = ['_name', '_description', '_connection_details', '_metadata', '_organization_rid', '_required_tag_names', '_available_tag_values', '_scraping', '_should_scrape', '_limits'] + __slots__: List[str] = ['_name', '_description', '_connection_details', '_metadata', '_required_tag_names', '_available_tag_values', '_scraping', '_should_scrape', '_limits'] - def __init__(self, available_tag_values: Dict[str, List[str]], connection_details: "scout_datasource_connection_api_ConnectionDetails", metadata: Dict[str, str], name: str, organization_rid: str, required_tag_names: List[str], should_scrape: bool, description: Optional[str] = None, limits: Optional["scout_datasource_connection_api_LimitsConfig"] = None, scraping: Optional["scout_datasource_connection_api_ScrapingConfig"] = None) -> None: + def __init__(self, available_tag_values: Dict[str, List[str]], connection_details: "scout_datasource_connection_api_ConnectionDetails", metadata: Dict[str, str], name: str, required_tag_names: List[str], should_scrape: bool, description: Optional[str] = None, limits: Optional["scout_datasource_connection_api_LimitsConfig"] = None, scraping: Optional["scout_datasource_connection_api_ScrapingConfig"] = None) -> None: self._name = name self._description = description self._connection_details = connection_details self._metadata = metadata - self._organization_rid = organization_rid self._required_tag_names = required_tag_names self._available_tag_values = available_tag_values self._scraping = scraping @@ -37841,13 +43299,6 @@ def metadata(self) -> Dict[str, str]: """ return self._metadata - @builtins.property - def organization_rid(self) -> str: - """ - The organization to which this connection belongs - """ - return self._organization_rid - @builtins.property def required_tag_names(self) -> List[str]: """ @@ -37924,34 +43375,28 @@ def _fields(cls) -> Dict[str, ConjureFieldDefinition]: class scout_datasource_connection_api_HeaderValue(ConjureUnionType): _plain: Optional[str] = None - _secret: Optional[str] = None _secret_rid: Optional[str] = None @builtins.classmethod def _options(cls) -> Dict[str, ConjureFieldDefinition]: return { 'plain': ConjureFieldDefinition('plain', str), - 'secret': ConjureFieldDefinition('secret', scout_datasource_connection_api_SecretName), 'secret_rid': ConjureFieldDefinition('secretRid', scout_datasource_connection_api_SecretRid) } def __init__( self, plain: Optional[str] = None, - secret: Optional[str] = None, secret_rid: Optional[str] = None, type_of_union: Optional[str] = None ) -> None: if type_of_union is None: - if (plain is not None) + (secret is not None) + (secret_rid is not None) != 1: + if (plain is not None) + (secret_rid is not None) != 1: raise ValueError('a union must contain a single member') if plain is not None: self._plain = plain self._type = 'plain' - if secret is not None: - self._secret = secret - self._type = 'secret' if secret_rid is not None: self._secret_rid = secret_rid self._type = 'secretRid' @@ -37961,11 +43406,6 @@ def __init__( raise ValueError('a union value must not be None') self._plain = plain self._type = 'plain' - elif type_of_union == 'secret': - if secret is None: - raise ValueError('a union value must not be None') - self._secret = secret - self._type = 'secret' elif type_of_union == 'secretRid': if secret_rid is None: raise ValueError('a union value must not be None') @@ -37976,10 +43416,6 @@ def __init__( def plain(self) -> Optional[str]: return self._plain - @builtins.property - def secret(self) -> Optional[str]: - return self._secret - @builtins.property def secret_rid(self) -> Optional[str]: return self._secret_rid @@ -37989,8 +43425,6 @@ def accept(self, visitor) -> Any: raise ValueError('{} is not an instance of scout_datasource_connection_api_HeaderValueVisitor'.format(visitor.__class__.__name__)) if self._type == 'plain' and self.plain is not None: return visitor._plain(self.plain) - if self._type == 'secret' and self.secret is not None: - return visitor._secret(self.secret) if self._type == 'secretRid' and self.secret_rid is not None: return visitor._secret_rid(self.secret_rid) @@ -38006,10 +43440,6 @@ class scout_datasource_connection_api_HeaderValueVisitor: def _plain(self, plain: str) -> Any: pass - @abstractmethod - def _secret(self, secret: str) -> Any: - pass - @abstractmethod def _secret_rid(self, secret_rid: str) -> Any: pass @@ -38073,18 +43503,16 @@ def _fields(cls) -> Dict[str, ConjureFieldDefinition]: 'port': ConjureFieldDefinition('port', int), 'headers': ConjureFieldDefinition('headers', Dict[str, scout_datasource_connection_api_HeaderValue]), 'org': ConjureFieldDefinition('org', scout_datasource_connection_api_influx_OrgId), - 'token_secret_name': ConjureFieldDefinition('tokenSecretName', scout_datasource_connection_api_SecretName), - 'token_secret_rid': ConjureFieldDefinition('tokenSecretRid', OptionalTypeWrapper[scout_datasource_connection_api_SecretRid]) + 'token_secret_rid': ConjureFieldDefinition('tokenSecretRid', scout_datasource_connection_api_SecretRid) } - __slots__: List[str] = ['_host', '_port', '_headers', '_org', '_token_secret_name', '_token_secret_rid'] + __slots__: List[str] = ['_host', '_port', '_headers', '_org', '_token_secret_rid'] - def __init__(self, headers: Dict[str, "scout_datasource_connection_api_HeaderValue"], host: str, org: str, port: int, token_secret_name: str, token_secret_rid: Optional[str] = None) -> None: + def __init__(self, headers: Dict[str, "scout_datasource_connection_api_HeaderValue"], host: str, org: str, port: int, token_secret_rid: str) -> None: self._host = host self._port = port self._headers = headers self._org = org - self._token_secret_name = token_secret_name self._token_secret_rid = token_secret_rid @builtins.property @@ -38107,16 +43535,9 @@ def org(self) -> str: return self._org @builtins.property - def token_secret_name(self) -> str: - """ - The name of the secret containing the API token. - """ - return self._token_secret_name - - @builtins.property - def token_secret_rid(self) -> Optional[str]: + def token_secret_rid(self) -> str: """ - Secret Rid of secret stored in Secrets Service. + Secret Rid of token secret stored in Secrets Service. """ return self._token_secret_rid @@ -38582,15 +44003,13 @@ class scout_datasource_connection_api_PasswordCredentials(ConjureBeanType): def _fields(cls) -> Dict[str, ConjureFieldDefinition]: return { 'username': ConjureFieldDefinition('username', str), - 'password_secret_name': ConjureFieldDefinition('passwordSecretName', scout_datasource_connection_api_SecretName), - 'password_secret_rid': ConjureFieldDefinition('passwordSecretRid', OptionalTypeWrapper[scout_datasource_connection_api_SecretRid]) + 'password_secret_rid': ConjureFieldDefinition('passwordSecretRid', scout_datasource_connection_api_SecretRid) } - __slots__: List[str] = ['_username', '_password_secret_name', '_password_secret_rid'] + __slots__: List[str] = ['_username', '_password_secret_rid'] - def __init__(self, password_secret_name: str, username: str, password_secret_rid: Optional[str] = None) -> None: + def __init__(self, password_secret_rid: str, username: str) -> None: self._username = username - self._password_secret_name = password_secret_name self._password_secret_rid = password_secret_rid @builtins.property @@ -38598,16 +44017,9 @@ def username(self) -> str: return self._username @builtins.property - def password_secret_name(self) -> str: + def password_secret_rid(self) -> str: """ - The name of the secret containing the password. - """ - return self._password_secret_name - - @builtins.property - def password_secret_rid(self) -> Optional[str]: - """ - Secret Rid of secret stored in Secrets Service. + Secret Rid of password secret stored in Secrets Service. """ return self._password_secret_rid @@ -38981,18 +44393,16 @@ def _fields(cls) -> Dict[str, ConjureFieldDefinition]: 'host': ConjureFieldDefinition('host', str), 'port': ConjureFieldDefinition('port', int), 'username': ConjureFieldDefinition('username', str), - 'password_secret_name': ConjureFieldDefinition('passwordSecretName', scout_datasource_connection_api_SecretName), - 'password_secret_rid': ConjureFieldDefinition('passwordSecretRid', OptionalTypeWrapper[scout_datasource_connection_api_SecretRid]) + 'password_secret_rid': ConjureFieldDefinition('passwordSecretRid', scout_datasource_connection_api_SecretRid) } - __slots__: List[str] = ['_database', '_host', '_port', '_username', '_password_secret_name', '_password_secret_rid'] + __slots__: List[str] = ['_database', '_host', '_port', '_username', '_password_secret_rid'] - def __init__(self, database: str, host: str, password_secret_name: str, port: int, username: str, password_secret_rid: Optional[str] = None) -> None: + def __init__(self, database: str, host: str, password_secret_rid: str, port: int, username: str) -> None: self._database = database self._host = host self._port = port self._username = username - self._password_secret_name = password_secret_name self._password_secret_rid = password_secret_rid @builtins.property @@ -39015,16 +44425,9 @@ def username(self) -> str: return self._username @builtins.property - def password_secret_name(self) -> str: - """ - The name of the secret containing the password. - """ - return self._password_secret_name - - @builtins.property - def password_secret_rid(self) -> Optional[str]: + def password_secret_rid(self) -> str: """ - Secret Rid of secret stored in Secrets Service. + Secret Rid of password secret stored in Secrets Service. """ return self._password_secret_rid @@ -39557,27 +44960,18 @@ class scout_datasource_connection_api_VisualCrossingConnectionDetails(ConjureBea @builtins.classmethod def _fields(cls) -> Dict[str, ConjureFieldDefinition]: return { - 'key_name': ConjureFieldDefinition('keyName', scout_datasource_connection_api_SecretName), - 'api_key_secret_rid': ConjureFieldDefinition('apiKeySecretRid', OptionalTypeWrapper[scout_datasource_connection_api_SecretRid]) + 'api_key_secret_rid': ConjureFieldDefinition('apiKeySecretRid', scout_datasource_connection_api_SecretRid) } - __slots__: List[str] = ['_key_name', '_api_key_secret_rid'] + __slots__: List[str] = ['_api_key_secret_rid'] - def __init__(self, key_name: str, api_key_secret_rid: Optional[str] = None) -> None: - self._key_name = key_name + def __init__(self, api_key_secret_rid: str) -> None: self._api_key_secret_rid = api_key_secret_rid @builtins.property - def key_name(self) -> str: + def api_key_secret_rid(self) -> str: """ - Reference to the secret containing the API Key for Visual Crossing. - """ - return self._key_name - - @builtins.property - def api_key_secret_rid(self) -> Optional[str]: - """ - Secret Rid of secret stored in Secrets Service. + Secret Rid of API key stored in Secrets Service. """ return self._api_key_secret_rid @@ -40008,14 +45402,14 @@ def generate_slack_webhook_link(self, auth_header: str) -> "scout_integrations_a _decoder = ConjureDecoder() return _decoder.decode(_response.json(), scout_integrations_api_GenerateSlackWebhookResponse, self._return_none_for_unknown_union_types) - def create_slack_webhook(self, code: str, state: str) -> None: + def create_slack_webhook(self, auth_header: str, code: str, state: str) -> None: """ - Creates a new Slack integration. -Should only be called by Slack client redirects after the OAuth flow. + Creates a new Slack integration. Called internally after Slack authorization. """ _headers: Dict[str, Any] = { 'Accept': 'application/json', + 'Authorization': auth_header, } _params: Dict[str, Any] = { @@ -41635,6 +47029,8 @@ class scout_metadata_ResourceType(ConjureEnumType): '''RUN''' VIDEO = 'VIDEO' '''VIDEO''' + ASSET = 'ASSET' + '''ASSET''' UNKNOWN = 'UNKNOWN' '''UNKNOWN''' @@ -41718,25 +47114,31 @@ def _fields(cls) -> Dict[str, ConjureFieldDefinition]: return { 'title': ConjureFieldDefinition('title', str), 'description': ConjureFieldDefinition('description', str), + 'notebook_type': ConjureFieldDefinition('notebookType', OptionalTypeWrapper[scout_notebook_api_NotebookType]), 'is_draft': ConjureFieldDefinition('isDraft', bool), 'state_as_json': ConjureFieldDefinition('stateAsJson', str), 'charts': ConjureFieldDefinition('charts', List[scout_notebook_api_ChartWithOverlays]), - 'run_rid': ConjureFieldDefinition('runRid', scout_run_api_RunRid), + 'run_rid': ConjureFieldDefinition('runRid', OptionalTypeWrapper[scout_run_api_RunRid]), + 'data_scope': ConjureFieldDefinition('dataScope', OptionalTypeWrapper[scout_notebook_api_NotebookDataScope]), 'layout': ConjureFieldDefinition('layout', scout_layout_api_WorkbookLayout), - 'content': ConjureFieldDefinition('content', scout_workbookcommon_api_WorkbookContent) + 'content': ConjureFieldDefinition('content', OptionalTypeWrapper[scout_workbookcommon_api_WorkbookContent]), + 'content_v2': ConjureFieldDefinition('contentV2', OptionalTypeWrapper[scout_workbookcommon_api_UnifiedWorkbookContent]) } - __slots__: List[str] = ['_title', '_description', '_is_draft', '_state_as_json', '_charts', '_run_rid', '_layout', '_content'] + __slots__: List[str] = ['_title', '_description', '_notebook_type', '_is_draft', '_state_as_json', '_charts', '_run_rid', '_data_scope', '_layout', '_content', '_content_v2'] - def __init__(self, charts: List["scout_notebook_api_ChartWithOverlays"], content: "scout_workbookcommon_api_WorkbookContent", description: str, is_draft: bool, layout: "scout_layout_api_WorkbookLayout", run_rid: str, state_as_json: str, title: str) -> None: + def __init__(self, charts: List["scout_notebook_api_ChartWithOverlays"], description: str, is_draft: bool, layout: "scout_layout_api_WorkbookLayout", state_as_json: str, title: str, content: Optional["scout_workbookcommon_api_WorkbookContent"] = None, content_v2: Optional["scout_workbookcommon_api_UnifiedWorkbookContent"] = None, data_scope: Optional["scout_notebook_api_NotebookDataScope"] = None, notebook_type: Optional["scout_notebook_api_NotebookType"] = None, run_rid: Optional[str] = None) -> None: self._title = title self._description = description + self._notebook_type = notebook_type self._is_draft = is_draft self._state_as_json = state_as_json self._charts = charts self._run_rid = run_rid + self._data_scope = data_scope self._layout = layout self._content = content + self._content_v2 = content_v2 @builtins.property def title(self) -> str: @@ -41746,6 +47148,13 @@ def title(self) -> str: def description(self) -> str: return self._description + @builtins.property + def notebook_type(self) -> Optional["scout_notebook_api_NotebookType"]: + """ + Optional for backcompatibility. Default is a normal workbook. + """ + return self._notebook_type + @builtins.property def is_draft(self) -> bool: return self._is_draft @@ -41759,17 +47168,34 @@ def charts(self) -> List["scout_notebook_api_ChartWithOverlays"]: return self._charts @builtins.property - def run_rid(self) -> str: + def run_rid(self) -> Optional[str]: + """ + deprecated. Use dataScope instead + """ return self._run_rid + @builtins.property + def data_scope(self) -> Optional["scout_notebook_api_NotebookDataScope"]: + """ + Optional for back-compatibility. + """ + return self._data_scope + @builtins.property def layout(self) -> "scout_layout_api_WorkbookLayout": return self._layout @builtins.property - def content(self) -> "scout_workbookcommon_api_WorkbookContent": + def content(self) -> Optional["scout_workbookcommon_api_WorkbookContent"]: return self._content + @builtins.property + def content_v2(self) -> Optional["scout_workbookcommon_api_UnifiedWorkbookContent"]: + """ + Optional for backcompatibility + """ + return self._content_v2 + scout_notebook_api_CreateNotebookRequest.__name__ = "CreateNotebookRequest" scout_notebook_api_CreateNotebookRequest.__qualname__ = "CreateNotebookRequest" @@ -41853,12 +47279,13 @@ def _fields(cls) -> Dict[str, ConjureFieldDefinition]: 'state_as_json': ConjureFieldDefinition('stateAsJson', str), 'charts': ConjureFieldDefinition('charts', List[scout_notebook_api_ChartWithOverlays]), 'layout': ConjureFieldDefinition('layout', scout_layout_api_WorkbookLayout), - 'content': ConjureFieldDefinition('content', scout_workbookcommon_api_WorkbookContent) + 'content': ConjureFieldDefinition('content', OptionalTypeWrapper[scout_workbookcommon_api_WorkbookContent]), + 'content_v2': ConjureFieldDefinition('contentV2', scout_workbookcommon_api_UnifiedWorkbookContent) } - __slots__: List[str] = ['_rid', '_snapshot_rid', '_snapshot_author_rid', '_snapshot_created_at', '_metadata', '_state_as_json', '_charts', '_layout', '_content'] + __slots__: List[str] = ['_rid', '_snapshot_rid', '_snapshot_author_rid', '_snapshot_created_at', '_metadata', '_state_as_json', '_charts', '_layout', '_content', '_content_v2'] - def __init__(self, charts: List["scout_notebook_api_ChartWithOverlays"], content: "scout_workbookcommon_api_WorkbookContent", layout: "scout_layout_api_WorkbookLayout", metadata: "scout_notebook_api_NotebookMetadata", rid: str, snapshot_author_rid: str, snapshot_created_at: str, snapshot_rid: str, state_as_json: str) -> None: + def __init__(self, charts: List["scout_notebook_api_ChartWithOverlays"], content_v2: "scout_workbookcommon_api_UnifiedWorkbookContent", layout: "scout_layout_api_WorkbookLayout", metadata: "scout_notebook_api_NotebookMetadata", rid: str, snapshot_author_rid: str, snapshot_created_at: str, snapshot_rid: str, state_as_json: str, content: Optional["scout_workbookcommon_api_WorkbookContent"] = None) -> None: self._rid = rid self._snapshot_rid = snapshot_rid self._snapshot_author_rid = snapshot_author_rid @@ -41868,6 +47295,7 @@ def __init__(self, charts: List["scout_notebook_api_ChartWithOverlays"], content self._charts = charts self._layout = layout self._content = content + self._content_v2 = content_v2 @builtins.property def rid(self) -> str: @@ -41902,21 +47330,83 @@ def layout(self) -> "scout_layout_api_WorkbookLayout": return self._layout @builtins.property - def content(self) -> "scout_workbookcommon_api_WorkbookContent": + def content(self) -> Optional["scout_workbookcommon_api_WorkbookContent"]: return self._content + @builtins.property + def content_v2(self) -> "scout_workbookcommon_api_UnifiedWorkbookContent": + return self._content_v2 + scout_notebook_api_Notebook.__name__ = "Notebook" scout_notebook_api_Notebook.__qualname__ = "Notebook" scout_notebook_api_Notebook.__module__ = "scout_service_api.scout_notebook_api" +class scout_notebook_api_NotebookDataScope(ConjureUnionType): + _run_rids: Optional[List[str]] = None + + @builtins.classmethod + def _options(cls) -> Dict[str, ConjureFieldDefinition]: + return { + 'run_rids': ConjureFieldDefinition('runRids', List[scout_run_api_RunRid]) + } + + def __init__( + self, + run_rids: Optional[List[str]] = None, + type_of_union: Optional[str] = None + ) -> None: + if type_of_union is None: + if (run_rids is not None) != 1: + raise ValueError('a union must contain a single member') + + if run_rids is not None: + self._run_rids = run_rids + self._type = 'runRids' + + elif type_of_union == 'runRids': + if run_rids is None: + raise ValueError('a union value must not be None') + self._run_rids = run_rids + self._type = 'runRids' + + @builtins.property + def run_rids(self) -> Optional[List[str]]: + return self._run_rids + + def accept(self, visitor) -> Any: + if not isinstance(visitor, scout_notebook_api_NotebookDataScopeVisitor): + raise ValueError('{} is not an instance of scout_notebook_api_NotebookDataScopeVisitor'.format(visitor.__class__.__name__)) + if self._type == 'runRids' and self.run_rids is not None: + return visitor._run_rids(self.run_rids) + + +scout_notebook_api_NotebookDataScope.__name__ = "NotebookDataScope" +scout_notebook_api_NotebookDataScope.__qualname__ = "NotebookDataScope" +scout_notebook_api_NotebookDataScope.__module__ = "scout_service_api.scout_notebook_api" + + +class scout_notebook_api_NotebookDataScopeVisitor: + + @abstractmethod + def _run_rids(self, run_rids: List[str]) -> Any: + pass + + +scout_notebook_api_NotebookDataScopeVisitor.__name__ = "NotebookDataScopeVisitor" +scout_notebook_api_NotebookDataScopeVisitor.__qualname__ = "NotebookDataScopeVisitor" +scout_notebook_api_NotebookDataScopeVisitor.__module__ = "scout_service_api.scout_notebook_api" + + class scout_notebook_api_NotebookMetadata(ConjureBeanType): @builtins.classmethod def _fields(cls) -> Dict[str, ConjureFieldDefinition]: return { - 'run_rid': ConjureFieldDefinition('runRid', scout_run_api_RunRid), + 'run_rid': ConjureFieldDefinition('runRid', OptionalTypeWrapper[scout_run_api_RunRid]), + 'data_scope': ConjureFieldDefinition('dataScope', scout_notebook_api_NotebookDataScope), + 'notebook_type': ConjureFieldDefinition('notebookType', scout_notebook_api_NotebookType), 'title': ConjureFieldDefinition('title', str), 'description': ConjureFieldDefinition('description', str), 'is_draft': ConjureFieldDefinition('isDraft', bool), @@ -41928,10 +47418,12 @@ def _fields(cls) -> Dict[str, ConjureFieldDefinition]: 'labels': ConjureFieldDefinition('labels', List[scout_run_api_Label]) } - __slots__: List[str] = ['_run_rid', '_title', '_description', '_is_draft', '_is_archived', '_lock', '_created_by_rid', '_created_at', '_properties', '_labels'] + __slots__: List[str] = ['_run_rid', '_data_scope', '_notebook_type', '_title', '_description', '_is_draft', '_is_archived', '_lock', '_created_by_rid', '_created_at', '_properties', '_labels'] - def __init__(self, created_at: str, created_by_rid: str, description: str, is_archived: bool, is_draft: bool, labels: List[str], lock: "scout_notebook_api_Lock", properties: Dict[str, str], run_rid: str, title: str) -> None: + def __init__(self, created_at: str, created_by_rid: str, data_scope: "scout_notebook_api_NotebookDataScope", description: str, is_archived: bool, is_draft: bool, labels: List[str], lock: "scout_notebook_api_Lock", notebook_type: "scout_notebook_api_NotebookType", properties: Dict[str, str], title: str, run_rid: Optional[str] = None) -> None: self._run_rid = run_rid + self._data_scope = data_scope + self._notebook_type = notebook_type self._title = title self._description = description self._is_draft = is_draft @@ -41943,9 +47435,20 @@ def __init__(self, created_at: str, created_by_rid: str, description: str, is_ar self._labels = labels @builtins.property - def run_rid(self) -> str: + def run_rid(self) -> Optional[str]: + """ + deprecated. Use dataScope instead + """ return self._run_rid + @builtins.property + def data_scope(self) -> "scout_notebook_api_NotebookDataScope": + return self._data_scope + + @builtins.property + def notebook_type(self) -> "scout_notebook_api_NotebookType": + return self._notebook_type + @builtins.property def title(self) -> str: return self._title @@ -42017,6 +47520,24 @@ def metadata(self) -> "scout_notebook_api_NotebookMetadata": scout_notebook_api_NotebookMetadataWithRid.__module__ = "scout_service_api.scout_notebook_api" +class scout_notebook_api_NotebookType(ConjureEnumType): + + WORKBOOK = 'WORKBOOK' + '''WORKBOOK''' + COMPARISON_WORKBOOK = 'COMPARISON_WORKBOOK' + '''COMPARISON_WORKBOOK''' + UNKNOWN = 'UNKNOWN' + '''UNKNOWN''' + + def __reduce_ex__(self, proto): + return self.__class__, (self.name,) + + +scout_notebook_api_NotebookType.__name__ = "NotebookType" +scout_notebook_api_NotebookType.__qualname__ = "NotebookType" +scout_notebook_api_NotebookType.__module__ = "scout_service_api.scout_notebook_api" + + class scout_notebook_api_SearchNotebooksQuery(ConjureUnionType): _and_: Optional[List["scout_notebook_api_SearchNotebooksQuery"]] = None _or_: Optional[List["scout_notebook_api_SearchNotebooksQuery"]] = None @@ -42026,6 +47547,7 @@ class scout_notebook_api_SearchNotebooksQuery(ConjureUnionType): _property: Optional["scout_run_api_Property"] = None _author_rid: Optional[str] = None _run_rid: Optional[str] = None + _notebook_type: Optional["scout_notebook_api_NotebookType"] = None @builtins.classmethod def _options(cls) -> Dict[str, ConjureFieldDefinition]: @@ -42037,7 +47559,8 @@ def _options(cls) -> Dict[str, ConjureFieldDefinition]: 'label': ConjureFieldDefinition('label', scout_run_api_Label), 'property': ConjureFieldDefinition('property', scout_run_api_Property), 'author_rid': ConjureFieldDefinition('authorRid', scout_rids_api_UserRid), - 'run_rid': ConjureFieldDefinition('runRid', scout_run_api_RunRid) + 'run_rid': ConjureFieldDefinition('runRid', scout_run_api_RunRid), + 'notebook_type': ConjureFieldDefinition('notebookType', scout_notebook_api_NotebookType) } def __init__( @@ -42050,10 +47573,11 @@ def __init__( property: Optional["scout_run_api_Property"] = None, author_rid: Optional[str] = None, run_rid: Optional[str] = None, + notebook_type: Optional["scout_notebook_api_NotebookType"] = None, type_of_union: Optional[str] = None ) -> None: if type_of_union is None: - if (and_ is not None) + (or_ is not None) + (exact_match is not None) + (search_text is not None) + (label is not None) + (property is not None) + (author_rid is not None) + (run_rid is not None) != 1: + if (and_ is not None) + (or_ is not None) + (exact_match is not None) + (search_text is not None) + (label is not None) + (property is not None) + (author_rid is not None) + (run_rid is not None) + (notebook_type is not None) != 1: raise ValueError('a union must contain a single member') if and_ is not None: @@ -42080,6 +47604,9 @@ def __init__( if run_rid is not None: self._run_rid = run_rid self._type = 'runRid' + if notebook_type is not None: + self._notebook_type = notebook_type + self._type = 'notebookType' elif type_of_union == 'and': if and_ is None: @@ -42121,6 +47648,11 @@ def __init__( raise ValueError('a union value must not be None') self._run_rid = run_rid self._type = 'runRid' + elif type_of_union == 'notebookType': + if notebook_type is None: + raise ValueError('a union value must not be None') + self._notebook_type = notebook_type + self._type = 'notebookType' @builtins.property def and_(self) -> Optional[List["scout_notebook_api_SearchNotebooksQuery"]]: @@ -42157,6 +47689,10 @@ def author_rid(self) -> Optional[str]: def run_rid(self) -> Optional[str]: return self._run_rid + @builtins.property + def notebook_type(self) -> Optional["scout_notebook_api_NotebookType"]: + return self._notebook_type + def accept(self, visitor) -> Any: if not isinstance(visitor, scout_notebook_api_SearchNotebooksQueryVisitor): raise ValueError('{} is not an instance of scout_notebook_api_SearchNotebooksQueryVisitor'.format(visitor.__class__.__name__)) @@ -42176,6 +47712,8 @@ def accept(self, visitor) -> Any: return visitor._author_rid(self.author_rid) if self._type == 'runRid' and self.run_rid is not None: return visitor._run_rid(self.run_rid) + if self._type == 'notebookType' and self.notebook_type is not None: + return visitor._notebook_type(self.notebook_type) scout_notebook_api_SearchNotebooksQuery.__name__ = "SearchNotebooksQuery" @@ -42217,6 +47755,10 @@ def _author_rid(self, author_rid: str) -> Any: def _run_rid(self, run_rid: str) -> Any: pass + @abstractmethod + def _notebook_type(self, notebook_type: "scout_notebook_api_NotebookType") -> Any: + pass + scout_notebook_api_SearchNotebooksQueryVisitor.__name__ = "SearchNotebooksQueryVisitor" scout_notebook_api_SearchNotebooksQueryVisitor.__qualname__ = "SearchNotebooksQueryVisitor" @@ -42366,16 +47908,18 @@ class scout_notebook_api_UpdateNotebookMetadataRequest(ConjureBeanType): def _fields(cls) -> Dict[str, ConjureFieldDefinition]: return { 'title': ConjureFieldDefinition('title', OptionalTypeWrapper[str]), + 'data_scope': ConjureFieldDefinition('dataScope', OptionalTypeWrapper[scout_notebook_api_NotebookDataScope]), 'description': ConjureFieldDefinition('description', OptionalTypeWrapper[str]), 'properties': ConjureFieldDefinition('properties', OptionalTypeWrapper[Dict[scout_run_api_PropertyName, scout_run_api_PropertyValue]]), 'labels': ConjureFieldDefinition('labels', OptionalTypeWrapper[List[scout_run_api_Label]]), 'is_draft': ConjureFieldDefinition('isDraft', OptionalTypeWrapper[bool]) } - __slots__: List[str] = ['_title', '_description', '_properties', '_labels', '_is_draft'] + __slots__: List[str] = ['_title', '_data_scope', '_description', '_properties', '_labels', '_is_draft'] - def __init__(self, description: Optional[str] = None, is_draft: Optional[bool] = None, labels: Optional[List[str]] = None, properties: Optional[Dict[str, str]] = None, title: Optional[str] = None) -> None: + def __init__(self, data_scope: Optional["scout_notebook_api_NotebookDataScope"] = None, description: Optional[str] = None, is_draft: Optional[bool] = None, labels: Optional[List[str]] = None, properties: Optional[Dict[str, str]] = None, title: Optional[str] = None) -> None: self._title = title + self._data_scope = data_scope self._description = description self._properties = properties self._labels = labels @@ -42385,6 +47929,13 @@ def __init__(self, description: Optional[str] = None, is_draft: Optional[bool] = def title(self) -> Optional[str]: return self._title + @builtins.property + def data_scope(self) -> Optional["scout_notebook_api_NotebookDataScope"]: + """ + Optional for backcompatibility. + """ + return self._data_scope + @builtins.property def description(self) -> Optional[str]: return self._description @@ -42415,17 +47966,19 @@ def _fields(cls) -> Dict[str, ConjureFieldDefinition]: 'state_as_json': ConjureFieldDefinition('stateAsJson', str), 'charts': ConjureFieldDefinition('charts', List[scout_notebook_api_ChartWithOverlays]), 'layout': ConjureFieldDefinition('layout', scout_layout_api_WorkbookLayout), - 'content': ConjureFieldDefinition('content', scout_workbookcommon_api_WorkbookContent), + 'content': ConjureFieldDefinition('content', OptionalTypeWrapper[scout_workbookcommon_api_WorkbookContent]), + 'content_v2': ConjureFieldDefinition('contentV2', OptionalTypeWrapper[scout_workbookcommon_api_UnifiedWorkbookContent]), 'latest_snapshot_rid': ConjureFieldDefinition('latestSnapshotRid', OptionalTypeWrapper[scout_rids_api_SnapshotRid]) } - __slots__: List[str] = ['_state_as_json', '_charts', '_layout', '_content', '_latest_snapshot_rid'] + __slots__: List[str] = ['_state_as_json', '_charts', '_layout', '_content', '_content_v2', '_latest_snapshot_rid'] - def __init__(self, charts: List["scout_notebook_api_ChartWithOverlays"], content: "scout_workbookcommon_api_WorkbookContent", layout: "scout_layout_api_WorkbookLayout", state_as_json: str, latest_snapshot_rid: Optional[str] = None) -> None: + def __init__(self, charts: List["scout_notebook_api_ChartWithOverlays"], layout: "scout_layout_api_WorkbookLayout", state_as_json: str, content: Optional["scout_workbookcommon_api_WorkbookContent"] = None, content_v2: Optional["scout_workbookcommon_api_UnifiedWorkbookContent"] = None, latest_snapshot_rid: Optional[str] = None) -> None: self._state_as_json = state_as_json self._charts = charts self._layout = layout self._content = content + self._content_v2 = content_v2 self._latest_snapshot_rid = latest_snapshot_rid @builtins.property @@ -42441,9 +47994,16 @@ def layout(self) -> "scout_layout_api_WorkbookLayout": return self._layout @builtins.property - def content(self) -> "scout_workbookcommon_api_WorkbookContent": + def content(self) -> Optional["scout_workbookcommon_api_WorkbookContent"]: return self._content + @builtins.property + def content_v2(self) -> Optional["scout_workbookcommon_api_UnifiedWorkbookContent"]: + """ + Optional for backcompatibility + """ + return self._content_v2 + @builtins.property def latest_snapshot_rid(self) -> Optional[str]: """ @@ -42494,6 +48054,22 @@ def __reduce_ex__(self, proto): scout_rids_api_ArchivedStatus.__module__ = "scout_service_api.scout_rids_api" +class scout_rids_api_Empty(ConjureBeanType): + + @builtins.classmethod + def _fields(cls) -> Dict[str, ConjureFieldDefinition]: + return { + } + + __slots__: List[str] = [] + + + +scout_rids_api_Empty.__name__ = "Empty" +scout_rids_api_Empty.__qualname__ = "Empty" +scout_rids_api_Empty.__module__ = "scout_service_api.scout_rids_api" + + class scout_rids_api_VersionedChartRid(ConjureBeanType): @builtins.classmethod @@ -42557,7 +48133,7 @@ class scout_run_api_ChannelMetadata(ConjureBeanType): @builtins.classmethod def _fields(cls) -> Dict[str, ConjureFieldDefinition]: return { - 'name': ConjureFieldDefinition('name', scout_run_api_Channel), + 'name': ConjureFieldDefinition('name', scout_api_Channel), 'data_source': ConjureFieldDefinition('dataSource', scout_run_api_DataSource), 'unit': ConjureFieldDefinition('unit', OptionalTypeWrapper[scout_run_api_Unit]), 'description': ConjureFieldDefinition('description', OptionalTypeWrapper[str]), @@ -42686,7 +48262,7 @@ def _fields(cls) -> Dict[str, ConjureFieldDefinition]: 'labels': ConjureFieldDefinition('labels', List[scout_run_api_Label]), 'links': ConjureFieldDefinition('links', List[scout_run_api_Link]), 'run_prefix': ConjureFieldDefinition('runPrefix', OptionalTypeWrapper[str]), - 'data_sources': ConjureFieldDefinition('dataSources', Dict[scout_run_api_DataSourceRefName, scout_run_api_CreateRunDataSource]), + 'data_sources': ConjureFieldDefinition('dataSources', Dict[scout_api_DataSourceRefName, scout_run_api_CreateRunDataSource]), 'attachments': ConjureFieldDefinition('attachments', List[scout_rids_api_AttachmentRid]) } @@ -43256,7 +48832,7 @@ class scout_run_api_RefNameAndType(ConjureBeanType): @builtins.classmethod def _fields(cls) -> Dict[str, ConjureFieldDefinition]: return { - 'name': ConjureFieldDefinition('name', scout_run_api_DataSourceRefName), + 'name': ConjureFieldDefinition('name', scout_api_DataSourceRefName), 'type': ConjureFieldDefinition('type', scout_run_api_DataSourceType) } @@ -43298,13 +48874,14 @@ def _fields(cls) -> Dict[str, ConjureFieldDefinition]: 'links': ConjureFieldDefinition('links', List[scout_run_api_Link]), 'created_at': ConjureFieldDefinition('createdAt', str), 'updated_at': ConjureFieldDefinition('updatedAt', str), - 'data_sources': ConjureFieldDefinition('dataSources', Dict[scout_run_api_DataSourceRefName, scout_run_api_RunDataSource]), - 'attachments': ConjureFieldDefinition('attachments', List[scout_rids_api_AttachmentRid]) + 'data_sources': ConjureFieldDefinition('dataSources', Dict[scout_api_DataSourceRefName, scout_run_api_RunDataSource]), + 'attachments': ConjureFieldDefinition('attachments', List[scout_rids_api_AttachmentRid]), + 'asset': ConjureFieldDefinition('asset', OptionalTypeWrapper[scout_rids_api_AssetRid]) } - __slots__: List[str] = ['_rid', '_run_number', '_run_prefix', '_title', '_description', '_author_rid', '_start_time', '_end_time', '_properties', '_labels', '_links', '_created_at', '_updated_at', '_data_sources', '_attachments'] + __slots__: List[str] = ['_rid', '_run_number', '_run_prefix', '_title', '_description', '_author_rid', '_start_time', '_end_time', '_properties', '_labels', '_links', '_created_at', '_updated_at', '_data_sources', '_attachments', '_asset'] - def __init__(self, attachments: List[str], created_at: str, data_sources: Dict[str, "scout_run_api_RunDataSource"], description: str, labels: List[str], links: List["scout_run_api_Link"], properties: Dict[str, str], rid: str, run_number: int, start_time: "scout_run_api_UtcTimestamp", title: str, updated_at: str, author_rid: Optional[str] = None, end_time: Optional["scout_run_api_UtcTimestamp"] = None, run_prefix: Optional[str] = None) -> None: + def __init__(self, attachments: List[str], created_at: str, data_sources: Dict[str, "scout_run_api_RunDataSource"], description: str, labels: List[str], links: List["scout_run_api_Link"], properties: Dict[str, str], rid: str, run_number: int, start_time: "scout_run_api_UtcTimestamp", title: str, updated_at: str, asset: Optional[str] = None, author_rid: Optional[str] = None, end_time: Optional["scout_run_api_UtcTimestamp"] = None, run_prefix: Optional[str] = None) -> None: self._rid = rid self._run_number = run_number self._run_prefix = run_prefix @@ -43320,6 +48897,7 @@ def __init__(self, attachments: List[str], created_at: str, data_sources: Dict[s self._updated_at = updated_at self._data_sources = data_sources self._attachments = attachments + self._asset = asset @builtins.property def rid(self) -> str: @@ -43381,6 +48959,10 @@ def data_sources(self) -> Dict[str, "scout_run_api_RunDataSource"]: def attachments(self) -> List[str]: return self._attachments + @builtins.property + def asset(self) -> Optional[str]: + return self._asset + scout_run_api_Run.__name__ = "Run" scout_run_api_Run.__qualname__ = "Run" @@ -43474,7 +49056,7 @@ def _fields(cls) -> Dict[str, ConjureFieldDefinition]: return { 'data_source': ConjureFieldDefinition('dataSource', scout_run_api_DataSource), 'offset': ConjureFieldDefinition('offset', scout_run_api_Duration), - 'ref_name': ConjureFieldDefinition('refName', scout_run_api_DataSourceRefName), + 'ref_name': ConjureFieldDefinition('refName', scout_api_DataSourceRefName), 'timestamp_type': ConjureFieldDefinition('timestampType', scout_run_api_WeakTimestampType), 'series_tags': ConjureFieldDefinition('seriesTags', Dict[scout_series_TagName, scout_series_TagValue]) } @@ -43605,7 +49187,7 @@ def _options(cls) -> Dict[str, ConjureFieldDefinition]: 'label': ConjureFieldDefinition('label', scout_run_api_Label), 'property': ConjureFieldDefinition('property', scout_run_api_Property), 'data_source_series_tag': ConjureFieldDefinition('dataSourceSeriesTag', scout_run_api_DataSourceSeriesTag), - 'data_source_ref_name': ConjureFieldDefinition('dataSourceRefName', scout_run_api_DataSourceRefName), + 'data_source_ref_name': ConjureFieldDefinition('dataSourceRefName', scout_api_DataSourceRefName), 'data_source': ConjureFieldDefinition('dataSource', scout_run_api_DataSource), 'and_': ConjureFieldDefinition('and', List[scout_run_api_SearchQuery]), 'or_': ConjureFieldDefinition('or', List[scout_run_api_SearchQuery]) @@ -43857,8 +49439,8 @@ class scout_run_api_SearchRunChannelsRequest(ConjureBeanType): def _fields(cls) -> Dict[str, ConjureFieldDefinition]: return { 'search_text': ConjureFieldDefinition('searchText', str), - 'ref_name_filter': ConjureFieldDefinition('refNameFilter', OptionalTypeWrapper[List[scout_run_api_DataSourceRefName]]), - 'previously_selected_channels': ConjureFieldDefinition('previouslySelectedChannels', Dict[scout_run_api_DataSourceRefName, List[scout_run_api_Channel]]), + 'ref_name_filter': ConjureFieldDefinition('refNameFilter', OptionalTypeWrapper[List[scout_api_DataSourceRefName]]), + 'previously_selected_channels': ConjureFieldDefinition('previouslySelectedChannels', Dict[scout_api_DataSourceRefName, List[scout_api_Channel]]), 'next_page_token': ConjureFieldDefinition('nextPageToken', OptionalTypeWrapper[scout_api_Token]), 'page_size': ConjureFieldDefinition('pageSize', OptionalTypeWrapper[int]) } @@ -44202,7 +49784,7 @@ def _fields(cls) -> Dict[str, ConjureFieldDefinition]: 'labels': ConjureFieldDefinition('labels', OptionalTypeWrapper[List[scout_run_api_Label]]), 'links': ConjureFieldDefinition('links', OptionalTypeWrapper[List[scout_run_api_Link]]), 'run_prefix': ConjureFieldDefinition('runPrefix', OptionalTypeWrapper[str]), - 'data_sources': ConjureFieldDefinition('dataSources', OptionalTypeWrapper[Dict[scout_run_api_DataSourceRefName, scout_run_api_CreateRunDataSource]]), + 'data_sources': ConjureFieldDefinition('dataSources', OptionalTypeWrapper[Dict[scout_api_DataSourceRefName, scout_run_api_CreateRunDataSource]]), 'attachments': ConjureFieldDefinition('attachments', OptionalTypeWrapper[List[scout_rids_api_AttachmentRid]]) } @@ -46364,16 +51946,18 @@ def _fields(cls) -> Dict[str, ConjureFieldDefinition]: 'data_handle': ConjureFieldDefinition('dataHandle', scout_video_api_Handle), 'frame_rate': ConjureFieldDefinition('frameRate', float), 'duration_seconds': ConjureFieldDefinition('durationSeconds', float), - 'timestamps': ConjureFieldDefinition('timestamps', scout_video_api_SegmentTimestamps) + 'timestamps': ConjureFieldDefinition('timestamps', scout_video_api_SegmentTimestamps), + 'segment_end_timestamp': ConjureFieldDefinition('segmentEndTimestamp', scout_video_api_Timestamp) } - __slots__: List[str] = ['_data_handle', '_frame_rate', '_duration_seconds', '_timestamps'] + __slots__: List[str] = ['_data_handle', '_frame_rate', '_duration_seconds', '_timestamps', '_segment_end_timestamp'] - def __init__(self, data_handle: "scout_video_api_Handle", duration_seconds: float, frame_rate: float, timestamps: "scout_video_api_SegmentTimestamps") -> None: + def __init__(self, data_handle: "scout_video_api_Handle", duration_seconds: float, frame_rate: float, segment_end_timestamp: "scout_video_api_Timestamp", timestamps: "scout_video_api_SegmentTimestamps") -> None: self._data_handle = data_handle self._frame_rate = frame_rate self._duration_seconds = duration_seconds self._timestamps = timestamps + self._segment_end_timestamp = segment_end_timestamp @builtins.property def data_handle(self) -> "scout_video_api_Handle": @@ -46394,6 +51978,10 @@ def duration_seconds(self) -> float: def timestamps(self) -> "scout_video_api_SegmentTimestamps": return self._timestamps + @builtins.property + def segment_end_timestamp(self) -> "scout_video_api_Timestamp": + return self._segment_end_timestamp + scout_video_api_CreateSegment.__name__ = "CreateSegment" scout_video_api_CreateSegment.__qualname__ = "CreateSegment" @@ -47263,6 +52851,9 @@ def frame_rate(self) -> float: @builtins.property def duration_seconds(self) -> float: + """ + The duration of a segment in media time. + """ return self._duration_seconds @builtins.property @@ -48026,13 +53617,90 @@ def _no_manifest(self, no_manifest: "scout_video_api_NoTimestampManifest") -> An scout_video_api_VideoTimestampManifestVisitor.__module__ = "scout_service_api.scout_video_api" +class scout_workbookcommon_api_UnifiedWorkbookContent(ConjureUnionType): + _workbook: Optional["scout_workbookcommon_api_WorkbookContent"] = None + _comparison_workbook: Optional["scout_comparisonnotebook_api_ComparisonWorkbookContent"] = None + + @builtins.classmethod + def _options(cls) -> Dict[str, ConjureFieldDefinition]: + return { + 'workbook': ConjureFieldDefinition('workbook', scout_workbookcommon_api_WorkbookContent), + 'comparison_workbook': ConjureFieldDefinition('comparisonWorkbook', scout_comparisonnotebook_api_ComparisonWorkbookContent) + } + + def __init__( + self, + workbook: Optional["scout_workbookcommon_api_WorkbookContent"] = None, + comparison_workbook: Optional["scout_comparisonnotebook_api_ComparisonWorkbookContent"] = None, + type_of_union: Optional[str] = None + ) -> None: + if type_of_union is None: + if (workbook is not None) + (comparison_workbook is not None) != 1: + raise ValueError('a union must contain a single member') + + if workbook is not None: + self._workbook = workbook + self._type = 'workbook' + if comparison_workbook is not None: + self._comparison_workbook = comparison_workbook + self._type = 'comparisonWorkbook' + + elif type_of_union == 'workbook': + if workbook is None: + raise ValueError('a union value must not be None') + self._workbook = workbook + self._type = 'workbook' + elif type_of_union == 'comparisonWorkbook': + if comparison_workbook is None: + raise ValueError('a union value must not be None') + self._comparison_workbook = comparison_workbook + self._type = 'comparisonWorkbook' + + @builtins.property + def workbook(self) -> Optional["scout_workbookcommon_api_WorkbookContent"]: + return self._workbook + + @builtins.property + def comparison_workbook(self) -> Optional["scout_comparisonnotebook_api_ComparisonWorkbookContent"]: + return self._comparison_workbook + + def accept(self, visitor) -> Any: + if not isinstance(visitor, scout_workbookcommon_api_UnifiedWorkbookContentVisitor): + raise ValueError('{} is not an instance of scout_workbookcommon_api_UnifiedWorkbookContentVisitor'.format(visitor.__class__.__name__)) + if self._type == 'workbook' and self.workbook is not None: + return visitor._workbook(self.workbook) + if self._type == 'comparisonWorkbook' and self.comparison_workbook is not None: + return visitor._comparison_workbook(self.comparison_workbook) + + +scout_workbookcommon_api_UnifiedWorkbookContent.__name__ = "UnifiedWorkbookContent" +scout_workbookcommon_api_UnifiedWorkbookContent.__qualname__ = "UnifiedWorkbookContent" +scout_workbookcommon_api_UnifiedWorkbookContent.__module__ = "scout_service_api.scout_workbookcommon_api" + + +class scout_workbookcommon_api_UnifiedWorkbookContentVisitor: + + @abstractmethod + def _workbook(self, workbook: "scout_workbookcommon_api_WorkbookContent") -> Any: + pass + + @abstractmethod + def _comparison_workbook(self, comparison_workbook: "scout_comparisonnotebook_api_ComparisonWorkbookContent") -> Any: + pass + + +scout_workbookcommon_api_UnifiedWorkbookContentVisitor.__name__ = "UnifiedWorkbookContentVisitor" +scout_workbookcommon_api_UnifiedWorkbookContentVisitor.__qualname__ = "UnifiedWorkbookContentVisitor" +scout_workbookcommon_api_UnifiedWorkbookContentVisitor.__module__ = "scout_service_api.scout_workbookcommon_api" + + class scout_workbookcommon_api_WorkbookContent(ConjureBeanType): @builtins.classmethod def _fields(cls) -> Dict[str, ConjureFieldDefinition]: return { - 'channel_variables': ConjureFieldDefinition('channelVariables', scout_channelvariables_api_ChannelVariableMap), - 'charts': ConjureFieldDefinition('charts', scout_chartdefinition_api_ChartDefinitionMap) + 'channel_variables': ConjureFieldDefinition('channelVariables', scout_channelvariables_api_WorkbookChannelVariableMap), + 'charts': ConjureFieldDefinition('charts', scout_chartdefinition_api_WorkbookChartDefinitionMap) } __slots__: List[str] = ['_channel_variables', '_charts'] @@ -52894,10 +58562,229 @@ def nanos(self) -> int: timeseries_seriescache_api_Timestamp.__module__ = "scout_service_api.timeseries_seriescache_api" +class upload_api_UploadService(Service): + """ + The Upload Service manages file uploads to S3. + """ + + def initiate_multipart_upload(self, auth_header: str, upload_request: "ingest_api_InitiateMultipartUploadRequest") -> "ingest_api_InitiateMultipartUploadResponse": + """ + Initiates a multipart upload to S3. +Does not directly upload any parts, but returns an uploadId used to upload parts. + """ + + _headers: Dict[str, Any] = { + 'Accept': 'application/json', + 'Content-Type': 'application/json', + 'Authorization': auth_header, + } + + _params: Dict[str, Any] = { + } + + _path_params: Dict[str, Any] = { + } + + _json: Any = ConjureEncoder().default(upload_request) + + _path = '/upload/v1/multipart-upload' + _path = _path.format(**_path_params) + + _response: Response = self._request( + 'POST', + self._uri + _path, + params=_params, + headers=_headers, + json=_json) + + _decoder = ConjureDecoder() + return _decoder.decode(_response.json(), ingest_api_InitiateMultipartUploadResponse, self._return_none_for_unknown_union_types) + + def list_parts(self, auth_header: str, key: str, upload_id: str) -> List["ingest_api_PartWithSize"]: + """ + Lists the parts that have been uploaded for a given uploadId. + """ + + _headers: Dict[str, Any] = { + 'Accept': 'application/json', + 'Authorization': auth_header, + } + + _params: Dict[str, Any] = { + 'key': key, + } + + _path_params: Dict[str, Any] = { + 'uploadId': upload_id, + } + + _json: Any = None + + _path = '/upload/v1/multipart-upload/{uploadId}' + _path = _path.format(**_path_params) + + _response: Response = self._request( + 'GET', + self._uri + _path, + params=_params, + headers=_headers, + json=_json) + + _decoder = ConjureDecoder() + return _decoder.decode(_response.json(), List[ingest_api_PartWithSize], self._return_none_for_unknown_union_types) + + def sign_part(self, auth_header: str, key: str, part_number: int, upload_id: str) -> "ingest_api_SignPartResponse": + """ + Signs an upload request for a single part. +Returns a URL that will execute the upload without further authentication. + """ + + _headers: Dict[str, Any] = { + 'Accept': 'application/json', + 'Authorization': auth_header, + } + + _params: Dict[str, Any] = { + 'key': key, + 'partNumber': part_number, + } + + _path_params: Dict[str, Any] = { + 'uploadId': upload_id, + } + + _json: Any = None + + _path = '/upload/v1/multipart-upload/{uploadId}' + _path = _path.format(**_path_params) + + _response: Response = self._request( + 'POST', + self._uri + _path, + params=_params, + headers=_headers, + json=_json) + + _decoder = ConjureDecoder() + return _decoder.decode(_response.json(), ingest_api_SignPartResponse, self._return_none_for_unknown_union_types) + + def complete_multipart_upload(self, auth_header: str, key: str, upload_id: str, parts: List["ingest_api_Part"] = None) -> "ingest_api_CompleteMultipartUploadResponse": + """ + Completes a multipart upload to S3. This should be called after all parts have been uploaded. + """ + parts = parts if parts is not None else [] + + _headers: Dict[str, Any] = { + 'Accept': 'application/json', + 'Content-Type': 'application/json', + 'Authorization': auth_header, + } + + _params: Dict[str, Any] = { + 'key': key, + } + + _path_params: Dict[str, Any] = { + 'uploadId': upload_id, + } + + _json: Any = ConjureEncoder().default(parts) + + _path = '/upload/v1/multipart-upload/{uploadId}/complete' + _path = _path.format(**_path_params) + + _response: Response = self._request( + 'POST', + self._uri + _path, + params=_params, + headers=_headers, + json=_json) + + _decoder = ConjureDecoder() + return _decoder.decode(_response.json(), ingest_api_CompleteMultipartUploadResponse, self._return_none_for_unknown_union_types) + + def abort_multipart_upload(self, auth_header: str, key: str, upload_id: str) -> str: + """ + Aborts a multipart upload to S3. +Frees storage used by previously uploaded parts and prevents further uploads to the same uploadId. + """ + + _headers: Dict[str, Any] = { + 'Accept': 'application/json', + 'Authorization': auth_header, + } + + _params: Dict[str, Any] = { + 'key': key, + } + + _path_params: Dict[str, Any] = { + 'uploadId': upload_id, + } + + _json: Any = None + + _path = '/upload/v1/multipart-upload/{uploadId}/abort' + _path = _path.format(**_path_params) + + _response: Response = self._request( + 'POST', + self._uri + _path, + params=_params, + headers=_headers, + json=_json) + + _decoder = ConjureDecoder() + return _decoder.decode(_response.json(), ingest_api_Ignored, self._return_none_for_unknown_union_types) + + def upload_file(self, auth_header: str, body: Any, file_name: str, size_bytes: Optional[int] = None) -> str: + """ + Uploads a file to S3. Intended for smaller files. + """ + + _headers: Dict[str, Any] = { + 'Accept': 'application/json', + 'Content-Type': 'application/octet-stream', + 'Authorization': auth_header, + } + + _params: Dict[str, Any] = { + 'fileName': file_name, + 'sizeBytes': size_bytes, + } + + _path_params: Dict[str, Any] = { + } + + _data: Any = body + + _path = '/upload/v1/upload-file' + _path = _path.format(**_path_params) + + _response: Response = self._request( + 'POST', + self._uri + _path, + params=_params, + headers=_headers, + data=_data) + + _decoder = ConjureDecoder() + return _decoder.decode(_response.json(), ingest_api_S3Path, self._return_none_for_unknown_union_types) + + +upload_api_UploadService.__name__ = "UploadService" +upload_api_UploadService.__qualname__ = "UploadService" +upload_api_UploadService.__module__ = "scout_service_api.upload_api" + + timeseries_logicalseries_api_MeasurementName = str +scout_compute_api_ErrorType = str + timeseries_seriescache_api_ChunkRid = str +ingest_api_DataSourceRid = str + datasource_api_Channel = str scout_compute_api_LogicalSeriesRid = str @@ -52916,6 +58803,8 @@ def nanos(self) -> int: scout_compute_api_SeriesName = str +ingest_api_Label = str + scout_video_api_PropertyValue = str scout_catalog_ErrorType = str @@ -52928,6 +58817,8 @@ def nanos(self) -> int: scout_rids_api_Version = int +ingest_api_DataSourceRefName = str + scout_chartdefinition_api_AxisId = str scout_run_api_RunRid = str @@ -52950,6 +58841,8 @@ def nanos(self) -> int: attachments_api_PropertyName = str +scout_compute_api_ErrorCode = int + datasource_logset_api_LogSetRid = str authentication_api_OrgRid = str @@ -52958,14 +58851,16 @@ def nanos(self) -> int: timeseries_archetype_api_SeriesArchetypeName = str +ingest_api_S3Path = str + +ingest_api_ErrorType = str + timeseries_logicalseries_api_FieldName = str secrets_api_PropertyValue = str datasource_PropertyName = str -scout_run_api_DataSourceRefName = str - timeseries_logicalseries_api_LocationName = str scout_datareview_api_CheckAlertRid = str @@ -52974,6 +58869,8 @@ def nanos(self) -> int: scout_channelvariables_api_ChannelVariableName = str +scout_channelvariables_api_WorkbookChannelVariableMap = Dict[scout_channelvariables_api_ChannelVariableName, scout_channelvariables_api_ChannelVariable] + scout_rids_api_ChecklistRid = str scout_run_api_PropertyValue = str @@ -53024,9 +58921,9 @@ def nanos(self) -> int: scout_rids_api_AssetRid = str -timeseries_logicalseries_api_BucketName = str +datasource_DatasetRid = str -scout_channelvariables_api_ChannelVariableMap = Dict[scout_channelvariables_api_ChannelVariableName, scout_channelvariables_api_ChannelVariable] +timeseries_logicalseries_api_BucketName = str scout_api_HexColor = str @@ -53040,12 +58937,12 @@ def nanos(self) -> int: scout_rids_api_AttachmentRid = str -scout_chartdefinition_api_ChartDefinitionMap = Dict[scout_rids_api_ChartRid, scout_chartdefinition_api_ChartDefinition] - timeseries_logicalseries_api_TableName = str scout_rids_api_CheckLineageRid = str +ingest_api_RunRid = str + scout_versioning_api_CommitId = str scout_datasource_connection_api_SchemaName = str @@ -53094,14 +58991,20 @@ def nanos(self) -> int: scout_video_api_PropertyName = str +datasource_DatasetFileId = str + secrets_api_SecretRid = str scout_chart_api_JsonString = str +scout_api_DataSourceRefName = str + scout_datasource_connection_api_TagName = str timeseries_logicalseries_api_MeasureName = str +scout_chartdefinition_api_WorkbookChartDefinitionMap = Dict[scout_rids_api_ChartRid, scout_chartdefinition_api_ChartDefinition] + datasource_Token = str scout_versioning_api_BranchRid = str @@ -53110,7 +59013,7 @@ def nanos(self) -> int: scout_integrations_api_IntegrationRid = str -scout_run_api_Channel = str +scout_api_Channel = str scout_units_api_UnitName = str @@ -53118,6 +59021,8 @@ def nanos(self) -> int: scout_datasource_connection_api_NominalDataSourceRid = str +scout_compute_representation_api_ComputeExpression = str + scout_video_api_S3Path = str secrets_api_Label = str @@ -53128,16 +59033,24 @@ def nanos(self) -> int: scout_video_api_VideoRid = str +ingest_api_PropertyValue = str + +authorization_OrgRid = str + scout_datasource_connection_api_influx_OrgId = str scout_datasource_connection_api_ColumnName = str storage_writer_api_MeasurementName = str +scout_comparisonnotebook_api_ComparisonChartDefinitionMap = Dict[scout_rids_api_ChartRid, scout_comparisonnotebook_api_ChartDefinition] + attachments_api_S3Path = str storage_writer_api_Field = str +ingest_api_PropertyName = str + scout_asset_api_SeriesTagName = str scout_compute_api_FunctionReference = str @@ -53168,6 +59081,8 @@ def nanos(self) -> int: scout_rids_api_UserRid = str +ingest_api_Ignored = str + scout_rids_api_FunctionRid = str secrets_api_Token = str @@ -53178,3 +59093,7 @@ def nanos(self) -> int: authentication_api_UserRid = str +scout_comparisonnotebook_api_VariableName = str + +scout_comparisonnotebook_api_ComparisonChannelVariableMap = Dict[scout_comparisonnotebook_api_VariableName, scout_comparisonnotebook_api_ChannelVariable] + diff --git a/nominal/_api/combined/authentication_api/__init__.py b/nominal/_api/combined/authentication_api/__init__.py index c4890721..30dbb8fe 100644 --- a/nominal/_api/combined/authentication_api/__init__.py +++ b/nominal/_api/combined/authentication_api/__init__.py @@ -5,8 +5,8 @@ authentication_api_DefaultTimeRangeTypeSetting as DefaultTimeRangeTypeSetting, authentication_api_OrgRid as OrgRid, authentication_api_OrgSettings as OrgSettings, - authentication_api_OrgV2 as OrgV2, authentication_api_SearchUsersResponse as SearchUsersResponse, + authentication_api_TimezoneSetting as TimezoneSetting, authentication_api_UpdateMyProfileRequest as UpdateMyProfileRequest, authentication_api_UserRid as UserRid, authentication_api_UserSettings as UserSettings, diff --git a/nominal/_api/combined/authorization/__init__.py b/nominal/_api/combined/authorization/__init__.py index 2c20522d..64555ab6 100644 --- a/nominal/_api/combined/authorization/__init__.py +++ b/nominal/_api/combined/authorization/__init__.py @@ -1,7 +1,23 @@ # coding=utf-8 from .._impl import ( + authorization_AppendOrgAssignmentRulesRequest as AppendOrgAssignmentRulesRequest, authorization_AuthorizationRequest as AuthorizationRequest, authorization_AuthorizationService as AuthorizationService, + authorization_Condition as Condition, + authorization_ConditionVisitor as ConditionVisitor, + authorization_ContainsClaimCondition as ContainsClaimCondition, + authorization_ExactClaimCondition as ExactClaimCondition, + authorization_GetAccessTokenRequest as GetAccessTokenRequest, + authorization_GetAccessTokenResponse as GetAccessTokenResponse, + authorization_OrgAssignmentRule as OrgAssignmentRule, + authorization_OrgAssignmentRulesResponse as OrgAssignmentRulesResponse, + authorization_OrgRid as OrgRid, + authorization_RegexClaimCondition as RegexClaimCondition, authorization_RegistrationRequest as RegistrationRequest, + authorization_RemoveUserFilterForOneOrgRequest as RemoveUserFilterForOneOrgRequest, + authorization_SetOrgAssignmentRulesRequest as SetOrgAssignmentRulesRequest, + authorization_SetUserFilterForOneOrgRequest as SetUserFilterForOneOrgRequest, + authorization_UserFilter as UserFilter, + authorization_UserFiltersResponse as UserFiltersResponse, ) diff --git a/nominal/_api/combined/datasource/__init__.py b/nominal/_api/combined/datasource/__init__.py index 196fd5eb..cd373be4 100644 --- a/nominal/_api/combined/datasource/__init__.py +++ b/nominal/_api/combined/datasource/__init__.py @@ -1,5 +1,7 @@ # coding=utf-8 from .._impl import ( + datasource_DatasetFileId as DatasetFileId, + datasource_DatasetRid as DatasetRid, datasource_Label as Label, datasource_Property as Property, datasource_PropertyName as PropertyName, diff --git a/nominal/_api/ingest/ingest_api/__init__.py b/nominal/_api/combined/ingest_api/__init__.py similarity index 89% rename from nominal/_api/ingest/ingest_api/__init__.py rename to nominal/_api/combined/ingest_api/__init__.py index 2e48a17e..8b345085 100644 --- a/nominal/_api/ingest/ingest_api/__init__.py +++ b/nominal/_api/combined/ingest_api/__init__.py @@ -5,7 +5,6 @@ ingest_api_AsyncHandle as AsyncHandle, ingest_api_ChannelConfig as ChannelConfig, ingest_api_CompleteMultipartUploadResponse as CompleteMultipartUploadResponse, - ingest_api_CsvProperties as CsvProperties, ingest_api_CustomTimestamp as CustomTimestamp, ingest_api_DataSourceRefName as DataSourceRefName, ingest_api_DataSourceRid as DataSourceRid, @@ -19,18 +18,20 @@ ingest_api_EpochTimestamp as EpochTimestamp, ingest_api_ErrorResult as ErrorResult, ingest_api_ErrorType as ErrorType, - ingest_api_FileTypeProperties as FileTypeProperties, - ingest_api_FileTypePropertiesVisitor as FileTypePropertiesVisitor, + ingest_api_ExistingDatasetIngestDestination as ExistingDatasetIngestDestination, ingest_api_Ignored as Ignored, ingest_api_InProgressResult as InProgressResult, ingest_api_IngestDataSource as IngestDataSource, ingest_api_IngestDataSourceVisitor as IngestDataSourceVisitor, + ingest_api_IngestDestination as IngestDestination, + ingest_api_IngestDestinationVisitor as IngestDestinationVisitor, ingest_api_IngestProgressV2 as IngestProgressV2, ingest_api_IngestRunDataSource as IngestRunDataSource, ingest_api_IngestRunRequest as IngestRunRequest, ingest_api_IngestRunResponse as IngestRunResponse, ingest_api_IngestService as IngestService, ingest_api_IngestSource as IngestSource, + ingest_api_IngestSourceMetadata as IngestSourceMetadata, ingest_api_IngestSourceVisitor as IngestSourceVisitor, ingest_api_IngestStatus as IngestStatus, ingest_api_IngestStatusV2 as IngestStatusV2, @@ -42,8 +43,8 @@ ingest_api_Iso8601Timestamp as Iso8601Timestamp, ingest_api_Label as Label, ingest_api_NewDataSource as NewDataSource, + ingest_api_NewDatasetIngestDestination as NewDatasetIngestDestination, ingest_api_NoTimestampManifest as NoTimestampManifest, - ingest_api_ParquetProperties as ParquetProperties, ingest_api_Part as Part, ingest_api_PartWithSize as PartWithSize, ingest_api_PropertyName as PropertyName, @@ -64,6 +65,7 @@ ingest_api_TimestampMetadata as TimestampMetadata, ingest_api_TimestampType as TimestampType, ingest_api_TimestampTypeVisitor as TimestampTypeVisitor, + ingest_api_TriggerFileIngest as TriggerFileIngest, ingest_api_TriggerIngest as TriggerIngest, ingest_api_TriggeredIngest as TriggeredIngest, ingest_api_UtcTimestamp as UtcTimestamp, diff --git a/nominal/_api/combined/scout_api/__init__.py b/nominal/_api/combined/scout_api/__init__.py index 09006b37..4542c558 100644 --- a/nominal/_api/combined/scout_api/__init__.py +++ b/nominal/_api/combined/scout_api/__init__.py @@ -1,5 +1,8 @@ # coding=utf-8 from .._impl import ( + scout_api_Channel as Channel, + scout_api_ChannelLocator as ChannelLocator, + scout_api_DataSourceRefName as DataSourceRefName, scout_api_HexColor as HexColor, scout_api_Token as Token, ) diff --git a/nominal/_api/combined/scout_asset_api/__init__.py b/nominal/_api/combined/scout_asset_api/__init__.py index 5bdbe8d3..28e19f7d 100644 --- a/nominal/_api/combined/scout_asset_api/__init__.py +++ b/nominal/_api/combined/scout_asset_api/__init__.py @@ -1,5 +1,6 @@ # coding=utf-8 from .._impl import ( + scout_asset_api_AddDataScopesToAssetRequest as AddDataScopesToAssetRequest, scout_asset_api_Asset as Asset, scout_asset_api_AssetDataScope as AssetDataScope, scout_asset_api_Channel as Channel, @@ -18,7 +19,6 @@ scout_asset_api_SeriesTagValue as SeriesTagValue, scout_asset_api_SortField as SortField, scout_asset_api_SortOptions as SortOptions, - scout_asset_api_TimestampType as TimestampType, scout_asset_api_Unit as Unit, scout_asset_api_UpdateAssetRequest as UpdateAssetRequest, scout_asset_api_UpdateAttachmentsRequest as UpdateAttachmentsRequest, diff --git a/nominal/_api/combined/scout_catalog/__init__.py b/nominal/_api/combined/scout_catalog/__init__.py index 9885e3fd..7f440afe 100644 --- a/nominal/_api/combined/scout_catalog/__init__.py +++ b/nominal/_api/combined/scout_catalog/__init__.py @@ -2,6 +2,7 @@ from .._impl import ( scout_catalog_AbsoluteTimestamp as AbsoluteTimestamp, scout_catalog_AbsoluteTimestampVisitor as AbsoluteTimestampVisitor, + scout_catalog_AddFileToDataset as AddFileToDataset, scout_catalog_AllPropertiesAndLabelsResponse as AllPropertiesAndLabelsResponse, scout_catalog_Bounds as Bounds, scout_catalog_CatalogService as CatalogService, @@ -11,6 +12,8 @@ scout_catalog_CreateDataset as CreateDataset, scout_catalog_CustomTimestamp as CustomTimestamp, scout_catalog_Dataset as Dataset, + scout_catalog_DatasetFile as DatasetFile, + scout_catalog_DatasetFilesPage as DatasetFilesPage, scout_catalog_DatasetFilter as DatasetFilter, scout_catalog_DatasetOriginMetadata as DatasetOriginMetadata, scout_catalog_DeleteSeriesResult as DeleteSeriesResult, @@ -35,6 +38,8 @@ scout_catalog_IngestStatusV2Visitor as IngestStatusV2Visitor, scout_catalog_Iso8601Timestamp as Iso8601Timestamp, scout_catalog_ListDatasetsRequest as ListDatasetsRequest, + scout_catalog_MarkFileIngestError as MarkFileIngestError, + scout_catalog_MarkFileIngestSuccessful as MarkFileIngestSuccessful, scout_catalog_RelativeTimestamp as RelativeTimestamp, scout_catalog_RetentionPolicy as RetentionPolicy, scout_catalog_RetentionPolicyType as RetentionPolicyType, diff --git a/nominal/_api/combined/scout_channelvariables_api/__init__.py b/nominal/_api/combined/scout_channelvariables_api/__init__.py index 053256fb..5175a83a 100644 --- a/nominal/_api/combined/scout_channelvariables_api/__init__.py +++ b/nominal/_api/combined/scout_channelvariables_api/__init__.py @@ -1,10 +1,10 @@ # coding=utf-8 from .._impl import ( scout_channelvariables_api_ChannelVariable as ChannelVariable, - scout_channelvariables_api_ChannelVariableMap as ChannelVariableMap, scout_channelvariables_api_ChannelVariableName as ChannelVariableName, scout_channelvariables_api_ComputeSpec as ComputeSpec, scout_channelvariables_api_ComputeSpecV1 as ComputeSpecV1, scout_channelvariables_api_ComputeSpecVisitor as ComputeSpecVisitor, + scout_channelvariables_api_WorkbookChannelVariableMap as WorkbookChannelVariableMap, ) diff --git a/nominal/_api/combined/scout_chart_api/__init__.py b/nominal/_api/combined/scout_chart_api/__init__.py index cda2b74c..1b05d93a 100644 --- a/nominal/_api/combined/scout_chart_api/__init__.py +++ b/nominal/_api/combined/scout_chart_api/__init__.py @@ -1,12 +1,6 @@ # coding=utf-8 from .._impl import ( - scout_chart_api_BatchGetChartsRequest as BatchGetChartsRequest, - scout_chart_api_BatchGetChartsResponse as BatchGetChartsResponse, - scout_chart_api_ChartService as ChartService, - scout_chart_api_CreateChartRequest as CreateChartRequest, scout_chart_api_DeprecatedDefinitionAndSchemaVersion as DeprecatedDefinitionAndSchemaVersion, scout_chart_api_JsonString as JsonString, - scout_chart_api_UpdateChartRequest as UpdateChartRequest, - scout_chart_api_VersionedChart as VersionedChart, ) diff --git a/nominal/_api/combined/scout_chartdefinition_api/__init__.py b/nominal/_api/combined/scout_chartdefinition_api/__init__.py index e5961910..89405800 100644 --- a/nominal/_api/combined/scout_chartdefinition_api/__init__.py +++ b/nominal/_api/combined/scout_chartdefinition_api/__init__.py @@ -13,7 +13,6 @@ scout_chartdefinition_api_CartesianChartDefinitionVisitor as CartesianChartDefinitionVisitor, scout_chartdefinition_api_CartesianPlot as CartesianPlot, scout_chartdefinition_api_ChartDefinition as ChartDefinition, - scout_chartdefinition_api_ChartDefinitionMap as ChartDefinitionMap, scout_chartdefinition_api_ChartDefinitionVisitor as ChartDefinitionVisitor, scout_chartdefinition_api_ChecklistChartDefinition as ChecklistChartDefinition, scout_chartdefinition_api_ChecklistChartDefinitionV1 as ChecklistChartDefinitionV1, @@ -77,5 +76,6 @@ scout_chartdefinition_api_VideoChartDefinition as VideoChartDefinition, scout_chartdefinition_api_VideoChartDefinitionV1 as VideoChartDefinitionV1, scout_chartdefinition_api_VideoChartDefinitionVisitor as VideoChartDefinitionVisitor, + scout_chartdefinition_api_WorkbookChartDefinitionMap as WorkbookChartDefinitionMap, ) diff --git a/nominal/_api/combined/scout_checklistexecution_api/__init__.py b/nominal/_api/combined/scout_checklistexecution_api/__init__.py index 833e946e..efd23fbe 100644 --- a/nominal/_api/combined/scout_checklistexecution_api/__init__.py +++ b/nominal/_api/combined/scout_checklistexecution_api/__init__.py @@ -13,6 +13,8 @@ scout_checklistexecution_api_ComputationRange as ComputationRange, scout_checklistexecution_api_ComputedResult as ComputedResult, scout_checklistexecution_api_Computing as Computing, + scout_checklistexecution_api_ExecuteChecklistForAssetsRequest as ExecuteChecklistForAssetsRequest, + scout_checklistexecution_api_ExecuteChecklistForAssetsResponse as ExecuteChecklistForAssetsResponse, scout_checklistexecution_api_Fail as Fail, scout_checklistexecution_api_FailedToResolve as FailedToResolve, scout_checklistexecution_api_Failure as Failure, diff --git a/nominal/_api/combined/scout_checks_api/__init__.py b/nominal/_api/combined/scout_checks_api/__init__.py index 6910e0e7..68a0c2ac 100644 --- a/nominal/_api/combined/scout_checks_api/__init__.py +++ b/nominal/_api/combined/scout_checks_api/__init__.py @@ -5,7 +5,6 @@ scout_checks_api_BatchGetChecklistMetadataResponse as BatchGetChecklistMetadataResponse, scout_checks_api_BatchGetJobReportsRequest as BatchGetJobReportsRequest, scout_checks_api_BatchGetJobReportsResponse as BatchGetJobReportsResponse, - scout_checks_api_ChannelLocator as ChannelLocator, scout_checks_api_Check as Check, scout_checks_api_CheckCondition as CheckCondition, scout_checks_api_CheckConditionVisitor as CheckConditionVisitor, diff --git a/nominal/_api/combined/scout_comparisonnotebook_api/__init__.py b/nominal/_api/combined/scout_comparisonnotebook_api/__init__.py new file mode 100644 index 00000000..1a2df7d6 --- /dev/null +++ b/nominal/_api/combined/scout_comparisonnotebook_api/__init__.py @@ -0,0 +1,34 @@ +# coding=utf-8 +from .._impl import ( + scout_comparisonnotebook_api_AggregationType as AggregationType, + scout_comparisonnotebook_api_AggregationTypeVisitor as AggregationTypeVisitor, + scout_comparisonnotebook_api_ChannelVariable as ChannelVariable, + scout_comparisonnotebook_api_ChartDefinition as ChartDefinition, + scout_comparisonnotebook_api_ChartDefinitionVisitor as ChartDefinitionVisitor, + scout_comparisonnotebook_api_ComparisonChannelVariableMap as ComparisonChannelVariableMap, + scout_comparisonnotebook_api_ComparisonChartDefinitionMap as ComparisonChartDefinitionMap, + scout_comparisonnotebook_api_ComparisonTableColumn as ComparisonTableColumn, + scout_comparisonnotebook_api_ComparisonTableColumnOptions as ComparisonTableColumnOptions, + scout_comparisonnotebook_api_ComparisonTableColumnVisualizationOptions as ComparisonTableColumnVisualizationOptions, + scout_comparisonnotebook_api_ComparisonTableDefinition as ComparisonTableDefinition, + scout_comparisonnotebook_api_ComparisonTableDefinitionV1 as ComparisonTableDefinitionV1, + scout_comparisonnotebook_api_ComparisonTableDefinitionVisitor as ComparisonTableDefinitionVisitor, + scout_comparisonnotebook_api_ComparisonTableVisualizationOptions as ComparisonTableVisualizationOptions, + scout_comparisonnotebook_api_ComparisonWorkbookContent as ComparisonWorkbookContent, + scout_comparisonnotebook_api_ComparisonWorkbookContext as ComparisonWorkbookContext, + scout_comparisonnotebook_api_ComparisonWorkbookVariableDataScope as ComparisonWorkbookVariableDataScope, + scout_comparisonnotebook_api_ComparisonWorkbookVariableDataScopeVisitor as ComparisonWorkbookVariableDataScopeVisitor, + scout_comparisonnotebook_api_ComputeNodeWithContext as ComputeNodeWithContext, + scout_comparisonnotebook_api_Max as Max, + scout_comparisonnotebook_api_Mean as Mean, + scout_comparisonnotebook_api_Min as Min, + scout_comparisonnotebook_api_RangeAggregationContext as RangeAggregationContext, + scout_comparisonnotebook_api_StandardDeviation as StandardDeviation, + scout_comparisonnotebook_api_SupplementalComparisonWorkbookContext as SupplementalComparisonWorkbookContext, + scout_comparisonnotebook_api_SupplementalComparisonWorkbookContextVisitor as SupplementalComparisonWorkbookContextVisitor, + scout_comparisonnotebook_api_VariableLocator as VariableLocator, + scout_comparisonnotebook_api_VariableLocatorVisitor as VariableLocatorVisitor, + scout_comparisonnotebook_api_VariableName as VariableName, + scout_comparisonnotebook_api_VariableWithAggregation as VariableWithAggregation, +) + diff --git a/nominal/_api/combined/scout_compute_api/__init__.py b/nominal/_api/combined/scout_compute_api/__init__.py index 269f19a5..d3866799 100644 --- a/nominal/_api/combined/scout_compute_api/__init__.py +++ b/nominal/_api/combined/scout_compute_api/__init__.py @@ -38,6 +38,7 @@ scout_compute_api_ComputeService as ComputeService, scout_compute_api_ComputeUnitResult as ComputeUnitResult, scout_compute_api_ComputeUnitResultVisitor as ComputeUnitResultVisitor, + scout_compute_api_ComputeUnitsRequest as ComputeUnitsRequest, scout_compute_api_Context as Context, scout_compute_api_Count as Count, scout_compute_api_CumulativeSumSeriesNode as CumulativeSumSeriesNode, @@ -46,6 +47,7 @@ scout_compute_api_DoubleConstantVisitor as DoubleConstantVisitor, scout_compute_api_DurationConstant as DurationConstant, scout_compute_api_DurationConstantVisitor as DurationConstantVisitor, + scout_compute_api_Empty as Empty, scout_compute_api_EnumAggregationFunction as EnumAggregationFunction, scout_compute_api_EnumBucket as EnumBucket, scout_compute_api_EnumFilterOperator as EnumFilterOperator, @@ -66,6 +68,9 @@ scout_compute_api_EnumUnionOperation as EnumUnionOperation, scout_compute_api_EnumUnionSeriesNode as EnumUnionSeriesNode, scout_compute_api_EqualityOperator as EqualityOperator, + scout_compute_api_ErrorCode as ErrorCode, + scout_compute_api_ErrorResult as ErrorResult, + scout_compute_api_ErrorType as ErrorType, scout_compute_api_ExcludeNegativeValues as ExcludeNegativeValues, scout_compute_api_ExponentialAverage as ExponentialAverage, scout_compute_api_FftNode as FftNode, @@ -136,15 +141,27 @@ scout_compute_api_OnChangeRangesNode as OnChangeRangesNode, scout_compute_api_OutputRangeStart as OutputRangeStart, scout_compute_api_OutputRangeStartVisitor as OutputRangeStartVisitor, + scout_compute_api_ParameterInput as ParameterInput, + scout_compute_api_ParameterizedComputeNodeRequest as ParameterizedComputeNodeRequest, + scout_compute_api_ParameterizedComputeNodeResponse as ParameterizedComputeNodeResponse, + scout_compute_api_ParameterizedComputeNodeResult as ParameterizedComputeNodeResult, + scout_compute_api_ParameterizedComputeNodeResultVisitor as ParameterizedComputeNodeResultVisitor, + scout_compute_api_ParameterizedContext as ParameterizedContext, scout_compute_api_PeakRangesNode as PeakRangesNode, scout_compute_api_PeakType as PeakType, scout_compute_api_PersistenceWindowConfiguration as PersistenceWindowConfiguration, scout_compute_api_ProductSeriesNode as ProductSeriesNode, scout_compute_api_Range as Range, + scout_compute_api_RangeAggregation as RangeAggregation, + scout_compute_api_RangeAggregationOperation as RangeAggregationOperation, + scout_compute_api_RangeAggregationOperationVisitor as RangeAggregationOperationVisitor, scout_compute_api_RangeSummary as RangeSummary, + scout_compute_api_RangeValue as RangeValue, + scout_compute_api_RangeValueVisitor as RangeValueVisitor, scout_compute_api_RangesFunction as RangesFunction, scout_compute_api_RangesNode as RangesNode, scout_compute_api_RangesNodeVisitor as RangesNodeVisitor, + scout_compute_api_RangesNumericAggregationNode as RangesNumericAggregationNode, scout_compute_api_RangesSummary as RangesSummary, scout_compute_api_RawEnumSeriesNode as RawEnumSeriesNode, scout_compute_api_RawNumericSeriesNode as RawNumericSeriesNode, diff --git a/nominal/_api/combined/scout_compute_representation_api/__init__.py b/nominal/_api/combined/scout_compute_representation_api/__init__.py new file mode 100644 index 00000000..f1cb3107 --- /dev/null +++ b/nominal/_api/combined/scout_compute_representation_api/__init__.py @@ -0,0 +1,16 @@ +# coding=utf-8 +from .._impl import ( + scout_compute_representation_api_ChannelLocator as ChannelLocator, + scout_compute_representation_api_CompiledEnumeratedSeries as CompiledEnumeratedSeries, + scout_compute_representation_api_CompiledNode as CompiledNode, + scout_compute_representation_api_CompiledNumericSeries as CompiledNumericSeries, + scout_compute_representation_api_CompiledRangeSeries as CompiledRangeSeries, + scout_compute_representation_api_ComputeExpression as ComputeExpression, + scout_compute_representation_api_ComputeRepresentationContext as ComputeRepresentationContext, + scout_compute_representation_api_ComputeRepresentationService as ComputeRepresentationService, + scout_compute_representation_api_ComputeRepresentationVariableValue as ComputeRepresentationVariableValue, + scout_compute_representation_api_ComputeRepresentationVariableValueVisitor as ComputeRepresentationVariableValueVisitor, + scout_compute_representation_api_Node as Node, + scout_compute_representation_api_NodeVisitor as NodeVisitor, +) + diff --git a/nominal/_api/combined/scout_compute_resolved_api/__init__.py b/nominal/_api/combined/scout_compute_resolved_api/__init__.py index 249bc99d..ed767f93 100644 --- a/nominal/_api/combined/scout_compute_resolved_api/__init__.py +++ b/nominal/_api/combined/scout_compute_resolved_api/__init__.py @@ -61,6 +61,7 @@ scout_compute_resolved_api_ProductSeriesNode as ProductSeriesNode, scout_compute_resolved_api_RangesNode as RangesNode, scout_compute_resolved_api_RangesNodeVisitor as RangesNodeVisitor, + scout_compute_resolved_api_RangesNumericAggregationNode as RangesNumericAggregationNode, scout_compute_resolved_api_RawEnumSeriesNode as RawEnumSeriesNode, scout_compute_resolved_api_RawNumericSeriesNode as RawNumericSeriesNode, scout_compute_resolved_api_RawUntypedSeriesNode as RawUntypedSeriesNode, diff --git a/nominal/_api/combined/scout_notebook_api/__init__.py b/nominal/_api/combined/scout_notebook_api/__init__.py index 89986389..335bd6ec 100644 --- a/nominal/_api/combined/scout_notebook_api/__init__.py +++ b/nominal/_api/combined/scout_notebook_api/__init__.py @@ -5,8 +5,11 @@ scout_notebook_api_GetAllLabelsAndPropertiesResponse as GetAllLabelsAndPropertiesResponse, scout_notebook_api_Lock as Lock, scout_notebook_api_Notebook as Notebook, + scout_notebook_api_NotebookDataScope as NotebookDataScope, + scout_notebook_api_NotebookDataScopeVisitor as NotebookDataScopeVisitor, scout_notebook_api_NotebookMetadata as NotebookMetadata, scout_notebook_api_NotebookMetadataWithRid as NotebookMetadataWithRid, + scout_notebook_api_NotebookType as NotebookType, scout_notebook_api_SearchNotebooksQuery as SearchNotebooksQuery, scout_notebook_api_SearchNotebooksQueryVisitor as SearchNotebooksQueryVisitor, scout_notebook_api_SearchNotebooksRequest as SearchNotebooksRequest, diff --git a/nominal/_api/combined/scout_rids_api/__init__.py b/nominal/_api/combined/scout_rids_api/__init__.py index d1e64867..b739b1ab 100644 --- a/nominal/_api/combined/scout_rids_api/__init__.py +++ b/nominal/_api/combined/scout_rids_api/__init__.py @@ -7,6 +7,7 @@ scout_rids_api_CheckLineageRid as CheckLineageRid, scout_rids_api_CheckRid as CheckRid, scout_rids_api_ChecklistRid as ChecklistRid, + scout_rids_api_Empty as Empty, scout_rids_api_FunctionLineageRid as FunctionLineageRid, scout_rids_api_FunctionRid as FunctionRid, scout_rids_api_NotebookRid as NotebookRid, diff --git a/nominal/_api/combined/scout_run_api/__init__.py b/nominal/_api/combined/scout_run_api/__init__.py index 81da5ce1..19d21049 100644 --- a/nominal/_api/combined/scout_run_api/__init__.py +++ b/nominal/_api/combined/scout_run_api/__init__.py @@ -1,7 +1,6 @@ # coding=utf-8 from .._impl import ( scout_run_api_AllRunsPropertiesAndLabelsResponse as AllRunsPropertiesAndLabelsResponse, - scout_run_api_Channel as Channel, scout_run_api_ChannelMetadata as ChannelMetadata, scout_run_api_ConnectionRid as ConnectionRid, scout_run_api_CreateOrUpdateRunRequest as CreateOrUpdateRunRequest, @@ -11,7 +10,6 @@ scout_run_api_DataReviewCheckMetrics as DataReviewCheckMetrics, scout_run_api_DataReviewMetrics as DataReviewMetrics, scout_run_api_DataSource as DataSource, - scout_run_api_DataSourceRefName as DataSourceRefName, scout_run_api_DataSourceSeriesTag as DataSourceSeriesTag, scout_run_api_DataSourceType as DataSourceType, scout_run_api_DataSourceVisitor as DataSourceVisitor, diff --git a/nominal/_api/combined/scout_workbookcommon_api/__init__.py b/nominal/_api/combined/scout_workbookcommon_api/__init__.py index 10201543..7273e724 100644 --- a/nominal/_api/combined/scout_workbookcommon_api/__init__.py +++ b/nominal/_api/combined/scout_workbookcommon_api/__init__.py @@ -1,5 +1,7 @@ # coding=utf-8 from .._impl import ( + scout_workbookcommon_api_UnifiedWorkbookContent as UnifiedWorkbookContent, + scout_workbookcommon_api_UnifiedWorkbookContentVisitor as UnifiedWorkbookContentVisitor, scout_workbookcommon_api_WorkbookContent as WorkbookContent, ) diff --git a/nominal/_api/ingest/upload_api/__init__.py b/nominal/_api/combined/upload_api/__init__.py similarity index 100% rename from nominal/_api/ingest/upload_api/__init__.py rename to nominal/_api/combined/upload_api/__init__.py diff --git a/nominal/_api/ingest/__init__.py b/nominal/_api/ingest/__init__.py deleted file mode 100644 index 30eea7fe..00000000 --- a/nominal/_api/ingest/__init__.py +++ /dev/null @@ -1,10 +0,0 @@ -# coding=utf-8 -__all__ = [ - 'ingest_api', - 'upload_api', -] - -__conjure_generator_version__ = "4.9.0" - -__version__ = "0.246.0+50.g8cf0464" - diff --git a/nominal/_api/ingest/_impl.py b/nominal/_api/ingest/_impl.py deleted file mode 100644 index 89cb001c..00000000 --- a/nominal/_api/ingest/_impl.py +++ /dev/null @@ -1,2436 +0,0 @@ -# coding=utf-8 -from abc import ( - abstractmethod, -) -import builtins -from conjure_python_client import ( - BinaryType, - ConjureBeanType, - ConjureDecoder, - ConjureEncoder, - ConjureEnumType, - ConjureFieldDefinition, - ConjureUnionType, - OptionalTypeWrapper, - Service, -) -from requests.adapters import ( - Response, -) -from typing import ( - Any, - Dict, - List, - Optional, - Set, -) - -class ingest_api_AbsoluteTimestamp(ConjureUnionType): - _iso8601: Optional["ingest_api_Iso8601Timestamp"] = None - _epoch_of_time_unit: Optional["ingest_api_EpochTimestamp"] = None - _custom_format: Optional["ingest_api_CustomTimestamp"] = None - - @builtins.classmethod - def _options(cls) -> Dict[str, ConjureFieldDefinition]: - return { - 'iso8601': ConjureFieldDefinition('iso8601', ingest_api_Iso8601Timestamp), - 'epoch_of_time_unit': ConjureFieldDefinition('epochOfTimeUnit', ingest_api_EpochTimestamp), - 'custom_format': ConjureFieldDefinition('customFormat', ingest_api_CustomTimestamp) - } - - def __init__( - self, - iso8601: Optional["ingest_api_Iso8601Timestamp"] = None, - epoch_of_time_unit: Optional["ingest_api_EpochTimestamp"] = None, - custom_format: Optional["ingest_api_CustomTimestamp"] = None, - type_of_union: Optional[str] = None - ) -> None: - if type_of_union is None: - if (iso8601 is not None) + (epoch_of_time_unit is not None) + (custom_format is not None) != 1: - raise ValueError('a union must contain a single member') - - if iso8601 is not None: - self._iso8601 = iso8601 - self._type = 'iso8601' - if epoch_of_time_unit is not None: - self._epoch_of_time_unit = epoch_of_time_unit - self._type = 'epochOfTimeUnit' - if custom_format is not None: - self._custom_format = custom_format - self._type = 'customFormat' - - elif type_of_union == 'iso8601': - if iso8601 is None: - raise ValueError('a union value must not be None') - self._iso8601 = iso8601 - self._type = 'iso8601' - elif type_of_union == 'epochOfTimeUnit': - if epoch_of_time_unit is None: - raise ValueError('a union value must not be None') - self._epoch_of_time_unit = epoch_of_time_unit - self._type = 'epochOfTimeUnit' - elif type_of_union == 'customFormat': - if custom_format is None: - raise ValueError('a union value must not be None') - self._custom_format = custom_format - self._type = 'customFormat' - - @builtins.property - def iso8601(self) -> Optional["ingest_api_Iso8601Timestamp"]: - return self._iso8601 - - @builtins.property - def epoch_of_time_unit(self) -> Optional["ingest_api_EpochTimestamp"]: - return self._epoch_of_time_unit - - @builtins.property - def custom_format(self) -> Optional["ingest_api_CustomTimestamp"]: - return self._custom_format - - def accept(self, visitor) -> Any: - if not isinstance(visitor, ingest_api_AbsoluteTimestampVisitor): - raise ValueError('{} is not an instance of ingest_api_AbsoluteTimestampVisitor'.format(visitor.__class__.__name__)) - if self._type == 'iso8601' and self.iso8601 is not None: - return visitor._iso8601(self.iso8601) - if self._type == 'epochOfTimeUnit' and self.epoch_of_time_unit is not None: - return visitor._epoch_of_time_unit(self.epoch_of_time_unit) - if self._type == 'customFormat' and self.custom_format is not None: - return visitor._custom_format(self.custom_format) - - -ingest_api_AbsoluteTimestamp.__name__ = "AbsoluteTimestamp" -ingest_api_AbsoluteTimestamp.__qualname__ = "AbsoluteTimestamp" -ingest_api_AbsoluteTimestamp.__module__ = "ingest_service_api.ingest_api" - - -class ingest_api_AbsoluteTimestampVisitor: - - @abstractmethod - def _iso8601(self, iso8601: "ingest_api_Iso8601Timestamp") -> Any: - pass - - @abstractmethod - def _epoch_of_time_unit(self, epoch_of_time_unit: "ingest_api_EpochTimestamp") -> Any: - pass - - @abstractmethod - def _custom_format(self, custom_format: "ingest_api_CustomTimestamp") -> Any: - pass - - -ingest_api_AbsoluteTimestampVisitor.__name__ = "AbsoluteTimestampVisitor" -ingest_api_AbsoluteTimestampVisitor.__qualname__ = "AbsoluteTimestampVisitor" -ingest_api_AbsoluteTimestampVisitor.__module__ = "ingest_service_api.ingest_api" - - -class ingest_api_AsyncHandle(ConjureBeanType): - - @builtins.classmethod - def _fields(cls) -> Dict[str, ConjureFieldDefinition]: - return { - 'rid': ConjureFieldDefinition('rid', str) - } - - __slots__: List[str] = ['_rid'] - - def __init__(self, rid: str) -> None: - self._rid = rid - - @builtins.property - def rid(self) -> str: - return self._rid - - -ingest_api_AsyncHandle.__name__ = "AsyncHandle" -ingest_api_AsyncHandle.__qualname__ = "AsyncHandle" -ingest_api_AsyncHandle.__module__ = "ingest_service_api.ingest_api" - - -class ingest_api_ChannelConfig(ConjureBeanType): - - @builtins.classmethod - def _fields(cls) -> Dict[str, ConjureFieldDefinition]: - return { - 'prefix_tree_delimiter': ConjureFieldDefinition('prefixTreeDelimiter', OptionalTypeWrapper[str]) - } - - __slots__: List[str] = ['_prefix_tree_delimiter'] - - def __init__(self, prefix_tree_delimiter: Optional[str] = None) -> None: - self._prefix_tree_delimiter = prefix_tree_delimiter - - @builtins.property - def prefix_tree_delimiter(self) -> Optional[str]: - """ - If set, will construct a prefix tree for channels of the dataset using the given delimiter. - """ - return self._prefix_tree_delimiter - - -ingest_api_ChannelConfig.__name__ = "ChannelConfig" -ingest_api_ChannelConfig.__qualname__ = "ChannelConfig" -ingest_api_ChannelConfig.__module__ = "ingest_service_api.ingest_api" - - -class ingest_api_CompleteMultipartUploadResponse(ConjureBeanType): - - @builtins.classmethod - def _fields(cls) -> Dict[str, ConjureFieldDefinition]: - return { - 'location': ConjureFieldDefinition('location', OptionalTypeWrapper[str]) - } - - __slots__: List[str] = ['_location'] - - def __init__(self, location: Optional[str] = None) -> None: - self._location = location - - @builtins.property - def location(self) -> Optional[str]: - return self._location - - -ingest_api_CompleteMultipartUploadResponse.__name__ = "CompleteMultipartUploadResponse" -ingest_api_CompleteMultipartUploadResponse.__qualname__ = "CompleteMultipartUploadResponse" -ingest_api_CompleteMultipartUploadResponse.__module__ = "ingest_service_api.ingest_api" - - -class ingest_api_CsvProperties(ConjureBeanType): - - @builtins.classmethod - def _fields(cls) -> Dict[str, ConjureFieldDefinition]: - return { - 'skip_rows_config': ConjureFieldDefinition('skipRowsConfig', OptionalTypeWrapper[ingest_api_SkipRowsConfig]) - } - - __slots__: List[str] = ['_skip_rows_config'] - - def __init__(self, skip_rows_config: Optional["ingest_api_SkipRowsConfig"] = None) -> None: - self._skip_rows_config = skip_rows_config - - @builtins.property - def skip_rows_config(self) -> Optional["ingest_api_SkipRowsConfig"]: - return self._skip_rows_config - - -ingest_api_CsvProperties.__name__ = "CsvProperties" -ingest_api_CsvProperties.__qualname__ = "CsvProperties" -ingest_api_CsvProperties.__module__ = "ingest_service_api.ingest_api" - - -class ingest_api_CustomTimestamp(ConjureBeanType): - - @builtins.classmethod - def _fields(cls) -> Dict[str, ConjureFieldDefinition]: - return { - 'format': ConjureFieldDefinition('format', str), - 'default_year': ConjureFieldDefinition('defaultYear', OptionalTypeWrapper[int]) - } - - __slots__: List[str] = ['_format', '_default_year'] - - def __init__(self, format: str, default_year: Optional[int] = None) -> None: - self._format = format - self._default_year = default_year - - @builtins.property - def format(self) -> str: - """ - The format string should be in the format of the `DateTimeFormatter` class in Java. - """ - return self._format - - @builtins.property - def default_year(self) -> Optional[int]: - """ - Default year is accepted as an optional field for cases like IRIG time format and will be overridden by year in time format. - """ - return self._default_year - - -ingest_api_CustomTimestamp.__name__ = "CustomTimestamp" -ingest_api_CustomTimestamp.__qualname__ = "CustomTimestamp" -ingest_api_CustomTimestamp.__module__ = "ingest_service_api.ingest_api" - - -class ingest_api_DatasetSpec(ConjureBeanType): - - @builtins.classmethod - def _fields(cls) -> Dict[str, ConjureFieldDefinition]: - return { - 'name': ConjureFieldDefinition('name', OptionalTypeWrapper[str]) - } - - __slots__: List[str] = ['_name'] - - def __init__(self, name: Optional[str] = None) -> None: - self._name = name - - @builtins.property - def name(self) -> Optional[str]: - return self._name - - -ingest_api_DatasetSpec.__name__ = "DatasetSpec" -ingest_api_DatasetSpec.__qualname__ = "DatasetSpec" -ingest_api_DatasetSpec.__module__ = "ingest_service_api.ingest_api" - - -class ingest_api_DeprecatedNewCsv(ConjureBeanType): - - @builtins.classmethod - def _fields(cls) -> Dict[str, ConjureFieldDefinition]: - return { - 'source': ConjureFieldDefinition('source', ingest_api_IngestSource), - 'name': ConjureFieldDefinition('name', OptionalTypeWrapper[str]), - 'properties': ConjureFieldDefinition('properties', Dict[str, str]), - 'time_column_spec': ConjureFieldDefinition('timeColumnSpec', OptionalTypeWrapper[ingest_api_TimestampMetadata]), - 'channel_config': ConjureFieldDefinition('channelConfig', OptionalTypeWrapper[ingest_api_ChannelConfig]) - } - - __slots__: List[str] = ['_source', '_name', '_properties', '_time_column_spec', '_channel_config'] - - def __init__(self, properties: Dict[str, str], source: "ingest_api_IngestSource", channel_config: Optional["ingest_api_ChannelConfig"] = None, name: Optional[str] = None, time_column_spec: Optional["ingest_api_TimestampMetadata"] = None) -> None: - self._source = source - self._name = name - self._properties = properties - self._time_column_spec = time_column_spec - self._channel_config = channel_config - - @builtins.property - def source(self) -> "ingest_api_IngestSource": - return self._source - - @builtins.property - def name(self) -> Optional[str]: - return self._name - - @builtins.property - def properties(self) -> Dict[str, str]: - return self._properties - - @builtins.property - def time_column_spec(self) -> Optional["ingest_api_TimestampMetadata"]: - return self._time_column_spec - - @builtins.property - def channel_config(self) -> Optional["ingest_api_ChannelConfig"]: - return self._channel_config - - -ingest_api_DeprecatedNewCsv.__name__ = "DeprecatedNewCsv" -ingest_api_DeprecatedNewCsv.__qualname__ = "DeprecatedNewCsv" -ingest_api_DeprecatedNewCsv.__module__ = "ingest_service_api.ingest_api" - - -class ingest_api_DeprecatedNewDataSource(ConjureUnionType): - _csv: Optional["ingest_api_DeprecatedNewCsv"] = None - - @builtins.classmethod - def _options(cls) -> Dict[str, ConjureFieldDefinition]: - return { - 'csv': ConjureFieldDefinition('csv', ingest_api_DeprecatedNewCsv) - } - - def __init__( - self, - csv: Optional["ingest_api_DeprecatedNewCsv"] = None, - type_of_union: Optional[str] = None - ) -> None: - if type_of_union is None: - if (csv is not None) != 1: - raise ValueError('a union must contain a single member') - - if csv is not None: - self._csv = csv - self._type = 'csv' - - elif type_of_union == 'csv': - if csv is None: - raise ValueError('a union value must not be None') - self._csv = csv - self._type = 'csv' - - @builtins.property - def csv(self) -> Optional["ingest_api_DeprecatedNewCsv"]: - return self._csv - - def accept(self, visitor) -> Any: - if not isinstance(visitor, ingest_api_DeprecatedNewDataSourceVisitor): - raise ValueError('{} is not an instance of ingest_api_DeprecatedNewDataSourceVisitor'.format(visitor.__class__.__name__)) - if self._type == 'csv' and self.csv is not None: - return visitor._csv(self.csv) - - -ingest_api_DeprecatedNewDataSource.__name__ = "DeprecatedNewDataSource" -ingest_api_DeprecatedNewDataSource.__qualname__ = "DeprecatedNewDataSource" -ingest_api_DeprecatedNewDataSource.__module__ = "ingest_service_api.ingest_api" - - -class ingest_api_DeprecatedNewDataSourceVisitor: - - @abstractmethod - def _csv(self, csv: "ingest_api_DeprecatedNewCsv") -> Any: - pass - - -ingest_api_DeprecatedNewDataSourceVisitor.__name__ = "DeprecatedNewDataSourceVisitor" -ingest_api_DeprecatedNewDataSourceVisitor.__qualname__ = "DeprecatedNewDataSourceVisitor" -ingest_api_DeprecatedNewDataSourceVisitor.__module__ = "ingest_service_api.ingest_api" - - -class ingest_api_DeprecatedTimestampMetadata(ConjureBeanType): - - @builtins.classmethod - def _fields(cls) -> Dict[str, ConjureFieldDefinition]: - return { - 'series_name': ConjureFieldDefinition('seriesName', str), - 'is_absolute': ConjureFieldDefinition('isAbsolute', bool) - } - - __slots__: List[str] = ['_series_name', '_is_absolute'] - - def __init__(self, is_absolute: bool, series_name: str) -> None: - self._series_name = series_name - self._is_absolute = is_absolute - - @builtins.property - def series_name(self) -> str: - return self._series_name - - @builtins.property - def is_absolute(self) -> bool: - return self._is_absolute - - -ingest_api_DeprecatedTimestampMetadata.__name__ = "DeprecatedTimestampMetadata" -ingest_api_DeprecatedTimestampMetadata.__qualname__ = "DeprecatedTimestampMetadata" -ingest_api_DeprecatedTimestampMetadata.__module__ = "ingest_service_api.ingest_api" - - -class ingest_api_DeprecatedTriggerIngest(ConjureBeanType): - - @builtins.classmethod - def _fields(cls) -> Dict[str, ConjureFieldDefinition]: - return { - 'source': ConjureFieldDefinition('source', ingest_api_IngestSource), - 'properties': ConjureFieldDefinition('properties', Dict[str, str]), - 'dataset_name': ConjureFieldDefinition('datasetName', OptionalTypeWrapper[str]), - 'timestamp_metadata': ConjureFieldDefinition('timestampMetadata', OptionalTypeWrapper[ingest_api_DeprecatedTimestampMetadata]) - } - - __slots__: List[str] = ['_source', '_properties', '_dataset_name', '_timestamp_metadata'] - - def __init__(self, properties: Dict[str, str], source: "ingest_api_IngestSource", dataset_name: Optional[str] = None, timestamp_metadata: Optional["ingest_api_DeprecatedTimestampMetadata"] = None) -> None: - self._source = source - self._properties = properties - self._dataset_name = dataset_name - self._timestamp_metadata = timestamp_metadata - - @builtins.property - def source(self) -> "ingest_api_IngestSource": - return self._source - - @builtins.property - def properties(self) -> Dict[str, str]: - return self._properties - - @builtins.property - def dataset_name(self) -> Optional[str]: - return self._dataset_name - - @builtins.property - def timestamp_metadata(self) -> Optional["ingest_api_DeprecatedTimestampMetadata"]: - return self._timestamp_metadata - - -ingest_api_DeprecatedTriggerIngest.__name__ = "DeprecatedTriggerIngest" -ingest_api_DeprecatedTriggerIngest.__qualname__ = "DeprecatedTriggerIngest" -ingest_api_DeprecatedTriggerIngest.__module__ = "ingest_service_api.ingest_api" - - -class ingest_api_Duration(ConjureBeanType): - - @builtins.classmethod - def _fields(cls) -> Dict[str, ConjureFieldDefinition]: - return { - 'seconds': ConjureFieldDefinition('seconds', int), - 'nanos': ConjureFieldDefinition('nanos', int) - } - - __slots__: List[str] = ['_seconds', '_nanos'] - - def __init__(self, nanos: int, seconds: int) -> None: - self._seconds = seconds - self._nanos = nanos - - @builtins.property - def seconds(self) -> int: - return self._seconds - - @builtins.property - def nanos(self) -> int: - return self._nanos - - -ingest_api_Duration.__name__ = "Duration" -ingest_api_Duration.__qualname__ = "Duration" -ingest_api_Duration.__module__ = "ingest_service_api.ingest_api" - - -class ingest_api_EpochTimestamp(ConjureBeanType): - - @builtins.classmethod - def _fields(cls) -> Dict[str, ConjureFieldDefinition]: - return { - 'time_unit': ConjureFieldDefinition('timeUnit', ingest_api_TimeUnit) - } - - __slots__: List[str] = ['_time_unit'] - - def __init__(self, time_unit: "ingest_api_TimeUnit") -> None: - self._time_unit = time_unit - - @builtins.property - def time_unit(self) -> "ingest_api_TimeUnit": - return self._time_unit - - -ingest_api_EpochTimestamp.__name__ = "EpochTimestamp" -ingest_api_EpochTimestamp.__qualname__ = "EpochTimestamp" -ingest_api_EpochTimestamp.__module__ = "ingest_service_api.ingest_api" - - -class ingest_api_ErrorResult(ConjureBeanType): - - @builtins.classmethod - def _fields(cls) -> Dict[str, ConjureFieldDefinition]: - return { - 'error_type': ConjureFieldDefinition('errorType', ingest_api_ErrorType), - 'message': ConjureFieldDefinition('message', str) - } - - __slots__: List[str] = ['_error_type', '_message'] - - def __init__(self, error_type: str, message: str) -> None: - self._error_type = error_type - self._message = message - - @builtins.property - def error_type(self) -> str: - return self._error_type - - @builtins.property - def message(self) -> str: - return self._message - - -ingest_api_ErrorResult.__name__ = "ErrorResult" -ingest_api_ErrorResult.__qualname__ = "ErrorResult" -ingest_api_ErrorResult.__module__ = "ingest_service_api.ingest_api" - - -class ingest_api_FileTypeProperties(ConjureUnionType): - _csv_properties: Optional["ingest_api_CsvProperties"] = None - _parquet_properties: Optional["ingest_api_ParquetProperties"] = None - - @builtins.classmethod - def _options(cls) -> Dict[str, ConjureFieldDefinition]: - return { - 'csv_properties': ConjureFieldDefinition('csvProperties', ingest_api_CsvProperties), - 'parquet_properties': ConjureFieldDefinition('parquetProperties', ingest_api_ParquetProperties) - } - - def __init__( - self, - csv_properties: Optional["ingest_api_CsvProperties"] = None, - parquet_properties: Optional["ingest_api_ParquetProperties"] = None, - type_of_union: Optional[str] = None - ) -> None: - if type_of_union is None: - if (csv_properties is not None) + (parquet_properties is not None) != 1: - raise ValueError('a union must contain a single member') - - if csv_properties is not None: - self._csv_properties = csv_properties - self._type = 'csvProperties' - if parquet_properties is not None: - self._parquet_properties = parquet_properties - self._type = 'parquetProperties' - - elif type_of_union == 'csvProperties': - if csv_properties is None: - raise ValueError('a union value must not be None') - self._csv_properties = csv_properties - self._type = 'csvProperties' - elif type_of_union == 'parquetProperties': - if parquet_properties is None: - raise ValueError('a union value must not be None') - self._parquet_properties = parquet_properties - self._type = 'parquetProperties' - - @builtins.property - def csv_properties(self) -> Optional["ingest_api_CsvProperties"]: - return self._csv_properties - - @builtins.property - def parquet_properties(self) -> Optional["ingest_api_ParquetProperties"]: - return self._parquet_properties - - def accept(self, visitor) -> Any: - if not isinstance(visitor, ingest_api_FileTypePropertiesVisitor): - raise ValueError('{} is not an instance of ingest_api_FileTypePropertiesVisitor'.format(visitor.__class__.__name__)) - if self._type == 'csvProperties' and self.csv_properties is not None: - return visitor._csv_properties(self.csv_properties) - if self._type == 'parquetProperties' and self.parquet_properties is not None: - return visitor._parquet_properties(self.parquet_properties) - - -ingest_api_FileTypeProperties.__name__ = "FileTypeProperties" -ingest_api_FileTypeProperties.__qualname__ = "FileTypeProperties" -ingest_api_FileTypeProperties.__module__ = "ingest_service_api.ingest_api" - - -class ingest_api_FileTypePropertiesVisitor: - - @abstractmethod - def _csv_properties(self, csv_properties: "ingest_api_CsvProperties") -> Any: - pass - - @abstractmethod - def _parquet_properties(self, parquet_properties: "ingest_api_ParquetProperties") -> Any: - pass - - -ingest_api_FileTypePropertiesVisitor.__name__ = "FileTypePropertiesVisitor" -ingest_api_FileTypePropertiesVisitor.__qualname__ = "FileTypePropertiesVisitor" -ingest_api_FileTypePropertiesVisitor.__module__ = "ingest_service_api.ingest_api" - - -class ingest_api_InProgressResult(ConjureBeanType): - - @builtins.classmethod - def _fields(cls) -> Dict[str, ConjureFieldDefinition]: - return { - } - - __slots__: List[str] = [] - - - -ingest_api_InProgressResult.__name__ = "InProgressResult" -ingest_api_InProgressResult.__qualname__ = "InProgressResult" -ingest_api_InProgressResult.__module__ = "ingest_service_api.ingest_api" - - -class ingest_api_IngestDataSource(ConjureUnionType): - _existing_data_source: Optional[str] = None - _new_data_source: Optional["ingest_api_DeprecatedNewDataSource"] = None - _new_data_source_v2: Optional["ingest_api_NewDataSource"] = None - - @builtins.classmethod - def _options(cls) -> Dict[str, ConjureFieldDefinition]: - return { - 'existing_data_source': ConjureFieldDefinition('existingDataSource', ingest_api_DataSourceRid), - 'new_data_source': ConjureFieldDefinition('newDataSource', ingest_api_DeprecatedNewDataSource), - 'new_data_source_v2': ConjureFieldDefinition('newDataSourceV2', ingest_api_NewDataSource) - } - - def __init__( - self, - existing_data_source: Optional[str] = None, - new_data_source: Optional["ingest_api_DeprecatedNewDataSource"] = None, - new_data_source_v2: Optional["ingest_api_NewDataSource"] = None, - type_of_union: Optional[str] = None - ) -> None: - if type_of_union is None: - if (existing_data_source is not None) + (new_data_source is not None) + (new_data_source_v2 is not None) != 1: - raise ValueError('a union must contain a single member') - - if existing_data_source is not None: - self._existing_data_source = existing_data_source - self._type = 'existingDataSource' - if new_data_source is not None: - self._new_data_source = new_data_source - self._type = 'newDataSource' - if new_data_source_v2 is not None: - self._new_data_source_v2 = new_data_source_v2 - self._type = 'newDataSourceV2' - - elif type_of_union == 'existingDataSource': - if existing_data_source is None: - raise ValueError('a union value must not be None') - self._existing_data_source = existing_data_source - self._type = 'existingDataSource' - elif type_of_union == 'newDataSource': - if new_data_source is None: - raise ValueError('a union value must not be None') - self._new_data_source = new_data_source - self._type = 'newDataSource' - elif type_of_union == 'newDataSourceV2': - if new_data_source_v2 is None: - raise ValueError('a union value must not be None') - self._new_data_source_v2 = new_data_source_v2 - self._type = 'newDataSourceV2' - - @builtins.property - def existing_data_source(self) -> Optional[str]: - return self._existing_data_source - - @builtins.property - def new_data_source(self) -> Optional["ingest_api_DeprecatedNewDataSource"]: - return self._new_data_source - - @builtins.property - def new_data_source_v2(self) -> Optional["ingest_api_NewDataSource"]: - return self._new_data_source_v2 - - def accept(self, visitor) -> Any: - if not isinstance(visitor, ingest_api_IngestDataSourceVisitor): - raise ValueError('{} is not an instance of ingest_api_IngestDataSourceVisitor'.format(visitor.__class__.__name__)) - if self._type == 'existingDataSource' and self.existing_data_source is not None: - return visitor._existing_data_source(self.existing_data_source) - if self._type == 'newDataSource' and self.new_data_source is not None: - return visitor._new_data_source(self.new_data_source) - if self._type == 'newDataSourceV2' and self.new_data_source_v2 is not None: - return visitor._new_data_source_v2(self.new_data_source_v2) - - -ingest_api_IngestDataSource.__name__ = "IngestDataSource" -ingest_api_IngestDataSource.__qualname__ = "IngestDataSource" -ingest_api_IngestDataSource.__module__ = "ingest_service_api.ingest_api" - - -class ingest_api_IngestDataSourceVisitor: - - @abstractmethod - def _existing_data_source(self, existing_data_source: str) -> Any: - pass - - @abstractmethod - def _new_data_source(self, new_data_source: "ingest_api_DeprecatedNewDataSource") -> Any: - pass - - @abstractmethod - def _new_data_source_v2(self, new_data_source_v2: "ingest_api_NewDataSource") -> Any: - pass - - -ingest_api_IngestDataSourceVisitor.__name__ = "IngestDataSourceVisitor" -ingest_api_IngestDataSourceVisitor.__qualname__ = "IngestDataSourceVisitor" -ingest_api_IngestDataSourceVisitor.__module__ = "ingest_service_api.ingest_api" - - -class ingest_api_IngestProgressV2(ConjureBeanType): - - @builtins.classmethod - def _fields(cls) -> Dict[str, ConjureFieldDefinition]: - return { - 'start_time': ConjureFieldDefinition('startTime', str), - 'end_time': ConjureFieldDefinition('endTime', OptionalTypeWrapper[str]), - 'ingest_status': ConjureFieldDefinition('ingestStatus', ingest_api_IngestStatusV2), - 'incalculable': ConjureFieldDefinition('incalculable', OptionalTypeWrapper[bool]) - } - - __slots__: List[str] = ['_start_time', '_end_time', '_ingest_status', '_incalculable'] - - def __init__(self, ingest_status: "ingest_api_IngestStatusV2", start_time: str, end_time: Optional[str] = None, incalculable: Optional[bool] = None) -> None: - self._start_time = start_time - self._end_time = end_time - self._ingest_status = ingest_status - self._incalculable = incalculable - - @builtins.property - def start_time(self) -> str: - """ - Timestamp at start of ingest - """ - return self._start_time - - @builtins.property - def end_time(self) -> Optional[str]: - """ - Timestamp at end of ingest, empty if still in progress - """ - return self._end_time - - @builtins.property - def ingest_status(self) -> "ingest_api_IngestStatusV2": - """ - Status of ingest, contains error if failed - """ - return self._ingest_status - - @builtins.property - def incalculable(self) -> Optional[bool]: - """ - Whether ingest duration can be reliably calculated - """ - return self._incalculable - - -ingest_api_IngestProgressV2.__name__ = "IngestProgressV2" -ingest_api_IngestProgressV2.__qualname__ = "IngestProgressV2" -ingest_api_IngestProgressV2.__module__ = "ingest_service_api.ingest_api" - - -class ingest_api_IngestRunDataSource(ConjureBeanType): - - @builtins.classmethod - def _fields(cls) -> Dict[str, ConjureFieldDefinition]: - return { - 'data_source': ConjureFieldDefinition('dataSource', ingest_api_IngestDataSource), - 'time_offset_spec': ConjureFieldDefinition('timeOffsetSpec', OptionalTypeWrapper[ingest_api_TimeOffsetSpec]) - } - - __slots__: List[str] = ['_data_source', '_time_offset_spec'] - - def __init__(self, data_source: "ingest_api_IngestDataSource", time_offset_spec: Optional["ingest_api_TimeOffsetSpec"] = None) -> None: - self._data_source = data_source - self._time_offset_spec = time_offset_spec - - @builtins.property - def data_source(self) -> "ingest_api_IngestDataSource": - return self._data_source - - @builtins.property - def time_offset_spec(self) -> Optional["ingest_api_TimeOffsetSpec"]: - return self._time_offset_spec - - -ingest_api_IngestRunDataSource.__name__ = "IngestRunDataSource" -ingest_api_IngestRunDataSource.__qualname__ = "IngestRunDataSource" -ingest_api_IngestRunDataSource.__module__ = "ingest_service_api.ingest_api" - - -class ingest_api_IngestRunRequest(ConjureBeanType): - - @builtins.classmethod - def _fields(cls) -> Dict[str, ConjureFieldDefinition]: - return { - 'rid': ConjureFieldDefinition('rid', OptionalTypeWrapper[str]), - 'title': ConjureFieldDefinition('title', str), - 'description': ConjureFieldDefinition('description', str), - 'start_time': ConjureFieldDefinition('startTime', ingest_api_UtcTimestamp), - 'end_time': ConjureFieldDefinition('endTime', OptionalTypeWrapper[ingest_api_UtcTimestamp]), - 'properties': ConjureFieldDefinition('properties', Dict[ingest_api_PropertyName, ingest_api_PropertyValue]), - 'labels': ConjureFieldDefinition('labels', List[ingest_api_Label]), - 'run_prefix': ConjureFieldDefinition('runPrefix', OptionalTypeWrapper[str]), - 'data_sources': ConjureFieldDefinition('dataSources', Dict[ingest_api_DataSourceRefName, ingest_api_IngestRunDataSource]) - } - - __slots__: List[str] = ['_rid', '_title', '_description', '_start_time', '_end_time', '_properties', '_labels', '_run_prefix', '_data_sources'] - - def __init__(self, data_sources: Dict[str, "ingest_api_IngestRunDataSource"], description: str, labels: List[str], properties: Dict[str, str], start_time: "ingest_api_UtcTimestamp", title: str, end_time: Optional["ingest_api_UtcTimestamp"] = None, rid: Optional[str] = None, run_prefix: Optional[str] = None) -> None: - self._rid = rid - self._title = title - self._description = description - self._start_time = start_time - self._end_time = end_time - self._properties = properties - self._labels = labels - self._run_prefix = run_prefix - self._data_sources = data_sources - - @builtins.property - def rid(self) -> Optional[str]: - """ - If a run with the same rid already exists, the run will be updated. - """ - return self._rid - - @builtins.property - def title(self) -> str: - return self._title - - @builtins.property - def description(self) -> str: - return self._description - - @builtins.property - def start_time(self) -> "ingest_api_UtcTimestamp": - return self._start_time - - @builtins.property - def end_time(self) -> Optional["ingest_api_UtcTimestamp"]: - return self._end_time - - @builtins.property - def properties(self) -> Dict[str, str]: - return self._properties - - @builtins.property - def labels(self) -> List[str]: - return self._labels - - @builtins.property - def run_prefix(self) -> Optional[str]: - """ - for example, SIM, HTL, FLT - """ - return self._run_prefix - - @builtins.property - def data_sources(self) -> Dict[str, "ingest_api_IngestRunDataSource"]: - return self._data_sources - - -ingest_api_IngestRunRequest.__name__ = "IngestRunRequest" -ingest_api_IngestRunRequest.__qualname__ = "IngestRunRequest" -ingest_api_IngestRunRequest.__module__ = "ingest_service_api.ingest_api" - - -class ingest_api_IngestRunResponse(ConjureBeanType): - - @builtins.classmethod - def _fields(cls) -> Dict[str, ConjureFieldDefinition]: - return { - 'run_rid': ConjureFieldDefinition('runRid', ingest_api_RunRid) - } - - __slots__: List[str] = ['_run_rid'] - - def __init__(self, run_rid: str) -> None: - self._run_rid = run_rid - - @builtins.property - def run_rid(self) -> str: - return self._run_rid - - -ingest_api_IngestRunResponse.__name__ = "IngestRunResponse" -ingest_api_IngestRunResponse.__qualname__ = "IngestRunResponse" -ingest_api_IngestRunResponse.__module__ = "ingest_service_api.ingest_api" - - -class ingest_api_IngestService(Service): - """ - The Ingest Service handles the data ingestion into Nominal/Clickhouse. - """ - - def deprecated_trigger_ingest(self, auth_header: str, trigger_ingest: "ingest_api_DeprecatedTriggerIngest") -> "ingest_api_TriggeredIngest": - - _headers: Dict[str, Any] = { - 'Accept': 'application/json', - 'Content-Type': 'application/json', - 'Authorization': auth_header, - } - - _params: Dict[str, Any] = { - } - - _path_params: Dict[str, Any] = { - } - - _json: Any = ConjureEncoder().default(trigger_ingest) - - _path = '/ingest/v1/trigger-ingest' - _path = _path.format(**_path_params) - - _response: Response = self._request( - 'POST', - self._uri + _path, - params=_params, - headers=_headers, - json=_json) - - _decoder = ConjureDecoder() - return _decoder.decode(_response.json(), ingest_api_TriggeredIngest, self._return_none_for_unknown_union_types) - - def trigger_ingest(self, auth_header: str, trigger_ingest: "ingest_api_TriggerIngest") -> "ingest_api_TriggeredIngest": - """ - Triggers an ingest job for the given data source. -The ingest job will be processed asynchronously. - """ - - _headers: Dict[str, Any] = { - 'Accept': 'application/json', - 'Content-Type': 'application/json', - 'Authorization': auth_header, - } - - _params: Dict[str, Any] = { - } - - _path_params: Dict[str, Any] = { - } - - _json: Any = ConjureEncoder().default(trigger_ingest) - - _path = '/ingest/v1/trigger-ingest-v2' - _path = _path.format(**_path_params) - - _response: Response = self._request( - 'POST', - self._uri + _path, - params=_params, - headers=_headers, - json=_json) - - _decoder = ConjureDecoder() - return _decoder.decode(_response.json(), ingest_api_TriggeredIngest, self._return_none_for_unknown_union_types) - - def ingest_run(self, auth_header: str, request: "ingest_api_IngestRunRequest") -> "ingest_api_IngestRunResponse": - """ - Creates a run and ingests data sources to be added to the run. - """ - - _headers: Dict[str, Any] = { - 'Accept': 'application/json', - 'Content-Type': 'application/json', - 'Authorization': auth_header, - } - - _params: Dict[str, Any] = { - } - - _path_params: Dict[str, Any] = { - } - - _json: Any = ConjureEncoder().default(request) - - _path = '/ingest/v1/ingest-run' - _path = _path.format(**_path_params) - - _response: Response = self._request( - 'POST', - self._uri + _path, - params=_params, - headers=_headers, - json=_json) - - _decoder = ConjureDecoder() - return _decoder.decode(_response.json(), ingest_api_IngestRunResponse, self._return_none_for_unknown_union_types) - - def ingest_video(self, auth_header: str, ingest_video: "ingest_api_IngestVideoRequest") -> "ingest_api_IngestVideoResponse": - """ - Ingests video data from a S3 Nominal upload bucket. - """ - - _headers: Dict[str, Any] = { - 'Accept': 'application/json', - 'Content-Type': 'application/json', - 'Authorization': auth_header, - } - - _params: Dict[str, Any] = { - } - - _path_params: Dict[str, Any] = { - } - - _json: Any = ConjureEncoder().default(ingest_video) - - _path = '/ingest/v1/ingest-video' - _path = _path.format(**_path_params) - - _response: Response = self._request( - 'POST', - self._uri + _path, - params=_params, - headers=_headers, - json=_json) - - _decoder = ConjureDecoder() - return _decoder.decode(_response.json(), ingest_api_IngestVideoResponse, self._return_none_for_unknown_union_types) - - -ingest_api_IngestService.__name__ = "IngestService" -ingest_api_IngestService.__qualname__ = "IngestService" -ingest_api_IngestService.__module__ = "ingest_service_api.ingest_api" - - -class ingest_api_IngestSource(ConjureUnionType): - _s3: Optional["ingest_api_S3IngestSource"] = None - - @builtins.classmethod - def _options(cls) -> Dict[str, ConjureFieldDefinition]: - return { - 's3': ConjureFieldDefinition('s3', ingest_api_S3IngestSource) - } - - def __init__( - self, - s3: Optional["ingest_api_S3IngestSource"] = None, - type_of_union: Optional[str] = None - ) -> None: - if type_of_union is None: - if (s3 is not None) != 1: - raise ValueError('a union must contain a single member') - - if s3 is not None: - self._s3 = s3 - self._type = 's3' - - elif type_of_union == 's3': - if s3 is None: - raise ValueError('a union value must not be None') - self._s3 = s3 - self._type = 's3' - - @builtins.property - def s3(self) -> Optional["ingest_api_S3IngestSource"]: - return self._s3 - - def accept(self, visitor) -> Any: - if not isinstance(visitor, ingest_api_IngestSourceVisitor): - raise ValueError('{} is not an instance of ingest_api_IngestSourceVisitor'.format(visitor.__class__.__name__)) - if self._type == 's3' and self.s3 is not None: - return visitor._s3(self.s3) - - -ingest_api_IngestSource.__name__ = "IngestSource" -ingest_api_IngestSource.__qualname__ = "IngestSource" -ingest_api_IngestSource.__module__ = "ingest_service_api.ingest_api" - - -class ingest_api_IngestSourceVisitor: - - @abstractmethod - def _s3(self, s3: "ingest_api_S3IngestSource") -> Any: - pass - - -ingest_api_IngestSourceVisitor.__name__ = "IngestSourceVisitor" -ingest_api_IngestSourceVisitor.__qualname__ = "IngestSourceVisitor" -ingest_api_IngestSourceVisitor.__module__ = "ingest_service_api.ingest_api" - - -class ingest_api_IngestStatus(ConjureEnumType): - - IN_PROGRESS = 'IN_PROGRESS' - '''IN_PROGRESS''' - COMPLETED = 'COMPLETED' - '''COMPLETED''' - FAILED = 'FAILED' - '''FAILED''' - UNKNOWN = 'UNKNOWN' - '''UNKNOWN''' - - def __reduce_ex__(self, proto): - return self.__class__, (self.name,) - - -ingest_api_IngestStatus.__name__ = "IngestStatus" -ingest_api_IngestStatus.__qualname__ = "IngestStatus" -ingest_api_IngestStatus.__module__ = "ingest_service_api.ingest_api" - - -class ingest_api_IngestStatusV2(ConjureUnionType): - _success: Optional["ingest_api_SuccessResult"] = None - _error: Optional["ingest_api_ErrorResult"] = None - _in_progress: Optional["ingest_api_InProgressResult"] = None - - @builtins.classmethod - def _options(cls) -> Dict[str, ConjureFieldDefinition]: - return { - 'success': ConjureFieldDefinition('success', ingest_api_SuccessResult), - 'error': ConjureFieldDefinition('error', ingest_api_ErrorResult), - 'in_progress': ConjureFieldDefinition('inProgress', ingest_api_InProgressResult) - } - - def __init__( - self, - success: Optional["ingest_api_SuccessResult"] = None, - error: Optional["ingest_api_ErrorResult"] = None, - in_progress: Optional["ingest_api_InProgressResult"] = None, - type_of_union: Optional[str] = None - ) -> None: - if type_of_union is None: - if (success is not None) + (error is not None) + (in_progress is not None) != 1: - raise ValueError('a union must contain a single member') - - if success is not None: - self._success = success - self._type = 'success' - if error is not None: - self._error = error - self._type = 'error' - if in_progress is not None: - self._in_progress = in_progress - self._type = 'inProgress' - - elif type_of_union == 'success': - if success is None: - raise ValueError('a union value must not be None') - self._success = success - self._type = 'success' - elif type_of_union == 'error': - if error is None: - raise ValueError('a union value must not be None') - self._error = error - self._type = 'error' - elif type_of_union == 'inProgress': - if in_progress is None: - raise ValueError('a union value must not be None') - self._in_progress = in_progress - self._type = 'inProgress' - - @builtins.property - def success(self) -> Optional["ingest_api_SuccessResult"]: - return self._success - - @builtins.property - def error(self) -> Optional["ingest_api_ErrorResult"]: - return self._error - - @builtins.property - def in_progress(self) -> Optional["ingest_api_InProgressResult"]: - return self._in_progress - - def accept(self, visitor) -> Any: - if not isinstance(visitor, ingest_api_IngestStatusV2Visitor): - raise ValueError('{} is not an instance of ingest_api_IngestStatusV2Visitor'.format(visitor.__class__.__name__)) - if self._type == 'success' and self.success is not None: - return visitor._success(self.success) - if self._type == 'error' and self.error is not None: - return visitor._error(self.error) - if self._type == 'inProgress' and self.in_progress is not None: - return visitor._in_progress(self.in_progress) - - -ingest_api_IngestStatusV2.__name__ = "IngestStatusV2" -ingest_api_IngestStatusV2.__qualname__ = "IngestStatusV2" -ingest_api_IngestStatusV2.__module__ = "ingest_service_api.ingest_api" - - -class ingest_api_IngestStatusV2Visitor: - - @abstractmethod - def _success(self, success: "ingest_api_SuccessResult") -> Any: - pass - - @abstractmethod - def _error(self, error: "ingest_api_ErrorResult") -> Any: - pass - - @abstractmethod - def _in_progress(self, in_progress: "ingest_api_InProgressResult") -> Any: - pass - - -ingest_api_IngestStatusV2Visitor.__name__ = "IngestStatusV2Visitor" -ingest_api_IngestStatusV2Visitor.__qualname__ = "IngestStatusV2Visitor" -ingest_api_IngestStatusV2Visitor.__module__ = "ingest_service_api.ingest_api" - - -class ingest_api_IngestVideoRequest(ConjureBeanType): - - @builtins.classmethod - def _fields(cls) -> Dict[str, ConjureFieldDefinition]: - return { - 'sources': ConjureFieldDefinition('sources', List[ingest_api_IngestSource]), - 'properties': ConjureFieldDefinition('properties', Dict[ingest_api_PropertyName, ingest_api_PropertyValue]), - 'labels': ConjureFieldDefinition('labels', List[ingest_api_Label]), - 'title': ConjureFieldDefinition('title', OptionalTypeWrapper[str]), - 'description': ConjureFieldDefinition('description', OptionalTypeWrapper[str]), - 'timestamps': ConjureFieldDefinition('timestamps', ingest_api_VideoTimestampManifest) - } - - __slots__: List[str] = ['_sources', '_properties', '_labels', '_title', '_description', '_timestamps'] - - def __init__(self, labels: List[str], properties: Dict[str, str], sources: List["ingest_api_IngestSource"], timestamps: "ingest_api_VideoTimestampManifest", description: Optional[str] = None, title: Optional[str] = None) -> None: - self._sources = sources - self._properties = properties - self._labels = labels - self._title = title - self._description = description - self._timestamps = timestamps - - @builtins.property - def sources(self) -> List["ingest_api_IngestSource"]: - return self._sources - - @builtins.property - def properties(self) -> Dict[str, str]: - return self._properties - - @builtins.property - def labels(self) -> List[str]: - return self._labels - - @builtins.property - def title(self) -> Optional[str]: - return self._title - - @builtins.property - def description(self) -> Optional[str]: - return self._description - - @builtins.property - def timestamps(self) -> "ingest_api_VideoTimestampManifest": - return self._timestamps - - -ingest_api_IngestVideoRequest.__name__ = "IngestVideoRequest" -ingest_api_IngestVideoRequest.__qualname__ = "IngestVideoRequest" -ingest_api_IngestVideoRequest.__module__ = "ingest_service_api.ingest_api" - - -class ingest_api_IngestVideoResponse(ConjureBeanType): - - @builtins.classmethod - def _fields(cls) -> Dict[str, ConjureFieldDefinition]: - return { - 'video_rid': ConjureFieldDefinition('videoRid', str), - 'async_handle': ConjureFieldDefinition('asyncHandle', ingest_api_AsyncHandle) - } - - __slots__: List[str] = ['_video_rid', '_async_handle'] - - def __init__(self, async_handle: "ingest_api_AsyncHandle", video_rid: str) -> None: - self._video_rid = video_rid - self._async_handle = async_handle - - @builtins.property - def video_rid(self) -> str: - return self._video_rid - - @builtins.property - def async_handle(self) -> "ingest_api_AsyncHandle": - return self._async_handle - - -ingest_api_IngestVideoResponse.__name__ = "IngestVideoResponse" -ingest_api_IngestVideoResponse.__qualname__ = "IngestVideoResponse" -ingest_api_IngestVideoResponse.__module__ = "ingest_service_api.ingest_api" - - -class ingest_api_InitiateMultipartUploadRequest(ConjureBeanType): - - @builtins.classmethod - def _fields(cls) -> Dict[str, ConjureFieldDefinition]: - return { - 'filename': ConjureFieldDefinition('filename', str), - 'filetype': ConjureFieldDefinition('filetype', str) - } - - __slots__: List[str] = ['_filename', '_filetype'] - - def __init__(self, filename: str, filetype: str) -> None: - self._filename = filename - self._filetype = filetype - - @builtins.property - def filename(self) -> str: - return self._filename - - @builtins.property - def filetype(self) -> str: - return self._filetype - - -ingest_api_InitiateMultipartUploadRequest.__name__ = "InitiateMultipartUploadRequest" -ingest_api_InitiateMultipartUploadRequest.__qualname__ = "InitiateMultipartUploadRequest" -ingest_api_InitiateMultipartUploadRequest.__module__ = "ingest_service_api.ingest_api" - - -class ingest_api_InitiateMultipartUploadResponse(ConjureBeanType): - - @builtins.classmethod - def _fields(cls) -> Dict[str, ConjureFieldDefinition]: - return { - 'upload_id': ConjureFieldDefinition('uploadId', str), - 'key': ConjureFieldDefinition('key', str) - } - - __slots__: List[str] = ['_upload_id', '_key'] - - def __init__(self, key: str, upload_id: str) -> None: - self._upload_id = upload_id - self._key = key - - @builtins.property - def upload_id(self) -> str: - return self._upload_id - - @builtins.property - def key(self) -> str: - return self._key - - -ingest_api_InitiateMultipartUploadResponse.__name__ = "InitiateMultipartUploadResponse" -ingest_api_InitiateMultipartUploadResponse.__qualname__ = "InitiateMultipartUploadResponse" -ingest_api_InitiateMultipartUploadResponse.__module__ = "ingest_service_api.ingest_api" - - -class ingest_api_Iso8601Timestamp(ConjureBeanType): - - @builtins.classmethod - def _fields(cls) -> Dict[str, ConjureFieldDefinition]: - return { - } - - __slots__: List[str] = [] - - - -ingest_api_Iso8601Timestamp.__name__ = "Iso8601Timestamp" -ingest_api_Iso8601Timestamp.__qualname__ = "Iso8601Timestamp" -ingest_api_Iso8601Timestamp.__module__ = "ingest_service_api.ingest_api" - - -class ingest_api_NewDataSource(ConjureBeanType): - - @builtins.classmethod - def _fields(cls) -> Dict[str, ConjureFieldDefinition]: - return { - 'source': ConjureFieldDefinition('source', ingest_api_IngestSource), - 'properties': ConjureFieldDefinition('properties', Dict[ingest_api_PropertyName, ingest_api_PropertyValue]), - 'labels': ConjureFieldDefinition('labels', List[ingest_api_Label]), - 'description': ConjureFieldDefinition('description', OptionalTypeWrapper[str]), - 'name': ConjureFieldDefinition('name', OptionalTypeWrapper[str]), - 'time_column_spec': ConjureFieldDefinition('timeColumnSpec', OptionalTypeWrapper[ingest_api_TimestampMetadata]), - 'file_type_properties': ConjureFieldDefinition('fileTypeProperties', OptionalTypeWrapper[ingest_api_FileTypeProperties]), - 'channel_config': ConjureFieldDefinition('channelConfig', OptionalTypeWrapper[ingest_api_ChannelConfig]) - } - - __slots__: List[str] = ['_source', '_properties', '_labels', '_description', '_name', '_time_column_spec', '_file_type_properties', '_channel_config'] - - def __init__(self, labels: List[str], properties: Dict[str, str], source: "ingest_api_IngestSource", channel_config: Optional["ingest_api_ChannelConfig"] = None, description: Optional[str] = None, file_type_properties: Optional["ingest_api_FileTypeProperties"] = None, name: Optional[str] = None, time_column_spec: Optional["ingest_api_TimestampMetadata"] = None) -> None: - self._source = source - self._properties = properties - self._labels = labels - self._description = description - self._name = name - self._time_column_spec = time_column_spec - self._file_type_properties = file_type_properties - self._channel_config = channel_config - - @builtins.property - def source(self) -> "ingest_api_IngestSource": - return self._source - - @builtins.property - def properties(self) -> Dict[str, str]: - return self._properties - - @builtins.property - def labels(self) -> List[str]: - return self._labels - - @builtins.property - def description(self) -> Optional[str]: - return self._description - - @builtins.property - def name(self) -> Optional[str]: - return self._name - - @builtins.property - def time_column_spec(self) -> Optional["ingest_api_TimestampMetadata"]: - return self._time_column_spec - - @builtins.property - def file_type_properties(self) -> Optional["ingest_api_FileTypeProperties"]: - return self._file_type_properties - - @builtins.property - def channel_config(self) -> Optional["ingest_api_ChannelConfig"]: - return self._channel_config - - -ingest_api_NewDataSource.__name__ = "NewDataSource" -ingest_api_NewDataSource.__qualname__ = "NewDataSource" -ingest_api_NewDataSource.__module__ = "ingest_service_api.ingest_api" - - -class ingest_api_NoTimestampManifest(ConjureBeanType): - - @builtins.classmethod - def _fields(cls) -> Dict[str, ConjureFieldDefinition]: - return { - 'starting_timestamp': ConjureFieldDefinition('startingTimestamp', ingest_api_UtcTimestamp), - 'scale_parameter': ConjureFieldDefinition('scaleParameter', OptionalTypeWrapper[ingest_api_ScaleParameter]) - } - - __slots__: List[str] = ['_starting_timestamp', '_scale_parameter'] - - def __init__(self, starting_timestamp: "ingest_api_UtcTimestamp", scale_parameter: Optional["ingest_api_ScaleParameter"] = None) -> None: - self._starting_timestamp = starting_timestamp - self._scale_parameter = scale_parameter - - @builtins.property - def starting_timestamp(self) -> "ingest_api_UtcTimestamp": - return self._starting_timestamp - - @builtins.property - def scale_parameter(self) -> Optional["ingest_api_ScaleParameter"]: - """ - A field that specifies that the frame rate of the video does not match the frame rate of the camera | i.e. a slowed down or sped up video. Can specify either the camera frame rate or the absolute end time. - """ - return self._scale_parameter - - -ingest_api_NoTimestampManifest.__name__ = "NoTimestampManifest" -ingest_api_NoTimestampManifest.__qualname__ = "NoTimestampManifest" -ingest_api_NoTimestampManifest.__module__ = "ingest_service_api.ingest_api" - - -class ingest_api_ParquetProperties(ConjureBeanType): - - @builtins.classmethod - def _fields(cls) -> Dict[str, ConjureFieldDefinition]: - return { - 'unit_metadata_key': ConjureFieldDefinition('unitMetadataKey', OptionalTypeWrapper[str]) - } - - __slots__: List[str] = ['_unit_metadata_key'] - - def __init__(self, unit_metadata_key: Optional[str] = None) -> None: - self._unit_metadata_key = unit_metadata_key - - @builtins.property - def unit_metadata_key(self) -> Optional[str]: - """ - If set, extracts the unit for series from the column metadata. The unit is expected to be the value -corresponding to this key. - """ - return self._unit_metadata_key - - -ingest_api_ParquetProperties.__name__ = "ParquetProperties" -ingest_api_ParquetProperties.__qualname__ = "ParquetProperties" -ingest_api_ParquetProperties.__module__ = "ingest_service_api.ingest_api" - - -class ingest_api_Part(ConjureBeanType): - - @builtins.classmethod - def _fields(cls) -> Dict[str, ConjureFieldDefinition]: - return { - 'part_number': ConjureFieldDefinition('partNumber', int), - 'etag': ConjureFieldDefinition('etag', str) - } - - __slots__: List[str] = ['_part_number', '_etag'] - - def __init__(self, etag: str, part_number: int) -> None: - self._part_number = part_number - self._etag = etag - - @builtins.property - def part_number(self) -> int: - return self._part_number - - @builtins.property - def etag(self) -> str: - return self._etag - - -ingest_api_Part.__name__ = "Part" -ingest_api_Part.__qualname__ = "Part" -ingest_api_Part.__module__ = "ingest_service_api.ingest_api" - - -class ingest_api_PartWithSize(ConjureBeanType): - - @builtins.classmethod - def _fields(cls) -> Dict[str, ConjureFieldDefinition]: - return { - 'part_number': ConjureFieldDefinition('partNumber', int), - 'etag': ConjureFieldDefinition('etag', str), - 'size': ConjureFieldDefinition('size', int) - } - - __slots__: List[str] = ['_part_number', '_etag', '_size'] - - def __init__(self, etag: str, part_number: int, size: int) -> None: - self._part_number = part_number - self._etag = etag - self._size = size - - @builtins.property - def part_number(self) -> int: - return self._part_number - - @builtins.property - def etag(self) -> str: - return self._etag - - @builtins.property - def size(self) -> int: - return self._size - - -ingest_api_PartWithSize.__name__ = "PartWithSize" -ingest_api_PartWithSize.__qualname__ = "PartWithSize" -ingest_api_PartWithSize.__module__ = "ingest_service_api.ingest_api" - - -class ingest_api_RelativeTimestamp(ConjureBeanType): - - @builtins.classmethod - def _fields(cls) -> Dict[str, ConjureFieldDefinition]: - return { - 'time_unit': ConjureFieldDefinition('timeUnit', ingest_api_TimeUnit) - } - - __slots__: List[str] = ['_time_unit'] - - def __init__(self, time_unit: "ingest_api_TimeUnit") -> None: - self._time_unit = time_unit - - @builtins.property - def time_unit(self) -> "ingest_api_TimeUnit": - return self._time_unit - - -ingest_api_RelativeTimestamp.__name__ = "RelativeTimestamp" -ingest_api_RelativeTimestamp.__qualname__ = "RelativeTimestamp" -ingest_api_RelativeTimestamp.__module__ = "ingest_service_api.ingest_api" - - -class ingest_api_S3IngestSource(ConjureBeanType): - - @builtins.classmethod - def _fields(cls) -> Dict[str, ConjureFieldDefinition]: - return { - 'path': ConjureFieldDefinition('path', str) - } - - __slots__: List[str] = ['_path'] - - def __init__(self, path: str) -> None: - self._path = path - - @builtins.property - def path(self) -> str: - return self._path - - -ingest_api_S3IngestSource.__name__ = "S3IngestSource" -ingest_api_S3IngestSource.__qualname__ = "S3IngestSource" -ingest_api_S3IngestSource.__module__ = "ingest_service_api.ingest_api" - - -class ingest_api_ScaleParameter(ConjureUnionType): - _true_frame_rate: Optional[float] = None - _ending_timestamp: Optional["ingest_api_UtcTimestamp"] = None - _scale_factor: Optional[float] = None - - @builtins.classmethod - def _options(cls) -> Dict[str, ConjureFieldDefinition]: - return { - 'true_frame_rate': ConjureFieldDefinition('trueFrameRate', float), - 'ending_timestamp': ConjureFieldDefinition('endingTimestamp', ingest_api_UtcTimestamp), - 'scale_factor': ConjureFieldDefinition('scaleFactor', float) - } - - def __init__( - self, - true_frame_rate: Optional[float] = None, - ending_timestamp: Optional["ingest_api_UtcTimestamp"] = None, - scale_factor: Optional[float] = None, - type_of_union: Optional[str] = None - ) -> None: - if type_of_union is None: - if (true_frame_rate is not None) + (ending_timestamp is not None) + (scale_factor is not None) != 1: - raise ValueError('a union must contain a single member') - - if true_frame_rate is not None: - self._true_frame_rate = true_frame_rate - self._type = 'trueFrameRate' - if ending_timestamp is not None: - self._ending_timestamp = ending_timestamp - self._type = 'endingTimestamp' - if scale_factor is not None: - self._scale_factor = scale_factor - self._type = 'scaleFactor' - - elif type_of_union == 'trueFrameRate': - if true_frame_rate is None: - raise ValueError('a union value must not be None') - self._true_frame_rate = true_frame_rate - self._type = 'trueFrameRate' - elif type_of_union == 'endingTimestamp': - if ending_timestamp is None: - raise ValueError('a union value must not be None') - self._ending_timestamp = ending_timestamp - self._type = 'endingTimestamp' - elif type_of_union == 'scaleFactor': - if scale_factor is None: - raise ValueError('a union value must not be None') - self._scale_factor = scale_factor - self._type = 'scaleFactor' - - @builtins.property - def true_frame_rate(self) -> Optional[float]: - return self._true_frame_rate - - @builtins.property - def ending_timestamp(self) -> Optional["ingest_api_UtcTimestamp"]: - """ - the timestamp corresponding to absolute starting timestamp plus absolute duration of the video. - """ - return self._ending_timestamp - - @builtins.property - def scale_factor(self) -> Optional[float]: - """ - the scale factor can be used to calculate whether media duration differs from a video's | real duration, and if so, the true frame rate of the camera. The video time will thus be scaled | by the ratio of the real duration to media duration, or media frame rate to true frame rate. - """ - return self._scale_factor - - def accept(self, visitor) -> Any: - if not isinstance(visitor, ingest_api_ScaleParameterVisitor): - raise ValueError('{} is not an instance of ingest_api_ScaleParameterVisitor'.format(visitor.__class__.__name__)) - if self._type == 'trueFrameRate' and self.true_frame_rate is not None: - return visitor._true_frame_rate(self.true_frame_rate) - if self._type == 'endingTimestamp' and self.ending_timestamp is not None: - return visitor._ending_timestamp(self.ending_timestamp) - if self._type == 'scaleFactor' and self.scale_factor is not None: - return visitor._scale_factor(self.scale_factor) - - -ingest_api_ScaleParameter.__name__ = "ScaleParameter" -ingest_api_ScaleParameter.__qualname__ = "ScaleParameter" -ingest_api_ScaleParameter.__module__ = "ingest_service_api.ingest_api" - - -class ingest_api_ScaleParameterVisitor: - - @abstractmethod - def _true_frame_rate(self, true_frame_rate: float) -> Any: - pass - - @abstractmethod - def _ending_timestamp(self, ending_timestamp: "ingest_api_UtcTimestamp") -> Any: - pass - - @abstractmethod - def _scale_factor(self, scale_factor: float) -> Any: - pass - - -ingest_api_ScaleParameterVisitor.__name__ = "ScaleParameterVisitor" -ingest_api_ScaleParameterVisitor.__qualname__ = "ScaleParameterVisitor" -ingest_api_ScaleParameterVisitor.__module__ = "ingest_service_api.ingest_api" - - -class ingest_api_SignPartResponse(ConjureBeanType): - - @builtins.classmethod - def _fields(cls) -> Dict[str, ConjureFieldDefinition]: - return { - 'url': ConjureFieldDefinition('url', str), - 'headers': ConjureFieldDefinition('headers', Dict[str, str]) - } - - __slots__: List[str] = ['_url', '_headers'] - - def __init__(self, headers: Dict[str, str], url: str) -> None: - self._url = url - self._headers = headers - - @builtins.property - def url(self) -> str: - return self._url - - @builtins.property - def headers(self) -> Dict[str, str]: - return self._headers - - -ingest_api_SignPartResponse.__name__ = "SignPartResponse" -ingest_api_SignPartResponse.__qualname__ = "SignPartResponse" -ingest_api_SignPartResponse.__module__ = "ingest_service_api.ingest_api" - - -class ingest_api_SkipRowsConfig(ConjureBeanType): - - @builtins.classmethod - def _fields(cls) -> Dict[str, ConjureFieldDefinition]: - return { - 'header_row_index': ConjureFieldDefinition('headerRowIndex', int), - 'data_start_row_index': ConjureFieldDefinition('dataStartRowIndex', int) - } - - __slots__: List[str] = ['_header_row_index', '_data_start_row_index'] - - def __init__(self, data_start_row_index: int, header_row_index: int) -> None: - self._header_row_index = header_row_index - self._data_start_row_index = data_start_row_index - - @builtins.property - def header_row_index(self) -> int: - return self._header_row_index - - @builtins.property - def data_start_row_index(self) -> int: - return self._data_start_row_index - - -ingest_api_SkipRowsConfig.__name__ = "SkipRowsConfig" -ingest_api_SkipRowsConfig.__qualname__ = "SkipRowsConfig" -ingest_api_SkipRowsConfig.__module__ = "ingest_service_api.ingest_api" - - -class ingest_api_SuccessResult(ConjureBeanType): - - @builtins.classmethod - def _fields(cls) -> Dict[str, ConjureFieldDefinition]: - return { - } - - __slots__: List[str] = [] - - - -ingest_api_SuccessResult.__name__ = "SuccessResult" -ingest_api_SuccessResult.__qualname__ = "SuccessResult" -ingest_api_SuccessResult.__module__ = "ingest_service_api.ingest_api" - - -class ingest_api_TimeOffsetSpec(ConjureUnionType): - _nanos: Optional["ingest_api_Duration"] = None - - @builtins.classmethod - def _options(cls) -> Dict[str, ConjureFieldDefinition]: - return { - 'nanos': ConjureFieldDefinition('nanos', ingest_api_Duration) - } - - def __init__( - self, - nanos: Optional["ingest_api_Duration"] = None, - type_of_union: Optional[str] = None - ) -> None: - if type_of_union is None: - if (nanos is not None) != 1: - raise ValueError('a union must contain a single member') - - if nanos is not None: - self._nanos = nanos - self._type = 'nanos' - - elif type_of_union == 'nanos': - if nanos is None: - raise ValueError('a union value must not be None') - self._nanos = nanos - self._type = 'nanos' - - @builtins.property - def nanos(self) -> Optional["ingest_api_Duration"]: - return self._nanos - - def accept(self, visitor) -> Any: - if not isinstance(visitor, ingest_api_TimeOffsetSpecVisitor): - raise ValueError('{} is not an instance of ingest_api_TimeOffsetSpecVisitor'.format(visitor.__class__.__name__)) - if self._type == 'nanos' and self.nanos is not None: - return visitor._nanos(self.nanos) - - -ingest_api_TimeOffsetSpec.__name__ = "TimeOffsetSpec" -ingest_api_TimeOffsetSpec.__qualname__ = "TimeOffsetSpec" -ingest_api_TimeOffsetSpec.__module__ = "ingest_service_api.ingest_api" - - -class ingest_api_TimeOffsetSpecVisitor: - - @abstractmethod - def _nanos(self, nanos: "ingest_api_Duration") -> Any: - pass - - -ingest_api_TimeOffsetSpecVisitor.__name__ = "TimeOffsetSpecVisitor" -ingest_api_TimeOffsetSpecVisitor.__qualname__ = "TimeOffsetSpecVisitor" -ingest_api_TimeOffsetSpecVisitor.__module__ = "ingest_service_api.ingest_api" - - -class ingest_api_TimeUnit(ConjureEnumType): - - HOURS = 'HOURS' - '''HOURS''' - MINUTES = 'MINUTES' - '''MINUTES''' - SECONDS = 'SECONDS' - '''SECONDS''' - MILLISECONDS = 'MILLISECONDS' - '''MILLISECONDS''' - MICROSECONDS = 'MICROSECONDS' - '''MICROSECONDS''' - NANOSECONDS = 'NANOSECONDS' - '''NANOSECONDS''' - UNKNOWN = 'UNKNOWN' - '''UNKNOWN''' - - def __reduce_ex__(self, proto): - return self.__class__, (self.name,) - - -ingest_api_TimeUnit.__name__ = "TimeUnit" -ingest_api_TimeUnit.__qualname__ = "TimeUnit" -ingest_api_TimeUnit.__module__ = "ingest_service_api.ingest_api" - - -class ingest_api_TimestampManifest(ConjureBeanType): - """ - The timestamp manifest files will contain a list of absolute timestamps, in nanoseconds, that correspond to -each frame in a video. Each file should be of type JSON and store a single list, the length of which equals -the number of frames in its corresponding video. - """ - - @builtins.classmethod - def _fields(cls) -> Dict[str, ConjureFieldDefinition]: - return { - 'sources': ConjureFieldDefinition('sources', List[ingest_api_IngestSource]) - } - - __slots__: List[str] = ['_sources'] - - def __init__(self, sources: List["ingest_api_IngestSource"]) -> None: - self._sources = sources - - @builtins.property - def sources(self) -> List["ingest_api_IngestSource"]: - return self._sources - - -ingest_api_TimestampManifest.__name__ = "TimestampManifest" -ingest_api_TimestampManifest.__qualname__ = "TimestampManifest" -ingest_api_TimestampManifest.__module__ = "ingest_service_api.ingest_api" - - -class ingest_api_TimestampMetadata(ConjureBeanType): - - @builtins.classmethod - def _fields(cls) -> Dict[str, ConjureFieldDefinition]: - return { - 'series_name': ConjureFieldDefinition('seriesName', str), - 'timestamp_type': ConjureFieldDefinition('timestampType', ingest_api_TimestampType) - } - - __slots__: List[str] = ['_series_name', '_timestamp_type'] - - def __init__(self, series_name: str, timestamp_type: "ingest_api_TimestampType") -> None: - self._series_name = series_name - self._timestamp_type = timestamp_type - - @builtins.property - def series_name(self) -> str: - return self._series_name - - @builtins.property - def timestamp_type(self) -> "ingest_api_TimestampType": - return self._timestamp_type - - -ingest_api_TimestampMetadata.__name__ = "TimestampMetadata" -ingest_api_TimestampMetadata.__qualname__ = "TimestampMetadata" -ingest_api_TimestampMetadata.__module__ = "ingest_service_api.ingest_api" - - -class ingest_api_TimestampType(ConjureUnionType): - _relative: Optional["ingest_api_RelativeTimestamp"] = None - _absolute: Optional["ingest_api_AbsoluteTimestamp"] = None - - @builtins.classmethod - def _options(cls) -> Dict[str, ConjureFieldDefinition]: - return { - 'relative': ConjureFieldDefinition('relative', ingest_api_RelativeTimestamp), - 'absolute': ConjureFieldDefinition('absolute', ingest_api_AbsoluteTimestamp) - } - - def __init__( - self, - relative: Optional["ingest_api_RelativeTimestamp"] = None, - absolute: Optional["ingest_api_AbsoluteTimestamp"] = None, - type_of_union: Optional[str] = None - ) -> None: - if type_of_union is None: - if (relative is not None) + (absolute is not None) != 1: - raise ValueError('a union must contain a single member') - - if relative is not None: - self._relative = relative - self._type = 'relative' - if absolute is not None: - self._absolute = absolute - self._type = 'absolute' - - elif type_of_union == 'relative': - if relative is None: - raise ValueError('a union value must not be None') - self._relative = relative - self._type = 'relative' - elif type_of_union == 'absolute': - if absolute is None: - raise ValueError('a union value must not be None') - self._absolute = absolute - self._type = 'absolute' - - @builtins.property - def relative(self) -> Optional["ingest_api_RelativeTimestamp"]: - return self._relative - - @builtins.property - def absolute(self) -> Optional["ingest_api_AbsoluteTimestamp"]: - return self._absolute - - def accept(self, visitor) -> Any: - if not isinstance(visitor, ingest_api_TimestampTypeVisitor): - raise ValueError('{} is not an instance of ingest_api_TimestampTypeVisitor'.format(visitor.__class__.__name__)) - if self._type == 'relative' and self.relative is not None: - return visitor._relative(self.relative) - if self._type == 'absolute' and self.absolute is not None: - return visitor._absolute(self.absolute) - - -ingest_api_TimestampType.__name__ = "TimestampType" -ingest_api_TimestampType.__qualname__ = "TimestampType" -ingest_api_TimestampType.__module__ = "ingest_service_api.ingest_api" - - -class ingest_api_TimestampTypeVisitor: - - @abstractmethod - def _relative(self, relative: "ingest_api_RelativeTimestamp") -> Any: - pass - - @abstractmethod - def _absolute(self, absolute: "ingest_api_AbsoluteTimestamp") -> Any: - pass - - -ingest_api_TimestampTypeVisitor.__name__ = "TimestampTypeVisitor" -ingest_api_TimestampTypeVisitor.__qualname__ = "TimestampTypeVisitor" -ingest_api_TimestampTypeVisitor.__module__ = "ingest_service_api.ingest_api" - - -class ingest_api_TriggerIngest(ConjureBeanType): - - @builtins.classmethod - def _fields(cls) -> Dict[str, ConjureFieldDefinition]: - return { - 'source': ConjureFieldDefinition('source', ingest_api_IngestSource), - 'properties': ConjureFieldDefinition('properties', Dict[ingest_api_PropertyName, ingest_api_PropertyValue]), - 'labels': ConjureFieldDefinition('labels', List[ingest_api_Label]), - 'dataset_name': ConjureFieldDefinition('datasetName', OptionalTypeWrapper[str]), - 'dataset_description': ConjureFieldDefinition('datasetDescription', OptionalTypeWrapper[str]), - 'timestamp_metadata': ConjureFieldDefinition('timestampMetadata', OptionalTypeWrapper[ingest_api_TimestampMetadata]), - 'file_type_properties': ConjureFieldDefinition('fileTypeProperties', OptionalTypeWrapper[ingest_api_FileTypeProperties]), - 'channel_config': ConjureFieldDefinition('channelConfig', OptionalTypeWrapper[ingest_api_ChannelConfig]) - } - - __slots__: List[str] = ['_source', '_properties', '_labels', '_dataset_name', '_dataset_description', '_timestamp_metadata', '_file_type_properties', '_channel_config'] - - def __init__(self, labels: List[str], properties: Dict[str, str], source: "ingest_api_IngestSource", channel_config: Optional["ingest_api_ChannelConfig"] = None, dataset_description: Optional[str] = None, dataset_name: Optional[str] = None, file_type_properties: Optional["ingest_api_FileTypeProperties"] = None, timestamp_metadata: Optional["ingest_api_TimestampMetadata"] = None) -> None: - self._source = source - self._properties = properties - self._labels = labels - self._dataset_name = dataset_name - self._dataset_description = dataset_description - self._timestamp_metadata = timestamp_metadata - self._file_type_properties = file_type_properties - self._channel_config = channel_config - - @builtins.property - def source(self) -> "ingest_api_IngestSource": - return self._source - - @builtins.property - def properties(self) -> Dict[str, str]: - return self._properties - - @builtins.property - def labels(self) -> List[str]: - return self._labels - - @builtins.property - def dataset_name(self) -> Optional[str]: - return self._dataset_name - - @builtins.property - def dataset_description(self) -> Optional[str]: - return self._dataset_description - - @builtins.property - def timestamp_metadata(self) -> Optional["ingest_api_TimestampMetadata"]: - return self._timestamp_metadata - - @builtins.property - def file_type_properties(self) -> Optional["ingest_api_FileTypeProperties"]: - return self._file_type_properties - - @builtins.property - def channel_config(self) -> Optional["ingest_api_ChannelConfig"]: - """ - If absent, will default to a channel config that constructs a prefix tree with `.` as the delimiter. - """ - return self._channel_config - - -ingest_api_TriggerIngest.__name__ = "TriggerIngest" -ingest_api_TriggerIngest.__qualname__ = "TriggerIngest" -ingest_api_TriggerIngest.__module__ = "ingest_service_api.ingest_api" - - -class ingest_api_TriggeredIngest(ConjureBeanType): - - @builtins.classmethod - def _fields(cls) -> Dict[str, ConjureFieldDefinition]: - return { - 'dataset_rid': ConjureFieldDefinition('datasetRid', str), - 'async_handle': ConjureFieldDefinition('asyncHandle', OptionalTypeWrapper[ingest_api_AsyncHandle]) - } - - __slots__: List[str] = ['_dataset_rid', '_async_handle'] - - def __init__(self, dataset_rid: str, async_handle: Optional["ingest_api_AsyncHandle"] = None) -> None: - self._dataset_rid = dataset_rid - self._async_handle = async_handle - - @builtins.property - def dataset_rid(self) -> str: - return self._dataset_rid - - @builtins.property - def async_handle(self) -> Optional["ingest_api_AsyncHandle"]: - return self._async_handle - - -ingest_api_TriggeredIngest.__name__ = "TriggeredIngest" -ingest_api_TriggeredIngest.__qualname__ = "TriggeredIngest" -ingest_api_TriggeredIngest.__module__ = "ingest_service_api.ingest_api" - - -class ingest_api_UtcTimestamp(ConjureBeanType): - - @builtins.classmethod - def _fields(cls) -> Dict[str, ConjureFieldDefinition]: - return { - 'seconds_since_epoch': ConjureFieldDefinition('secondsSinceEpoch', int), - 'offset_nanoseconds': ConjureFieldDefinition('offsetNanoseconds', OptionalTypeWrapper[int]) - } - - __slots__: List[str] = ['_seconds_since_epoch', '_offset_nanoseconds'] - - def __init__(self, seconds_since_epoch: int, offset_nanoseconds: Optional[int] = None) -> None: - self._seconds_since_epoch = seconds_since_epoch - self._offset_nanoseconds = offset_nanoseconds - - @builtins.property - def seconds_since_epoch(self) -> int: - return self._seconds_since_epoch - - @builtins.property - def offset_nanoseconds(self) -> Optional[int]: - return self._offset_nanoseconds - - -ingest_api_UtcTimestamp.__name__ = "UtcTimestamp" -ingest_api_UtcTimestamp.__qualname__ = "UtcTimestamp" -ingest_api_UtcTimestamp.__module__ = "ingest_service_api.ingest_api" - - -class ingest_api_VideoTimestampManifest(ConjureUnionType): - _no_manifest: Optional["ingest_api_NoTimestampManifest"] = None - _timestamp_manifests: Optional["ingest_api_TimestampManifest"] = None - - @builtins.classmethod - def _options(cls) -> Dict[str, ConjureFieldDefinition]: - return { - 'no_manifest': ConjureFieldDefinition('noManifest', ingest_api_NoTimestampManifest), - 'timestamp_manifests': ConjureFieldDefinition('timestampManifests', ingest_api_TimestampManifest) - } - - def __init__( - self, - no_manifest: Optional["ingest_api_NoTimestampManifest"] = None, - timestamp_manifests: Optional["ingest_api_TimestampManifest"] = None, - type_of_union: Optional[str] = None - ) -> None: - if type_of_union is None: - if (no_manifest is not None) + (timestamp_manifests is not None) != 1: - raise ValueError('a union must contain a single member') - - if no_manifest is not None: - self._no_manifest = no_manifest - self._type = 'noManifest' - if timestamp_manifests is not None: - self._timestamp_manifests = timestamp_manifests - self._type = 'timestampManifests' - - elif type_of_union == 'noManifest': - if no_manifest is None: - raise ValueError('a union value must not be None') - self._no_manifest = no_manifest - self._type = 'noManifest' - elif type_of_union == 'timestampManifests': - if timestamp_manifests is None: - raise ValueError('a union value must not be None') - self._timestamp_manifests = timestamp_manifests - self._type = 'timestampManifests' - - @builtins.property - def no_manifest(self) -> Optional["ingest_api_NoTimestampManifest"]: - return self._no_manifest - - @builtins.property - def timestamp_manifests(self) -> Optional["ingest_api_TimestampManifest"]: - return self._timestamp_manifests - - def accept(self, visitor) -> Any: - if not isinstance(visitor, ingest_api_VideoTimestampManifestVisitor): - raise ValueError('{} is not an instance of ingest_api_VideoTimestampManifestVisitor'.format(visitor.__class__.__name__)) - if self._type == 'noManifest' and self.no_manifest is not None: - return visitor._no_manifest(self.no_manifest) - if self._type == 'timestampManifests' and self.timestamp_manifests is not None: - return visitor._timestamp_manifests(self.timestamp_manifests) - - -ingest_api_VideoTimestampManifest.__name__ = "VideoTimestampManifest" -ingest_api_VideoTimestampManifest.__qualname__ = "VideoTimestampManifest" -ingest_api_VideoTimestampManifest.__module__ = "ingest_service_api.ingest_api" - - -class ingest_api_VideoTimestampManifestVisitor: - - @abstractmethod - def _no_manifest(self, no_manifest: "ingest_api_NoTimestampManifest") -> Any: - pass - - @abstractmethod - def _timestamp_manifests(self, timestamp_manifests: "ingest_api_TimestampManifest") -> Any: - pass - - -ingest_api_VideoTimestampManifestVisitor.__name__ = "VideoTimestampManifestVisitor" -ingest_api_VideoTimestampManifestVisitor.__qualname__ = "VideoTimestampManifestVisitor" -ingest_api_VideoTimestampManifestVisitor.__module__ = "ingest_service_api.ingest_api" - - -class upload_api_UploadService(Service): - """ - The Upload Service manages file uploads to S3. - """ - - def initiate_multipart_upload(self, auth_header: str, upload_request: "ingest_api_InitiateMultipartUploadRequest") -> "ingest_api_InitiateMultipartUploadResponse": - """ - Initiates a multipart upload to S3. -Does not directly upload any parts, but returns an uploadId used to upload parts. - """ - - _headers: Dict[str, Any] = { - 'Accept': 'application/json', - 'Content-Type': 'application/json', - 'Authorization': auth_header, - } - - _params: Dict[str, Any] = { - } - - _path_params: Dict[str, Any] = { - } - - _json: Any = ConjureEncoder().default(upload_request) - - _path = '/upload/v1/multipart-upload' - _path = _path.format(**_path_params) - - _response: Response = self._request( - 'POST', - self._uri + _path, - params=_params, - headers=_headers, - json=_json) - - _decoder = ConjureDecoder() - return _decoder.decode(_response.json(), ingest_api_InitiateMultipartUploadResponse, self._return_none_for_unknown_union_types) - - def list_parts(self, auth_header: str, key: str, upload_id: str) -> List["ingest_api_PartWithSize"]: - """ - Lists the parts that have been uploaded for a given uploadId. - """ - - _headers: Dict[str, Any] = { - 'Accept': 'application/json', - 'Authorization': auth_header, - } - - _params: Dict[str, Any] = { - 'key': key, - } - - _path_params: Dict[str, Any] = { - 'uploadId': upload_id, - } - - _json: Any = None - - _path = '/upload/v1/multipart-upload/{uploadId}' - _path = _path.format(**_path_params) - - _response: Response = self._request( - 'GET', - self._uri + _path, - params=_params, - headers=_headers, - json=_json) - - _decoder = ConjureDecoder() - return _decoder.decode(_response.json(), List[ingest_api_PartWithSize], self._return_none_for_unknown_union_types) - - def sign_part(self, auth_header: str, key: str, part_number: int, upload_id: str) -> "ingest_api_SignPartResponse": - """ - Signs an upload request for a single part. -Returns a URL that will execute the upload without further authentication. - """ - - _headers: Dict[str, Any] = { - 'Accept': 'application/json', - 'Authorization': auth_header, - } - - _params: Dict[str, Any] = { - 'key': key, - 'partNumber': part_number, - } - - _path_params: Dict[str, Any] = { - 'uploadId': upload_id, - } - - _json: Any = None - - _path = '/upload/v1/multipart-upload/{uploadId}' - _path = _path.format(**_path_params) - - _response: Response = self._request( - 'POST', - self._uri + _path, - params=_params, - headers=_headers, - json=_json) - - _decoder = ConjureDecoder() - return _decoder.decode(_response.json(), ingest_api_SignPartResponse, self._return_none_for_unknown_union_types) - - def complete_multipart_upload(self, auth_header: str, key: str, upload_id: str, parts: List["ingest_api_Part"] = None) -> "ingest_api_CompleteMultipartUploadResponse": - """ - Completes a multipart upload to S3. This should be called after all parts have been uploaded. - """ - parts = parts if parts is not None else [] - - _headers: Dict[str, Any] = { - 'Accept': 'application/json', - 'Content-Type': 'application/json', - 'Authorization': auth_header, - } - - _params: Dict[str, Any] = { - 'key': key, - } - - _path_params: Dict[str, Any] = { - 'uploadId': upload_id, - } - - _json: Any = ConjureEncoder().default(parts) - - _path = '/upload/v1/multipart-upload/{uploadId}/complete' - _path = _path.format(**_path_params) - - _response: Response = self._request( - 'POST', - self._uri + _path, - params=_params, - headers=_headers, - json=_json) - - _decoder = ConjureDecoder() - return _decoder.decode(_response.json(), ingest_api_CompleteMultipartUploadResponse, self._return_none_for_unknown_union_types) - - def abort_multipart_upload(self, auth_header: str, key: str, upload_id: str) -> str: - """ - Aborts a multipart upload to S3. -Frees storage used by previously uploaded parts and prevents further uploads to the same uploadId. - """ - - _headers: Dict[str, Any] = { - 'Accept': 'application/json', - 'Authorization': auth_header, - } - - _params: Dict[str, Any] = { - 'key': key, - } - - _path_params: Dict[str, Any] = { - 'uploadId': upload_id, - } - - _json: Any = None - - _path = '/upload/v1/multipart-upload/{uploadId}/abort' - _path = _path.format(**_path_params) - - _response: Response = self._request( - 'POST', - self._uri + _path, - params=_params, - headers=_headers, - json=_json) - - _decoder = ConjureDecoder() - return _decoder.decode(_response.json(), ingest_api_Ignored, self._return_none_for_unknown_union_types) - - def upload_file(self, auth_header: str, body: Any, file_name: str, size_bytes: Optional[int] = None) -> str: - """ - Uploads a file to S3. Intended for smaller files. - """ - - _headers: Dict[str, Any] = { - 'Accept': 'application/json', - 'Content-Type': 'application/octet-stream', - 'Authorization': auth_header, - } - - _params: Dict[str, Any] = { - 'fileName': file_name, - 'sizeBytes': size_bytes, - } - - _path_params: Dict[str, Any] = { - } - - _data: Any = body - - _path = '/upload/v1/upload-file' - _path = _path.format(**_path_params) - - _response: Response = self._request( - 'POST', - self._uri + _path, - params=_params, - headers=_headers, - data=_data) - - _decoder = ConjureDecoder() - return _decoder.decode(_response.json(), ingest_api_S3Path, self._return_none_for_unknown_union_types) - - -upload_api_UploadService.__name__ = "UploadService" -upload_api_UploadService.__qualname__ = "UploadService" -upload_api_UploadService.__module__ = "ingest_service_api.upload_api" - - -ingest_api_RunRid = str - -ingest_api_Label = str - -ingest_api_PropertyName = str - -ingest_api_DataSourceRefName = str - -ingest_api_PropertyValue = str - -ingest_api_Ignored = str - -ingest_api_S3Path = str - -ingest_api_ErrorType = str - -ingest_api_DataSourceRid = str - diff --git a/nominal/_api/ingest/py.typed b/nominal/_api/ingest/py.typed deleted file mode 100644 index 9bad5790..00000000 --- a/nominal/_api/ingest/py.typed +++ /dev/null @@ -1 +0,0 @@ -# coding=utf-8 diff --git a/nominal/_multipart.py b/nominal/_multipart.py index 8616a9ef..df2f2762 100644 --- a/nominal/_multipart.py +++ b/nominal/_multipart.py @@ -8,8 +8,8 @@ import requests from .exceptions import NominalMultipartUploadFailed -from ._api.ingest import ingest_api -from ._api.ingest import upload_api +from ._api.combined import ingest_api +from ._api.combined import upload_api logger = logging.getLogger(__name__) diff --git a/nominal/_utils.py b/nominal/_utils.py index 7ba2add2..c4e34b44 100644 --- a/nominal/_utils.py +++ b/nominal/_utils.py @@ -117,8 +117,8 @@ def run_upload(r, datasets_payload={}) -> dict: from dataclasses import dataclass from datetime import datetime, timezone from typing import Literal, Union, Iterable +from ._api.combined import ingest_api from ._api.combined import scout_run_api -from ._api.ingest import ingest_api if sys.version_info >= (3, 11): from typing import Self as Self diff --git a/nominal/nominal.py b/nominal/nominal.py index 752eb164..320795ba 100644 --- a/nominal/nominal.py +++ b/nominal/nominal.py @@ -16,7 +16,7 @@ from jsondiff import diff from rich import print -from ._api.ingest.ingest_api import ( +from ._api.combined.ingest_api import ( AbsoluteTimestamp, IngestService, IngestSource, diff --git a/nominal/sdk.py b/nominal/sdk.py index 784dbea0..0c73b87b 100644 --- a/nominal/sdk.py +++ b/nominal/sdk.py @@ -1,11 +1,12 @@ from __future__ import annotations -from io import TextIOBase import time +from base64 import urlsafe_b64encode from dataclasses import dataclass, field from datetime import datetime, timedelta +from io import TextIOBase from types import MappingProxyType -from typing import BinaryIO, Iterable, Literal, Mapping, Sequence, TypeVar, cast +from typing import BinaryIO, Iterable, Literal, Mapping, Sequence, cast import certifi from conjure_python_client import RequestsClient, ServiceConfiguration, SslConfiguration @@ -14,8 +15,8 @@ from ._api.combined import scout_catalog from ._api.combined import scout from ._api.combined import scout_run_api -from ._api.ingest import ingest_api -from ._api.ingest import upload_api +from ._api.combined import ingest_api +from ._api.combined import upload_api from ._multipart import put_multipart_upload from ._utils import ( _conjure_time_to_integral_nanoseconds, @@ -53,9 +54,7 @@ class Run: labels: Sequence[str] start: IntegralNanosecondsUTC end: IntegralNanosecondsUTC | None - _auth_header: str = field(repr=False) - _run_client: scout.RunService = field(repr=False) - _nominal_client: NominalClient = field(repr=False) + _client: NominalClient = field(repr=False) def add_datasets(self, datasets: Mapping[str, Dataset | str]) -> None: """Add datasets to this run. @@ -70,19 +69,19 @@ def add_datasets(self, datasets: Mapping[str, Dataset | str]) -> None: ) for ref_name, ds in datasets.items() } - self._run_client.add_data_sources_to_run(self._auth_header, data_sources, self.rid) + self._client._run_client.add_data_sources_to_run(self._client._auth_header, data_sources, self.rid) def list_datasets(self) -> Iterable[tuple[str, Dataset]]: """List the datasets associated with this run. Yields (ref_name, dataset) pairs. """ - run = self._run_client.get_run(self._auth_header, self.rid) + run = self._client._run_client.get_run(self._client._auth_header, self.rid) dataset_rids_by_ref_name = {} for ref_name, source in run.data_sources.items(): if source.data_source.type == "dataset": dataset_rid = cast(str, source.data_source.dataset) dataset_rids_by_ref_name[ref_name] = dataset_rid - datasets_by_rids = {ds.rid: ds for ds in self._nominal_client.get_datasets(dataset_rids_by_ref_name.values())} + datasets_by_rids = {ds.rid: ds for ds in self._client.get_datasets(dataset_rids_by_ref_name.values())} for ref_name, rid in dataset_rids_by_ref_name.items(): dataset = datasets_by_rids[rid] yield (ref_name, dataset) @@ -94,7 +93,7 @@ def add_attachments(self, attachments: Iterable[Attachment] | Iterable[str]) -> """ rids = [_rid_from_instance_or_string(a) for a in attachments] request = scout_run_api.UpdateAttachmentsRequest(attachments_to_add=rids, attachments_to_remove=[]) - self._run_client.update_run_attachment(self._auth_header, request, self.rid) + self._client._run_client.update_run_attachment(self._client._auth_header, request, self.rid) def remove_attachments(self, attachments: Iterable[Attachment] | Iterable[str]) -> None: """Remove attachments from this run. @@ -104,7 +103,7 @@ def remove_attachments(self, attachments: Iterable[Attachment] | Iterable[str]) """ rids = [_rid_from_instance_or_string(a) for a in attachments] request = scout_run_api.UpdateAttachmentsRequest(attachments_to_add=[], attachments_to_remove=rids) - self._run_client.update_run_attachment(self._auth_header, request, self.rid) + self._client._run_client.update_run_attachment(self._client._auth_header, request, self.rid) def update( self, @@ -132,15 +131,13 @@ def update( properties=None if properties is None else dict(properties), title=title, ) - response = self._run_client.update_run(self._auth_header, request, self.rid) - run = self.__class__._from_conjure(self._auth_header, self._run_client, self._nominal_client, response) + response = self._client._run_client.update_run(self._client._auth_header, request, self.rid) + run = self.__class__._from_conjure(self._client, response) update_dataclass(self, run, fields=self.__dataclass_fields__) return self @classmethod - def _from_conjure( - cls, auth_header: str, run_client: scout.RunService, nominal_client: NominalClient, run: scout_run_api.Run - ) -> Self: + def _from_conjure(cls, nominal_client: NominalClient, run: scout_run_api.Run) -> Self: return cls( rid=run.rid, title=run.title, @@ -149,9 +146,7 @@ def _from_conjure( labels=tuple(run.labels), start=_conjure_time_to_integral_nanoseconds(run.start_time), end=(_conjure_time_to_integral_nanoseconds(run.end_time) if run.end_time else None), - _auth_header=auth_header, - _run_client=run_client, - _nominal_client=nominal_client, + _client=nominal_client, ) @@ -162,8 +157,7 @@ class Dataset: description: str | None properties: Mapping[str, str] labels: Sequence[str] - _auth_header: str = field(repr=False) - _catalog_client: scout_catalog.CatalogService = field(repr=False) + _client: NominalClient = field(repr=False) def poll_until_ingestion_completed(self, interval: timedelta = timedelta(seconds=2)) -> None: """Block until dataset ingestion has completed. @@ -174,7 +168,7 @@ def poll_until_ingestion_completed(self, interval: timedelta = timedelta(seconds NominalIngestFailed: if the ingest failed """ while True: - dataset = _get_dataset(self._auth_header, self._catalog_client, self.rid) + dataset = _get_dataset(self._client._auth_header, self._client._catalog_client, self.rid) if dataset.ingest_status == scout_catalog.IngestStatus.COMPLETED: return elif dataset.ingest_status == scout_catalog.IngestStatus.FAILED: @@ -210,24 +204,59 @@ def update( name=name, properties=None if properties is None else dict(properties), ) - response = self._catalog_client.update_dataset_metadata(self._auth_header, self.rid, request) + response = self._client._catalog_client.update_dataset_metadata(self._client._auth_header, self.rid, request) - dataset = self.__class__._from_conjure(self._auth_header, self._catalog_client, response) + dataset = self.__class__._from_conjure(self._client, response) update_dataclass(self, dataset, fields=self.__dataclass_fields__) return self + def add_to_dataset_from_io( + self, + dataset: BinaryIO, + timestamp_column_name: str, + timestamp_column_type: TimestampColumnType, + file_extension: _AllowedFileExtensions = ".csv", + ) -> None: + """Append to a dataset from a file-like object.""" + + if not isinstance(timestamp_column_type, CustomTimestampFormat): + if timestamp_column_type.startswith("relative"): + raise ValueError( + "multifile datasets with relative timestamps are not yet supported by the client library" + ) + + if isinstance(dataset, TextIOBase): + raise TypeError(f"dataset {dataset} must be open in binary mode, rather than text mode") + + self.poll_until_ingestion_completed() + + filename = f"{self.name}{file_extension}" + s3_path = put_multipart_upload( + self._client._auth_header, dataset, filename, "text/csv", self._client._upload_client + ) + request = ingest_api.TriggerFileIngest( + destination=ingest_api.IngestDestination( + existing_dataset=ingest_api.ExistingDatasetIngestDestination(dataset_rid=self.rid) + ), + source=ingest_api.IngestSource(s3=ingest_api.S3IngestSource(path=s3_path)), + source_metadata=ingest_api.IngestSourceMetadata( + timestamp_metadata=ingest_api.TimestampMetadata( + series_name=timestamp_column_name, + timestamp_type=_timestamp_type_to_conjure_ingest_api(timestamp_column_type), + ), + ), + ) + self._client._ingest_client.trigger_file_ingest(self._client._auth_header, request) + @classmethod - def _from_conjure( - cls, auth_header: str, catalog_client: scout_catalog.CatalogService, dataset: scout_catalog.EnrichedDataset - ) -> Self: + def _from_conjure(cls, client: NominalClient, dataset: scout_catalog.EnrichedDataset) -> Self: return cls( rid=dataset.rid, name=dataset.name, description=dataset.description, properties=MappingProxyType(dataset.properties), labels=tuple(dataset.labels), - _auth_header=auth_header, - _catalog_client=catalog_client, + _client=client, ) @@ -238,8 +267,7 @@ class Attachment: description: str properties: Mapping[str, str] labels: Sequence[str] - _auth_header: str = field(repr=False) - _attachment_client: attachments_api.AttachmentService = field(repr=False) + _client: NominalClient = field(repr=False) def update( self, @@ -266,8 +294,8 @@ def update( properties=None if properties is None else dict(properties), title=title, ) - response = self._attachment_client.update(self._auth_header, request, self.rid) - attachment = self.__class__._from_conjure(self._auth_header, self._attachment_client, response) + response = self._client._attachment_client.update(self._client._auth_header, request, self.rid) + attachment = self.__class__._from_conjure(self._client, response) update_dataclass(self, attachment, fields=self.__dataclass_fields__) return self @@ -275,7 +303,7 @@ def get_contents(self) -> BinaryIO: """Retrieves the contents of this attachment. Returns a file-like object in binary mode for reading. """ - response = self._attachment_client.get_content(self._auth_header, self.rid) + response = self._client._attachment_client.get_content(self._client._auth_header, self.rid) # note: the response is the same as the requests.Response.raw field, with stream=True on the request; # this acts like a file-like object in binary-mode. return cast(BinaryIO, response) @@ -283,8 +311,7 @@ def get_contents(self) -> BinaryIO: @classmethod def _from_conjure( cls, - auth_header: str, - attachment_client: attachments_api.AttachmentService, + client: NominalClient, attachment: attachments_api.Attachment, ) -> Self: return cls( @@ -293,8 +320,7 @@ def _from_conjure( description=attachment.description, properties=MappingProxyType(attachment.properties), labels=tuple(attachment.labels), - _auth_header=auth_header, - _attachment_client=attachment_client, + _client=client, ) @@ -376,13 +402,13 @@ def create_run( end_time=end_abs, ) response = self._run_client.create_run(self._auth_header, request) - return Run._from_conjure(self._auth_header, self._run_client, self, response) + return Run._from_conjure(self, response) def get_run(self, run: Run | str) -> Run: """Retrieve a run by run or run RID.""" run_rid = _rid_from_instance_or_string(run) response = self._run_client.get_run(self._auth_header, run_rid) - return Run._from_conjure(self._auth_header, self._run_client, self, response) + return Run._from_conjure(self, response) def _list_runs_paginated(self, request: scout_run_api.SearchRunsRequest) -> Iterable[scout_run_api.Run]: while True: @@ -409,7 +435,7 @@ def _list_runs(self) -> Iterable[Run]: ), ) for run in self._list_runs_paginated(request): - yield Run._from_conjure(self._auth_header, self._run_client, self, run) + yield Run._from_conjure(self, run) def create_dataset_from_io( self, @@ -433,38 +459,45 @@ def create_dataset_from_io( "relative_{unit}": relative timestamps (floats or ints), where {unit} is one of: nanoseconds | microseconds | milliseconds | seconds | minutes | hours | days """ - # TODO(alkasm): create dataset from file/path if isinstance(dataset, TextIOBase): raise TypeError(f"dataset {dataset} must be open in binary mode, rather than text mode") - filename = f"{name}{file_extension}" + urlsafe_name = urlsafe_b64encode(name.encode()).decode() + filename = f"{urlsafe_name}{file_extension}" s3_path = put_multipart_upload(self._auth_header, dataset, filename, "text/csv", self._upload_client) - request = ingest_api.TriggerIngest( - labels=list(labels), - properties={} if properties is None else dict(properties), + request = ingest_api.TriggerFileIngest( + destination=ingest_api.IngestDestination( + new_dataset=ingest_api.NewDatasetIngestDestination( + labels=list(labels), + properties={} if properties is None else dict(properties), + channel_config=None, # TODO(alkasm): support offsets + dataset_description=description, + dataset_name=name, + ) + ), source=ingest_api.IngestSource(s3=ingest_api.S3IngestSource(path=s3_path)), - dataset_description=description, - dataset_name=name, - timestamp_metadata=ingest_api.TimestampMetadata( - series_name=timestamp_column_name, - timestamp_type=_timestamp_type_to_conjure_ingest_api(timestamp_column_type), + source_metadata=ingest_api.IngestSourceMetadata( + timestamp_metadata=ingest_api.TimestampMetadata( + series_name=timestamp_column_name, + timestamp_type=_timestamp_type_to_conjure_ingest_api(timestamp_column_type), + ), ), ) - response = self._ingest_client.trigger_ingest(self._auth_header, request) + response = self._ingest_client.trigger_file_ingest(self._auth_header, request) return self.get_dataset(response.dataset_rid) def get_dataset(self, dataset: Dataset | str) -> Dataset: """Retrieve a dataset by dataset or dataset RID.""" dataset_rid = _rid_from_instance_or_string(dataset) response = _get_dataset(self._auth_header, self._catalog_client, dataset_rid) - return Dataset._from_conjure(self._auth_header, self._catalog_client, response) + return Dataset._from_conjure(self, response) def get_datasets(self, datasets: Iterable[Dataset] | Iterable[str]) -> Iterable[Dataset]: """Retrieve datasets by dataset or dataset RID.""" dataset_rids = (_rid_from_instance_or_string(ds) for ds in datasets) for ds in _get_datasets(self._auth_header, self._catalog_client, dataset_rids): - yield Dataset._from_conjure(self._auth_header, self._catalog_client, ds) + yield Dataset._from_conjure(self, ds) def _search_datasets(self) -> Iterable[Dataset]: # TODO(alkasm): search filters @@ -480,14 +513,14 @@ def _search_datasets(self) -> Iterable[Dataset]: ) response = self._catalog_client.search_datasets(self._auth_header, request) for ds in response.results: - yield Dataset._from_conjure(self._auth_header, self._catalog_client, ds) + yield Dataset._from_conjure(self, ds) def create_attachment_from_io( self, attachment: BinaryIO, - mimetype: str, title: str, description: str, + mimetype: str, *, labels: Sequence[str] = (), properties: Mapping[str, str] | None = None, @@ -498,9 +531,10 @@ def create_attachment_from_io( """ # TODO(alkasm): create attachment from file/path + urlsafe_name = urlsafe_b64encode(title.encode()).decode() if isinstance(attachment, TextIOBase): raise TypeError(f"attachment {attachment} must be open in binary mode, rather than text mode") - s3_path = put_multipart_upload(self._auth_header, attachment, title, mimetype, self._upload_client) + s3_path = put_multipart_upload(self._auth_header, attachment, urlsafe_name, mimetype, self._upload_client) request = attachments_api.CreateAttachmentRequest( description=description, labels=list(labels), @@ -509,13 +543,13 @@ def create_attachment_from_io( title=title, ) response = self._attachment_client.create(self._auth_header, request) - return Attachment._from_conjure(self._auth_header, self._attachment_client, response) + return Attachment._from_conjure(self, response) def get_attachment(self, attachment: Attachment | str) -> Attachment: """Retrieve an attachment by attachment or attachment RID.""" attachment_rid = _rid_from_instance_or_string(attachment) response = self._attachment_client.get(self._auth_header, attachment_rid) - return Attachment._from_conjure(self._auth_header, self._attachment_client, response) + return Attachment._from_conjure(self, response) def _get_datasets(