diff --git a/README.md b/README.md new file mode 100755 index 000000000..685562885 --- /dev/null +++ b/README.md @@ -0,0 +1,130 @@ +# epilotapi + + +## SDK Installation + +```bash +pip install epilotapi +``` + + +## SDK Example Usage + +```python +import epilotapi +from epilotapi.models import operations, shared + +s = epilotapi.EpilotAPI() +s.config_security( + security=shared.Security( + epilot_auth=shared.SchemeEpilotAuth( + authorization="Bearer YOUR_BEARER_TOKEN_HERE", + ), + ) +) + +req = operations.AttachActivityRequest( + path_params=operations.AttachActivityPathParams( + id="sit", + ), + query_params=operations.AttachActivityQueryParams( + entities=[ + "culpa", + ], + ), +) + +res = s.activity.attach_activity(req) + +if res.activity_item is not None: + # handle response +``` + + + +## SDK Available Operations + +### Activity + +* `attach_activity` - attachActivity +* `create_activity` - createActivity +* `get_activity` - getActivity +* `get_entity_activity_feed` - getEntityActivityFeed + +### Entities + +* `autocomplete` - autocomplete +* `create_entity` - createEntity +* `delete_entity` - deleteEntity +* `get_entity` - getEntity +* `search_entities` - searchEntities +* `update_entity` - updateEntity +* `upsert_entity` - upsertEntity + +### Export + +* `export_entities` - exportEntities +* `import_entities` - importEntities + +### Journeys + +* `create_journey` - createJourney +* `get_journey` - getJourney +* `get_journeys_by_org_id` - getJourneysByOrgId +* `patch_update_journey` - patchUpdateJourney +* `remove_journey` - removeJourney +* `search_journeys` - searchJourneys +* `update_journey` - updateJourney + +### Relations + +* `add_relations` - addRelations +* `delete_relation` - deleteRelation +* `get_relations` - getRelations +* `update_relation` - updateRelation + +### Saved Views + +* `create_saved_view` - createSavedView +* `delete_saved_view` - deleteSavedView +* `get_saved_view` - getSavedView +* `list_saved_views` - listSavedViews +* `update_saved_view` - updateSavedView + +### Schemas + +* `create_new_schema_version` - createNewSchemaVersion +* `delete_schema_by_id` - deleteSchemaById +* `get_schema` - getSchema +* `get_schema_versions` - getSchemaVersions +* `list_schema_blueprints` - listSchemaBlueprints +* `list_schemas` - listSchemas +* `list_taxonomy_classifications_for_schema` - listTaxonomyClassificationsForSchema + +### Taxonomy + +* `get_taxonomy` - getTaxonomy +* `list_taxonomies` - listTaxonomies +* `taxonomies_classifications_search` - taxonomiesClassificationsSearch +* `taxonomy_autocomplete` - taxonomyAutocomplete +* `update_classifications_for_taxonomy` - updateClassificationsForTaxonomy + +### executions + +* `cancel_execution` - cancelExecution +* `get_execution` - getExecution +* `get_executions` - getExecutions +* `retrigger_action` - retriggerAction +* `start_execution` - startExecution + +### flows + +* `create_flow` - createFlow +* `delete_flow` - deleteFlow +* `get_flow` - getFlow +* `put_flow` - putFlow +* `search_flows` - searchFlows + + + +### SDK Generated by [Speakeasy](https://docs.speakeasyapi.dev/docs/using-speakeasy/client-sdks) diff --git a/RELEASES.md b/RELEASES.md new file mode 100644 index 000000000..79a6f9211 --- /dev/null +++ b/RELEASES.md @@ -0,0 +1,9 @@ + + +## Version 1.1.0 +### Changes +Based on: +- OpenAPI Doc 1.0.0 ./openapi.yaml +- Speakeasy CLI 0.22.0 https://github.com/speakeasy-api/speakeasy +### Releases +- [PyPI v1.1.0] https://pypi.org/project/epilotapi/1.1.0 - . \ No newline at end of file diff --git a/USAGE.md b/USAGE.md new file mode 100755 index 000000000..9b55911ab --- /dev/null +++ b/USAGE.md @@ -0,0 +1,31 @@ + +```python +import epilotapi +from epilotapi.models import operations, shared + +s = epilotapi.EpilotAPI() +s.config_security( + security=shared.Security( + epilot_auth=shared.SchemeEpilotAuth( + authorization="Bearer YOUR_BEARER_TOKEN_HERE", + ), + ) +) + +req = operations.AttachActivityRequest( + path_params=operations.AttachActivityPathParams( + id="sit", + ), + query_params=operations.AttachActivityQueryParams( + entities=[ + "culpa", + ], + ), +) + +res = s.activity.attach_activity(req) + +if res.activity_item is not None: + # handle response +``` + \ No newline at end of file diff --git a/gen.yaml b/gen.yaml index 80e5185f9..f2dd9de25 100644 --- a/gen.yaml +++ b/gen.yaml @@ -1,5 +1,9 @@ +management: + openapi-checksum: e5a0a41f38f047f4f80691166ac20b34 + openapi-version: 1.0.0 + speakeasy-version: 0.22.0 python: - version: 1.0.0 + version: 1.1.0 packagename: epilotapi author: epilotapi sdkclassname: EpilotAPI diff --git a/setup.py b/setup.py new file mode 100755 index 000000000..5912c2506 --- /dev/null +++ b/setup.py @@ -0,0 +1,37 @@ +import setuptools + +try: + with open("README.md", "r") as fh: + long_description = fh.read() +except FileNotFoundError: + long_description = "" + +setuptools.setup( + name="epilotapi", + version="1.1.0", + author="epilotapi", + description="Python Client SDK Generated by Speakeasy", + long_description=long_description, + long_description_content_type="text/markdown", + packages=setuptools.find_packages(where="src"), + install_requires=[ + "certifi==2022.12.07", + "charset-normalizer==2.1.1", + "dacite==1.6.0", + "dataclasses-json-speakeasy==0.5.8", + "idna==3.3", + "marshmallow==3.17.1", + "marshmallow-enum==1.5.1", + "mypy-extensions==0.4.3", + "packaging==21.3", + "pyparsing==3.0.9", + "python-dateutil==2.8.2", + "requests==2.28.1", + "six==1.16.0", + "typing-inspect==0.8.0", + "typing_extensions==4.3.0", + "urllib3==1.26.12", + ], + package_dir={'': 'src'}, + python_requires='>=3.9' +) diff --git a/src/epilotapi/__init__.py b/src/epilotapi/__init__.py new file mode 100755 index 000000000..8d74a7d2f --- /dev/null +++ b/src/epilotapi/__init__.py @@ -0,0 +1 @@ +from .sdk import * \ No newline at end of file diff --git a/src/epilotapi/activity.py b/src/epilotapi/activity.py new file mode 100755 index 000000000..c80e74584 --- /dev/null +++ b/src/epilotapi/activity.py @@ -0,0 +1,135 @@ +import requests +from typing import Optional +from epilotapi.models import shared, operations +from . import utils + +class Activity: + _client: requests.Session + _security_client: requests.Session + _server_url: str + _language: str + _sdk_version: str + _gen_version: str + + def __init__(self, client: requests.Session, security_client: requests.Session, server_url: str, language: str, sdk_version: str, gen_version: str) -> None: + self._client = client + self._security_client = security_client + self._server_url = server_url + self._language = language + self._sdk_version = sdk_version + self._gen_version = gen_version + + + def attach_activity(self, request: operations.AttachActivityRequest) -> operations.AttachActivityResponse: + r"""attachActivity + Attach existing activity to entity activity feeds + """ + + base_url = self._server_url + + url = utils.generate_url(base_url, "/v1/entity/activity/{id}:attach", request.path_params) + + query_params = utils.get_query_params(request.query_params) + + client = self._security_client + + r = client.request("POST", url, params=query_params) + content_type = r.headers.get("Content-Type") + + res = operations.AttachActivityResponse(status_code=r.status_code, content_type=content_type) + + if r.status_code == 200: + if utils.match_content_type(content_type, "application/json"): + out = utils.unmarshal_json(r.text, Optional[shared.ActivityItem]) + res.activity_item = out + + return res + + + def create_activity(self, request: operations.CreateActivityRequest) -> operations.CreateActivityResponse: + r"""createActivity + Create an activity that can be displayed in activity feeds. + + - All activites are published as events on the event bus + - Entity mutations are always part of an activity + + """ + + base_url = self._server_url + + url = base_url.removesuffix("/") + "/v1/entity/activity" + + headers = {} + req_content_type, data, json, files = utils.serialize_request_body(request) + if req_content_type != "multipart/form-data" and req_content_type != "multipart/mixed": + headers["content-type"] = req_content_type + query_params = utils.get_query_params(request.query_params) + + client = self._security_client + + r = client.request("POST", url, params=query_params, data=data, json=json, files=files, headers=headers) + content_type = r.headers.get("Content-Type") + + res = operations.CreateActivityResponse(status_code=r.status_code, content_type=content_type) + + if r.status_code == 200: + if utils.match_content_type(content_type, "application/json"): + out = utils.unmarshal_json(r.text, Optional[shared.ActivityItem]) + res.activity_item = out + + return res + + + def get_activity(self, request: operations.GetActivityRequest) -> operations.GetActivityResponse: + r"""getActivity + Get activity by id + """ + + base_url = self._server_url + + url = utils.generate_url(base_url, "/v1/entity/activity/{id}", request.path_params) + + query_params = utils.get_query_params(request.query_params) + + client = self._security_client + + r = client.request("GET", url, params=query_params) + content_type = r.headers.get("Content-Type") + + res = operations.GetActivityResponse(status_code=r.status_code, content_type=content_type) + + if r.status_code == 200: + if utils.match_content_type(content_type, "application/json"): + out = utils.unmarshal_json(r.text, Optional[shared.ActivityItem]) + res.activity_item = out + + return res + + + def get_entity_activity_feed(self, request: operations.GetEntityActivityFeedRequest) -> operations.GetEntityActivityFeedResponse: + r"""getEntityActivityFeed + Get activity feed for an entity + + """ + + base_url = self._server_url + + url = utils.generate_url(base_url, "/v1/entity/{slug}/{id}/activity", request.path_params) + + query_params = utils.get_query_params(request.query_params) + + client = self._security_client + + r = client.request("GET", url, params=query_params) + content_type = r.headers.get("Content-Type") + + res = operations.GetEntityActivityFeedResponse(status_code=r.status_code, content_type=content_type) + + if r.status_code == 200: + if utils.match_content_type(content_type, "application/json"): + out = utils.unmarshal_json(r.text, Optional[operations.GetEntityActivityFeed200ApplicationJSON]) + res.get_entity_activity_feed_200_application_json_object = out + + return res + + \ No newline at end of file diff --git a/src/epilotapi/entities.py b/src/epilotapi/entities.py new file mode 100755 index 000000000..82a0dda75 --- /dev/null +++ b/src/epilotapi/entities.py @@ -0,0 +1,418 @@ +import requests +from typing import Any,Optional +from epilotapi.models import shared, operations +from . import utils + +class Entities: + _client: requests.Session + _security_client: requests.Session + _server_url: str + _language: str + _sdk_version: str + _gen_version: str + + def __init__(self, client: requests.Session, security_client: requests.Session, server_url: str, language: str, sdk_version: str, gen_version: str) -> None: + self._client = client + self._security_client = security_client + self._server_url = server_url + self._language = language + self._sdk_version = sdk_version + self._gen_version = gen_version + + + def autocomplete(self, request: operations.AutocompleteRequest) -> operations.AutocompleteResponse: + r"""autocomplete + Autocomplete entity attributes + + """ + + base_url = self._server_url + + url = base_url.removesuffix("/") + "/v1/entity:autocomplete" + + query_params = utils.get_query_params(request.query_params) + + client = self._security_client + + r = client.request("GET", url, params=query_params) + content_type = r.headers.get("Content-Type") + + res = operations.AutocompleteResponse(status_code=r.status_code, content_type=content_type) + + if r.status_code == 200: + if utils.match_content_type(content_type, "application/json"): + out = utils.unmarshal_json(r.text, Optional[operations.Autocomplete200ApplicationJSON]) + res.autocomplete_200_application_json_object = out + + return res + + + def create_entity(self, request: operations.CreateEntityRequest) -> operations.CreateEntityResponse: + r"""createEntity + Creates a new entity using a key. + + ## Activity + + If no `activity_id` query parameter is provided, implicitly creates Activity of type `EntityCreated` + + ## Relations + + To create a relation, store a property object that defines a `$relation` array. + + Example: + + ```json + { + \"contacts\": { + \"$relation\": [ + { \"entity_id\": \"3fa85f64-5717-4562-b3fc-2c963f66afa6\" } + ] + } + } + ``` + + The items in `$relation` support two properties: + - `entity_id` - The ID of the entity to link + - `_tags` - Tags or labels for the relation (optional) + + """ + + base_url = self._server_url + + url = utils.generate_url(base_url, "/v1/entity/{slug}", request.path_params) + + headers = {} + req_content_type, data, json, files = utils.serialize_request_body(request) + if req_content_type != "multipart/form-data" and req_content_type != "multipart/mixed": + headers["content-type"] = req_content_type + query_params = utils.get_query_params(request.query_params) + + client = self._security_client + + r = client.request("POST", url, params=query_params, data=data, json=json, files=files, headers=headers) + content_type = r.headers.get("Content-Type") + + res = operations.CreateEntityResponse(status_code=r.status_code, content_type=content_type) + + if r.status_code == 201: + if utils.match_content_type(content_type, "application/json"): + out = utils.unmarshal_json(r.text, Optional[dict[str, Any]]) + res.entity_item = out + + return res + + + def delete_entity(self, request: operations.DeleteEntityRequest) -> operations.DeleteEntityResponse: + r"""deleteEntity + Deletes an Entity + + ## Activity + + If no `activity_id` query parameter is provided, implicitly creates Activity of type `EntityDeleted` + + """ + + base_url = self._server_url + + url = utils.generate_url(base_url, "/v1/entity/{slug}/{id}", request.path_params) + + query_params = utils.get_query_params(request.query_params) + + client = self._security_client + + r = client.request("DELETE", url, params=query_params) + content_type = r.headers.get("Content-Type") + + res = operations.DeleteEntityResponse(status_code=r.status_code, content_type=content_type) + + if r.status_code == 200: + pass + + return res + + + def get_entity(self, request: operations.GetEntityRequest) -> operations.GetEntityResponse: + r"""getEntity + Gets Entity and relations by id. + + ## Relations + + When `hydrate=true`, relation attributes are replaced in-place with nested entity values. + + Example: + ```json + { + \"_id\": \"123\", + \"name\": \"parent\", + \"_tags\": [\"parent\"], + \"contacts\": { + \"$relation\": [ + { \"entity_id\": \"456\", \"_tags\": [\"primary\"] }, + { \"entity_id\": \"789\", \"_tags\": [\"secondary\"] }, + ] + }, + \"addresses\": { + \"$relation_ref\": [ + { \"entity_id\": \"123\", \"_tags\": [\"primary\"], \"path\": \"address.0\" }, + { \"entity_id\": \"234\", \"_tags\": [\"secondary\"], \"path\": \"address.0\" }, + ] + } + } + ``` + + Becomes: + ```json + { + \"_id\": \"123\", + \"name\": \"parent\", + \"_tags\": [\"parent\"], + \"contacts\": [ + { + \"$relation\": { \"entity_id\": \"456\", \"_tags\": [\"primary\"] }, + \"_id\": \"456\", + \"name\": \"child 1\", + \"_tags\": [\"child\"] + }, + { + \"$relation\": { \"entity_id\": \"789\", \"_tags\": [\"secondary\"] }, + \"_id\": \"789\", + \"name\": \"child 2\", + \"_tags\": [\"child\"] + } + ], + \"addresses\": [ + { + \"$relation_ref\": { \"entity_id\": \"123\", \"_tags\": [\"primary\"], \"path\": \"address.0\" }, + \"_id\": \"123\", + \"address\": \"address 1\", + \"_tags\": [\"child\"] + }, + { + \"$relation_ref\": { \"entity_id\": \"234\", \"_tags\": [\"secondary\"], \"path\": \"address.0\" }, + \"_id\": \"234\", + \"address\": \"address 2\", + \"_tags\": [\"child\"] + } + ] + } + ``` + + """ + + base_url = self._server_url + + url = utils.generate_url(base_url, "/v1/entity/{slug}/{id}", request.path_params) + + query_params = utils.get_query_params(request.query_params) + + client = self._security_client + + r = client.request("GET", url, params=query_params) + content_type = r.headers.get("Content-Type") + + res = operations.GetEntityResponse(status_code=r.status_code, content_type=content_type) + + if r.status_code == 200: + if utils.match_content_type(content_type, "application/json"): + out = utils.unmarshal_json(r.text, Optional[operations.GetEntity200ApplicationJSON]) + res.get_entity_200_application_json_object = out + + return res + + + def search_entities(self, request: operations.SearchEntitiesRequest) -> operations.SearchEntitiesResponse: + r"""searchEntities + Search for entities. Supports ordering and pagination. Lucene query syntax supported for complex querying. + + Passing comma-separated `x-epilot-org-id` is supported for cross-org entity search. + + ## Relations + + When `hydrate=true`, relation attributes are replaced in-place with nested entity values. + + Example: + ```json + { + \"_id\": \"123\", + \"name\": \"parent\", + \"_tags\": [\"parent\"], + \"contacts\": { + \"$relation\": [ + { \"entity_id\": \"456\", \"_tags\": [\"primary\"] }, + { \"entity_id\": \"789\", \"_tags\": [\"secondary\"] }, + ] + }, + \"addresses\": { + \"$relation_ref\": [ + { \"entity_id\": \"123\", \"_tags\": [\"primary\"], \"path\": \"address.0\" }, + { \"entity_id\": \"234\", \"_tags\": [\"secondary\"], \"path\": \"address.0\" }, + ] + } + } + ``` + + Becomes: + ```json + { + \"_id\": \"123\", + \"name\": \"parent\", + \"_tags\": [\"parent\"], + \"contacts\": [ + { + \"$relation\": { \"entity_id\": \"456\", \"_tags\": [\"primary\"] }, + \"_id\": \"456\", + \"name\": \"child 1\", + \"_tags\": [\"child\"] + }, + { + \"$relation\": { \"entity_id\": \"789\", \"_tags\": [\"secondary\"] }, + \"_id\": \"789\", + \"name\": \"child 2\", + \"_tags\": [\"child\"] + } + ], + \"addresses\": [ + { + \"$relation_ref\": { \"entity_id\": \"123\", \"_tags\": [\"primary\"], \"path\": \"address.0\" }, + \"_id\": \"123\", + \"address\": \"address 1\", + \"_tags\": [\"child\"] + }, + { + \"$relation_ref\": { \"entity_id\": \"234\", \"_tags\": [\"secondary\"], \"path\": \"address.0\" }, + \"_id\": \"234\", + \"address\": \"address 2\", + \"_tags\": [\"child\"] + } + ] + } + ``` + + """ + + base_url = self._server_url + + url = base_url.removesuffix("/") + "/v1/entity:search" + + headers = {} + req_content_type, data, json, files = utils.serialize_request_body(request) + if req_content_type != "multipart/form-data" and req_content_type != "multipart/mixed": + headers["content-type"] = req_content_type + + client = self._security_client + + r = client.request("POST", url, data=data, json=json, files=files, headers=headers) + content_type = r.headers.get("Content-Type") + + res = operations.SearchEntitiesResponse(status_code=r.status_code, content_type=content_type) + + if r.status_code == 200: + if utils.match_content_type(content_type, "application/json"): + out = utils.unmarshal_json(r.text, Optional[shared.EntitySearchResults]) + res.entity_search_results = out + if utils.match_content_type(content_type, "text/csv"): + res.search_entities_200_text_csv_string = r.content + + return res + + + def update_entity(self, request: operations.UpdateEntityRequest) -> operations.UpdateEntityResponse: + r"""updateEntity + Updates an Entity + + ## Activity + + If no `activity_id` query parameter is provided, implicitly creates Activity of type `EntityUpdated` + + ## Relations + + To create a relation, store a property that defines a `$relation` array. + + Example: + + ```json + { + \"contacts\": { + \"$relation\": [ + { \"entity_id\": \"3fa85f64-5717-4562-b3fc-2c963f66afa6\" } + ] + } + } + ``` + + The items in `$relation` support two properties: + - `entity_id` - The ID of the entity to link + - `_tags` - Tags or labels for the relation (optional) + + """ + + base_url = self._server_url + + url = utils.generate_url(base_url, "/v1/entity/{slug}/{id}", request.path_params) + + headers = {} + req_content_type, data, json, files = utils.serialize_request_body(request) + if req_content_type != "multipart/form-data" and req_content_type != "multipart/mixed": + headers["content-type"] = req_content_type + query_params = utils.get_query_params(request.query_params) + + client = self._security_client + + r = client.request("PUT", url, params=query_params, data=data, json=json, files=files, headers=headers) + content_type = r.headers.get("Content-Type") + + res = operations.UpdateEntityResponse(status_code=r.status_code, content_type=content_type) + + if r.status_code == 200: + if utils.match_content_type(content_type, "application/json"): + out = utils.unmarshal_json(r.text, Optional[dict[str, Any]]) + res.entity_item = out + + return res + + + def upsert_entity(self, request: operations.UpsertEntityRequest) -> operations.UpsertEntityResponse: + r"""upsertEntity + Create or update an entity using `unique_key` + + - If no entities are matched, a new entity is created. + - If exactly one entity is matched, a `PATCH`-style update is applied to the existing entity. + - If more than one entity is matched a `409` Error is returned + + ## Activity + + If no `activity_id` query parameter is provided, implicitly creates Activity of type `EntityCreated` or `EntityUpdated` + + """ + + base_url = self._server_url + + url = utils.generate_url(base_url, "/v1/entity/{slug}:upsert", request.path_params) + + headers = {} + req_content_type, data, json, files = utils.serialize_request_body(request) + if req_content_type != "multipart/form-data" and req_content_type != "multipart/mixed": + headers["content-type"] = req_content_type + query_params = utils.get_query_params(request.query_params) + + client = self._security_client + + r = client.request("PATCH", url, params=query_params, data=data, json=json, files=files, headers=headers) + content_type = r.headers.get("Content-Type") + + res = operations.UpsertEntityResponse(status_code=r.status_code, content_type=content_type) + + if r.status_code == 200: + if utils.match_content_type(content_type, "application/json"): + out = utils.unmarshal_json(r.text, Optional[dict[str, Any]]) + res.entity_item = out + elif r.status_code == 201: + if utils.match_content_type(content_type, "application/json"): + out = utils.unmarshal_json(r.text, Optional[dict[str, Any]]) + res.entity_item = out + elif r.status_code == 409: + pass + + return res + + \ No newline at end of file diff --git a/src/epilotapi/executions.py b/src/epilotapi/executions.py new file mode 100755 index 000000000..68af1156a --- /dev/null +++ b/src/epilotapi/executions.py @@ -0,0 +1,154 @@ +import requests +from typing import Optional +from epilotapi.models import shared, operations +from . import utils + +class Executions: + _client: requests.Session + _security_client: requests.Session + _server_url: str + _language: str + _sdk_version: str + _gen_version: str + + def __init__(self, client: requests.Session, security_client: requests.Session, server_url: str, language: str, sdk_version: str, gen_version: str) -> None: + self._client = client + self._security_client = security_client + self._server_url = server_url + self._language = language + self._sdk_version = sdk_version + self._gen_version = gen_version + + + def cancel_execution(self, request: operations.CancelExecutionRequest) -> operations.CancelExecutionResponse: + r"""cancelExecution + Cancel automation execution + """ + + base_url = self._server_url + + url = utils.generate_url(base_url, "/v1/automation/executions/{execution_id}", request.path_params) + + + client = self._security_client + + r = client.request("DELETE", url) + content_type = r.headers.get("Content-Type") + + res = operations.CancelExecutionResponse(status_code=r.status_code, content_type=content_type) + + if r.status_code == 200: + if utils.match_content_type(content_type, "application/json"): + out = utils.unmarshal_json(r.text, Optional[shared.AutomationExecution]) + res.automation_execution = out + + return res + + + def get_execution(self, request: operations.GetExecutionRequest) -> operations.GetExecutionResponse: + r"""getExecution + Get automation execution + """ + + base_url = self._server_url + + url = utils.generate_url(base_url, "/v1/automation/executions/{execution_id}", request.path_params) + + + client = self._security_client + + r = client.request("GET", url) + content_type = r.headers.get("Content-Type") + + res = operations.GetExecutionResponse(status_code=r.status_code, content_type=content_type) + + if r.status_code == 200: + if utils.match_content_type(content_type, "application/json"): + out = utils.unmarshal_json(r.text, Optional[shared.AutomationExecution]) + res.automation_execution = out + + return res + + + def get_executions(self, request: operations.GetExecutionsRequest) -> operations.GetExecutionsResponse: + r"""getExecutions + List automation executions + """ + + base_url = self._server_url + + url = base_url.removesuffix("/") + "/v1/automation/executions" + + query_params = utils.get_query_params(request.query_params) + + client = self._security_client + + r = client.request("GET", url, params=query_params) + content_type = r.headers.get("Content-Type") + + res = operations.GetExecutionsResponse(status_code=r.status_code, content_type=content_type) + + if r.status_code == 200: + if utils.match_content_type(content_type, "application/json"): + out = utils.unmarshal_json(r.text, Optional[shared.GetExecutionsResp]) + res.get_executions_resp = out + + return res + + + def retrigger_action(self, request: operations.RetriggerActionRequest) -> operations.RetriggerActionResponse: + r"""retriggerAction + Retry a specific automation execution action which failed / is stuck. + """ + + base_url = self._server_url + + url = utils.generate_url(base_url, "/v1/automation/executions/{execution_id}/{action_id}/retrigger", request.path_params) + + headers = {} + req_content_type, data, json, files = utils.serialize_request_body(request) + if req_content_type != "multipart/form-data" and req_content_type != "multipart/mixed": + headers["content-type"] = req_content_type + + client = self._security_client + + r = client.request("POST", url, data=data, json=json, files=files, headers=headers) + content_type = r.headers.get("Content-Type") + + res = operations.RetriggerActionResponse(status_code=r.status_code, content_type=content_type) + + if r.status_code == 200: + pass + + return res + + + def start_execution(self, request: operations.StartExecutionRequest) -> operations.StartExecutionResponse: + r"""startExecution + Start new automation execution + """ + + base_url = self._server_url + + url = base_url.removesuffix("/") + "/v1/automation/executions" + + headers = {} + req_content_type, data, json, files = utils.serialize_request_body(request) + if req_content_type != "multipart/form-data" and req_content_type != "multipart/mixed": + headers["content-type"] = req_content_type + + client = self._security_client + + r = client.request("POST", url, data=data, json=json, files=files, headers=headers) + content_type = r.headers.get("Content-Type") + + res = operations.StartExecutionResponse(status_code=r.status_code, content_type=content_type) + + if r.status_code == 201: + if utils.match_content_type(content_type, "application/json"): + out = utils.unmarshal_json(r.text, Optional[shared.AutomationExecution]) + res.automation_execution = out + + return res + + \ No newline at end of file diff --git a/src/epilotapi/export.py b/src/epilotapi/export.py new file mode 100755 index 000000000..988bbd380 --- /dev/null +++ b/src/epilotapi/export.py @@ -0,0 +1,77 @@ +import requests +from epilotapi.models import operations +from . import utils + +class Export: + _client: requests.Session + _security_client: requests.Session + _server_url: str + _language: str + _sdk_version: str + _gen_version: str + + def __init__(self, client: requests.Session, security_client: requests.Session, server_url: str, language: str, sdk_version: str, gen_version: str) -> None: + self._client = client + self._security_client = security_client + self._server_url = server_url + self._language = language + self._sdk_version = sdk_version + self._gen_version = gen_version + + + def export_entities(self, request: operations.ExportEntitiesRequest) -> operations.ExportEntitiesResponse: + r"""exportEntities + create export file of entities + """ + + base_url = self._server_url + + url = base_url.removesuffix("/") + "/v1/entity:export" + + headers = {} + req_content_type, data, json, files = utils.serialize_request_body(request) + if req_content_type != "multipart/form-data" and req_content_type != "multipart/mixed": + headers["content-type"] = req_content_type + query_params = utils.get_query_params(request.query_params) + + client = self._security_client + + r = client.request("POST", url, params=query_params, data=data, json=json, files=files, headers=headers) + content_type = r.headers.get("Content-Type") + + res = operations.ExportEntitiesResponse(status_code=r.status_code, content_type=content_type) + + if r.status_code == 201: + pass + + return res + + + def import_entities(self, request: operations.ImportEntitiesRequest) -> operations.ImportEntitiesResponse: + r"""importEntities + import entity data from + """ + + base_url = self._server_url + + url = base_url.removesuffix("/") + "/v1/entity:import" + + headers = {} + req_content_type, data, json, files = utils.serialize_request_body(request) + if req_content_type != "multipart/form-data" and req_content_type != "multipart/mixed": + headers["content-type"] = req_content_type + query_params = utils.get_query_params(request.query_params) + + client = self._security_client + + r = client.request("POST", url, params=query_params, data=data, json=json, files=files, headers=headers) + content_type = r.headers.get("Content-Type") + + res = operations.ImportEntitiesResponse(status_code=r.status_code, content_type=content_type) + + if r.status_code == 201: + pass + + return res + + \ No newline at end of file diff --git a/src/epilotapi/flows.py b/src/epilotapi/flows.py new file mode 100755 index 000000000..ec2d487d5 --- /dev/null +++ b/src/epilotapi/flows.py @@ -0,0 +1,156 @@ +import requests +from typing import Optional +from epilotapi.models import shared, operations +from . import utils + +class Flows: + _client: requests.Session + _security_client: requests.Session + _server_url: str + _language: str + _sdk_version: str + _gen_version: str + + def __init__(self, client: requests.Session, security_client: requests.Session, server_url: str, language: str, sdk_version: str, gen_version: str) -> None: + self._client = client + self._security_client = security_client + self._server_url = server_url + self._language = language + self._sdk_version = sdk_version + self._gen_version = gen_version + + + def create_flow(self, request: operations.CreateFlowRequest) -> operations.CreateFlowResponse: + r"""createFlow + Create new automation flow + """ + + base_url = self._server_url + + url = base_url.removesuffix("/") + "/v1/automation/flows" + + headers = {} + req_content_type, data, json, files = utils.serialize_request_body(request) + if req_content_type != "multipart/form-data" and req_content_type != "multipart/mixed": + headers["content-type"] = req_content_type + + client = self._security_client + + r = client.request("POST", url, data=data, json=json, files=files, headers=headers) + content_type = r.headers.get("Content-Type") + + res = operations.CreateFlowResponse(status_code=r.status_code, content_type=content_type) + + if r.status_code == 201: + if utils.match_content_type(content_type, "application/json"): + out = utils.unmarshal_json(r.text, Optional[shared.AutomationFlow]) + res.automation_flow = out + + return res + + + def delete_flow(self, request: operations.DeleteFlowRequest) -> operations.DeleteFlowResponse: + r"""deleteFlow + Update automation flow by id + """ + + base_url = self._server_url + + url = utils.generate_url(base_url, "/v1/automation/flows/{flow_id}", request.path_params) + + + client = self._security_client + + r = client.request("DELETE", url) + content_type = r.headers.get("Content-Type") + + res = operations.DeleteFlowResponse(status_code=r.status_code, content_type=content_type) + + if r.status_code == 200: + if utils.match_content_type(content_type, "application/json"): + out = utils.unmarshal_json(r.text, Optional[shared.AutomationFlow]) + res.automation_flow = out + + return res + + + def get_flow(self, request: operations.GetFlowRequest) -> operations.GetFlowResponse: + r"""getFlow + List available automation flows + """ + + base_url = self._server_url + + url = utils.generate_url(base_url, "/v1/automation/flows/{flow_id}", request.path_params) + + + client = self._security_client + + r = client.request("GET", url) + content_type = r.headers.get("Content-Type") + + res = operations.GetFlowResponse(status_code=r.status_code, content_type=content_type) + + if r.status_code == 200: + if utils.match_content_type(content_type, "application/json"): + out = utils.unmarshal_json(r.text, Optional[shared.AutomationFlow]) + res.automation_flow = out + + return res + + + def put_flow(self, request: operations.PutFlowRequest) -> operations.PutFlowResponse: + r"""putFlow + Update automation flow by id + """ + + base_url = self._server_url + + url = utils.generate_url(base_url, "/v1/automation/flows/{flow_id}", request.path_params) + + headers = {} + req_content_type, data, json, files = utils.serialize_request_body(request) + if req_content_type != "multipart/form-data" and req_content_type != "multipart/mixed": + headers["content-type"] = req_content_type + + client = self._security_client + + r = client.request("PUT", url, data=data, json=json, files=files, headers=headers) + content_type = r.headers.get("Content-Type") + + res = operations.PutFlowResponse(status_code=r.status_code, content_type=content_type) + + if r.status_code == 200: + if utils.match_content_type(content_type, "application/json"): + out = utils.unmarshal_json(r.text, Optional[shared.AutomationFlow]) + res.automation_flow = out + + return res + + + def search_flows(self, request: operations.SearchFlowsRequest) -> operations.SearchFlowsResponse: + r"""searchFlows + Search available automation flows + """ + + base_url = self._server_url + + url = base_url.removesuffix("/") + "/v1/automation/flows" + + query_params = utils.get_query_params(request.query_params) + + client = self._security_client + + r = client.request("GET", url, params=query_params) + content_type = r.headers.get("Content-Type") + + res = operations.SearchFlowsResponse(status_code=r.status_code, content_type=content_type) + + if r.status_code == 200: + if utils.match_content_type(content_type, "application/json"): + out = utils.unmarshal_json(r.text, Optional[shared.SearchAutomationsResp]) + res.search_automations_resp = out + + return res + + \ No newline at end of file diff --git a/src/epilotapi/journeys.py b/src/epilotapi/journeys.py new file mode 100755 index 000000000..9e2bf9988 --- /dev/null +++ b/src/epilotapi/journeys.py @@ -0,0 +1,212 @@ +import requests +from typing import Any,Optional +from epilotapi.models import shared, operations +from . import utils + +class Journeys: + _client: requests.Session + _security_client: requests.Session + _server_url: str + _language: str + _sdk_version: str + _gen_version: str + + def __init__(self, client: requests.Session, security_client: requests.Session, server_url: str, language: str, sdk_version: str, gen_version: str) -> None: + self._client = client + self._security_client = security_client + self._server_url = server_url + self._language = language + self._sdk_version = sdk_version + self._gen_version = gen_version + + + def create_journey(self, request: operations.CreateJourneyRequest) -> operations.CreateJourneyResponse: + r"""createJourney + Create a Journey + """ + + base_url = self._server_url + + url = base_url.removesuffix("/") + "/v1/journey/configuration" + + headers = {} + req_content_type, data, json, files = utils.serialize_request_body(request) + if req_content_type != "multipart/form-data" and req_content_type != "multipart/mixed": + headers["content-type"] = req_content_type + + client = self._security_client + + r = client.request("POST", url, data=data, json=json, files=files, headers=headers) + content_type = r.headers.get("Content-Type") + + res = operations.CreateJourneyResponse(status_code=r.status_code, content_type=content_type) + + if r.status_code == 201: + if utils.match_content_type(content_type, "application/json"): + out = utils.unmarshal_json(r.text, Optional[dict[str, Any]]) + res.journey_response = out + + return res + + + def get_journey(self, request: operations.GetJourneyRequest) -> operations.GetJourneyResponse: + r"""getJourney + Get journey by id + """ + + base_url = self._server_url + + url = utils.generate_url(base_url, "/v1/journey/configuration/{id}", request.path_params) + + query_params = utils.get_query_params(request.query_params) + + client = self._security_client + + r = client.request("GET", url, params=query_params) + content_type = r.headers.get("Content-Type") + + res = operations.GetJourneyResponse(status_code=r.status_code, content_type=content_type) + + if r.status_code == 200: + if utils.match_content_type(content_type, "application/json"): + out = utils.unmarshal_json(r.text, Optional[dict[str, Any]]) + res.journey_response = out + + return res + + + def get_journeys_by_org_id(self, request: operations.GetJourneysByOrgIDRequest) -> operations.GetJourneysByOrgIDResponse: + r"""getJourneysByOrgId + Get all journeys by organization id + """ + + base_url = self._server_url + + url = utils.generate_url(base_url, "/v1/journey/organization/{id}", request.path_params) + + + client = self._security_client + + r = client.request("GET", url) + content_type = r.headers.get("Content-Type") + + res = operations.GetJourneysByOrgIDResponse(status_code=r.status_code, content_type=content_type) + + if r.status_code == 200: + if utils.match_content_type(content_type, "application/json"): + out = utils.unmarshal_json(r.text, Optional[dict[str, Any]]) + res.get_journeys_response = out + + return res + + + def patch_update_journey(self, request: operations.PatchUpdateJourneyRequest) -> operations.PatchUpdateJourneyResponse: + r"""patchUpdateJourney + Update a Journey (partially / patch). Support for nested properties updates (e.g. \"property[0].name\"). + """ + + base_url = self._server_url + + url = base_url.removesuffix("/") + "/v1/journey/configuration" + + headers = {} + req_content_type, data, json, files = utils.serialize_request_body(request) + if req_content_type != "multipart/form-data" and req_content_type != "multipart/mixed": + headers["content-type"] = req_content_type + + client = self._security_client + + r = client.request("PATCH", url, data=data, json=json, files=files, headers=headers) + content_type = r.headers.get("Content-Type") + + res = operations.PatchUpdateJourneyResponse(status_code=r.status_code, content_type=content_type) + + if r.status_code == 200: + if utils.match_content_type(content_type, "application/json"): + out = utils.unmarshal_json(r.text, Optional[dict[str, Any]]) + res.journey_response = out + + return res + + + def remove_journey(self, request: operations.RemoveJourneyRequest) -> operations.RemoveJourneyResponse: + r"""removeJourney + Remove journey by id + """ + + base_url = self._server_url + + url = utils.generate_url(base_url, "/v1/journey/configuration/{id}", request.path_params) + + + client = self._security_client + + r = client.request("DELETE", url) + content_type = r.headers.get("Content-Type") + + res = operations.RemoveJourneyResponse(status_code=r.status_code, content_type=content_type) + + if r.status_code == 200: + pass + + return res + + + def search_journeys(self, request: operations.SearchJourneysRequest) -> operations.SearchJourneysResponse: + r"""searchJourneys + Search Journeys + """ + + base_url = self._server_url + + url = base_url.removesuffix("/") + "/v1/journey/configuration/search" + + headers = {} + req_content_type, data, json, files = utils.serialize_request_body(request) + if req_content_type != "multipart/form-data" and req_content_type != "multipart/mixed": + headers["content-type"] = req_content_type + + client = self._security_client + + r = client.request("POST", url, data=data, json=json, files=files, headers=headers) + content_type = r.headers.get("Content-Type") + + res = operations.SearchJourneysResponse(status_code=r.status_code, content_type=content_type) + + if r.status_code == 200: + if utils.match_content_type(content_type, "application/json"): + out = utils.unmarshal_json(r.text, Optional[shared.SearchJourneysResponse]) + res.search_journeys_response = out + + return res + + + def update_journey(self, request: operations.UpdateJourneyRequest) -> operations.UpdateJourneyResponse: + r"""updateJourney + Update a Journey + """ + + base_url = self._server_url + + url = base_url.removesuffix("/") + "/v1/journey/configuration" + + headers = {} + req_content_type, data, json, files = utils.serialize_request_body(request) + if req_content_type != "multipart/form-data" and req_content_type != "multipart/mixed": + headers["content-type"] = req_content_type + + client = self._security_client + + r = client.request("PUT", url, data=data, json=json, files=files, headers=headers) + content_type = r.headers.get("Content-Type") + + res = operations.UpdateJourneyResponse(status_code=r.status_code, content_type=content_type) + + if r.status_code == 200: + if utils.match_content_type(content_type, "application/json"): + out = utils.unmarshal_json(r.text, Optional[dict[str, Any]]) + res.journey_response = out + + return res + + \ No newline at end of file diff --git a/src/epilotapi/models/__init__.py b/src/epilotapi/models/__init__.py new file mode 100755 index 000000000..e69de29bb diff --git a/src/epilotapi/models/callbacks/__init__.py b/src/epilotapi/models/callbacks/__init__.py new file mode 100755 index 000000000..f809361ad --- /dev/null +++ b/src/epilotapi/models/callbacks/__init__.py @@ -0,0 +1,2 @@ + +__all__ = [] \ No newline at end of file diff --git a/src/epilotapi/models/operations/__init__.py b/src/epilotapi/models/operations/__init__.py new file mode 100755 index 000000000..d816c38fa --- /dev/null +++ b/src/epilotapi/models/operations/__init__.py @@ -0,0 +1,53 @@ +from .addrelations import * +from .attachactivity import * +from .autocomplete import * +from .cancelexecution import * +from .createactivity import * +from .createentity import * +from .createflow import * +from .createjourney import * +from .createnewschemaversion import * +from .createsavedview import * +from .deleteentity import * +from .deleteflow import * +from .deleterelation import * +from .deletesavedview import * +from .deleteschemabyid import * +from .exportentities import * +from .getactivity import * +from .getentity import * +from .getentityactivityfeed import * +from .getexecution import * +from .getexecutions import * +from .getflow import * +from .getjourney import * +from .getjourneysbyorgid import * +from .getrelations import * +from .getsavedview import * +from .getschema import * +from .getschemaversions import * +from .gettaxonomy import * +from .importentities import * +from .listsavedviews import * +from .listschemablueprints import * +from .listschemas import * +from .listtaxonomies import * +from .listtaxonomyclassificationsforschema import * +from .patchupdatejourney import * +from .putflow import * +from .removejourney import * +from .retriggeraction import * +from .searchentities import * +from .searchflows import * +from .searchjourneys import * +from .startexecution import * +from .taxonomiesclassificationssearch import * +from .taxonomyautocomplete import * +from .updateclassificationsfortaxonomy import * +from .updateentity import * +from .updatejourney import * +from .updaterelation import * +from .updatesavedview import * +from .upsertentity import * + +__all__ = ["AddRelationsPathParams","AddRelationsQueryParams","AddRelationsRequest","AddRelationsResponse","AttachActivityPathParams","AttachActivityQueryParams","AttachActivityRequest","AttachActivityResponse","AutocompleteQueryParams","AutocompleteRequest","Autocomplete200ApplicationJSON","AutocompleteResponse","CancelExecutionPathParams","CancelExecutionRequest","CancelExecutionResponse","CreateActivityQueryParams","CreateActivityRequest","CreateActivityResponse","CreateEntityPathParams","CreateEntityQueryParams","CreateEntityRequest","CreateEntityResponse","CreateFlowRequest","CreateFlowResponse","CreateJourneyRequest","CreateJourneyResponse","CreateNewSchemaVersionPathParams","CreateNewSchemaVersionQueryParams","CreateNewSchemaVersionRequest","CreateNewSchemaVersionResponse","CreateSavedViewRequest","CreateSavedViewResponse","DeleteEntityPathParams","DeleteEntityQueryParams","DeleteEntityRequest","DeleteEntityResponse","DeleteFlowPathParams","DeleteFlowRequest","DeleteFlowResponse","DeleteRelationPathParams","DeleteRelationQueryParams","DeleteRelationRequest","DeleteRelationResponse","DeleteSavedViewPathParams","DeleteSavedViewRequest","DeleteSavedViewResponse","DeleteSchemaByIDPathParams","DeleteSchemaByIDQueryParams","DeleteSchemaByIDRequest","DeleteSchemaByIDResponse","ExportEntitiesQueryParams","ExportEntitiesRequest","ExportEntitiesResponse","GetActivityPathParams","GetActivityQueryParams","GetActivityRequest","GetActivityResponse","GetEntityPathParams","GetEntityQueryParams","GetEntityRequest","GetEntity200ApplicationJSON","GetEntityResponse","GetEntityActivityFeedPathParams","GetEntityActivityFeedQueryParams","GetEntityActivityFeedRequest","GetEntityActivityFeed200ApplicationJSON","GetEntityActivityFeedResponse","GetExecutionPathParams","GetExecutionRequest","GetExecutionResponse","GetExecutionsQueryParams","GetExecutionsRequest","GetExecutionsResponse","GetFlowPathParams","GetFlowRequest","GetFlowResponse","GetJourneyPathParams","GetJourneyQueryParams","GetJourneyRequest","GetJourneyResponse","GetJourneysByOrgIDPathParams","GetJourneysByOrgIDRequest","GetJourneysByOrgIDResponse","GetRelationsPathParams","GetRelationsQueryParams","GetRelationsRequest","GetRelationsResponse","GetSavedViewPathParams","GetSavedViewRequest","GetSavedView200ApplicationJSON","GetSavedViewResponse","GetSchemaPathParams","GetSchemaQueryParams","GetSchemaRequest","GetSchemaResponse","GetSchemaVersionsPathParams","GetSchemaVersionsRequest","GetSchemaVersions200ApplicationJSON","GetSchemaVersionsResponse","GetTaxonomyPathParams","GetTaxonomyRequest","GetTaxonomyResponse","ImportEntitiesQueryParams","ImportEntitiesRequest","ImportEntitiesResponse","ListSavedViews200ApplicationJSON","ListSavedViewsResponse","ListSchemaBlueprints200ApplicationJSON","ListSchemaBlueprintsResponse","ListSchemasQueryParams","ListSchemasRequest","ListSchemas200ApplicationJSON","ListSchemasResponse","ListTaxonomies200ApplicationJSON","ListTaxonomiesResponse","ListTaxonomyClassificationsForSchemaPathParams","ListTaxonomyClassificationsForSchemaQueryParams","ListTaxonomyClassificationsForSchemaRequest","ListTaxonomyClassificationsForSchema200ApplicationJSON","ListTaxonomyClassificationsForSchemaResponse","PatchUpdateJourneyRequest","PatchUpdateJourneyResponse","PutFlowPathParams","PutFlowRequest","PutFlowResponse","RemoveJourneyPathParams","RemoveJourneyRequest","RemoveJourneyResponse","RetriggerActionPathParams","RetriggerActionRequest","RetriggerActionResponse","SearchEntitiesRequest","SearchEntitiesResponse","SearchFlowsQueryParams","SearchFlowsRequest","SearchFlowsResponse","SearchJourneysRequest","SearchJourneysResponse","StartExecutionRequest","StartExecutionResponse","TaxonomiesClassificationsSearchQueryParams","TaxonomiesClassificationsSearchRequestBody","TaxonomiesClassificationsSearchRequest","TaxonomiesClassificationsSearch200ApplicationJSON","TaxonomiesClassificationsSearchResponse","TaxonomyAutocompletePathParams","TaxonomyAutocompleteQueryParams","TaxonomyAutocompleteRequest","TaxonomyAutocomplete200ApplicationJSON","TaxonomyAutocompleteResponse","UpdateClassificationsForTaxonomyPathParams","UpdateClassificationsForTaxonomyRequest","UpdateClassificationsForTaxonomy200ApplicationJSON","UpdateClassificationsForTaxonomyResponse","UpdateEntityPathParams","UpdateEntityQueryParams","UpdateEntityRequest","UpdateEntityResponse","UpdateJourneyRequest","UpdateJourneyResponse","UpdateRelationPathParams","UpdateRelationQueryParams","UpdateRelationRequestBody","UpdateRelationRequest","UpdateRelationResponse","UpdateSavedViewPathParams","UpdateSavedViewRequest","UpdateSavedViewResponse","UpsertEntityPathParams","UpsertEntityQueryParams","UpsertEntityRequestBody","UpsertEntityRequest","UpsertEntityResponse"] \ No newline at end of file diff --git a/src/epilotapi/models/operations/addrelations.py b/src/epilotapi/models/operations/addrelations.py new file mode 100755 index 000000000..0463eed2d --- /dev/null +++ b/src/epilotapi/models/operations/addrelations.py @@ -0,0 +1,29 @@ +import dataclasses +from typing import Optional +from ..shared import relationitem as shared_relationitem + + +@dataclasses.dataclass +class AddRelationsPathParams: + id: str = dataclasses.field(metadata={'path_param': { 'field_name': 'id', 'style': 'simple', 'explode': False }}) + slug: str = dataclasses.field(metadata={'path_param': { 'field_name': 'slug', 'style': 'simple', 'explode': False }}) + + +@dataclasses.dataclass +class AddRelationsQueryParams: + async_: Optional[bool] = dataclasses.field(default=None, metadata={'query_param': { 'field_name': 'async', 'style': 'form', 'explode': True }}) + + +@dataclasses.dataclass +class AddRelationsRequest: + path_params: AddRelationsPathParams = dataclasses.field() + query_params: AddRelationsQueryParams = dataclasses.field() + request: Optional[list[shared_relationitem.RelationItem]] = dataclasses.field(default=None, metadata={'request': { 'media_type': 'application/json' }}) + + +@dataclasses.dataclass +class AddRelationsResponse: + content_type: str = dataclasses.field() + status_code: int = dataclasses.field() + relation_item: Optional[shared_relationitem.RelationItem] = dataclasses.field(default=None) + diff --git a/src/epilotapi/models/operations/attachactivity.py b/src/epilotapi/models/operations/attachactivity.py new file mode 100755 index 000000000..d17619ddc --- /dev/null +++ b/src/epilotapi/models/operations/attachactivity.py @@ -0,0 +1,27 @@ +import dataclasses +from typing import Optional +from ..shared import activityitem as shared_activityitem + + +@dataclasses.dataclass +class AttachActivityPathParams: + id: str = dataclasses.field(metadata={'path_param': { 'field_name': 'id', 'style': 'simple', 'explode': False }}) + + +@dataclasses.dataclass +class AttachActivityQueryParams: + entities: Optional[list[str]] = dataclasses.field(default=None, metadata={'query_param': { 'field_name': 'entities', 'style': 'form', 'explode': False }}) + + +@dataclasses.dataclass +class AttachActivityRequest: + path_params: AttachActivityPathParams = dataclasses.field() + query_params: AttachActivityQueryParams = dataclasses.field() + + +@dataclasses.dataclass +class AttachActivityResponse: + content_type: str = dataclasses.field() + status_code: int = dataclasses.field() + activity_item: Optional[shared_activityitem.ActivityItem] = dataclasses.field(default=None) + diff --git a/src/epilotapi/models/operations/autocomplete.py b/src/epilotapi/models/operations/autocomplete.py new file mode 100755 index 000000000..fa8c6d09a --- /dev/null +++ b/src/epilotapi/models/operations/autocomplete.py @@ -0,0 +1,32 @@ +import dataclasses +from typing import Any,Optional +from dataclasses_json import dataclass_json +from epilotapi import utils + + +@dataclasses.dataclass +class AutocompleteQueryParams: + attribute: str = dataclasses.field(metadata={'query_param': { 'field_name': 'attribute', 'style': 'form', 'explode': True }}) + input: Optional[str] = dataclasses.field(default=None, metadata={'query_param': { 'field_name': 'input', 'style': 'form', 'explode': True }}) + size: Optional[int] = dataclasses.field(default=None, metadata={'query_param': { 'field_name': 'size', 'style': 'form', 'explode': True }}) + slug: Optional[str] = dataclasses.field(default=None, metadata={'query_param': { 'field_name': 'slug', 'style': 'form', 'explode': True }}) + + +@dataclass_json +@dataclasses.dataclass +class Autocomplete200ApplicationJSON: + hits: Optional[float] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('hits') }}) + results: Optional[list[Any]] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('results') }}) + + +@dataclasses.dataclass +class AutocompleteRequest: + query_params: AutocompleteQueryParams = dataclasses.field() + + +@dataclasses.dataclass +class AutocompleteResponse: + content_type: str = dataclasses.field() + status_code: int = dataclasses.field() + autocomplete_200_application_json_object: Optional[Autocomplete200ApplicationJSON] = dataclasses.field(default=None) + diff --git a/src/epilotapi/models/operations/cancelexecution.py b/src/epilotapi/models/operations/cancelexecution.py new file mode 100755 index 000000000..da27cea88 --- /dev/null +++ b/src/epilotapi/models/operations/cancelexecution.py @@ -0,0 +1,21 @@ +import dataclasses +from typing import Optional +from ..shared import automationexecution as shared_automationexecution + + +@dataclasses.dataclass +class CancelExecutionPathParams: + execution_id: str = dataclasses.field(metadata={'path_param': { 'field_name': 'execution_id', 'style': 'simple', 'explode': False }}) + + +@dataclasses.dataclass +class CancelExecutionRequest: + path_params: CancelExecutionPathParams = dataclasses.field() + + +@dataclasses.dataclass +class CancelExecutionResponse: + content_type: str = dataclasses.field() + status_code: int = dataclasses.field() + automation_execution: Optional[shared_automationexecution.AutomationExecution] = dataclasses.field(default=None) + diff --git a/src/epilotapi/models/operations/createactivity.py b/src/epilotapi/models/operations/createactivity.py new file mode 100755 index 000000000..c5fb2af1b --- /dev/null +++ b/src/epilotapi/models/operations/createactivity.py @@ -0,0 +1,23 @@ +import dataclasses +from typing import Optional +from ..shared import activity as shared_activity +from ..shared import activityitem as shared_activityitem + + +@dataclasses.dataclass +class CreateActivityQueryParams: + entities: Optional[list[str]] = dataclasses.field(default=None, metadata={'query_param': { 'field_name': 'entities', 'style': 'form', 'explode': False }}) + + +@dataclasses.dataclass +class CreateActivityRequest: + query_params: CreateActivityQueryParams = dataclasses.field() + request: Optional[shared_activity.Activity] = dataclasses.field(default=None, metadata={'request': { 'media_type': 'application/json' }}) + + +@dataclasses.dataclass +class CreateActivityResponse: + content_type: str = dataclasses.field() + status_code: int = dataclasses.field() + activity_item: Optional[shared_activityitem.ActivityItem] = dataclasses.field(default=None) + diff --git a/src/epilotapi/models/operations/createentity.py b/src/epilotapi/models/operations/createentity.py new file mode 100755 index 000000000..1001c92cf --- /dev/null +++ b/src/epilotapi/models/operations/createentity.py @@ -0,0 +1,28 @@ +import dataclasses +from typing import Any,Optional + + +@dataclasses.dataclass +class CreateEntityPathParams: + slug: str = dataclasses.field(metadata={'path_param': { 'field_name': 'slug', 'style': 'simple', 'explode': False }}) + + +@dataclasses.dataclass +class CreateEntityQueryParams: + activity_id: Optional[str] = dataclasses.field(default=None, metadata={'query_param': { 'field_name': 'activity_id', 'style': 'form', 'explode': True }}) + async_: Optional[bool] = dataclasses.field(default=None, metadata={'query_param': { 'field_name': 'async', 'style': 'form', 'explode': True }}) + + +@dataclasses.dataclass +class CreateEntityRequest: + path_params: CreateEntityPathParams = dataclasses.field() + query_params: CreateEntityQueryParams = dataclasses.field() + request: Optional[dict[str, Any]] = dataclasses.field(default=None, metadata={'request': { 'media_type': 'application/json' }}) + + +@dataclasses.dataclass +class CreateEntityResponse: + content_type: str = dataclasses.field() + status_code: int = dataclasses.field() + entity_item: Optional[dict[str, Any]] = dataclasses.field(default=None) + diff --git a/src/epilotapi/models/operations/createflow.py b/src/epilotapi/models/operations/createflow.py new file mode 100755 index 000000000..ace5ee48f --- /dev/null +++ b/src/epilotapi/models/operations/createflow.py @@ -0,0 +1,16 @@ +import dataclasses +from typing import Optional +from ..shared import automationflow as shared_automationflow + + +@dataclasses.dataclass +class CreateFlowRequest: + request: Optional[shared_automationflow.AutomationFlow] = dataclasses.field(default=None, metadata={'request': { 'media_type': 'application/json' }}) + + +@dataclasses.dataclass +class CreateFlowResponse: + content_type: str = dataclasses.field() + status_code: int = dataclasses.field() + automation_flow: Optional[shared_automationflow.AutomationFlow] = dataclasses.field(default=None) + diff --git a/src/epilotapi/models/operations/createjourney.py b/src/epilotapi/models/operations/createjourney.py new file mode 100755 index 000000000..b11400b65 --- /dev/null +++ b/src/epilotapi/models/operations/createjourney.py @@ -0,0 +1,15 @@ +import dataclasses +from typing import Any,Optional + + +@dataclasses.dataclass +class CreateJourneyRequest: + request: Optional[dict[str, Any]] = dataclasses.field(default=None, metadata={'request': { 'media_type': 'application/json' }}) + + +@dataclasses.dataclass +class CreateJourneyResponse: + content_type: str = dataclasses.field() + status_code: int = dataclasses.field() + journey_response: Optional[dict[str, Any]] = dataclasses.field(default=None) + diff --git a/src/epilotapi/models/operations/createnewschemaversion.py b/src/epilotapi/models/operations/createnewschemaversion.py new file mode 100755 index 000000000..db3f7f794 --- /dev/null +++ b/src/epilotapi/models/operations/createnewschemaversion.py @@ -0,0 +1,29 @@ +import dataclasses +from typing import Optional +from ..shared import entityschema as shared_entityschema +from ..shared import entityschemaitem as shared_entityschemaitem + + +@dataclasses.dataclass +class CreateNewSchemaVersionPathParams: + slug: str = dataclasses.field(metadata={'path_param': { 'field_name': 'slug', 'style': 'simple', 'explode': False }}) + + +@dataclasses.dataclass +class CreateNewSchemaVersionQueryParams: + draft: Optional[bool] = dataclasses.field(default=None, metadata={'query_param': { 'field_name': 'draft', 'style': 'form', 'explode': True }}) + + +@dataclasses.dataclass +class CreateNewSchemaVersionRequest: + path_params: CreateNewSchemaVersionPathParams = dataclasses.field() + query_params: CreateNewSchemaVersionQueryParams = dataclasses.field() + request: Optional[shared_entityschema.EntitySchema] = dataclasses.field(default=None, metadata={'request': { 'media_type': 'application/json' }}) + + +@dataclasses.dataclass +class CreateNewSchemaVersionResponse: + content_type: str = dataclasses.field() + status_code: int = dataclasses.field() + entity_schema_item: Optional[shared_entityschemaitem.EntitySchemaItem] = dataclasses.field(default=None) + diff --git a/src/epilotapi/models/operations/createsavedview.py b/src/epilotapi/models/operations/createsavedview.py new file mode 100755 index 000000000..c187b7e79 --- /dev/null +++ b/src/epilotapi/models/operations/createsavedview.py @@ -0,0 +1,17 @@ +import dataclasses +from typing import Optional +from ..shared import savedview as shared_savedview +from ..shared import savedviewitem as shared_savedviewitem + + +@dataclasses.dataclass +class CreateSavedViewRequest: + request: Optional[shared_savedview.SavedView] = dataclasses.field(default=None, metadata={'request': { 'media_type': 'application/json' }}) + + +@dataclasses.dataclass +class CreateSavedViewResponse: + content_type: str = dataclasses.field() + status_code: int = dataclasses.field() + saved_view_item: Optional[shared_savedviewitem.SavedViewItem] = dataclasses.field(default=None) + diff --git a/src/epilotapi/models/operations/deleteentity.py b/src/epilotapi/models/operations/deleteentity.py new file mode 100755 index 000000000..5d13d183e --- /dev/null +++ b/src/epilotapi/models/operations/deleteentity.py @@ -0,0 +1,26 @@ +import dataclasses +from typing import Optional + + +@dataclasses.dataclass +class DeleteEntityPathParams: + id: str = dataclasses.field(metadata={'path_param': { 'field_name': 'id', 'style': 'simple', 'explode': False }}) + slug: str = dataclasses.field(metadata={'path_param': { 'field_name': 'slug', 'style': 'simple', 'explode': False }}) + + +@dataclasses.dataclass +class DeleteEntityQueryParams: + activity_id: Optional[str] = dataclasses.field(default=None, metadata={'query_param': { 'field_name': 'activity_id', 'style': 'form', 'explode': True }}) + + +@dataclasses.dataclass +class DeleteEntityRequest: + path_params: DeleteEntityPathParams = dataclasses.field() + query_params: DeleteEntityQueryParams = dataclasses.field() + + +@dataclasses.dataclass +class DeleteEntityResponse: + content_type: str = dataclasses.field() + status_code: int = dataclasses.field() + diff --git a/src/epilotapi/models/operations/deleteflow.py b/src/epilotapi/models/operations/deleteflow.py new file mode 100755 index 000000000..927142d36 --- /dev/null +++ b/src/epilotapi/models/operations/deleteflow.py @@ -0,0 +1,21 @@ +import dataclasses +from typing import Optional +from ..shared import automationflow as shared_automationflow + + +@dataclasses.dataclass +class DeleteFlowPathParams: + flow_id: str = dataclasses.field(metadata={'path_param': { 'field_name': 'flow_id', 'style': 'simple', 'explode': False }}) + + +@dataclasses.dataclass +class DeleteFlowRequest: + path_params: DeleteFlowPathParams = dataclasses.field() + + +@dataclasses.dataclass +class DeleteFlowResponse: + content_type: str = dataclasses.field() + status_code: int = dataclasses.field() + automation_flow: Optional[shared_automationflow.AutomationFlow] = dataclasses.field(default=None) + diff --git a/src/epilotapi/models/operations/deleterelation.py b/src/epilotapi/models/operations/deleterelation.py new file mode 100755 index 000000000..a54ca174b --- /dev/null +++ b/src/epilotapi/models/operations/deleterelation.py @@ -0,0 +1,28 @@ +import dataclasses +from typing import Optional + + +@dataclasses.dataclass +class DeleteRelationPathParams: + attribute: str = dataclasses.field(metadata={'path_param': { 'field_name': 'attribute', 'style': 'simple', 'explode': False }}) + entity_id: str = dataclasses.field(metadata={'path_param': { 'field_name': 'entity_id', 'style': 'simple', 'explode': False }}) + id: str = dataclasses.field(metadata={'path_param': { 'field_name': 'id', 'style': 'simple', 'explode': False }}) + slug: str = dataclasses.field(metadata={'path_param': { 'field_name': 'slug', 'style': 'simple', 'explode': False }}) + + +@dataclasses.dataclass +class DeleteRelationQueryParams: + async_: Optional[bool] = dataclasses.field(default=None, metadata={'query_param': { 'field_name': 'async', 'style': 'form', 'explode': True }}) + + +@dataclasses.dataclass +class DeleteRelationRequest: + path_params: DeleteRelationPathParams = dataclasses.field() + query_params: DeleteRelationQueryParams = dataclasses.field() + + +@dataclasses.dataclass +class DeleteRelationResponse: + content_type: str = dataclasses.field() + status_code: int = dataclasses.field() + diff --git a/src/epilotapi/models/operations/deletesavedview.py b/src/epilotapi/models/operations/deletesavedview.py new file mode 100755 index 000000000..2e9089041 --- /dev/null +++ b/src/epilotapi/models/operations/deletesavedview.py @@ -0,0 +1,19 @@ +import dataclasses + + + +@dataclasses.dataclass +class DeleteSavedViewPathParams: + id: str = dataclasses.field(metadata={'path_param': { 'field_name': 'id', 'style': 'simple', 'explode': False }}) + + +@dataclasses.dataclass +class DeleteSavedViewRequest: + path_params: DeleteSavedViewPathParams = dataclasses.field() + + +@dataclasses.dataclass +class DeleteSavedViewResponse: + content_type: str = dataclasses.field() + status_code: int = dataclasses.field() + diff --git a/src/epilotapi/models/operations/deleteschemabyid.py b/src/epilotapi/models/operations/deleteschemabyid.py new file mode 100755 index 000000000..116827369 --- /dev/null +++ b/src/epilotapi/models/operations/deleteschemabyid.py @@ -0,0 +1,25 @@ +import dataclasses + + + +@dataclasses.dataclass +class DeleteSchemaByIDPathParams: + slug: str = dataclasses.field(metadata={'path_param': { 'field_name': 'slug', 'style': 'simple', 'explode': False }}) + + +@dataclasses.dataclass +class DeleteSchemaByIDQueryParams: + id: str = dataclasses.field(metadata={'query_param': { 'field_name': 'id', 'style': 'form', 'explode': True }}) + + +@dataclasses.dataclass +class DeleteSchemaByIDRequest: + path_params: DeleteSchemaByIDPathParams = dataclasses.field() + query_params: DeleteSchemaByIDQueryParams = dataclasses.field() + + +@dataclasses.dataclass +class DeleteSchemaByIDResponse: + content_type: str = dataclasses.field() + status_code: int = dataclasses.field() + diff --git a/src/epilotapi/models/operations/exportentities.py b/src/epilotapi/models/operations/exportentities.py new file mode 100755 index 000000000..48d89d0aa --- /dev/null +++ b/src/epilotapi/models/operations/exportentities.py @@ -0,0 +1,23 @@ +import dataclasses +from typing import Optional +from ..shared import entitysearchparams as shared_entitysearchparams + + +@dataclasses.dataclass +class ExportEntitiesQueryParams: + is_template: Optional[bool] = dataclasses.field(default=None, metadata={'query_param': { 'field_name': 'is_template', 'style': 'form', 'explode': True }}) + job_id: Optional[str] = dataclasses.field(default=None, metadata={'query_param': { 'field_name': 'job_id', 'style': 'form', 'explode': True }}) + language: Optional[str] = dataclasses.field(default=None, metadata={'query_param': { 'field_name': 'language', 'style': 'form', 'explode': True }}) + + +@dataclasses.dataclass +class ExportEntitiesRequest: + query_params: ExportEntitiesQueryParams = dataclasses.field() + request: Optional[shared_entitysearchparams.EntitySearchParams] = dataclasses.field(default=None, metadata={'request': { 'media_type': 'application/json' }}) + + +@dataclasses.dataclass +class ExportEntitiesResponse: + content_type: str = dataclasses.field() + status_code: int = dataclasses.field() + diff --git a/src/epilotapi/models/operations/getactivity.py b/src/epilotapi/models/operations/getactivity.py new file mode 100755 index 000000000..039e88ec7 --- /dev/null +++ b/src/epilotapi/models/operations/getactivity.py @@ -0,0 +1,29 @@ +import dataclasses +from typing import Optional +from ..shared import activityitem as shared_activityitem +from ..operations import activityitem as operations_activityitem + + +@dataclasses.dataclass +class GetActivityPathParams: + id: str = dataclasses.field(metadata={'path_param': { 'field_name': 'id', 'style': 'simple', 'explode': False }}) + + +@dataclasses.dataclass +class GetActivityQueryParams: + operations_from: Optional[int] = dataclasses.field(default=None, metadata={'query_param': { 'field_name': 'operations_from', 'style': 'form', 'explode': True }}) + operations_size: Optional[int] = dataclasses.field(default=None, metadata={'query_param': { 'field_name': 'operations_size', 'style': 'form', 'explode': True }}) + + +@dataclasses.dataclass +class GetActivityRequest: + path_params: GetActivityPathParams = dataclasses.field() + query_params: GetActivityQueryParams = dataclasses.field() + + +@dataclasses.dataclass +class GetActivityResponse: + content_type: str = dataclasses.field() + status_code: int = dataclasses.field() + activity_item: Optional[shared_activityitem.ActivityItem] = dataclasses.field(default=None) + diff --git a/src/epilotapi/models/operations/getentity.py b/src/epilotapi/models/operations/getentity.py new file mode 100755 index 000000000..cc5dbd3b0 --- /dev/null +++ b/src/epilotapi/models/operations/getentity.py @@ -0,0 +1,36 @@ +import dataclasses +from typing import Any,Optional +from dataclasses_json import dataclass_json +from epilotapi import utils + + +@dataclasses.dataclass +class GetEntityPathParams: + id: str = dataclasses.field(metadata={'path_param': { 'field_name': 'id', 'style': 'simple', 'explode': False }}) + slug: str = dataclasses.field(metadata={'path_param': { 'field_name': 'slug', 'style': 'simple', 'explode': False }}) + + +@dataclasses.dataclass +class GetEntityQueryParams: + hydrate: Optional[bool] = dataclasses.field(default=None, metadata={'query_param': { 'field_name': 'hydrate', 'style': 'form', 'explode': True }}) + + +@dataclass_json +@dataclasses.dataclass +class GetEntity200ApplicationJSON: + entity: Optional[dict[str, Any]] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('entity') }}) + relations: Optional[list[dict[str, Any]]] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('relations') }}) + + +@dataclasses.dataclass +class GetEntityRequest: + path_params: GetEntityPathParams = dataclasses.field() + query_params: GetEntityQueryParams = dataclasses.field() + + +@dataclasses.dataclass +class GetEntityResponse: + content_type: str = dataclasses.field() + status_code: int = dataclasses.field() + get_entity_200_application_json_object: Optional[GetEntity200ApplicationJSON] = dataclasses.field(default=None) + diff --git a/src/epilotapi/models/operations/getentityactivityfeed.py b/src/epilotapi/models/operations/getentityactivityfeed.py new file mode 100755 index 000000000..2d1763cda --- /dev/null +++ b/src/epilotapi/models/operations/getentityactivityfeed.py @@ -0,0 +1,44 @@ +import dataclasses +from datetime import date, datetime +from marshmallow import fields +import dateutil.parser +from typing import Optional +from dataclasses_json import dataclass_json +from epilotapi import utils +from ..shared import activityitem as shared_activityitem + + +@dataclasses.dataclass +class GetEntityActivityFeedPathParams: + id: str = dataclasses.field(metadata={'path_param': { 'field_name': 'id', 'style': 'simple', 'explode': False }}) + slug: str = dataclasses.field(metadata={'path_param': { 'field_name': 'slug', 'style': 'simple', 'explode': False }}) + + +@dataclasses.dataclass +class GetEntityActivityFeedQueryParams: + after: Optional[datetime] = dataclasses.field(default=None, metadata={'query_param': { 'field_name': 'after', 'style': 'form', 'explode': True }}) + before: Optional[datetime] = dataclasses.field(default=None, metadata={'query_param': { 'field_name': 'before', 'style': 'form', 'explode': True }}) + from_: Optional[int] = dataclasses.field(default=None, metadata={'query_param': { 'field_name': 'from', 'style': 'form', 'explode': True }}) + size: Optional[int] = dataclasses.field(default=None, metadata={'query_param': { 'field_name': 'size', 'style': 'form', 'explode': True }}) + type: Optional[str] = dataclasses.field(default=None, metadata={'query_param': { 'field_name': 'type', 'style': 'form', 'explode': True }}) + + +@dataclass_json +@dataclasses.dataclass +class GetEntityActivityFeed200ApplicationJSON: + results: Optional[list[shared_activityitem.ActivityItem]] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('results') }}) + total: Optional[int] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('total') }}) + + +@dataclasses.dataclass +class GetEntityActivityFeedRequest: + path_params: GetEntityActivityFeedPathParams = dataclasses.field() + query_params: GetEntityActivityFeedQueryParams = dataclasses.field() + + +@dataclasses.dataclass +class GetEntityActivityFeedResponse: + content_type: str = dataclasses.field() + status_code: int = dataclasses.field() + get_entity_activity_feed_200_application_json_object: Optional[GetEntityActivityFeed200ApplicationJSON] = dataclasses.field(default=None) + diff --git a/src/epilotapi/models/operations/getexecution.py b/src/epilotapi/models/operations/getexecution.py new file mode 100755 index 000000000..c34f5b838 --- /dev/null +++ b/src/epilotapi/models/operations/getexecution.py @@ -0,0 +1,21 @@ +import dataclasses +from typing import Optional +from ..shared import automationexecution as shared_automationexecution + + +@dataclasses.dataclass +class GetExecutionPathParams: + execution_id: str = dataclasses.field(metadata={'path_param': { 'field_name': 'execution_id', 'style': 'simple', 'explode': False }}) + + +@dataclasses.dataclass +class GetExecutionRequest: + path_params: GetExecutionPathParams = dataclasses.field() + + +@dataclasses.dataclass +class GetExecutionResponse: + content_type: str = dataclasses.field() + status_code: int = dataclasses.field() + automation_execution: Optional[shared_automationexecution.AutomationExecution] = dataclasses.field(default=None) + diff --git a/src/epilotapi/models/operations/getexecutions.py b/src/epilotapi/models/operations/getexecutions.py new file mode 100755 index 000000000..dd7c05b6b --- /dev/null +++ b/src/epilotapi/models/operations/getexecutions.py @@ -0,0 +1,23 @@ +import dataclasses +from typing import Optional +from ..shared import getexecutionsresp as shared_getexecutionsresp + + +@dataclasses.dataclass +class GetExecutionsQueryParams: + entity_id: Optional[str] = dataclasses.field(default=None, metadata={'query_param': { 'field_name': 'entity_id', 'style': 'form', 'explode': True }}) + from_: Optional[int] = dataclasses.field(default=None, metadata={'query_param': { 'field_name': 'from', 'style': 'form', 'explode': True }}) + size: Optional[int] = dataclasses.field(default=None, metadata={'query_param': { 'field_name': 'size', 'style': 'form', 'explode': True }}) + + +@dataclasses.dataclass +class GetExecutionsRequest: + query_params: GetExecutionsQueryParams = dataclasses.field() + + +@dataclasses.dataclass +class GetExecutionsResponse: + content_type: str = dataclasses.field() + status_code: int = dataclasses.field() + get_executions_resp: Optional[shared_getexecutionsresp.GetExecutionsResp] = dataclasses.field(default=None) + diff --git a/src/epilotapi/models/operations/getflow.py b/src/epilotapi/models/operations/getflow.py new file mode 100755 index 000000000..5e3332d3f --- /dev/null +++ b/src/epilotapi/models/operations/getflow.py @@ -0,0 +1,21 @@ +import dataclasses +from typing import Optional +from ..shared import automationflow as shared_automationflow + + +@dataclasses.dataclass +class GetFlowPathParams: + flow_id: str = dataclasses.field(metadata={'path_param': { 'field_name': 'flow_id', 'style': 'simple', 'explode': False }}) + + +@dataclasses.dataclass +class GetFlowRequest: + path_params: GetFlowPathParams = dataclasses.field() + + +@dataclasses.dataclass +class GetFlowResponse: + content_type: str = dataclasses.field() + status_code: int = dataclasses.field() + automation_flow: Optional[shared_automationflow.AutomationFlow] = dataclasses.field(default=None) + diff --git a/src/epilotapi/models/operations/getjourney.py b/src/epilotapi/models/operations/getjourney.py new file mode 100755 index 000000000..acd6c136d --- /dev/null +++ b/src/epilotapi/models/operations/getjourney.py @@ -0,0 +1,27 @@ +import dataclasses +from typing import Any,Optional + + +@dataclasses.dataclass +class GetJourneyPathParams: + id: str = dataclasses.field(metadata={'path_param': { 'field_name': 'id', 'style': 'simple', 'explode': False }}) + + +@dataclasses.dataclass +class GetJourneyQueryParams: + org_id: Optional[str] = dataclasses.field(default=None, metadata={'query_param': { 'field_name': 'orgId', 'style': 'form', 'explode': True }}) + source: Optional[str] = dataclasses.field(default=None, metadata={'query_param': { 'field_name': 'source', 'style': 'form', 'explode': True }}) + + +@dataclasses.dataclass +class GetJourneyRequest: + path_params: GetJourneyPathParams = dataclasses.field() + query_params: GetJourneyQueryParams = dataclasses.field() + + +@dataclasses.dataclass +class GetJourneyResponse: + content_type: str = dataclasses.field() + status_code: int = dataclasses.field() + journey_response: Optional[dict[str, Any]] = dataclasses.field(default=None) + diff --git a/src/epilotapi/models/operations/getjourneysbyorgid.py b/src/epilotapi/models/operations/getjourneysbyorgid.py new file mode 100755 index 000000000..13c2755f9 --- /dev/null +++ b/src/epilotapi/models/operations/getjourneysbyorgid.py @@ -0,0 +1,20 @@ +import dataclasses +from typing import Any,Optional + + +@dataclasses.dataclass +class GetJourneysByOrgIDPathParams: + id: str = dataclasses.field(metadata={'path_param': { 'field_name': 'id', 'style': 'simple', 'explode': False }}) + + +@dataclasses.dataclass +class GetJourneysByOrgIDRequest: + path_params: GetJourneysByOrgIDPathParams = dataclasses.field() + + +@dataclasses.dataclass +class GetJourneysByOrgIDResponse: + content_type: str = dataclasses.field() + status_code: int = dataclasses.field() + get_journeys_response: Optional[dict[str, Any]] = dataclasses.field(default=None) + diff --git a/src/epilotapi/models/operations/getrelations.py b/src/epilotapi/models/operations/getrelations.py new file mode 100755 index 000000000..e7b94ee07 --- /dev/null +++ b/src/epilotapi/models/operations/getrelations.py @@ -0,0 +1,28 @@ +import dataclasses +from typing import Any,Optional + + +@dataclasses.dataclass +class GetRelationsPathParams: + id: str = dataclasses.field(metadata={'path_param': { 'field_name': 'id', 'style': 'simple', 'explode': False }}) + slug: str = dataclasses.field(metadata={'path_param': { 'field_name': 'slug', 'style': 'simple', 'explode': False }}) + + +@dataclasses.dataclass +class GetRelationsQueryParams: + hydrate: Optional[bool] = dataclasses.field(default=None, metadata={'query_param': { 'field_name': 'hydrate', 'style': 'form', 'explode': True }}) + include_reverse: Optional[bool] = dataclasses.field(default=None, metadata={'query_param': { 'field_name': 'include_reverse', 'style': 'form', 'explode': True }}) + + +@dataclasses.dataclass +class GetRelationsRequest: + path_params: GetRelationsPathParams = dataclasses.field() + query_params: GetRelationsQueryParams = dataclasses.field() + + +@dataclasses.dataclass +class GetRelationsResponse: + content_type: str = dataclasses.field() + status_code: int = dataclasses.field() + get_relations_resp: Optional[list[Any]] = dataclasses.field(default=None) + diff --git a/src/epilotapi/models/operations/getsavedview.py b/src/epilotapi/models/operations/getsavedview.py new file mode 100755 index 000000000..d36ffaf7d --- /dev/null +++ b/src/epilotapi/models/operations/getsavedview.py @@ -0,0 +1,29 @@ +import dataclasses +from typing import Optional +from dataclasses_json import dataclass_json +from epilotapi import utils +from ..shared import savedviewitem as shared_savedviewitem + + +@dataclasses.dataclass +class GetSavedViewPathParams: + id: str = dataclasses.field(metadata={'path_param': { 'field_name': 'id', 'style': 'simple', 'explode': False }}) + + +@dataclass_json +@dataclasses.dataclass +class GetSavedView200ApplicationJSON: + view: Optional[shared_savedviewitem.SavedViewItem] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('view') }}) + + +@dataclasses.dataclass +class GetSavedViewRequest: + path_params: GetSavedViewPathParams = dataclasses.field() + + +@dataclasses.dataclass +class GetSavedViewResponse: + content_type: str = dataclasses.field() + status_code: int = dataclasses.field() + get_saved_view_200_application_json_object: Optional[GetSavedView200ApplicationJSON] = dataclasses.field(default=None) + diff --git a/src/epilotapi/models/operations/getschema.py b/src/epilotapi/models/operations/getschema.py new file mode 100755 index 000000000..2b673eb8b --- /dev/null +++ b/src/epilotapi/models/operations/getschema.py @@ -0,0 +1,27 @@ +import dataclasses +from typing import Optional +from ..shared import entityschemaitem as shared_entityschemaitem + + +@dataclasses.dataclass +class GetSchemaPathParams: + slug: str = dataclasses.field(metadata={'path_param': { 'field_name': 'slug', 'style': 'simple', 'explode': False }}) + + +@dataclasses.dataclass +class GetSchemaQueryParams: + id: Optional[str] = dataclasses.field(default=None, metadata={'query_param': { 'field_name': 'id', 'style': 'form', 'explode': True }}) + + +@dataclasses.dataclass +class GetSchemaRequest: + path_params: GetSchemaPathParams = dataclasses.field() + query_params: GetSchemaQueryParams = dataclasses.field() + + +@dataclasses.dataclass +class GetSchemaResponse: + content_type: str = dataclasses.field() + status_code: int = dataclasses.field() + entity_schema_item: Optional[shared_entityschemaitem.EntitySchemaItem] = dataclasses.field(default=None) + diff --git a/src/epilotapi/models/operations/getschemaversions.py b/src/epilotapi/models/operations/getschemaversions.py new file mode 100755 index 000000000..3d6b87243 --- /dev/null +++ b/src/epilotapi/models/operations/getschemaversions.py @@ -0,0 +1,30 @@ +import dataclasses +from typing import Optional +from dataclasses_json import dataclass_json +from epilotapi import utils +from ..shared import entityschemaitem as shared_entityschemaitem + + +@dataclasses.dataclass +class GetSchemaVersionsPathParams: + slug: str = dataclasses.field(metadata={'path_param': { 'field_name': 'slug', 'style': 'simple', 'explode': False }}) + + +@dataclass_json +@dataclasses.dataclass +class GetSchemaVersions200ApplicationJSON: + drafts: Optional[list[shared_entityschemaitem.EntitySchemaItem]] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('drafts') }}) + versions: Optional[list[shared_entityschemaitem.EntitySchemaItem]] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('versions') }}) + + +@dataclasses.dataclass +class GetSchemaVersionsRequest: + path_params: GetSchemaVersionsPathParams = dataclasses.field() + + +@dataclasses.dataclass +class GetSchemaVersionsResponse: + content_type: str = dataclasses.field() + status_code: int = dataclasses.field() + get_schema_versions_200_application_json_object: Optional[GetSchemaVersions200ApplicationJSON] = dataclasses.field(default=None) + diff --git a/src/epilotapi/models/operations/gettaxonomy.py b/src/epilotapi/models/operations/gettaxonomy.py new file mode 100755 index 000000000..ff7312ed1 --- /dev/null +++ b/src/epilotapi/models/operations/gettaxonomy.py @@ -0,0 +1,21 @@ +import dataclasses +from typing import Optional +from ..shared import taxonomy as shared_taxonomy + + +@dataclasses.dataclass +class GetTaxonomyPathParams: + taxonomy_slug: str = dataclasses.field(metadata={'path_param': { 'field_name': 'taxonomySlug', 'style': 'simple', 'explode': False }}) + + +@dataclasses.dataclass +class GetTaxonomyRequest: + path_params: GetTaxonomyPathParams = dataclasses.field() + + +@dataclasses.dataclass +class GetTaxonomyResponse: + content_type: str = dataclasses.field() + status_code: int = dataclasses.field() + taxonomy: Optional[shared_taxonomy.Taxonomy] = dataclasses.field(default=None) + diff --git a/src/epilotapi/models/operations/importentities.py b/src/epilotapi/models/operations/importentities.py new file mode 100755 index 000000000..5e7062ea3 --- /dev/null +++ b/src/epilotapi/models/operations/importentities.py @@ -0,0 +1,21 @@ +import dataclasses +from typing import Optional +from ..shared import entityimportparams as shared_entityimportparams + + +@dataclasses.dataclass +class ImportEntitiesQueryParams: + job_id: Optional[str] = dataclasses.field(default=None, metadata={'query_param': { 'field_name': 'job_id', 'style': 'form', 'explode': True }}) + + +@dataclasses.dataclass +class ImportEntitiesRequest: + query_params: ImportEntitiesQueryParams = dataclasses.field() + request: Optional[shared_entityimportparams.EntityImportParams] = dataclasses.field(default=None, metadata={'request': { 'media_type': 'application/json' }}) + + +@dataclasses.dataclass +class ImportEntitiesResponse: + content_type: str = dataclasses.field() + status_code: int = dataclasses.field() + diff --git a/src/epilotapi/models/operations/listsavedviews.py b/src/epilotapi/models/operations/listsavedviews.py new file mode 100755 index 000000000..1de1e2c61 --- /dev/null +++ b/src/epilotapi/models/operations/listsavedviews.py @@ -0,0 +1,19 @@ +import dataclasses +from typing import Optional +from dataclasses_json import dataclass_json +from epilotapi import utils +from ..shared import savedviewitem as shared_savedviewitem + + +@dataclass_json +@dataclasses.dataclass +class ListSavedViews200ApplicationJSON: + results: Optional[list[shared_savedviewitem.SavedViewItem]] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('results') }}) + + +@dataclasses.dataclass +class ListSavedViewsResponse: + content_type: str = dataclasses.field() + status_code: int = dataclasses.field() + list_saved_views_200_application_json_object: Optional[ListSavedViews200ApplicationJSON] = dataclasses.field(default=None) + diff --git a/src/epilotapi/models/operations/listschemablueprints.py b/src/epilotapi/models/operations/listschemablueprints.py new file mode 100755 index 000000000..1b91a9e6e --- /dev/null +++ b/src/epilotapi/models/operations/listschemablueprints.py @@ -0,0 +1,19 @@ +import dataclasses +from typing import Optional +from dataclasses_json import dataclass_json +from epilotapi import utils +from ..shared import entityschemaitem as shared_entityschemaitem + + +@dataclass_json +@dataclasses.dataclass +class ListSchemaBlueprints200ApplicationJSON: + results: Optional[list[shared_entityschemaitem.EntitySchemaItem]] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('results') }}) + + +@dataclasses.dataclass +class ListSchemaBlueprintsResponse: + content_type: str = dataclasses.field() + status_code: int = dataclasses.field() + list_schema_blueprints_200_application_json_object: Optional[ListSchemaBlueprints200ApplicationJSON] = dataclasses.field(default=None) + diff --git a/src/epilotapi/models/operations/listschemas.py b/src/epilotapi/models/operations/listschemas.py new file mode 100755 index 000000000..ff21ee472 --- /dev/null +++ b/src/epilotapi/models/operations/listschemas.py @@ -0,0 +1,29 @@ +import dataclasses +from typing import Optional +from dataclasses_json import dataclass_json +from epilotapi import utils +from ..shared import entityschemaitem as shared_entityschemaitem + + +@dataclasses.dataclass +class ListSchemasQueryParams: + unpublished: Optional[bool] = dataclasses.field(default=None, metadata={'query_param': { 'field_name': 'unpublished', 'style': 'form', 'explode': True }}) + + +@dataclass_json +@dataclasses.dataclass +class ListSchemas200ApplicationJSON: + results: Optional[list[shared_entityschemaitem.EntitySchemaItem]] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('results') }}) + + +@dataclasses.dataclass +class ListSchemasRequest: + query_params: ListSchemasQueryParams = dataclasses.field() + + +@dataclasses.dataclass +class ListSchemasResponse: + content_type: str = dataclasses.field() + status_code: int = dataclasses.field() + list_schemas_200_application_json_object: Optional[ListSchemas200ApplicationJSON] = dataclasses.field(default=None) + diff --git a/src/epilotapi/models/operations/listtaxonomies.py b/src/epilotapi/models/operations/listtaxonomies.py new file mode 100755 index 000000000..1a3da2ceb --- /dev/null +++ b/src/epilotapi/models/operations/listtaxonomies.py @@ -0,0 +1,19 @@ +import dataclasses +from typing import Optional +from dataclasses_json import dataclass_json +from epilotapi import utils +from ..shared import taxonomy as shared_taxonomy + + +@dataclass_json +@dataclasses.dataclass +class ListTaxonomies200ApplicationJSON: + results: Optional[list[shared_taxonomy.Taxonomy]] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('results') }}) + + +@dataclasses.dataclass +class ListTaxonomiesResponse: + content_type: str = dataclasses.field() + status_code: int = dataclasses.field() + list_taxonomies_200_application_json_object: Optional[ListTaxonomies200ApplicationJSON] = dataclasses.field(default=None) + diff --git a/src/epilotapi/models/operations/listtaxonomyclassificationsforschema.py b/src/epilotapi/models/operations/listtaxonomyclassificationsforschema.py new file mode 100755 index 000000000..ae7ffaf31 --- /dev/null +++ b/src/epilotapi/models/operations/listtaxonomyclassificationsforschema.py @@ -0,0 +1,37 @@ +import dataclasses +from typing import Optional +from dataclasses_json import dataclass_json +from epilotapi import utils +from ..shared import taxonomyclassification as shared_taxonomyclassification + + +@dataclasses.dataclass +class ListTaxonomyClassificationsForSchemaPathParams: + slug: str = dataclasses.field(metadata={'path_param': { 'field_name': 'slug', 'style': 'simple', 'explode': False }}) + taxonomy_slug: str = dataclasses.field(metadata={'path_param': { 'field_name': 'taxonomySlug', 'style': 'simple', 'explode': False }}) + + +@dataclasses.dataclass +class ListTaxonomyClassificationsForSchemaQueryParams: + query: Optional[str] = dataclasses.field(default=None, metadata={'query_param': { 'field_name': 'query', 'style': 'form', 'explode': True }}) + size: Optional[float] = dataclasses.field(default=None, metadata={'query_param': { 'field_name': 'size', 'style': 'form', 'explode': True }}) + + +@dataclass_json +@dataclasses.dataclass +class ListTaxonomyClassificationsForSchema200ApplicationJSON: + results: Optional[list[shared_taxonomyclassification.TaxonomyClassification]] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('results') }}) + + +@dataclasses.dataclass +class ListTaxonomyClassificationsForSchemaRequest: + path_params: ListTaxonomyClassificationsForSchemaPathParams = dataclasses.field() + query_params: ListTaxonomyClassificationsForSchemaQueryParams = dataclasses.field() + + +@dataclasses.dataclass +class ListTaxonomyClassificationsForSchemaResponse: + content_type: str = dataclasses.field() + status_code: int = dataclasses.field() + list_taxonomy_classifications_for_schema_200_application_json_object: Optional[ListTaxonomyClassificationsForSchema200ApplicationJSON] = dataclasses.field(default=None) + diff --git a/src/epilotapi/models/operations/patchupdatejourney.py b/src/epilotapi/models/operations/patchupdatejourney.py new file mode 100755 index 000000000..c8c5532c3 --- /dev/null +++ b/src/epilotapi/models/operations/patchupdatejourney.py @@ -0,0 +1,18 @@ +import dataclasses +from datetime import date, datetime +from marshmallow import fields +import dateutil.parser +from typing import Any,Optional + + +@dataclasses.dataclass +class PatchUpdateJourneyRequest: + request: Optional[dict[str, Any]] = dataclasses.field(default=None, metadata={'request': { 'media_type': 'application/json' }}) + + +@dataclasses.dataclass +class PatchUpdateJourneyResponse: + content_type: str = dataclasses.field() + status_code: int = dataclasses.field() + journey_response: Optional[dict[str, Any]] = dataclasses.field(default=None) + diff --git a/src/epilotapi/models/operations/putflow.py b/src/epilotapi/models/operations/putflow.py new file mode 100755 index 000000000..4a0e25dc2 --- /dev/null +++ b/src/epilotapi/models/operations/putflow.py @@ -0,0 +1,22 @@ +import dataclasses +from typing import Optional +from ..shared import automationflow as shared_automationflow + + +@dataclasses.dataclass +class PutFlowPathParams: + flow_id: str = dataclasses.field(metadata={'path_param': { 'field_name': 'flow_id', 'style': 'simple', 'explode': False }}) + + +@dataclasses.dataclass +class PutFlowRequest: + path_params: PutFlowPathParams = dataclasses.field() + request: Optional[shared_automationflow.AutomationFlow] = dataclasses.field(default=None, metadata={'request': { 'media_type': 'application/json' }}) + + +@dataclasses.dataclass +class PutFlowResponse: + content_type: str = dataclasses.field() + status_code: int = dataclasses.field() + automation_flow: Optional[shared_automationflow.AutomationFlow] = dataclasses.field(default=None) + diff --git a/src/epilotapi/models/operations/removejourney.py b/src/epilotapi/models/operations/removejourney.py new file mode 100755 index 000000000..685a7196f --- /dev/null +++ b/src/epilotapi/models/operations/removejourney.py @@ -0,0 +1,19 @@ +import dataclasses + + + +@dataclasses.dataclass +class RemoveJourneyPathParams: + id: str = dataclasses.field(metadata={'path_param': { 'field_name': 'id', 'style': 'simple', 'explode': False }}) + + +@dataclasses.dataclass +class RemoveJourneyRequest: + path_params: RemoveJourneyPathParams = dataclasses.field() + + +@dataclasses.dataclass +class RemoveJourneyResponse: + content_type: str = dataclasses.field() + status_code: int = dataclasses.field() + diff --git a/src/epilotapi/models/operations/retriggeraction.py b/src/epilotapi/models/operations/retriggeraction.py new file mode 100755 index 000000000..e782ee358 --- /dev/null +++ b/src/epilotapi/models/operations/retriggeraction.py @@ -0,0 +1,22 @@ +import dataclasses +from typing import Optional +from ..shared import retryreq as shared_retryreq + + +@dataclasses.dataclass +class RetriggerActionPathParams: + action_id: str = dataclasses.field(metadata={'path_param': { 'field_name': 'action_id', 'style': 'simple', 'explode': False }}) + execution_id: str = dataclasses.field(metadata={'path_param': { 'field_name': 'execution_id', 'style': 'simple', 'explode': False }}) + + +@dataclasses.dataclass +class RetriggerActionRequest: + path_params: RetriggerActionPathParams = dataclasses.field() + request: Optional[shared_retryreq.RetryReq] = dataclasses.field(default=None, metadata={'request': { 'media_type': 'application/json' }}) + + +@dataclasses.dataclass +class RetriggerActionResponse: + content_type: str = dataclasses.field() + status_code: int = dataclasses.field() + diff --git a/src/epilotapi/models/operations/searchentities.py b/src/epilotapi/models/operations/searchentities.py new file mode 100755 index 000000000..d83530efa --- /dev/null +++ b/src/epilotapi/models/operations/searchentities.py @@ -0,0 +1,18 @@ +import dataclasses +from typing import Optional +from ..shared import entitysearchparams as shared_entitysearchparams +from ..shared import entitysearchresults as shared_entitysearchresults + + +@dataclasses.dataclass +class SearchEntitiesRequest: + request: Optional[shared_entitysearchparams.EntitySearchParams] = dataclasses.field(default=None, metadata={'request': { 'media_type': 'application/json' }}) + + +@dataclasses.dataclass +class SearchEntitiesResponse: + content_type: str = dataclasses.field() + status_code: int = dataclasses.field() + entity_search_results: Optional[shared_entitysearchresults.EntitySearchResults] = dataclasses.field(default=None) + search_entities_200_text_csv_string: Optional[str] = dataclasses.field(default=None) + diff --git a/src/epilotapi/models/operations/searchflows.py b/src/epilotapi/models/operations/searchflows.py new file mode 100755 index 000000000..b25ab214b --- /dev/null +++ b/src/epilotapi/models/operations/searchflows.py @@ -0,0 +1,24 @@ +import dataclasses +from typing import Optional +from ..shared import searchautomationsresp as shared_searchautomationsresp + + +@dataclasses.dataclass +class SearchFlowsQueryParams: + from_: Optional[int] = dataclasses.field(default=None, metadata={'query_param': { 'field_name': 'from', 'style': 'form', 'explode': True }}) + schema: Optional[str] = dataclasses.field(default=None, metadata={'query_param': { 'field_name': 'schema', 'style': 'form', 'explode': True }}) + size: Optional[int] = dataclasses.field(default=None, metadata={'query_param': { 'field_name': 'size', 'style': 'form', 'explode': True }}) + trigger_source_id: Optional[str] = dataclasses.field(default=None, metadata={'query_param': { 'field_name': 'trigger_source_id', 'style': 'form', 'explode': True }}) + + +@dataclasses.dataclass +class SearchFlowsRequest: + query_params: SearchFlowsQueryParams = dataclasses.field() + + +@dataclasses.dataclass +class SearchFlowsResponse: + content_type: str = dataclasses.field() + status_code: int = dataclasses.field() + search_automations_resp: Optional[shared_searchautomationsresp.SearchAutomationsResp] = dataclasses.field(default=None) + diff --git a/src/epilotapi/models/operations/searchjourneys.py b/src/epilotapi/models/operations/searchjourneys.py new file mode 100755 index 000000000..251efcc60 --- /dev/null +++ b/src/epilotapi/models/operations/searchjourneys.py @@ -0,0 +1,17 @@ +import dataclasses +from typing import Optional +from ..shared import searchjourneysqueryrequest as shared_searchjourneysqueryrequest +from ..shared import searchjourneysresponse as shared_searchjourneysresponse + + +@dataclasses.dataclass +class SearchJourneysRequest: + request: Optional[shared_searchjourneysqueryrequest.SearchJourneysQueryRequest] = dataclasses.field(default=None, metadata={'request': { 'media_type': 'application/json' }}) + + +@dataclasses.dataclass +class SearchJourneysResponse: + content_type: str = dataclasses.field() + status_code: int = dataclasses.field() + search_journeys_response: Optional[shared_searchjourneysresponse.SearchJourneysResponse] = dataclasses.field(default=None) + diff --git a/src/epilotapi/models/operations/startexecution.py b/src/epilotapi/models/operations/startexecution.py new file mode 100755 index 000000000..ed66fca0c --- /dev/null +++ b/src/epilotapi/models/operations/startexecution.py @@ -0,0 +1,17 @@ +import dataclasses +from typing import Optional +from ..shared import startexecutionrequest as shared_startexecutionrequest +from ..shared import automationexecution as shared_automationexecution + + +@dataclasses.dataclass +class StartExecutionRequest: + request: Optional[shared_startexecutionrequest.StartExecutionRequest] = dataclasses.field(default=None, metadata={'request': { 'media_type': 'application/json' }}) + + +@dataclasses.dataclass +class StartExecutionResponse: + content_type: str = dataclasses.field() + status_code: int = dataclasses.field() + automation_execution: Optional[shared_automationexecution.AutomationExecution] = dataclasses.field(default=None) + diff --git a/src/epilotapi/models/operations/taxonomiesclassificationssearch.py b/src/epilotapi/models/operations/taxonomiesclassificationssearch.py new file mode 100755 index 000000000..22a0744aa --- /dev/null +++ b/src/epilotapi/models/operations/taxonomiesclassificationssearch.py @@ -0,0 +1,35 @@ +import dataclasses +from typing import Any,Optional +from dataclasses_json import dataclass_json +from epilotapi import utils + + +@dataclasses.dataclass +class TaxonomiesClassificationsSearchQueryParams: + taxonomy_slug: str = dataclasses.field(metadata={'query_param': { 'field_name': 'taxonomySlug', 'style': 'form', 'explode': True }}) + + +@dataclass_json +@dataclasses.dataclass +class TaxonomiesClassificationsSearchRequestBody: + classification_ids: Optional[list[str]] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('classificationIds') }}) + + +@dataclass_json +@dataclasses.dataclass +class TaxonomiesClassificationsSearch200ApplicationJSON: + results: Optional[Any] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('results') }}) + + +@dataclasses.dataclass +class TaxonomiesClassificationsSearchRequest: + query_params: TaxonomiesClassificationsSearchQueryParams = dataclasses.field() + request: Optional[TaxonomiesClassificationsSearchRequestBody] = dataclasses.field(default=None, metadata={'request': { 'media_type': 'application/json' }}) + + +@dataclasses.dataclass +class TaxonomiesClassificationsSearchResponse: + content_type: str = dataclasses.field() + status_code: int = dataclasses.field() + taxonomies_classifications_search_200_application_json_object: Optional[TaxonomiesClassificationsSearch200ApplicationJSON] = dataclasses.field(default=None) + diff --git a/src/epilotapi/models/operations/taxonomyautocomplete.py b/src/epilotapi/models/operations/taxonomyautocomplete.py new file mode 100755 index 000000000..f6ce7a1c3 --- /dev/null +++ b/src/epilotapi/models/operations/taxonomyautocomplete.py @@ -0,0 +1,36 @@ +import dataclasses +from typing import Optional +from dataclasses_json import dataclass_json +from epilotapi import utils +from ..shared import taxonomyclassification as shared_taxonomyclassification + + +@dataclasses.dataclass +class TaxonomyAutocompletePathParams: + taxonomy_slug: str = dataclasses.field(metadata={'path_param': { 'field_name': 'taxonomySlug', 'style': 'simple', 'explode': False }}) + + +@dataclasses.dataclass +class TaxonomyAutocompleteQueryParams: + query: Optional[str] = dataclasses.field(default=None, metadata={'query_param': { 'field_name': 'query', 'style': 'form', 'explode': True }}) + size: Optional[float] = dataclasses.field(default=None, metadata={'query_param': { 'field_name': 'size', 'style': 'form', 'explode': True }}) + + +@dataclass_json +@dataclasses.dataclass +class TaxonomyAutocomplete200ApplicationJSON: + results: Optional[list[shared_taxonomyclassification.TaxonomyClassification]] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('results') }}) + + +@dataclasses.dataclass +class TaxonomyAutocompleteRequest: + path_params: TaxonomyAutocompletePathParams = dataclasses.field() + query_params: TaxonomyAutocompleteQueryParams = dataclasses.field() + + +@dataclasses.dataclass +class TaxonomyAutocompleteResponse: + content_type: str = dataclasses.field() + status_code: int = dataclasses.field() + taxonomy_autocomplete_200_application_json_object: Optional[TaxonomyAutocomplete200ApplicationJSON] = dataclasses.field(default=None) + diff --git a/src/epilotapi/models/operations/updateclassificationsfortaxonomy.py b/src/epilotapi/models/operations/updateclassificationsfortaxonomy.py new file mode 100755 index 000000000..37fe362f6 --- /dev/null +++ b/src/epilotapi/models/operations/updateclassificationsfortaxonomy.py @@ -0,0 +1,36 @@ +import dataclasses +from datetime import date, datetime +from marshmallow import fields +import dateutil.parser +from typing import Any,Optional +from dataclasses_json import dataclass_json +from epilotapi import utils +from ..shared import taxonomyclassification as shared_taxonomyclassification +from ..shared import classificationsupdate as shared_classificationsupdate + + +@dataclasses.dataclass +class UpdateClassificationsForTaxonomyPathParams: + taxonomy_slug: str = dataclasses.field(metadata={'path_param': { 'field_name': 'taxonomySlug', 'style': 'simple', 'explode': False }}) + + +@dataclass_json +@dataclasses.dataclass +class UpdateClassificationsForTaxonomy200ApplicationJSON: + created: Optional[list[shared_taxonomyclassification.TaxonomyClassification]] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('created') }}) + deleted: Optional[dict[str, Any]] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('deleted') }}) + updated: Optional[list[shared_taxonomyclassification.TaxonomyClassification]] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('updated') }}) + + +@dataclasses.dataclass +class UpdateClassificationsForTaxonomyRequest: + path_params: UpdateClassificationsForTaxonomyPathParams = dataclasses.field() + request: Optional[shared_classificationsupdate.ClassificationsUpdate] = dataclasses.field(default=None, metadata={'request': { 'media_type': 'application/json' }}) + + +@dataclasses.dataclass +class UpdateClassificationsForTaxonomyResponse: + content_type: str = dataclasses.field() + status_code: int = dataclasses.field() + update_classifications_for_taxonomy_200_application_json_object: Optional[UpdateClassificationsForTaxonomy200ApplicationJSON] = dataclasses.field(default=None) + diff --git a/src/epilotapi/models/operations/updateentity.py b/src/epilotapi/models/operations/updateentity.py new file mode 100755 index 000000000..13f3eeafe --- /dev/null +++ b/src/epilotapi/models/operations/updateentity.py @@ -0,0 +1,32 @@ +import dataclasses +from datetime import date, datetime +from marshmallow import fields +import dateutil.parser +from typing import Any,Optional + + +@dataclasses.dataclass +class UpdateEntityPathParams: + id: str = dataclasses.field(metadata={'path_param': { 'field_name': 'id', 'style': 'simple', 'explode': False }}) + slug: str = dataclasses.field(metadata={'path_param': { 'field_name': 'slug', 'style': 'simple', 'explode': False }}) + + +@dataclasses.dataclass +class UpdateEntityQueryParams: + activity_id: Optional[str] = dataclasses.field(default=None, metadata={'query_param': { 'field_name': 'activity_id', 'style': 'form', 'explode': True }}) + async_: Optional[bool] = dataclasses.field(default=None, metadata={'query_param': { 'field_name': 'async', 'style': 'form', 'explode': True }}) + + +@dataclasses.dataclass +class UpdateEntityRequest: + path_params: UpdateEntityPathParams = dataclasses.field() + query_params: UpdateEntityQueryParams = dataclasses.field() + request: Optional[dict[str, Any]] = dataclasses.field(default=None, metadata={'request': { 'media_type': 'application/json' }}) + + +@dataclasses.dataclass +class UpdateEntityResponse: + content_type: str = dataclasses.field() + status_code: int = dataclasses.field() + entity_item: Optional[dict[str, Any]] = dataclasses.field(default=None) + diff --git a/src/epilotapi/models/operations/updatejourney.py b/src/epilotapi/models/operations/updatejourney.py new file mode 100755 index 000000000..f7499885d --- /dev/null +++ b/src/epilotapi/models/operations/updatejourney.py @@ -0,0 +1,18 @@ +import dataclasses +from datetime import date, datetime +from marshmallow import fields +import dateutil.parser +from typing import Any,Optional + + +@dataclasses.dataclass +class UpdateJourneyRequest: + request: Optional[dict[str, Any]] = dataclasses.field(default=None, metadata={'request': { 'media_type': 'application/json' }}) + + +@dataclasses.dataclass +class UpdateJourneyResponse: + content_type: str = dataclasses.field() + status_code: int = dataclasses.field() + journey_response: Optional[dict[str, Any]] = dataclasses.field(default=None) + diff --git a/src/epilotapi/models/operations/updaterelation.py b/src/epilotapi/models/operations/updaterelation.py new file mode 100755 index 000000000..893387296 --- /dev/null +++ b/src/epilotapi/models/operations/updaterelation.py @@ -0,0 +1,42 @@ +import dataclasses +from datetime import date, datetime +from marshmallow import fields +import dateutil.parser +from typing import Optional +from dataclasses_json import dataclass_json +from epilotapi import utils +from ..shared import relationitem as shared_relationitem + + +@dataclasses.dataclass +class UpdateRelationPathParams: + attribute: str = dataclasses.field(metadata={'path_param': { 'field_name': 'attribute', 'style': 'simple', 'explode': False }}) + entity_id: str = dataclasses.field(metadata={'path_param': { 'field_name': 'entity_id', 'style': 'simple', 'explode': False }}) + id: str = dataclasses.field(metadata={'path_param': { 'field_name': 'id', 'style': 'simple', 'explode': False }}) + slug: str = dataclasses.field(metadata={'path_param': { 'field_name': 'slug', 'style': 'simple', 'explode': False }}) + + +@dataclasses.dataclass +class UpdateRelationQueryParams: + async_: Optional[bool] = dataclasses.field(default=None, metadata={'query_param': { 'field_name': 'async', 'style': 'form', 'explode': True }}) + + +@dataclass_json +@dataclasses.dataclass +class UpdateRelationRequestBody: + tags: Optional[list[str]] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('_tags') }}) + + +@dataclasses.dataclass +class UpdateRelationRequest: + path_params: UpdateRelationPathParams = dataclasses.field() + query_params: UpdateRelationQueryParams = dataclasses.field() + request: Optional[UpdateRelationRequestBody] = dataclasses.field(default=None, metadata={'request': { 'media_type': 'application/json' }}) + + +@dataclasses.dataclass +class UpdateRelationResponse: + content_type: str = dataclasses.field() + status_code: int = dataclasses.field() + relation_item: Optional[shared_relationitem.RelationItem] = dataclasses.field(default=None) + diff --git a/src/epilotapi/models/operations/updatesavedview.py b/src/epilotapi/models/operations/updatesavedview.py new file mode 100755 index 000000000..66ded082a --- /dev/null +++ b/src/epilotapi/models/operations/updatesavedview.py @@ -0,0 +1,26 @@ +import dataclasses +from datetime import date, datetime +from marshmallow import fields +import dateutil.parser +from typing import Optional +from ..shared import savedview as shared_savedview +from ..shared import savedviewitem as shared_savedviewitem + + +@dataclasses.dataclass +class UpdateSavedViewPathParams: + id: str = dataclasses.field(metadata={'path_param': { 'field_name': 'id', 'style': 'simple', 'explode': False }}) + + +@dataclasses.dataclass +class UpdateSavedViewRequest: + path_params: UpdateSavedViewPathParams = dataclasses.field() + request: Optional[shared_savedview.SavedView] = dataclasses.field(default=None, metadata={'request': { 'media_type': 'application/json' }}) + + +@dataclasses.dataclass +class UpdateSavedViewResponse: + content_type: str = dataclasses.field() + status_code: int = dataclasses.field() + saved_view_item: Optional[shared_savedviewitem.SavedViewItem] = dataclasses.field(default=None) + diff --git a/src/epilotapi/models/operations/upsertentity.py b/src/epilotapi/models/operations/upsertentity.py new file mode 100755 index 000000000..1e6b04a93 --- /dev/null +++ b/src/epilotapi/models/operations/upsertentity.py @@ -0,0 +1,38 @@ +import dataclasses +from typing import Any,Optional +from dataclasses_json import dataclass_json +from epilotapi import utils + + +@dataclasses.dataclass +class UpsertEntityPathParams: + slug: str = dataclasses.field(metadata={'path_param': { 'field_name': 'slug', 'style': 'simple', 'explode': False }}) + + +@dataclasses.dataclass +class UpsertEntityQueryParams: + activity_id: Optional[str] = dataclasses.field(default=None, metadata={'query_param': { 'field_name': 'activity_id', 'style': 'form', 'explode': True }}) + async_: Optional[bool] = dataclasses.field(default=None, metadata={'query_param': { 'field_name': 'async', 'style': 'form', 'explode': True }}) + dry_run: Optional[bool] = dataclasses.field(default=None, metadata={'query_param': { 'field_name': 'dry_run', 'style': 'form', 'explode': True }}) + + +@dataclass_json +@dataclasses.dataclass +class UpsertEntityRequestBody: + entity: dict[str, Any] = dataclasses.field(metadata={'dataclasses_json': { 'letter_case': utils.field_name('entity') }}) + unique_key: list[str] = dataclasses.field(metadata={'dataclasses_json': { 'letter_case': utils.field_name('unique_key') }}) + + +@dataclasses.dataclass +class UpsertEntityRequest: + path_params: UpsertEntityPathParams = dataclasses.field() + query_params: UpsertEntityQueryParams = dataclasses.field() + request: Optional[UpsertEntityRequestBody] = dataclasses.field(default=None, metadata={'request': { 'media_type': 'application/json' }}) + + +@dataclasses.dataclass +class UpsertEntityResponse: + content_type: str = dataclasses.field() + status_code: int = dataclasses.field() + entity_item: Optional[dict[str, Any]] = dataclasses.field(default=None) + diff --git a/src/epilotapi/models/shared/__init__.py b/src/epilotapi/models/shared/__init__.py new file mode 100755 index 000000000..14b3b2449 --- /dev/null +++ b/src/epilotapi/models/shared/__init__.py @@ -0,0 +1,104 @@ +from .activity import * +from .activityitem import * +from .activitytrigger import * +from .addressrelationattribute import * +from .apisubmissiontrigger import * +from .appendvaluemapper import * +from .assignuserstostep import * +from .automationaction import * +from .automationactionconfig import * +from .automationattribute import * +from .automationexecution import * +from .automationflow import * +from .booleanattribute import * +from .cartcheckoutaction import * +from .cartcheckoutactionconfig import * +from .cartcheckoutconfig import * +from .classificationsupdate import * +from .comparison_enum import * +from .computedattribute import * +from .consentattribute import * +from .copyvaluemapper import * +from .countryattribute import * +from .createdocumentaction import * +from .createdocumentactionconfig import * +from .createdocumentconfig import * +from .currencyattribute import * +from .dateattribute import * +from .entitycapability import * +from .entitydefaultcreate import * +from .entitydefaultedit import * +from .entitydefaulttable import * +from .entityimportparams import * +from .entitymanualtrigger import * +from .entityoperation import * +from .entityoperationtrigger import * +from .entityparcelview import * +from .entityschema import * +from .entityschemaitem import * +from .entitysearchparams import * +from .entitysearchresults import * +from .entityviewdisabled import * +from .errorcode_enum import * +from .erroroutput import * +from .executionstatus_enum import * +from .fileattribute import * +from .frontendsubmittrigger import * +from .getexecutionsresp import * +from .internalattribute import * +from .internaluserattribute import * +from .invitationemailattribute import * +from .journeysubmittrigger import * +from .linkattribute import * +from .mapentityaction import * +from .mapentityactionconfig import * +from .mapentityconfig import * +from .mappingattributemode_enum import * +from .mappingattributev2 import * +from .mappingconfigref import * +from .multiselectattribute import * +from .numberattribute import * +from .orderedlistattribute import * +from .partnerstatusattribute import * +from .paymentmethodrelationattribute import * +from .purposeattribute import * +from .receivedemailtrigger import * +from .redirectentityview import * +from .relationattribute import * +from .relationattribute1 import * +from .relationitem import * +from .repeatableattribute import * +from .retryreq import * +from .retrystrategy_enum import * +from .savedview import * +from .savedviewitem import * +from .searchautomationsresp import * +from .searchjourneysqueryrequest import * +from .searchjourneysresponse import * +from .searchmappings import * +from .security import * +from .selectattribute import * +from .sendemailaction import * +from .sendemailactionconfig import * +from .sendemailconfig import * +from .sequenceattribute import * +from .setvaluemapper import * +from .startexecutionrequest import * +from .statusattribute import * +from .summaryattribute import * +from .summaryfield import * +from .tagsattribute import * +from .taxonomy import * +from .taxonomyclassification import * +from .textattribute import * +from .triggercondition import * +from .triggerwebhookaction import * +from .triggerwebhookactionconfig import * +from .triggerwebhookconfig import * +from .triggerworkflowaction import * +from .triggerworkflowactionconfig import * +from .triggerworkflowcondition import * +from .triggerworkflowconfig import * +from .userrelationattribute import * + +__all__ = ["Activity","ActivityItem","ActivityTriggerConfigurationTypesEnum","ActivityTriggerConfiguration","ActivityTriggerTypeEnum","ActivityTrigger","AddressRelationAttributeTypeEnum","AddressRelationAttribute","APISubmissionTriggerConfiguration","APISubmissionTriggerTypeEnum","APISubmissionTrigger","AppendValueMapper","AssignUsersToStep","AutomationAction","AutomationActionConfig","AutomationAttributeTypeEnum","AutomationAttribute","AutomationExecution","AutomationFlow","BooleanAttributeTypeEnum","BooleanAttribute","CartCheckoutAction","CartCheckoutActionConfig","CartCheckoutConfig","ClassificationsUpdate","ComparisonEnum","ComputedAttributeTypeEnum","ComputedAttribute","ConsentAttributeTypeEnum","ConsentAttribute","CopyValueMapper","CountryAttributeTypeEnum","CountryAttribute","CreateDocumentAction","CreateDocumentActionConfig","CreateDocumentConfig","CurrencyAttributeCurrency1","CurrencyAttributeTypeEnum","CurrencyAttribute","DateAttributeTypeEnum","DateAttribute","EntityCapability","EntityDefaultCreateTableMenuOptions","EntityDefaultCreateViewTypeEnum","EntityDefaultCreate","EntityDefaultEditTableMenuOptions","EntityDefaultEditViewTypeEnum","EntityDefaultEdit","EntityDefaultTableDropdownItems","EntityDefaultTableNavbarActionsOptions","EntityDefaultTableNavbarActions","EntityDefaultTableViewTypeEnum","EntityDefaultTable","EntityImportParamsS3Reference","EntityImportParams","EntityManualTriggerConfiguration","EntityManualTriggerTypeEnum","EntityManualTrigger","EntityOperationDiff","EntityOperationOperationEnum","EntityOperationParams","EntityOperation","EntityOperationTriggerConfigurationOperationsEnum","EntityOperationTriggerConfiguration","EntityOperationTriggerTypeEnum","EntityOperationTrigger","EntityParcelViewViewTypeEnum","EntityParcelView","EntitySchemaGroupSettingsInfoTooltipTitle","EntitySchemaGroupSettings","EntitySchemaUIConfigListItem","EntitySchemaUIConfigSharing","EntitySchemaUIConfig","EntitySchema","EntitySchemaItemGroupSettingsInfoTooltipTitle","EntitySchemaItemGroupSettings","EntitySchemaItemSource","EntitySchemaItemUIConfigListItem","EntitySchemaItemUIConfigSharing","EntitySchemaItemUIConfig","EntitySchemaItem","EntitySearchParams","EntitySearchResults","EntityViewDisabledViewTypeEnum","EntityViewDisabled","ErrorCodeEnum","ErrorOutput","ExecutionStatusEnum","FileAttributeDefaultAccessControlEnum","FileAttributeTypeEnum","FileAttribute","FrontendSubmitTriggerConfiguration","FrontendSubmitTriggerTypeEnum","FrontendSubmitTrigger","GetExecutionsResp","InternalAttributeTypeEnum","InternalAttribute","InternalUserAttributeTypeEnum","InternalUserAttribute","InvitationEmailAttributeTypeEnum","InvitationEmailAttribute","JourneySubmitTriggerConfiguration","JourneySubmitTriggerTypeEnum","JourneySubmitTrigger","LinkAttributeTypeEnum","LinkAttribute","MapEntityAction","MapEntityActionConfig","MapEntityConfig","MappingAttributeModeEnum","MappingAttributeV2","MappingConfigRef","MultiSelectAttributeOptions2","MultiSelectAttributeTypeEnum","MultiSelectAttribute","NumberAttributeTypeEnum","NumberAttribute","OrderedListAttributeTypeEnum","OrderedListAttribute","PartnerStatusAttributeTypeEnum","PartnerStatusAttribute","PaymentMethodRelationAttributeTypeEnum","PaymentMethodRelationAttribute","PurposeAttributeTypeEnum","PurposeAttribute","ReceivedEmailTriggerConfigurationMessageTypeEnum","ReceivedEmailTriggerConfiguration","ReceivedEmailTriggerTypeEnum","ReceivedEmailTrigger","RedirectEntityViewViewTypeEnum","RedirectEntityView","RelationAttributeActionsActionTypeEnum","RelationAttributeActions","RelationAttributeDrawerSizeEnum","RelationAttributeEditModeEnum","RelationAttributeRelationAffinityModeEnum","RelationAttributeRelationTypeEnum","RelationAttributeTypeEnum","RelationAttribute","RelationAttribute1ModeEnum","RelationAttribute1SourceFilter","RelationAttribute1","RelationItem","RepeatableAttributeRelationAffinityModeEnum","RepeatableAttributeTypeEnum","RepeatableAttribute","RetryReq","RetryStrategyEnum","SavedViewCreatedBy1","SavedView","SavedViewItemCreatedBy1","SavedViewItem","SearchAutomationsResp","SearchJourneysQueryRequest","SearchJourneysResponseResultsCreatedBy","SearchJourneysResponseResultsJourneyVersionEnum","SearchJourneysResponseResults","SearchJourneysResponse","SearchMappingsTypeEnum","SearchMappings","SchemeEpilotAuth","Security","SelectAttributeOptions2","SelectAttributeTypeEnum","SelectAttribute","SendEmailAction","SendEmailActionConfig","SendEmailConfigAttachmentsSourceFilterDocumentTypeEnum","SendEmailConfigAttachmentsSourceFilter","SendEmailConfigAttachments","SendEmailConfigLanguageCodeEnum","SendEmailConfig","SequenceAttributeTypeEnum","SequenceAttribute","SetValueMapper","StartExecutionRequest","StatusAttributeOptions2","StatusAttributeTypeEnum","StatusAttribute","SummaryAttribute","SummaryField","TagsAttributeTypeEnum","TagsAttribute","Taxonomy","TaxonomyClassification","TextAttributeTypeEnum","TextAttribute","TriggerCondition","TriggerWebhookAction","TriggerWebhookActionConfig","TriggerWebhookConfig","TriggerWorkflowAction","TriggerWorkflowActionConfig","TriggerWorkflowCondition","TriggerWorkflowConfig","UserRelationAttributeTypeEnum","UserRelationAttribute"] \ No newline at end of file diff --git a/src/epilotapi/models/shared/activity.py b/src/epilotapi/models/shared/activity.py new file mode 100755 index 000000000..68ba04abd --- /dev/null +++ b/src/epilotapi/models/shared/activity.py @@ -0,0 +1,14 @@ +import dataclasses +from typing import Any,Optional +from dataclasses_json import dataclass_json +from epilotapi import utils + + +@dataclass_json +@dataclasses.dataclass +class Activity: + message: str = dataclasses.field(metadata={'dataclasses_json': { 'letter_case': utils.field_name('message') }}) + title: str = dataclasses.field(metadata={'dataclasses_json': { 'letter_case': utils.field_name('title') }}) + type: str = dataclasses.field(metadata={'dataclasses_json': { 'letter_case': utils.field_name('type') }}) + payload: Optional[dict[str, Any]] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('payload') }}) + diff --git a/src/epilotapi/models/shared/activityitem.py b/src/epilotapi/models/shared/activityitem.py new file mode 100755 index 000000000..c3e7201df --- /dev/null +++ b/src/epilotapi/models/shared/activityitem.py @@ -0,0 +1,24 @@ +import dataclasses +from datetime import date, datetime +from marshmallow import fields +import dateutil.parser +from typing import Any,Optional +from dataclasses_json import dataclass_json +from epilotapi import utils +from ..shared import entityoperation as shared_entityoperation +from ..operations import entityoperation as operations_entityoperation + + +@dataclass_json +@dataclasses.dataclass +class ActivityItem: + message: str = dataclasses.field(metadata={'dataclasses_json': { 'letter_case': utils.field_name('message') }}) + title: str = dataclasses.field(metadata={'dataclasses_json': { 'letter_case': utils.field_name('title') }}) + type: str = dataclasses.field(metadata={'dataclasses_json': { 'letter_case': utils.field_name('type') }}) + id: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('_id') }}) + caller: Optional[dict[str, Any]] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('caller') }}) + operations: Optional[list[shared_entityoperation.EntityOperation]] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('operations') }}) + operations_total: Optional[int] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('operations_total') }}) + payload: Optional[dict[str, Any]] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('payload') }}) + timestamp: Optional[datetime] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('timestamp'), 'encoder': utils.datetimeisoformat(True), 'decoder': dateutil.parser.isoparse, 'mm_field': fields.DateTime(format='iso') }}) + diff --git a/src/epilotapi/models/shared/activitytrigger.py b/src/epilotapi/models/shared/activitytrigger.py new file mode 100755 index 000000000..f05359288 --- /dev/null +++ b/src/epilotapi/models/shared/activitytrigger.py @@ -0,0 +1,32 @@ +import dataclasses +from datetime import date, datetime +from marshmallow import fields +import dateutil.parser +from typing import Optional +from enum import Enum +from dataclasses_json import dataclass_json +from epilotapi import utils + +class ActivityTriggerConfigurationTypesEnum(str, Enum): + CREATE_METER_READING = "CreateMeterReading" + UPDATE_METER_READING = "UpdateMeterReading" + MESSAGE_ACTIVITY = "MessageActivity" + SYNC_ACTIVITY = "SyncActivity" + + +@dataclass_json +@dataclasses.dataclass +class ActivityTriggerConfiguration: + schema: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('schema') }}) + types: Optional[list[ActivityTriggerConfigurationTypesEnum]] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('types') }}) + +class ActivityTriggerTypeEnum(str, Enum): + ACTIVITY = "activity" + + +@dataclass_json +@dataclasses.dataclass +class ActivityTrigger: + configuration: ActivityTriggerConfiguration = dataclasses.field(metadata={'dataclasses_json': { 'letter_case': utils.field_name('configuration') }}) + type: ActivityTriggerTypeEnum = dataclasses.field(metadata={'dataclasses_json': { 'letter_case': utils.field_name('type') }}) + diff --git a/src/epilotapi/models/shared/addressrelationattribute.py b/src/epilotapi/models/shared/addressrelationattribute.py new file mode 100755 index 000000000..d83126b57 --- /dev/null +++ b/src/epilotapi/models/shared/addressrelationattribute.py @@ -0,0 +1,43 @@ +import dataclasses +from typing import Any,Optional +from enum import Enum +from dataclasses_json import dataclass_json +from epilotapi import utils + +class AddressRelationAttributeTypeEnum(str, Enum): + RELATION_ADDRESS = "relation_address" + + +@dataclass_json +@dataclasses.dataclass +class AddressRelationAttribute: + r"""AddressRelationAttribute + Reference to an address attribute of another entity + """ + + label: str = dataclasses.field(metadata={'dataclasses_json': { 'letter_case': utils.field_name('label') }}) + name: str = dataclasses.field(metadata={'dataclasses_json': { 'letter_case': utils.field_name('name') }}) + purpose: Optional[list[str]] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('_purpose') }}) + constraints: Optional[dict[str, Any]] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('constraints') }}) + default_value: Optional[Any] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('default_value') }}) + deprecated: Optional[bool] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('deprecated') }}) + entity_builder_disable_edit: Optional[bool] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('entity_builder_disable_edit') }}) + feature_flag: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('feature_flag') }}) + group: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('group') }}) + has_primary: Optional[bool] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('has_primary') }}) + hidden: Optional[bool] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('hidden') }}) + hide_label: Optional[bool] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('hide_label') }}) + icon: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('icon') }}) + layout: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('layout') }}) + order: Optional[int] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('order') }}) + placeholder: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('placeholder') }}) + preview_value_formatter: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('preview_value_formatter') }}) + protected: Optional[bool] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('protected') }}) + readonly: Optional[bool] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('readonly') }}) + render_condition: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('render_condition') }}) + required: Optional[bool] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('required') }}) + setting_flag: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('setting_flag') }}) + show_in_table: Optional[bool] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('show_in_table') }}) + type: Optional[AddressRelationAttributeTypeEnum] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('type') }}) + value_formatter: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('value_formatter') }}) + diff --git a/src/epilotapi/models/shared/apisubmissiontrigger.py b/src/epilotapi/models/shared/apisubmissiontrigger.py new file mode 100755 index 000000000..69483c322 --- /dev/null +++ b/src/epilotapi/models/shared/apisubmissiontrigger.py @@ -0,0 +1,22 @@ +import dataclasses +from typing import Optional +from enum import Enum +from dataclasses_json import dataclass_json +from epilotapi import utils + + +@dataclass_json +@dataclasses.dataclass +class APISubmissionTriggerConfiguration: + source_id: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('source_id') }}) + +class APISubmissionTriggerTypeEnum(str, Enum): + API_SUBMISSION = "api_submission" + + +@dataclass_json +@dataclasses.dataclass +class APISubmissionTrigger: + configuration: APISubmissionTriggerConfiguration = dataclasses.field(metadata={'dataclasses_json': { 'letter_case': utils.field_name('configuration') }}) + type: APISubmissionTriggerTypeEnum = dataclasses.field(metadata={'dataclasses_json': { 'letter_case': utils.field_name('type') }}) + diff --git a/src/epilotapi/models/shared/appendvaluemapper.py b/src/epilotapi/models/shared/appendvaluemapper.py new file mode 100755 index 000000000..600217ad6 --- /dev/null +++ b/src/epilotapi/models/shared/appendvaluemapper.py @@ -0,0 +1,17 @@ +import dataclasses +from typing import Optional +from enum import Enum +from dataclasses_json import dataclass_json +from epilotapi import utils +from ..shared import mappingattributemode_enum as shared_mappingattributemode_enum + + +@dataclass_json +@dataclasses.dataclass +class AppendValueMapper: + mode: shared_mappingattributemode_enum.MappingAttributeModeEnum = dataclasses.field(metadata={'dataclasses_json': { 'letter_case': utils.field_name('mode') }}) + target: str = dataclasses.field(metadata={'dataclasses_json': { 'letter_case': utils.field_name('target') }}) + value_json: str = dataclasses.field(metadata={'dataclasses_json': { 'letter_case': utils.field_name('value_json') }}) + source: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('source') }}) + target_unique: Optional[list[str]] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('target_unique') }}) + diff --git a/src/epilotapi/models/shared/assignuserstostep.py b/src/epilotapi/models/shared/assignuserstostep.py new file mode 100755 index 000000000..4b707d309 --- /dev/null +++ b/src/epilotapi/models/shared/assignuserstostep.py @@ -0,0 +1,13 @@ +import dataclasses +from typing import Optional +from dataclasses_json import dataclass_json +from epilotapi import utils + + +@dataclass_json +@dataclasses.dataclass +class AssignUsersToStep: + step_id: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('step_id') }}) + step_name: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('step_name') }}) + user_ids: Optional[list[float]] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('user_ids') }}) + diff --git a/src/epilotapi/models/shared/automationaction.py b/src/epilotapi/models/shared/automationaction.py new file mode 100755 index 000000000..b80e0eae5 --- /dev/null +++ b/src/epilotapi/models/shared/automationaction.py @@ -0,0 +1,30 @@ +import dataclasses +from datetime import date, datetime +from marshmallow import fields +import dateutil.parser +from typing import Any,Optional +from enum import Enum +from dataclasses_json import dataclass_json +from epilotapi import utils +from ..shared import erroroutput as shared_erroroutput +from ..shared import executionstatus_enum as shared_executionstatus_enum +from ..shared import retrystrategy_enum as shared_retrystrategy_enum + + +@dataclass_json +@dataclasses.dataclass +class AutomationAction: + allow_failure: Optional[bool] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('allow_failure') }}) + config: Optional[dict[str, Any]] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('config') }}) + created_automatically: Optional[bool] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('created_automatically') }}) + error_output: Optional[shared_erroroutput.ErrorOutput] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('error_output') }}) + execution_status: Optional[shared_executionstatus_enum.ExecutionStatusEnum] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('execution_status') }}) + flow_action_id: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('flow_action_id') }}) + id: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('id') }}) + name: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('name') }}) + outputs: Optional[dict[str, Any]] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('outputs') }}) + retry_strategy: Optional[shared_retrystrategy_enum.RetryStrategyEnum] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('retry_strategy') }}) + started_at: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('started_at') }}) + type: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('type') }}) + updated_at: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('updated_at') }}) + diff --git a/src/epilotapi/models/shared/automationactionconfig.py b/src/epilotapi/models/shared/automationactionconfig.py new file mode 100755 index 000000000..8baac912f --- /dev/null +++ b/src/epilotapi/models/shared/automationactionconfig.py @@ -0,0 +1,17 @@ +import dataclasses +from typing import Any,Optional +from dataclasses_json import dataclass_json +from epilotapi import utils + + +@dataclass_json +@dataclasses.dataclass +class AutomationActionConfig: + allow_failure: Optional[bool] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('allow_failure') }}) + config: Optional[dict[str, Any]] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('config') }}) + created_automatically: Optional[bool] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('created_automatically') }}) + flow_action_id: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('flow_action_id') }}) + id: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('id') }}) + name: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('name') }}) + type: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('type') }}) + diff --git a/src/epilotapi/models/shared/automationattribute.py b/src/epilotapi/models/shared/automationattribute.py new file mode 100755 index 000000000..c81ea0953 --- /dev/null +++ b/src/epilotapi/models/shared/automationattribute.py @@ -0,0 +1,42 @@ +import dataclasses +from typing import Any,Optional +from enum import Enum +from dataclasses_json import dataclass_json +from epilotapi import utils + +class AutomationAttributeTypeEnum(str, Enum): + AUTOMATION = "automation" + + +@dataclass_json +@dataclasses.dataclass +class AutomationAttribute: + r"""AutomationAttribute + Automation entity + """ + + label: str = dataclasses.field(metadata={'dataclasses_json': { 'letter_case': utils.field_name('label') }}) + name: str = dataclasses.field(metadata={'dataclasses_json': { 'letter_case': utils.field_name('name') }}) + purpose: Optional[list[str]] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('_purpose') }}) + constraints: Optional[dict[str, Any]] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('constraints') }}) + default_value: Optional[Any] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('default_value') }}) + deprecated: Optional[bool] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('deprecated') }}) + entity_builder_disable_edit: Optional[bool] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('entity_builder_disable_edit') }}) + feature_flag: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('feature_flag') }}) + group: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('group') }}) + hidden: Optional[bool] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('hidden') }}) + hide_label: Optional[bool] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('hide_label') }}) + icon: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('icon') }}) + layout: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('layout') }}) + order: Optional[int] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('order') }}) + placeholder: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('placeholder') }}) + preview_value_formatter: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('preview_value_formatter') }}) + protected: Optional[bool] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('protected') }}) + readonly: Optional[bool] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('readonly') }}) + render_condition: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('render_condition') }}) + required: Optional[bool] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('required') }}) + setting_flag: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('setting_flag') }}) + show_in_table: Optional[bool] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('show_in_table') }}) + type: Optional[AutomationAttributeTypeEnum] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('type') }}) + value_formatter: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('value_formatter') }}) + diff --git a/src/epilotapi/models/shared/automationexecution.py b/src/epilotapi/models/shared/automationexecution.py new file mode 100755 index 000000000..b0752f564 --- /dev/null +++ b/src/epilotapi/models/shared/automationexecution.py @@ -0,0 +1,34 @@ +import dataclasses +from datetime import date, datetime +from marshmallow import fields +import dateutil.parser +from typing import Any,Optional +from enum import Enum +from dataclasses_json import dataclass_json +from epilotapi import utils +from ..shared import mapentityaction as shared_mapentityaction +from ..shared import triggerworkflowaction as shared_triggerworkflowaction +from ..shared import triggerwebhookaction as shared_triggerwebhookaction +from ..shared import createdocumentaction as shared_createdocumentaction +from ..shared import sendemailaction as shared_sendemailaction +from ..shared import cartcheckoutaction as shared_cartcheckoutaction +from ..shared import automationaction as shared_automationaction +from ..shared import executionstatus_enum as shared_executionstatus_enum + + +@dataclass_json +@dataclasses.dataclass +class AutomationExecution: + actions: list[Any] = dataclasses.field(metadata={'dataclasses_json': { 'letter_case': utils.field_name('actions') }}) + entity_id: str = dataclasses.field(metadata={'dataclasses_json': { 'letter_case': utils.field_name('entity_id') }}) + flow_id: str = dataclasses.field(metadata={'dataclasses_json': { 'letter_case': utils.field_name('flow_id') }}) + id: str = dataclasses.field(metadata={'dataclasses_json': { 'letter_case': utils.field_name('id') }}) + org_id: str = dataclasses.field(metadata={'dataclasses_json': { 'letter_case': utils.field_name('org_id') }}) + activity_id: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('activity_id') }}) + created_at: Optional[datetime] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('created_at'), 'encoder': utils.datetimeisoformat(True), 'decoder': dateutil.parser.isoparse, 'mm_field': fields.DateTime(format='iso') }}) + current_action_id: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('current_action_id') }}) + entity_snapshot: Optional[dict[str, Any]] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('entity_snapshot') }}) + execution_status: Optional[shared_executionstatus_enum.ExecutionStatusEnum] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('execution_status') }}) + flow_name: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('flow_name') }}) + updated_at: Optional[datetime] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('updated_at'), 'encoder': utils.datetimeisoformat(True), 'decoder': dateutil.parser.isoparse, 'mm_field': fields.DateTime(format='iso') }}) + diff --git a/src/epilotapi/models/shared/automationflow.py b/src/epilotapi/models/shared/automationflow.py new file mode 100755 index 000000000..56c7f1ec1 --- /dev/null +++ b/src/epilotapi/models/shared/automationflow.py @@ -0,0 +1,40 @@ +import dataclasses +from datetime import date, datetime +from marshmallow import fields +import dateutil.parser +from typing import Any,Optional +from dataclasses_json import dataclass_json +from epilotapi import utils +from ..shared import mapentityactionconfig as shared_mapentityactionconfig +from ..shared import triggerworkflowactionconfig as shared_triggerworkflowactionconfig +from ..shared import triggerwebhookactionconfig as shared_triggerwebhookactionconfig +from ..shared import createdocumentactionconfig as shared_createdocumentactionconfig +from ..shared import sendemailactionconfig as shared_sendemailactionconfig +from ..shared import cartcheckoutactionconfig as shared_cartcheckoutactionconfig +from ..shared import automationactionconfig as shared_automationactionconfig +from ..shared import triggercondition as shared_triggercondition +from ..shared import frontendsubmittrigger as shared_frontendsubmittrigger +from ..shared import journeysubmittrigger as shared_journeysubmittrigger +from ..shared import apisubmissiontrigger as shared_apisubmissiontrigger +from ..shared import entityoperationtrigger as shared_entityoperationtrigger +from ..shared import activitytrigger as shared_activitytrigger +from ..shared import entitymanualtrigger as shared_entitymanualtrigger +from ..shared import receivedemailtrigger as shared_receivedemailtrigger + + +@dataclass_json +@dataclasses.dataclass +class AutomationFlow: + actions: list[Any] = dataclasses.field(metadata={'dataclasses_json': { 'letter_case': utils.field_name('actions') }}) + flow_name: str = dataclasses.field(metadata={'dataclasses_json': { 'letter_case': utils.field_name('flow_name') }}) + triggers: list[Any] = dataclasses.field(metadata={'dataclasses_json': { 'letter_case': utils.field_name('triggers') }}) + created_at: Optional[datetime] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('created_at'), 'encoder': utils.datetimeisoformat(True), 'decoder': dateutil.parser.isoparse, 'mm_field': fields.DateTime(format='iso') }}) + created_by: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('created_by') }}) + enabled: Optional[bool] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('enabled') }}) + entity_schema: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('entity_schema') }}) + id: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('id') }}) + last_updated_by: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('last_updated_by') }}) + runs: Optional[float] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('runs') }}) + trigger_conditions: Optional[list[shared_triggercondition.TriggerCondition]] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('trigger_conditions') }}) + updated_at: Optional[datetime] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('updated_at'), 'encoder': utils.datetimeisoformat(True), 'decoder': dateutil.parser.isoparse, 'mm_field': fields.DateTime(format='iso') }}) + diff --git a/src/epilotapi/models/shared/booleanattribute.py b/src/epilotapi/models/shared/booleanattribute.py new file mode 100755 index 000000000..46eb02b65 --- /dev/null +++ b/src/epilotapi/models/shared/booleanattribute.py @@ -0,0 +1,42 @@ +import dataclasses +from typing import Any,Optional +from enum import Enum +from dataclasses_json import dataclass_json +from epilotapi import utils + +class BooleanAttributeTypeEnum(str, Enum): + BOOLEAN = "boolean" + + +@dataclass_json +@dataclasses.dataclass +class BooleanAttribute: + r"""BooleanAttribute + Yes / No Toggle + """ + + label: str = dataclasses.field(metadata={'dataclasses_json': { 'letter_case': utils.field_name('label') }}) + name: str = dataclasses.field(metadata={'dataclasses_json': { 'letter_case': utils.field_name('name') }}) + purpose: Optional[list[str]] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('_purpose') }}) + constraints: Optional[dict[str, Any]] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('constraints') }}) + default_value: Optional[Any] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('default_value') }}) + deprecated: Optional[bool] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('deprecated') }}) + entity_builder_disable_edit: Optional[bool] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('entity_builder_disable_edit') }}) + feature_flag: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('feature_flag') }}) + group: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('group') }}) + hidden: Optional[bool] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('hidden') }}) + hide_label: Optional[bool] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('hide_label') }}) + icon: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('icon') }}) + layout: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('layout') }}) + order: Optional[int] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('order') }}) + placeholder: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('placeholder') }}) + preview_value_formatter: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('preview_value_formatter') }}) + protected: Optional[bool] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('protected') }}) + readonly: Optional[bool] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('readonly') }}) + render_condition: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('render_condition') }}) + required: Optional[bool] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('required') }}) + setting_flag: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('setting_flag') }}) + show_in_table: Optional[bool] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('show_in_table') }}) + type: Optional[BooleanAttributeTypeEnum] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('type') }}) + value_formatter: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('value_formatter') }}) + diff --git a/src/epilotapi/models/shared/cartcheckoutaction.py b/src/epilotapi/models/shared/cartcheckoutaction.py new file mode 100755 index 000000000..16e31fdfb --- /dev/null +++ b/src/epilotapi/models/shared/cartcheckoutaction.py @@ -0,0 +1,35 @@ +import dataclasses +from datetime import date, datetime +from marshmallow import fields +import dateutil.parser +from typing import Any,Optional +from enum import Enum +from dataclasses_json import dataclass_json +from epilotapi import utils +from ..shared import cartcheckoutconfig as shared_cartcheckoutconfig +from ..shared import erroroutput as shared_erroroutput +from ..shared import executionstatus_enum as shared_executionstatus_enum +from ..shared import retrystrategy_enum as shared_retrystrategy_enum + + +@dataclass_json +@dataclasses.dataclass +class CartCheckoutAction: + r"""CartCheckoutAction + Creates an order entity with prices from journey + """ + + allow_failure: Optional[bool] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('allow_failure') }}) + config: Optional[shared_cartcheckoutconfig.CartCheckoutConfig] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('config') }}) + created_automatically: Optional[bool] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('created_automatically') }}) + error_output: Optional[shared_erroroutput.ErrorOutput] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('error_output') }}) + execution_status: Optional[shared_executionstatus_enum.ExecutionStatusEnum] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('execution_status') }}) + flow_action_id: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('flow_action_id') }}) + id: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('id') }}) + name: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('name') }}) + outputs: Optional[dict[str, Any]] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('outputs') }}) + retry_strategy: Optional[shared_retrystrategy_enum.RetryStrategyEnum] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('retry_strategy') }}) + started_at: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('started_at') }}) + type: Optional[Any] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('type') }}) + updated_at: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('updated_at') }}) + diff --git a/src/epilotapi/models/shared/cartcheckoutactionconfig.py b/src/epilotapi/models/shared/cartcheckoutactionconfig.py new file mode 100755 index 000000000..eadb2a359 --- /dev/null +++ b/src/epilotapi/models/shared/cartcheckoutactionconfig.py @@ -0,0 +1,22 @@ +import dataclasses +from typing import Any,Optional +from dataclasses_json import dataclass_json +from epilotapi import utils +from ..shared import cartcheckoutconfig as shared_cartcheckoutconfig + + +@dataclass_json +@dataclasses.dataclass +class CartCheckoutActionConfig: + r"""CartCheckoutActionConfig + Creates an order entity with prices from journey + """ + + allow_failure: Optional[bool] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('allow_failure') }}) + config: Optional[shared_cartcheckoutconfig.CartCheckoutConfig] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('config') }}) + created_automatically: Optional[bool] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('created_automatically') }}) + flow_action_id: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('flow_action_id') }}) + id: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('id') }}) + name: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('name') }}) + type: Optional[Any] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('type') }}) + diff --git a/src/epilotapi/models/shared/cartcheckoutconfig.py b/src/epilotapi/models/shared/cartcheckoutconfig.py new file mode 100755 index 000000000..0a7ab743c --- /dev/null +++ b/src/epilotapi/models/shared/cartcheckoutconfig.py @@ -0,0 +1,23 @@ +import dataclasses +from typing import Any,Optional +from dataclasses_json import dataclass_json +from epilotapi import utils +from ..shared import mappingattributev2 as shared_mappingattributev2 +from ..shared import setvaluemapper as shared_setvaluemapper +from ..shared import copyvaluemapper as shared_copyvaluemapper +from ..shared import appendvaluemapper as shared_appendvaluemapper +from ..shared import mappingconfigref as shared_mappingconfigref +from ..shared import relationattribute1 as shared_relationattribute1 + + +@dataclass_json +@dataclasses.dataclass +class CartCheckoutConfig: + linkback_relation_attribute: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('linkback_relation_attribute') }}) + linkback_relation_tags: Optional[list[str]] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('linkback_relation_tags') }}) + mapping_attributes: Optional[list[Any]] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('mapping_attributes') }}) + mapping_config: Optional[shared_mappingconfigref.MappingConfigRef] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('mapping_config') }}) + relation_attributes: Optional[list[shared_relationattribute1.RelationAttribute1]] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('relation_attributes') }}) + target_unique: Optional[list[str]] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('target_unique') }}) + version: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('version') }}) + diff --git a/src/epilotapi/models/shared/classificationsupdate.py b/src/epilotapi/models/shared/classificationsupdate.py new file mode 100755 index 000000000..3dde9305a --- /dev/null +++ b/src/epilotapi/models/shared/classificationsupdate.py @@ -0,0 +1,17 @@ +import dataclasses +from datetime import date, datetime +from marshmallow import fields +import dateutil.parser +from typing import Optional +from dataclasses_json import dataclass_json +from epilotapi import utils +from ..shared import taxonomyclassification as shared_taxonomyclassification + + +@dataclass_json +@dataclasses.dataclass +class ClassificationsUpdate: + create: Optional[list[shared_taxonomyclassification.TaxonomyClassification]] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('create') }}) + delete: Optional[list[str]] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('delete') }}) + update: Optional[list[shared_taxonomyclassification.TaxonomyClassification]] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('update') }}) + diff --git a/src/epilotapi/models/shared/comparison_enum.py b/src/epilotapi/models/shared/comparison_enum.py new file mode 100755 index 000000000..b3c0c3ef9 --- /dev/null +++ b/src/epilotapi/models/shared/comparison_enum.py @@ -0,0 +1,9 @@ +import dataclasses +from enum import Enum + +class ComparisonEnum(str, Enum): + EQUALS = "equals" + ANY_OF = "any_of" + NOT_EMPTY = "not_empty" + IS_EMPTY = "is_empty" + diff --git a/src/epilotapi/models/shared/computedattribute.py b/src/epilotapi/models/shared/computedattribute.py new file mode 100755 index 000000000..f66c74b22 --- /dev/null +++ b/src/epilotapi/models/shared/computedattribute.py @@ -0,0 +1,42 @@ +import dataclasses +from typing import Any,Optional +from enum import Enum +from dataclasses_json import dataclass_json +from epilotapi import utils + +class ComputedAttributeTypeEnum(str, Enum): + COMPUTED = "computed" + + +@dataclass_json +@dataclasses.dataclass +class ComputedAttribute: + r"""ComputedAttribute + An attribute that is computed from the entity data. For more details on how to use them, check the docs [here](https://e-pilot.atlassian.net/wiki/spaces/EO/pages/5642977476/How+To+Computed+Schema+Attributes) + """ + + label: str = dataclasses.field(metadata={'dataclasses_json': { 'letter_case': utils.field_name('label') }}) + name: str = dataclasses.field(metadata={'dataclasses_json': { 'letter_case': utils.field_name('name') }}) + purpose: Optional[list[str]] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('_purpose') }}) + constraints: Optional[dict[str, Any]] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('constraints') }}) + default_value: Optional[Any] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('default_value') }}) + deprecated: Optional[bool] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('deprecated') }}) + entity_builder_disable_edit: Optional[bool] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('entity_builder_disable_edit') }}) + feature_flag: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('feature_flag') }}) + group: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('group') }}) + hidden: Optional[bool] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('hidden') }}) + hide_label: Optional[bool] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('hide_label') }}) + icon: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('icon') }}) + layout: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('layout') }}) + order: Optional[int] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('order') }}) + placeholder: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('placeholder') }}) + preview_value_formatter: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('preview_value_formatter') }}) + protected: Optional[bool] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('protected') }}) + readonly: Optional[bool] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('readonly') }}) + render_condition: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('render_condition') }}) + required: Optional[bool] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('required') }}) + setting_flag: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('setting_flag') }}) + show_in_table: Optional[bool] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('show_in_table') }}) + type: Optional[ComputedAttributeTypeEnum] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('type') }}) + value_formatter: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('value_formatter') }}) + diff --git a/src/epilotapi/models/shared/consentattribute.py b/src/epilotapi/models/shared/consentattribute.py new file mode 100755 index 000000000..c262dd37b --- /dev/null +++ b/src/epilotapi/models/shared/consentattribute.py @@ -0,0 +1,44 @@ +import dataclasses +from typing import Any,Optional +from enum import Enum +from dataclasses_json import dataclass_json +from epilotapi import utils + +class ConsentAttributeTypeEnum(str, Enum): + CONSENT = "consent" + + +@dataclass_json +@dataclasses.dataclass +class ConsentAttribute: + r"""ConsentAttribute + Consent Management + """ + + label: str = dataclasses.field(metadata={'dataclasses_json': { 'letter_case': utils.field_name('label') }}) + name: str = dataclasses.field(metadata={'dataclasses_json': { 'letter_case': utils.field_name('name') }}) + topic: str = dataclasses.field(metadata={'dataclasses_json': { 'letter_case': utils.field_name('topic') }}) + type: ConsentAttributeTypeEnum = dataclasses.field(metadata={'dataclasses_json': { 'letter_case': utils.field_name('type') }}) + purpose: Optional[list[str]] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('_purpose') }}) + constraints: Optional[dict[str, Any]] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('constraints') }}) + default_value: Optional[Any] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('default_value') }}) + deprecated: Optional[bool] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('deprecated') }}) + entity_builder_disable_edit: Optional[bool] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('entity_builder_disable_edit') }}) + feature_flag: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('feature_flag') }}) + group: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('group') }}) + hidden: Optional[bool] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('hidden') }}) + hide_label: Optional[bool] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('hide_label') }}) + icon: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('icon') }}) + identifiers: Optional[list[str]] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('identifiers') }}) + layout: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('layout') }}) + order: Optional[int] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('order') }}) + placeholder: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('placeholder') }}) + preview_value_formatter: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('preview_value_formatter') }}) + protected: Optional[bool] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('protected') }}) + readonly: Optional[bool] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('readonly') }}) + render_condition: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('render_condition') }}) + required: Optional[bool] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('required') }}) + setting_flag: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('setting_flag') }}) + show_in_table: Optional[bool] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('show_in_table') }}) + value_formatter: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('value_formatter') }}) + diff --git a/src/epilotapi/models/shared/copyvaluemapper.py b/src/epilotapi/models/shared/copyvaluemapper.py new file mode 100755 index 000000000..a31ef7cb4 --- /dev/null +++ b/src/epilotapi/models/shared/copyvaluemapper.py @@ -0,0 +1,14 @@ +import dataclasses +from enum import Enum +from dataclasses_json import dataclass_json +from epilotapi import utils +from ..shared import mappingattributemode_enum as shared_mappingattributemode_enum + + +@dataclass_json +@dataclasses.dataclass +class CopyValueMapper: + mode: shared_mappingattributemode_enum.MappingAttributeModeEnum = dataclasses.field(metadata={'dataclasses_json': { 'letter_case': utils.field_name('mode') }}) + source: str = dataclasses.field(metadata={'dataclasses_json': { 'letter_case': utils.field_name('source') }}) + target: str = dataclasses.field(metadata={'dataclasses_json': { 'letter_case': utils.field_name('target') }}) + diff --git a/src/epilotapi/models/shared/countryattribute.py b/src/epilotapi/models/shared/countryattribute.py new file mode 100755 index 000000000..e4820fed5 --- /dev/null +++ b/src/epilotapi/models/shared/countryattribute.py @@ -0,0 +1,42 @@ +import dataclasses +from typing import Any,Optional +from enum import Enum +from dataclasses_json import dataclass_json +from epilotapi import utils + +class CountryAttributeTypeEnum(str, Enum): + COUNTRY = "country" + + +@dataclass_json +@dataclasses.dataclass +class CountryAttribute: + r"""CountryAttribute + Country picker + """ + + label: str = dataclasses.field(metadata={'dataclasses_json': { 'letter_case': utils.field_name('label') }}) + name: str = dataclasses.field(metadata={'dataclasses_json': { 'letter_case': utils.field_name('name') }}) + purpose: Optional[list[str]] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('_purpose') }}) + constraints: Optional[dict[str, Any]] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('constraints') }}) + default_value: Optional[Any] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('default_value') }}) + deprecated: Optional[bool] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('deprecated') }}) + entity_builder_disable_edit: Optional[bool] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('entity_builder_disable_edit') }}) + feature_flag: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('feature_flag') }}) + group: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('group') }}) + hidden: Optional[bool] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('hidden') }}) + hide_label: Optional[bool] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('hide_label') }}) + icon: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('icon') }}) + layout: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('layout') }}) + order: Optional[int] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('order') }}) + placeholder: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('placeholder') }}) + preview_value_formatter: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('preview_value_formatter') }}) + protected: Optional[bool] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('protected') }}) + readonly: Optional[bool] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('readonly') }}) + render_condition: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('render_condition') }}) + required: Optional[bool] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('required') }}) + setting_flag: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('setting_flag') }}) + show_in_table: Optional[bool] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('show_in_table') }}) + type: Optional[CountryAttributeTypeEnum] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('type') }}) + value_formatter: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('value_formatter') }}) + diff --git a/src/epilotapi/models/shared/createdocumentaction.py b/src/epilotapi/models/shared/createdocumentaction.py new file mode 100755 index 000000000..679eb99a4 --- /dev/null +++ b/src/epilotapi/models/shared/createdocumentaction.py @@ -0,0 +1,31 @@ +import dataclasses +from datetime import date, datetime +from marshmallow import fields +import dateutil.parser +from typing import Any,Optional +from enum import Enum +from dataclasses_json import dataclass_json +from epilotapi import utils +from ..shared import createdocumentconfig as shared_createdocumentconfig +from ..shared import erroroutput as shared_erroroutput +from ..shared import executionstatus_enum as shared_executionstatus_enum +from ..shared import retrystrategy_enum as shared_retrystrategy_enum + + +@dataclass_json +@dataclasses.dataclass +class CreateDocumentAction: + allow_failure: Optional[bool] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('allow_failure') }}) + config: Optional[shared_createdocumentconfig.CreateDocumentConfig] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('config') }}) + created_automatically: Optional[bool] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('created_automatically') }}) + error_output: Optional[shared_erroroutput.ErrorOutput] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('error_output') }}) + execution_status: Optional[shared_executionstatus_enum.ExecutionStatusEnum] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('execution_status') }}) + flow_action_id: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('flow_action_id') }}) + id: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('id') }}) + name: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('name') }}) + outputs: Optional[dict[str, Any]] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('outputs') }}) + retry_strategy: Optional[shared_retrystrategy_enum.RetryStrategyEnum] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('retry_strategy') }}) + started_at: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('started_at') }}) + type: Optional[Any] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('type') }}) + updated_at: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('updated_at') }}) + diff --git a/src/epilotapi/models/shared/createdocumentactionconfig.py b/src/epilotapi/models/shared/createdocumentactionconfig.py new file mode 100755 index 000000000..4c556a59a --- /dev/null +++ b/src/epilotapi/models/shared/createdocumentactionconfig.py @@ -0,0 +1,18 @@ +import dataclasses +from typing import Any,Optional +from dataclasses_json import dataclass_json +from epilotapi import utils +from ..shared import createdocumentconfig as shared_createdocumentconfig + + +@dataclass_json +@dataclasses.dataclass +class CreateDocumentActionConfig: + allow_failure: Optional[bool] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('allow_failure') }}) + config: Optional[shared_createdocumentconfig.CreateDocumentConfig] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('config') }}) + created_automatically: Optional[bool] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('created_automatically') }}) + flow_action_id: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('flow_action_id') }}) + id: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('id') }}) + name: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('name') }}) + type: Optional[Any] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('type') }}) + diff --git a/src/epilotapi/models/shared/createdocumentconfig.py b/src/epilotapi/models/shared/createdocumentconfig.py new file mode 100755 index 000000000..ff3a86c7b --- /dev/null +++ b/src/epilotapi/models/shared/createdocumentconfig.py @@ -0,0 +1,12 @@ +import dataclasses +from typing import Optional +from dataclasses_json import dataclass_json +from epilotapi import utils + + +@dataclass_json +@dataclasses.dataclass +class CreateDocumentConfig: + filename: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('filename') }}) + template_id: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('template_id') }}) + diff --git a/src/epilotapi/models/shared/currencyattribute.py b/src/epilotapi/models/shared/currencyattribute.py new file mode 100755 index 000000000..04bdc2adb --- /dev/null +++ b/src/epilotapi/models/shared/currencyattribute.py @@ -0,0 +1,57 @@ +import dataclasses +from typing import Any,Optional +from enum import Enum +from dataclasses_json import dataclass_json +from epilotapi import utils + + +@dataclass_json +@dataclasses.dataclass +class CurrencyAttributeCurrency1: + r"""CurrencyAttributeCurrency1 + A currency configuration + """ + + code: str = dataclasses.field(metadata={'dataclasses_json': { 'letter_case': utils.field_name('code') }}) + description: str = dataclasses.field(metadata={'dataclasses_json': { 'letter_case': utils.field_name('description') }}) + symbol: str = dataclasses.field(metadata={'dataclasses_json': { 'letter_case': utils.field_name('symbol') }}) + flag: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('flag') }}) + +class CurrencyAttributeTypeEnum(str, Enum): + CURRENCY = "currency" + + +@dataclass_json +@dataclasses.dataclass +class CurrencyAttribute: + r"""CurrencyAttribute + Currency input + """ + + currency: list[Any] = dataclasses.field(metadata={'dataclasses_json': { 'letter_case': utils.field_name('currency') }}) + label: str = dataclasses.field(metadata={'dataclasses_json': { 'letter_case': utils.field_name('label') }}) + name: str = dataclasses.field(metadata={'dataclasses_json': { 'letter_case': utils.field_name('name') }}) + type: CurrencyAttributeTypeEnum = dataclasses.field(metadata={'dataclasses_json': { 'letter_case': utils.field_name('type') }}) + purpose: Optional[list[str]] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('_purpose') }}) + constraints: Optional[dict[str, Any]] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('constraints') }}) + currency_selector_only: Optional[bool] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('currency_selector_only') }}) + default_value: Optional[Any] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('default_value') }}) + deprecated: Optional[bool] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('deprecated') }}) + entity_builder_disable_edit: Optional[bool] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('entity_builder_disable_edit') }}) + feature_flag: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('feature_flag') }}) + group: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('group') }}) + hidden: Optional[bool] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('hidden') }}) + hide_label: Optional[bool] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('hide_label') }}) + icon: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('icon') }}) + layout: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('layout') }}) + order: Optional[int] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('order') }}) + placeholder: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('placeholder') }}) + preview_value_formatter: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('preview_value_formatter') }}) + protected: Optional[bool] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('protected') }}) + readonly: Optional[bool] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('readonly') }}) + render_condition: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('render_condition') }}) + required: Optional[bool] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('required') }}) + setting_flag: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('setting_flag') }}) + show_in_table: Optional[bool] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('show_in_table') }}) + value_formatter: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('value_formatter') }}) + diff --git a/src/epilotapi/models/shared/dateattribute.py b/src/epilotapi/models/shared/dateattribute.py new file mode 100755 index 000000000..f7a750ea2 --- /dev/null +++ b/src/epilotapi/models/shared/dateattribute.py @@ -0,0 +1,46 @@ +import dataclasses +from datetime import date, datetime +from marshmallow import fields +import dateutil.parser +from typing import Any,Optional +from enum import Enum +from dataclasses_json import dataclass_json +from epilotapi import utils + +class DateAttributeTypeEnum(str, Enum): + DATE = "date" + DATETIME = "datetime" + + +@dataclass_json +@dataclasses.dataclass +class DateAttribute: + r"""DateAttribute + Date or Datetime picker + """ + + label: str = dataclasses.field(metadata={'dataclasses_json': { 'letter_case': utils.field_name('label') }}) + name: str = dataclasses.field(metadata={'dataclasses_json': { 'letter_case': utils.field_name('name') }}) + purpose: Optional[list[str]] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('_purpose') }}) + constraints: Optional[dict[str, Any]] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('constraints') }}) + default_value: Optional[Any] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('default_value') }}) + deprecated: Optional[bool] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('deprecated') }}) + entity_builder_disable_edit: Optional[bool] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('entity_builder_disable_edit') }}) + feature_flag: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('feature_flag') }}) + group: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('group') }}) + hidden: Optional[bool] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('hidden') }}) + hide_label: Optional[bool] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('hide_label') }}) + icon: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('icon') }}) + layout: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('layout') }}) + order: Optional[int] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('order') }}) + placeholder: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('placeholder') }}) + preview_value_formatter: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('preview_value_formatter') }}) + protected: Optional[bool] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('protected') }}) + readonly: Optional[bool] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('readonly') }}) + render_condition: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('render_condition') }}) + required: Optional[bool] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('required') }}) + setting_flag: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('setting_flag') }}) + show_in_table: Optional[bool] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('show_in_table') }}) + type: Optional[DateAttributeTypeEnum] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('type') }}) + value_formatter: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('value_formatter') }}) + diff --git a/src/epilotapi/models/shared/entitycapability.py b/src/epilotapi/models/shared/entitycapability.py new file mode 100755 index 000000000..d9fb2c171 --- /dev/null +++ b/src/epilotapi/models/shared/entitycapability.py @@ -0,0 +1,22 @@ +import dataclasses +from typing import Any,Optional +from dataclasses_json import dataclass_json +from epilotapi import utils + + +@dataclass_json +@dataclasses.dataclass +class EntityCapability: + r"""EntityCapability + Capabilities the Entity has. Turn features on/off for entities. + """ + + name: str = dataclasses.field(metadata={'dataclasses_json': { 'letter_case': utils.field_name('name') }}) + purpose: Optional[list[str]] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('_purpose') }}) + attributes: Optional[list[Any]] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('attributes') }}) + feature_flag: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('feature_flag') }}) + legacy: Optional[bool] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('legacy') }}) + setting_flag: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('setting_flag') }}) + title: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('title') }}) + ui_hooks: Optional[list[dict[str, Any]]] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('ui_hooks') }}) + diff --git a/src/epilotapi/models/shared/entitydefaultcreate.py b/src/epilotapi/models/shared/entitydefaultcreate.py new file mode 100755 index 000000000..0a66a87b4 --- /dev/null +++ b/src/epilotapi/models/shared/entitydefaultcreate.py @@ -0,0 +1,24 @@ +import dataclasses +from typing import Optional +from enum import Enum +from dataclasses_json import dataclass_json +from epilotapi import utils + + +@dataclass_json +@dataclasses.dataclass +class EntityDefaultCreateTableMenuOptions: + icon: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('icon') }}) + label: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('label') }}) + +class EntityDefaultCreateViewTypeEnum(str, Enum): + DEFAULT = "default" + + +@dataclass_json +@dataclasses.dataclass +class EntityDefaultCreate: + search_params: Optional[dict[str, str]] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('search_params') }}) + table_menu_options: Optional[EntityDefaultCreateTableMenuOptions] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('table_menu_options') }}) + view_type: Optional[EntityDefaultCreateViewTypeEnum] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('view_type') }}) + diff --git a/src/epilotapi/models/shared/entitydefaultedit.py b/src/epilotapi/models/shared/entitydefaultedit.py new file mode 100755 index 000000000..c9ae61592 --- /dev/null +++ b/src/epilotapi/models/shared/entitydefaultedit.py @@ -0,0 +1,24 @@ +import dataclasses +from typing import Optional +from enum import Enum +from dataclasses_json import dataclass_json +from epilotapi import utils + + +@dataclass_json +@dataclasses.dataclass +class EntityDefaultEditTableMenuOptions: + icon: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('icon') }}) + label: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('label') }}) + +class EntityDefaultEditViewTypeEnum(str, Enum): + DEFAULT = "default" + + +@dataclass_json +@dataclasses.dataclass +class EntityDefaultEdit: + search_params: Optional[dict[str, str]] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('search_params') }}) + table_menu_options: Optional[EntityDefaultEditTableMenuOptions] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('table_menu_options') }}) + view_type: Optional[EntityDefaultEditViewTypeEnum] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('view_type') }}) + diff --git a/src/epilotapi/models/shared/entitydefaulttable.py b/src/epilotapi/models/shared/entitydefaulttable.py new file mode 100755 index 000000000..f33cb9582 --- /dev/null +++ b/src/epilotapi/models/shared/entitydefaulttable.py @@ -0,0 +1,41 @@ +import dataclasses +from typing import Any,Optional +from enum import Enum +from dataclasses_json import dataclass_json +from epilotapi import utils + + +@dataclass_json +@dataclasses.dataclass +class EntityDefaultTableDropdownItems: + feature_flag: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('feature_flag') }}) + legacy: Optional[bool] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('legacy') }}) + + +@dataclass_json +@dataclasses.dataclass +class EntityDefaultTableNavbarActionsOptions: + label: str = dataclasses.field(metadata={'dataclasses_json': { 'letter_case': utils.field_name('label') }}) + params: Optional[dict[str, Any]] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('params') }}) + + +@dataclass_json +@dataclasses.dataclass +class EntityDefaultTableNavbarActions: + type: str = dataclasses.field(metadata={'dataclasses_json': { 'letter_case': utils.field_name('type') }}) + options: Optional[list[EntityDefaultTableNavbarActionsOptions]] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('options') }}) + +class EntityDefaultTableViewTypeEnum(str, Enum): + DEFAULT = "default" + + +@dataclass_json +@dataclasses.dataclass +class EntityDefaultTable: + classic_view: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('classic_view') }}) + dropdown_items: Optional[list[EntityDefaultTableDropdownItems]] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('dropdown_items') }}) + enable_thumbnails: Optional[bool] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('enable_thumbnails') }}) + navbar_actions: Optional[list[EntityDefaultTableNavbarActions]] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('navbar_actions') }}) + row_actions: Optional[list[str]] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('row_actions') }}) + view_type: Optional[EntityDefaultTableViewTypeEnum] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('view_type') }}) + diff --git a/src/epilotapi/models/shared/entityimportparams.py b/src/epilotapi/models/shared/entityimportparams.py new file mode 100755 index 000000000..cb5bf15ec --- /dev/null +++ b/src/epilotapi/models/shared/entityimportparams.py @@ -0,0 +1,18 @@ +import dataclasses +from dataclasses_json import dataclass_json +from epilotapi import utils + + +@dataclass_json +@dataclasses.dataclass +class EntityImportParamsS3Reference: + bucket: str = dataclasses.field(metadata={'dataclasses_json': { 'letter_case': utils.field_name('bucket') }}) + key: str = dataclasses.field(metadata={'dataclasses_json': { 'letter_case': utils.field_name('key') }}) + + +@dataclass_json +@dataclasses.dataclass +class EntityImportParams: + s3_reference: EntityImportParamsS3Reference = dataclasses.field(metadata={'dataclasses_json': { 'letter_case': utils.field_name('S3Reference') }}) + schema: str = dataclasses.field(metadata={'dataclasses_json': { 'letter_case': utils.field_name('schema') }}) + diff --git a/src/epilotapi/models/shared/entitymanualtrigger.py b/src/epilotapi/models/shared/entitymanualtrigger.py new file mode 100755 index 000000000..5b0909ddb --- /dev/null +++ b/src/epilotapi/models/shared/entitymanualtrigger.py @@ -0,0 +1,22 @@ +import dataclasses +from typing import Optional +from enum import Enum +from dataclasses_json import dataclass_json +from epilotapi import utils + + +@dataclass_json +@dataclasses.dataclass +class EntityManualTriggerConfiguration: + schema: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('schema') }}) + +class EntityManualTriggerTypeEnum(str, Enum): + ENTITY_MANUAL = "entity_manual" + + +@dataclass_json +@dataclasses.dataclass +class EntityManualTrigger: + configuration: EntityManualTriggerConfiguration = dataclasses.field(metadata={'dataclasses_json': { 'letter_case': utils.field_name('configuration') }}) + type: EntityManualTriggerTypeEnum = dataclasses.field(metadata={'dataclasses_json': { 'letter_case': utils.field_name('type') }}) + diff --git a/src/epilotapi/models/shared/entityoperation.py b/src/epilotapi/models/shared/entityoperation.py new file mode 100755 index 000000000..b41795f6b --- /dev/null +++ b/src/epilotapi/models/shared/entityoperation.py @@ -0,0 +1,41 @@ +import dataclasses +from datetime import date, datetime +from marshmallow import fields +import dateutil.parser +from typing import Any,Optional +from enum import Enum +from dataclasses_json import dataclass_json +from epilotapi import utils + + +@dataclass_json +@dataclasses.dataclass +class EntityOperationDiff: + added: Optional[dict[str, Any]] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('added') }}) + deleted: Optional[dict[str, Any]] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('deleted') }}) + updated: Optional[dict[str, Any]] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('updated') }}) + +class EntityOperationOperationEnum(str, Enum): + CREATE_ENTITY = "createEntity" + UPDATE_ENTITY = "updateEntity" + DELETE_ENTITY = "deleteEntity" + + +@dataclass_json +@dataclasses.dataclass +class EntityOperationParams: + id: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('id') }}) + slug: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('slug') }}) + + +@dataclass_json +@dataclasses.dataclass +class EntityOperation: + entity: str = dataclasses.field(metadata={'dataclasses_json': { 'letter_case': utils.field_name('entity') }}) + operation: EntityOperationOperationEnum = dataclasses.field(metadata={'dataclasses_json': { 'letter_case': utils.field_name('operation') }}) + org: str = dataclasses.field(metadata={'dataclasses_json': { 'letter_case': utils.field_name('org') }}) + activity_id: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('activity_id') }}) + diff: Optional[EntityOperationDiff] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('diff') }}) + params: Optional[EntityOperationParams] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('params') }}) + payload: Optional[dict[str, Any]] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('payload') }}) + diff --git a/src/epilotapi/models/shared/entityoperationtrigger.py b/src/epilotapi/models/shared/entityoperationtrigger.py new file mode 100755 index 000000000..4e5d993af --- /dev/null +++ b/src/epilotapi/models/shared/entityoperationtrigger.py @@ -0,0 +1,33 @@ +import dataclasses +from datetime import date, datetime +from marshmallow import fields +import dateutil.parser +from typing import Optional +from enum import Enum +from dataclasses_json import dataclass_json +from epilotapi import utils + +class EntityOperationTriggerConfigurationOperationsEnum(str, Enum): + CREATE_ENTITY = "createEntity" + UPDATE_ENTITY = "updateEntity" + DELETE_ENTITY = "deleteEntity" + + +@dataclass_json +@dataclasses.dataclass +class EntityOperationTriggerConfiguration: + operations: list[EntityOperationTriggerConfigurationOperationsEnum] = dataclasses.field(metadata={'dataclasses_json': { 'letter_case': utils.field_name('operations') }}) + schema: str = dataclasses.field(metadata={'dataclasses_json': { 'letter_case': utils.field_name('schema') }}) + exclude_activities: Optional[list[str]] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('exclude_activities') }}) + include_activities: Optional[list[str]] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('include_activities') }}) + +class EntityOperationTriggerTypeEnum(str, Enum): + ENTITY_OPERATION = "entity_operation" + + +@dataclass_json +@dataclasses.dataclass +class EntityOperationTrigger: + configuration: EntityOperationTriggerConfiguration = dataclasses.field(metadata={'dataclasses_json': { 'letter_case': utils.field_name('configuration') }}) + type: EntityOperationTriggerTypeEnum = dataclasses.field(metadata={'dataclasses_json': { 'letter_case': utils.field_name('type') }}) + diff --git a/src/epilotapi/models/shared/entityparcelview.py b/src/epilotapi/models/shared/entityparcelview.py new file mode 100755 index 000000000..9d1acd62e --- /dev/null +++ b/src/epilotapi/models/shared/entityparcelview.py @@ -0,0 +1,16 @@ +import dataclasses +from typing import Optional +from enum import Enum +from dataclasses_json import dataclass_json +from epilotapi import utils + +class EntityParcelViewViewTypeEnum(str, Enum): + PARCEL = "parcel" + + +@dataclass_json +@dataclasses.dataclass +class EntityParcelView: + import_: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('import') }}) + view_type: Optional[EntityParcelViewViewTypeEnum] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('view_type') }}) + diff --git a/src/epilotapi/models/shared/entityschema.py b/src/epilotapi/models/shared/entityschema.py new file mode 100755 index 000000000..a63e224b3 --- /dev/null +++ b/src/epilotapi/models/shared/entityschema.py @@ -0,0 +1,112 @@ +import dataclasses +from typing import Any,Optional +from dataclasses_json import dataclass_json +from epilotapi import utils +from ..shared import summaryattribute as shared_summaryattribute +from ..shared import entitydefaultcreate as shared_entitydefaultcreate +from ..shared import entitydefaultedit as shared_entitydefaultedit +from ..shared import entitydefaulttable as shared_entitydefaulttable +from ..shared import redirectentityview as shared_redirectentityview +from ..shared import entityparcelview as shared_entityparcelview +from ..shared import entityviewdisabled as shared_entityviewdisabled +from ..shared import textattribute as shared_textattribute +from ..shared import linkattribute as shared_linkattribute +from ..shared import dateattribute as shared_dateattribute +from ..shared import countryattribute as shared_countryattribute +from ..shared import booleanattribute as shared_booleanattribute +from ..shared import selectattribute as shared_selectattribute +from ..shared import multiselectattribute as shared_multiselectattribute +from ..shared import statusattribute as shared_statusattribute +from ..shared import sequenceattribute as shared_sequenceattribute +from ..shared import relationattribute as shared_relationattribute +from ..shared import userrelationattribute as shared_userrelationattribute +from ..shared import addressrelationattribute as shared_addressrelationattribute +from ..shared import paymentmethodrelationattribute as shared_paymentmethodrelationattribute +from ..shared import currencyattribute as shared_currencyattribute +from ..shared import repeatableattribute as shared_repeatableattribute +from ..shared import tagsattribute as shared_tagsattribute +from ..shared import numberattribute as shared_numberattribute +from ..shared import consentattribute as shared_consentattribute +from ..shared import internalattribute as shared_internalattribute +from ..shared import orderedlistattribute as shared_orderedlistattribute +from ..shared import fileattribute as shared_fileattribute +from ..shared import computedattribute as shared_computedattribute +from ..shared import partnerstatusattribute as shared_partnerstatusattribute +from ..shared import invitationemailattribute as shared_invitationemailattribute +from ..shared import automationattribute as shared_automationattribute +from ..shared import internaluserattribute as shared_internaluserattribute +from ..shared import purposeattribute as shared_purposeattribute +from ..shared import entitycapability as shared_entitycapability +from ..shared import searchmappings as shared_searchmappings + + +@dataclass_json +@dataclasses.dataclass +class EntitySchemaGroupSettingsInfoTooltipTitle: + default: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('default') }}) + key: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('key') }}) + + +@dataclass_json +@dataclasses.dataclass +class EntitySchemaGroupSettings: + id: str = dataclasses.field(metadata={'dataclasses_json': { 'letter_case': utils.field_name('id') }}) + label: str = dataclasses.field(metadata={'dataclasses_json': { 'letter_case': utils.field_name('label') }}) + purpose: Optional[list[str]] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('_purpose') }}) + expanded: Optional[bool] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('expanded') }}) + feature_flag: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('feature_flag') }}) + info_tooltip_title: Optional[EntitySchemaGroupSettingsInfoTooltipTitle] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('info_tooltip_title') }}) + order: Optional[int] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('order') }}) + render_condition: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('render_condition') }}) + setting_flag: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('setting_flag') }}) + + +@dataclass_json +@dataclasses.dataclass +class EntitySchemaUIConfigListItem: + summary_attributes: Optional[list[Any]] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('summary_attributes') }}) + + +@dataclass_json +@dataclasses.dataclass +class EntitySchemaUIConfigSharing: + show_sharing_button: Optional[bool] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('show_sharing_button') }}) + + +@dataclass_json +@dataclasses.dataclass +class EntitySchemaUIConfig: + create_view: Optional[Any] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('create_view') }}) + edit_view: Optional[Any] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('edit_view') }}) + list_item: Optional[EntitySchemaUIConfigListItem] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('list_item') }}) + sharing: Optional[EntitySchemaUIConfigSharing] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('sharing') }}) + single_view: Optional[Any] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('single_view') }}) + table_view: Optional[Any] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('table_view') }}) + + +@dataclass_json +@dataclasses.dataclass +class EntitySchema: + r"""EntitySchema + The \"type\" of an Entity. Describes the shape. Includes Entity Attributes, Relations and Capabilities. + """ + + name: str = dataclasses.field(metadata={'dataclasses_json': { 'letter_case': utils.field_name('name') }}) + plural: str = dataclasses.field(metadata={'dataclasses_json': { 'letter_case': utils.field_name('plural') }}) + slug: str = dataclasses.field(metadata={'dataclasses_json': { 'letter_case': utils.field_name('slug') }}) + attributes: Optional[list[Any]] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('attributes') }}) + blueprint: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('blueprint') }}) + capabilities: Optional[list[shared_entitycapability.EntityCapability]] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('capabilities') }}) + dialog_config: Optional[dict[str, Any]] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('dialog_config') }}) + draft: Optional[bool] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('draft') }}) + enable_setting: Optional[list[str]] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('enable_setting') }}) + explicit_search_mappings: Optional[dict[str, shared_searchmappings.SearchMappings]] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('explicit_search_mappings') }}) + feature_flag: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('feature_flag') }}) + group_settings: Optional[list[EntitySchemaGroupSettings]] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('group_settings') }}) + icon: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('icon') }}) + layout_settings: Optional[dict[str, Any]] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('layout_settings') }}) + published: Optional[bool] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('published') }}) + title_template: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('title_template') }}) + ui_config: Optional[EntitySchemaUIConfig] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('ui_config') }}) + version: Optional[int] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('version') }}) + diff --git a/src/epilotapi/models/shared/entityschemaitem.py b/src/epilotapi/models/shared/entityschemaitem.py new file mode 100755 index 000000000..8126598b3 --- /dev/null +++ b/src/epilotapi/models/shared/entityschemaitem.py @@ -0,0 +1,127 @@ +import dataclasses +from datetime import date, datetime +from marshmallow import fields +import dateutil.parser +from typing import Any,Optional +from dataclasses_json import dataclass_json +from epilotapi import utils +from ..shared import summaryattribute as shared_summaryattribute +from ..shared import entitydefaultcreate as shared_entitydefaultcreate +from ..shared import entitydefaultedit as shared_entitydefaultedit +from ..shared import entitydefaulttable as shared_entitydefaulttable +from ..shared import redirectentityview as shared_redirectentityview +from ..shared import entityparcelview as shared_entityparcelview +from ..shared import entityviewdisabled as shared_entityviewdisabled +from ..shared import textattribute as shared_textattribute +from ..shared import linkattribute as shared_linkattribute +from ..shared import dateattribute as shared_dateattribute +from ..shared import countryattribute as shared_countryattribute +from ..shared import booleanattribute as shared_booleanattribute +from ..shared import selectattribute as shared_selectattribute +from ..shared import multiselectattribute as shared_multiselectattribute +from ..shared import statusattribute as shared_statusattribute +from ..shared import sequenceattribute as shared_sequenceattribute +from ..shared import relationattribute as shared_relationattribute +from ..shared import userrelationattribute as shared_userrelationattribute +from ..shared import addressrelationattribute as shared_addressrelationattribute +from ..shared import paymentmethodrelationattribute as shared_paymentmethodrelationattribute +from ..shared import currencyattribute as shared_currencyattribute +from ..shared import repeatableattribute as shared_repeatableattribute +from ..shared import tagsattribute as shared_tagsattribute +from ..shared import numberattribute as shared_numberattribute +from ..shared import consentattribute as shared_consentattribute +from ..shared import internalattribute as shared_internalattribute +from ..shared import orderedlistattribute as shared_orderedlistattribute +from ..shared import fileattribute as shared_fileattribute +from ..shared import computedattribute as shared_computedattribute +from ..shared import partnerstatusattribute as shared_partnerstatusattribute +from ..shared import invitationemailattribute as shared_invitationemailattribute +from ..shared import automationattribute as shared_automationattribute +from ..shared import internaluserattribute as shared_internaluserattribute +from ..shared import purposeattribute as shared_purposeattribute +from ..shared import entitycapability as shared_entitycapability +from ..shared import searchmappings as shared_searchmappings + + +@dataclass_json +@dataclasses.dataclass +class EntitySchemaItemGroupSettingsInfoTooltipTitle: + default: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('default') }}) + key: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('key') }}) + + +@dataclass_json +@dataclasses.dataclass +class EntitySchemaItemGroupSettings: + id: str = dataclasses.field(metadata={'dataclasses_json': { 'letter_case': utils.field_name('id') }}) + label: str = dataclasses.field(metadata={'dataclasses_json': { 'letter_case': utils.field_name('label') }}) + purpose: Optional[list[str]] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('_purpose') }}) + expanded: Optional[bool] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('expanded') }}) + feature_flag: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('feature_flag') }}) + info_tooltip_title: Optional[EntitySchemaItemGroupSettingsInfoTooltipTitle] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('info_tooltip_title') }}) + order: Optional[int] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('order') }}) + render_condition: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('render_condition') }}) + setting_flag: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('setting_flag') }}) + + +@dataclass_json +@dataclasses.dataclass +class EntitySchemaItemSource: + id: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('id') }}) + type: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('type') }}) + + +@dataclass_json +@dataclasses.dataclass +class EntitySchemaItemUIConfigListItem: + summary_attributes: Optional[list[Any]] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('summary_attributes') }}) + + +@dataclass_json +@dataclasses.dataclass +class EntitySchemaItemUIConfigSharing: + show_sharing_button: Optional[bool] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('show_sharing_button') }}) + + +@dataclass_json +@dataclasses.dataclass +class EntitySchemaItemUIConfig: + create_view: Optional[Any] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('create_view') }}) + edit_view: Optional[Any] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('edit_view') }}) + list_item: Optional[EntitySchemaItemUIConfigListItem] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('list_item') }}) + sharing: Optional[EntitySchemaItemUIConfigSharing] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('sharing') }}) + single_view: Optional[Any] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('single_view') }}) + table_view: Optional[Any] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('table_view') }}) + + +@dataclass_json +@dataclasses.dataclass +class EntitySchemaItem: + r"""EntitySchemaItem + The \"type\" of an Entity. Describes the shape. Includes Entity Attributes, Relations and Capabilities. + """ + + name: str = dataclasses.field(metadata={'dataclasses_json': { 'letter_case': utils.field_name('name') }}) + plural: str = dataclasses.field(metadata={'dataclasses_json': { 'letter_case': utils.field_name('plural') }}) + slug: str = dataclasses.field(metadata={'dataclasses_json': { 'letter_case': utils.field_name('slug') }}) + attributes: Optional[list[Any]] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('attributes') }}) + blueprint: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('blueprint') }}) + capabilities: Optional[list[shared_entitycapability.EntityCapability]] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('capabilities') }}) + comment: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('comment') }}) + created_at: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('created_at') }}) + dialog_config: Optional[dict[str, Any]] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('dialog_config') }}) + draft: Optional[bool] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('draft') }}) + enable_setting: Optional[list[str]] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('enable_setting') }}) + explicit_search_mappings: Optional[dict[str, shared_searchmappings.SearchMappings]] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('explicit_search_mappings') }}) + feature_flag: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('feature_flag') }}) + group_settings: Optional[list[EntitySchemaItemGroupSettings]] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('group_settings') }}) + icon: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('icon') }}) + id: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('id') }}) + layout_settings: Optional[dict[str, Any]] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('layout_settings') }}) + published: Optional[bool] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('published') }}) + source: Optional[EntitySchemaItemSource] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('source') }}) + title_template: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('title_template') }}) + ui_config: Optional[EntitySchemaItemUIConfig] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('ui_config') }}) + updated_at: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('updated_at') }}) + version: Optional[int] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('version') }}) + diff --git a/src/epilotapi/models/shared/entitysearchparams.py b/src/epilotapi/models/shared/entitysearchparams.py new file mode 100755 index 000000000..bb4ada2b1 --- /dev/null +++ b/src/epilotapi/models/shared/entitysearchparams.py @@ -0,0 +1,17 @@ +import dataclasses +from typing import Optional +from dataclasses_json import dataclass_json +from epilotapi import utils + + +@dataclass_json +@dataclasses.dataclass +class EntitySearchParams: + q: str = dataclasses.field(metadata={'dataclasses_json': { 'letter_case': utils.field_name('q') }}) + fields: Optional[list[str]] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('fields') }}) + from_: Optional[int] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('from') }}) + hydrate: Optional[bool] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('hydrate') }}) + include_scores: Optional[bool] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('include_scores') }}) + size: Optional[int] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('size') }}) + sort: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('sort') }}) + diff --git a/src/epilotapi/models/shared/entitysearchresults.py b/src/epilotapi/models/shared/entitysearchresults.py new file mode 100755 index 000000000..3c1ccecc6 --- /dev/null +++ b/src/epilotapi/models/shared/entitysearchresults.py @@ -0,0 +1,12 @@ +import dataclasses +from typing import Any,Optional +from dataclasses_json import dataclass_json +from epilotapi import utils + + +@dataclass_json +@dataclasses.dataclass +class EntitySearchResults: + hits: Optional[float] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('hits') }}) + results: Optional[list[dict[str, Any]]] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('results') }}) + diff --git a/src/epilotapi/models/shared/entityviewdisabled.py b/src/epilotapi/models/shared/entityviewdisabled.py new file mode 100755 index 000000000..eec76bc4b --- /dev/null +++ b/src/epilotapi/models/shared/entityviewdisabled.py @@ -0,0 +1,15 @@ +import dataclasses +from typing import Optional +from enum import Enum +from dataclasses_json import dataclass_json +from epilotapi import utils + +class EntityViewDisabledViewTypeEnum(str, Enum): + DISABLED = "disabled" + + +@dataclass_json +@dataclasses.dataclass +class EntityViewDisabled: + view_type: Optional[EntityViewDisabledViewTypeEnum] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('view_type') }}) + diff --git a/src/epilotapi/models/shared/errorcode_enum.py b/src/epilotapi/models/shared/errorcode_enum.py new file mode 100755 index 000000000..92e5f3e5b --- /dev/null +++ b/src/epilotapi/models/shared/errorcode_enum.py @@ -0,0 +1,12 @@ +import dataclasses +from enum import Enum + +class ErrorCodeEnum(str, Enum): + MAPPING_ERROR = "MAPPING_ERROR" + REFRESH_RELATIONS_ERROR = "REFRESH_RELATIONS_ERROR" + DUPLICATE_ENTITY_ERROR = "DUPLICATE_ENTITY_ERROR" + TRIGGER_WORKFLOW_ERROR = "TRIGGER_WORKFLOW_ERROR" + TIMEOUT_ERROR = "TIMEOUT_ERROR" + BAD_CONFIG = "BAD_CONFIG" + INTERNAL_ERROR = "INTERNAL_ERROR" + diff --git a/src/epilotapi/models/shared/erroroutput.py b/src/epilotapi/models/shared/erroroutput.py new file mode 100755 index 000000000..28539e969 --- /dev/null +++ b/src/epilotapi/models/shared/erroroutput.py @@ -0,0 +1,13 @@ +import dataclasses +from enum import Enum +from dataclasses_json import dataclass_json +from epilotapi import utils +from ..shared import errorcode_enum as shared_errorcode_enum + + +@dataclass_json +@dataclasses.dataclass +class ErrorOutput: + error_code: shared_errorcode_enum.ErrorCodeEnum = dataclasses.field(metadata={'dataclasses_json': { 'letter_case': utils.field_name('error_code') }}) + error_reason: str = dataclasses.field(metadata={'dataclasses_json': { 'letter_case': utils.field_name('error_reason') }}) + diff --git a/src/epilotapi/models/shared/executionstatus_enum.py b/src/epilotapi/models/shared/executionstatus_enum.py new file mode 100755 index 000000000..e64edbd88 --- /dev/null +++ b/src/epilotapi/models/shared/executionstatus_enum.py @@ -0,0 +1,10 @@ +import dataclasses +from enum import Enum + +class ExecutionStatusEnum(str, Enum): + PENDING = "pending" + IN_PROGRESS = "in_progress" + SUCCESS = "success" + FAILED = "failed" + CANCELLED = "cancelled" + diff --git a/src/epilotapi/models/shared/fileattribute.py b/src/epilotapi/models/shared/fileattribute.py new file mode 100755 index 000000000..16b5d68cc --- /dev/null +++ b/src/epilotapi/models/shared/fileattribute.py @@ -0,0 +1,52 @@ +import dataclasses +from typing import Any,Optional +from enum import Enum +from dataclasses_json import dataclass_json +from epilotapi import utils + +class FileAttributeDefaultAccessControlEnum(str, Enum): + PUBLIC_READ = "public-read" + PRIVATE = "private" + +class FileAttributeTypeEnum(str, Enum): + IMAGE = "image" + FILE = "file" + + +@dataclass_json +@dataclasses.dataclass +class FileAttribute: + r"""FileAttribute + File or Image Attachment + """ + + label: str = dataclasses.field(metadata={'dataclasses_json': { 'letter_case': utils.field_name('label') }}) + name: str = dataclasses.field(metadata={'dataclasses_json': { 'letter_case': utils.field_name('name') }}) + type: FileAttributeTypeEnum = dataclasses.field(metadata={'dataclasses_json': { 'letter_case': utils.field_name('type') }}) + purpose: Optional[list[str]] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('_purpose') }}) + allowed_extensions: Optional[list[str]] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('allowed_extensions') }}) + constraints: Optional[dict[str, Any]] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('constraints') }}) + default_access_control: Optional[FileAttributeDefaultAccessControlEnum] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('default_access_control') }}) + default_value: Optional[Any] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('default_value') }}) + deprecated: Optional[bool] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('deprecated') }}) + display_images_landscaped: Optional[bool] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('display_images_landscaped') }}) + enable_description: Optional[bool] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('enable_description') }}) + entity_builder_disable_edit: Optional[bool] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('entity_builder_disable_edit') }}) + feature_flag: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('feature_flag') }}) + group: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('group') }}) + hidden: Optional[bool] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('hidden') }}) + hide_label: Optional[bool] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('hide_label') }}) + icon: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('icon') }}) + layout: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('layout') }}) + multiple: Optional[bool] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('multiple') }}) + order: Optional[int] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('order') }}) + placeholder: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('placeholder') }}) + preview_value_formatter: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('preview_value_formatter') }}) + protected: Optional[bool] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('protected') }}) + readonly: Optional[bool] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('readonly') }}) + render_condition: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('render_condition') }}) + required: Optional[bool] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('required') }}) + setting_flag: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('setting_flag') }}) + show_in_table: Optional[bool] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('show_in_table') }}) + value_formatter: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('value_formatter') }}) + diff --git a/src/epilotapi/models/shared/frontendsubmittrigger.py b/src/epilotapi/models/shared/frontendsubmittrigger.py new file mode 100755 index 000000000..b1db38fb7 --- /dev/null +++ b/src/epilotapi/models/shared/frontendsubmittrigger.py @@ -0,0 +1,22 @@ +import dataclasses +from typing import Optional +from enum import Enum +from dataclasses_json import dataclass_json +from epilotapi import utils + + +@dataclass_json +@dataclasses.dataclass +class FrontendSubmitTriggerConfiguration: + source_id: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('source_id') }}) + +class FrontendSubmitTriggerTypeEnum(str, Enum): + FRONTEND_SUBMISSION = "frontend_submission" + + +@dataclass_json +@dataclasses.dataclass +class FrontendSubmitTrigger: + configuration: FrontendSubmitTriggerConfiguration = dataclasses.field(metadata={'dataclasses_json': { 'letter_case': utils.field_name('configuration') }}) + type: FrontendSubmitTriggerTypeEnum = dataclasses.field(metadata={'dataclasses_json': { 'letter_case': utils.field_name('type') }}) + diff --git a/src/epilotapi/models/shared/getexecutionsresp.py b/src/epilotapi/models/shared/getexecutionsresp.py new file mode 100755 index 000000000..050f1155e --- /dev/null +++ b/src/epilotapi/models/shared/getexecutionsresp.py @@ -0,0 +1,12 @@ +import dataclasses +from dataclasses_json import dataclass_json +from epilotapi import utils +from ..shared import automationexecution as shared_automationexecution + + +@dataclass_json +@dataclasses.dataclass +class GetExecutionsResp: + results: list[shared_automationexecution.AutomationExecution] = dataclasses.field(metadata={'dataclasses_json': { 'letter_case': utils.field_name('results') }}) + total: float = dataclasses.field(metadata={'dataclasses_json': { 'letter_case': utils.field_name('total') }}) + diff --git a/src/epilotapi/models/shared/internalattribute.py b/src/epilotapi/models/shared/internalattribute.py new file mode 100755 index 000000000..12e0041f6 --- /dev/null +++ b/src/epilotapi/models/shared/internalattribute.py @@ -0,0 +1,42 @@ +import dataclasses +from typing import Any,Optional +from enum import Enum +from dataclasses_json import dataclass_json +from epilotapi import utils + +class InternalAttributeTypeEnum(str, Enum): + INTERNAL = "internal" + + +@dataclass_json +@dataclasses.dataclass +class InternalAttribute: + r"""InternalAttribute + No UI representation + """ + + label: str = dataclasses.field(metadata={'dataclasses_json': { 'letter_case': utils.field_name('label') }}) + name: str = dataclasses.field(metadata={'dataclasses_json': { 'letter_case': utils.field_name('name') }}) + purpose: Optional[list[str]] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('_purpose') }}) + constraints: Optional[dict[str, Any]] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('constraints') }}) + default_value: Optional[Any] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('default_value') }}) + deprecated: Optional[bool] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('deprecated') }}) + entity_builder_disable_edit: Optional[bool] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('entity_builder_disable_edit') }}) + feature_flag: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('feature_flag') }}) + group: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('group') }}) + hidden: Optional[bool] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('hidden') }}) + hide_label: Optional[bool] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('hide_label') }}) + icon: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('icon') }}) + layout: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('layout') }}) + order: Optional[int] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('order') }}) + placeholder: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('placeholder') }}) + preview_value_formatter: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('preview_value_formatter') }}) + protected: Optional[bool] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('protected') }}) + readonly: Optional[bool] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('readonly') }}) + render_condition: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('render_condition') }}) + required: Optional[bool] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('required') }}) + setting_flag: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('setting_flag') }}) + show_in_table: Optional[bool] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('show_in_table') }}) + type: Optional[InternalAttributeTypeEnum] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('type') }}) + value_formatter: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('value_formatter') }}) + diff --git a/src/epilotapi/models/shared/internaluserattribute.py b/src/epilotapi/models/shared/internaluserattribute.py new file mode 100755 index 000000000..ebf4e7eaf --- /dev/null +++ b/src/epilotapi/models/shared/internaluserattribute.py @@ -0,0 +1,42 @@ +import dataclasses +from typing import Any,Optional +from enum import Enum +from dataclasses_json import dataclass_json +from epilotapi import utils + +class InternalUserAttributeTypeEnum(str, Enum): + INTERNAL_USER = "internal_user" + + +@dataclass_json +@dataclasses.dataclass +class InternalUserAttribute: + r"""InternalUserAttribute + Epilot internal user info + """ + + label: str = dataclasses.field(metadata={'dataclasses_json': { 'letter_case': utils.field_name('label') }}) + name: str = dataclasses.field(metadata={'dataclasses_json': { 'letter_case': utils.field_name('name') }}) + purpose: Optional[list[str]] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('_purpose') }}) + constraints: Optional[dict[str, Any]] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('constraints') }}) + default_value: Optional[Any] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('default_value') }}) + deprecated: Optional[bool] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('deprecated') }}) + entity_builder_disable_edit: Optional[bool] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('entity_builder_disable_edit') }}) + feature_flag: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('feature_flag') }}) + group: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('group') }}) + hidden: Optional[bool] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('hidden') }}) + hide_label: Optional[bool] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('hide_label') }}) + icon: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('icon') }}) + layout: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('layout') }}) + order: Optional[int] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('order') }}) + placeholder: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('placeholder') }}) + preview_value_formatter: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('preview_value_formatter') }}) + protected: Optional[bool] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('protected') }}) + readonly: Optional[bool] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('readonly') }}) + render_condition: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('render_condition') }}) + required: Optional[bool] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('required') }}) + setting_flag: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('setting_flag') }}) + show_in_table: Optional[bool] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('show_in_table') }}) + type: Optional[InternalUserAttributeTypeEnum] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('type') }}) + value_formatter: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('value_formatter') }}) + diff --git a/src/epilotapi/models/shared/invitationemailattribute.py b/src/epilotapi/models/shared/invitationemailattribute.py new file mode 100755 index 000000000..68c0fe195 --- /dev/null +++ b/src/epilotapi/models/shared/invitationemailattribute.py @@ -0,0 +1,42 @@ +import dataclasses +from typing import Any,Optional +from enum import Enum +from dataclasses_json import dataclass_json +from epilotapi import utils + +class InvitationEmailAttributeTypeEnum(str, Enum): + INVITATION_EMAIL = "invitation_email" + + +@dataclass_json +@dataclasses.dataclass +class InvitationEmailAttribute: + r"""InvitationEmailAttribute + Email address for send invitation + """ + + label: str = dataclasses.field(metadata={'dataclasses_json': { 'letter_case': utils.field_name('label') }}) + name: str = dataclasses.field(metadata={'dataclasses_json': { 'letter_case': utils.field_name('name') }}) + purpose: Optional[list[str]] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('_purpose') }}) + constraints: Optional[dict[str, Any]] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('constraints') }}) + default_value: Optional[Any] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('default_value') }}) + deprecated: Optional[bool] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('deprecated') }}) + entity_builder_disable_edit: Optional[bool] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('entity_builder_disable_edit') }}) + feature_flag: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('feature_flag') }}) + group: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('group') }}) + hidden: Optional[bool] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('hidden') }}) + hide_label: Optional[bool] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('hide_label') }}) + icon: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('icon') }}) + layout: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('layout') }}) + order: Optional[int] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('order') }}) + placeholder: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('placeholder') }}) + preview_value_formatter: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('preview_value_formatter') }}) + protected: Optional[bool] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('protected') }}) + readonly: Optional[bool] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('readonly') }}) + render_condition: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('render_condition') }}) + required: Optional[bool] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('required') }}) + setting_flag: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('setting_flag') }}) + show_in_table: Optional[bool] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('show_in_table') }}) + type: Optional[InvitationEmailAttributeTypeEnum] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('type') }}) + value_formatter: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('value_formatter') }}) + diff --git a/src/epilotapi/models/shared/journeysubmittrigger.py b/src/epilotapi/models/shared/journeysubmittrigger.py new file mode 100755 index 000000000..181b6de3d --- /dev/null +++ b/src/epilotapi/models/shared/journeysubmittrigger.py @@ -0,0 +1,21 @@ +import dataclasses +from enum import Enum +from dataclasses_json import dataclass_json +from epilotapi import utils + + +@dataclass_json +@dataclasses.dataclass +class JourneySubmitTriggerConfiguration: + source_id: str = dataclasses.field(metadata={'dataclasses_json': { 'letter_case': utils.field_name('source_id') }}) + +class JourneySubmitTriggerTypeEnum(str, Enum): + JOURNEY_SUBMISSION = "journey_submission" + + +@dataclass_json +@dataclasses.dataclass +class JourneySubmitTrigger: + configuration: JourneySubmitTriggerConfiguration = dataclasses.field(metadata={'dataclasses_json': { 'letter_case': utils.field_name('configuration') }}) + type: JourneySubmitTriggerTypeEnum = dataclasses.field(metadata={'dataclasses_json': { 'letter_case': utils.field_name('type') }}) + diff --git a/src/epilotapi/models/shared/linkattribute.py b/src/epilotapi/models/shared/linkattribute.py new file mode 100755 index 000000000..6b91318fe --- /dev/null +++ b/src/epilotapi/models/shared/linkattribute.py @@ -0,0 +1,42 @@ +import dataclasses +from typing import Any,Optional +from enum import Enum +from dataclasses_json import dataclass_json +from epilotapi import utils + +class LinkAttributeTypeEnum(str, Enum): + LINK = "link" + + +@dataclass_json +@dataclasses.dataclass +class LinkAttribute: + r"""LinkAttribute + Link with title and href + """ + + label: str = dataclasses.field(metadata={'dataclasses_json': { 'letter_case': utils.field_name('label') }}) + name: str = dataclasses.field(metadata={'dataclasses_json': { 'letter_case': utils.field_name('name') }}) + purpose: Optional[list[str]] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('_purpose') }}) + constraints: Optional[dict[str, Any]] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('constraints') }}) + default_value: Optional[Any] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('default_value') }}) + deprecated: Optional[bool] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('deprecated') }}) + entity_builder_disable_edit: Optional[bool] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('entity_builder_disable_edit') }}) + feature_flag: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('feature_flag') }}) + group: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('group') }}) + hidden: Optional[bool] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('hidden') }}) + hide_label: Optional[bool] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('hide_label') }}) + icon: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('icon') }}) + layout: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('layout') }}) + order: Optional[int] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('order') }}) + placeholder: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('placeholder') }}) + preview_value_formatter: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('preview_value_formatter') }}) + protected: Optional[bool] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('protected') }}) + readonly: Optional[bool] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('readonly') }}) + render_condition: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('render_condition') }}) + required: Optional[bool] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('required') }}) + setting_flag: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('setting_flag') }}) + show_in_table: Optional[bool] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('show_in_table') }}) + type: Optional[LinkAttributeTypeEnum] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('type') }}) + value_formatter: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('value_formatter') }}) + diff --git a/src/epilotapi/models/shared/mapentityaction.py b/src/epilotapi/models/shared/mapentityaction.py new file mode 100755 index 000000000..4418a36ae --- /dev/null +++ b/src/epilotapi/models/shared/mapentityaction.py @@ -0,0 +1,31 @@ +import dataclasses +from datetime import date, datetime +from marshmallow import fields +import dateutil.parser +from typing import Any,Optional +from enum import Enum +from dataclasses_json import dataclass_json +from epilotapi import utils +from ..shared import mapentityconfig as shared_mapentityconfig +from ..shared import erroroutput as shared_erroroutput +from ..shared import executionstatus_enum as shared_executionstatus_enum +from ..shared import retrystrategy_enum as shared_retrystrategy_enum + + +@dataclass_json +@dataclasses.dataclass +class MapEntityAction: + allow_failure: Optional[bool] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('allow_failure') }}) + config: Optional[shared_mapentityconfig.MapEntityConfig] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('config') }}) + created_automatically: Optional[bool] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('created_automatically') }}) + error_output: Optional[shared_erroroutput.ErrorOutput] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('error_output') }}) + execution_status: Optional[shared_executionstatus_enum.ExecutionStatusEnum] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('execution_status') }}) + flow_action_id: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('flow_action_id') }}) + id: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('id') }}) + name: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('name') }}) + outputs: Optional[dict[str, Any]] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('outputs') }}) + retry_strategy: Optional[shared_retrystrategy_enum.RetryStrategyEnum] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('retry_strategy') }}) + started_at: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('started_at') }}) + type: Optional[Any] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('type') }}) + updated_at: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('updated_at') }}) + diff --git a/src/epilotapi/models/shared/mapentityactionconfig.py b/src/epilotapi/models/shared/mapentityactionconfig.py new file mode 100755 index 000000000..5a548c977 --- /dev/null +++ b/src/epilotapi/models/shared/mapentityactionconfig.py @@ -0,0 +1,18 @@ +import dataclasses +from typing import Any,Optional +from dataclasses_json import dataclass_json +from epilotapi import utils +from ..shared import mapentityconfig as shared_mapentityconfig + + +@dataclass_json +@dataclasses.dataclass +class MapEntityActionConfig: + allow_failure: Optional[bool] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('allow_failure') }}) + config: Optional[shared_mapentityconfig.MapEntityConfig] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('config') }}) + created_automatically: Optional[bool] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('created_automatically') }}) + flow_action_id: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('flow_action_id') }}) + id: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('id') }}) + name: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('name') }}) + type: Optional[Any] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('type') }}) + diff --git a/src/epilotapi/models/shared/mapentityconfig.py b/src/epilotapi/models/shared/mapentityconfig.py new file mode 100755 index 000000000..e4ca6a7b4 --- /dev/null +++ b/src/epilotapi/models/shared/mapentityconfig.py @@ -0,0 +1,23 @@ +import dataclasses +from typing import Any,Optional +from dataclasses_json import dataclass_json +from epilotapi import utils +from ..shared import mappingattributev2 as shared_mappingattributev2 +from ..shared import setvaluemapper as shared_setvaluemapper +from ..shared import copyvaluemapper as shared_copyvaluemapper +from ..shared import appendvaluemapper as shared_appendvaluemapper +from ..shared import mappingconfigref as shared_mappingconfigref +from ..shared import relationattribute1 as shared_relationattribute1 + + +@dataclass_json +@dataclasses.dataclass +class MapEntityConfig: + target_schema: str = dataclasses.field(metadata={'dataclasses_json': { 'letter_case': utils.field_name('target_schema') }}) + linkback_relation_attribute: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('linkback_relation_attribute') }}) + linkback_relation_tags: Optional[list[str]] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('linkback_relation_tags') }}) + mapping_attributes: Optional[list[Any]] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('mapping_attributes') }}) + mapping_config: Optional[shared_mappingconfigref.MappingConfigRef] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('mapping_config') }}) + relation_attributes: Optional[list[shared_relationattribute1.RelationAttribute1]] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('relation_attributes') }}) + target_unique: Optional[list[str]] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('target_unique') }}) + diff --git a/src/epilotapi/models/shared/mappingattributemode_enum.py b/src/epilotapi/models/shared/mappingattributemode_enum.py new file mode 100755 index 000000000..89666f61a --- /dev/null +++ b/src/epilotapi/models/shared/mappingattributemode_enum.py @@ -0,0 +1,8 @@ +import dataclasses +from enum import Enum + +class MappingAttributeModeEnum(str, Enum): + COPY_IF_EXISTS = "copy_if_exists" + APPEND_IF_EXISTS = "append_if_exists" + SET_VALUE = "set_value" + diff --git a/src/epilotapi/models/shared/mappingattributev2.py b/src/epilotapi/models/shared/mappingattributev2.py new file mode 100755 index 000000000..3b1508c38 --- /dev/null +++ b/src/epilotapi/models/shared/mappingattributev2.py @@ -0,0 +1,12 @@ +import dataclasses +from typing import Any,Optional +from dataclasses_json import dataclass_json +from epilotapi import utils + + +@dataclass_json +@dataclasses.dataclass +class MappingAttributeV2: + operation: Any = dataclasses.field(metadata={'dataclasses_json': { 'letter_case': utils.field_name('operation') }}) + target: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('target') }}) + diff --git a/src/epilotapi/models/shared/mappingconfigref.py b/src/epilotapi/models/shared/mappingconfigref.py new file mode 100755 index 000000000..b0f1c76c5 --- /dev/null +++ b/src/epilotapi/models/shared/mappingconfigref.py @@ -0,0 +1,13 @@ +import dataclasses +from typing import Optional +from dataclasses_json import dataclass_json +from epilotapi import utils + + +@dataclass_json +@dataclasses.dataclass +class MappingConfigRef: + config_id: str = dataclasses.field(metadata={'dataclasses_json': { 'letter_case': utils.field_name('config_id') }}) + target_id: str = dataclasses.field(metadata={'dataclasses_json': { 'letter_case': utils.field_name('target_id') }}) + version: Optional[float] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('version') }}) + diff --git a/src/epilotapi/models/shared/multiselectattribute.py b/src/epilotapi/models/shared/multiselectattribute.py new file mode 100755 index 000000000..396e722b3 --- /dev/null +++ b/src/epilotapi/models/shared/multiselectattribute.py @@ -0,0 +1,54 @@ +import dataclasses +from typing import Any,Optional +from enum import Enum +from dataclasses_json import dataclass_json +from epilotapi import utils + + +@dataclass_json +@dataclasses.dataclass +class MultiSelectAttributeOptions2: + value: str = dataclasses.field(metadata={'dataclasses_json': { 'letter_case': utils.field_name('value') }}) + title: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('title') }}) + +class MultiSelectAttributeTypeEnum(str, Enum): + MULTISELECT = "multiselect" + CHECKBOX = "checkbox" + + +@dataclass_json +@dataclasses.dataclass +class MultiSelectAttribute: + r"""MultiSelectAttribute + Multi Choice Selection + """ + + label: str = dataclasses.field(metadata={'dataclasses_json': { 'letter_case': utils.field_name('label') }}) + name: str = dataclasses.field(metadata={'dataclasses_json': { 'letter_case': utils.field_name('name') }}) + purpose: Optional[list[str]] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('_purpose') }}) + allow_any: Optional[bool] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('allow_any') }}) + allow_extra_options: Optional[bool] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('allow_extra_options') }}) + constraints: Optional[dict[str, Any]] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('constraints') }}) + default_value: Optional[Any] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('default_value') }}) + deprecated: Optional[bool] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('deprecated') }}) + disable_case_sensitive: Optional[bool] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('disable_case_sensitive') }}) + entity_builder_disable_edit: Optional[bool] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('entity_builder_disable_edit') }}) + feature_flag: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('feature_flag') }}) + group: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('group') }}) + hidden: Optional[bool] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('hidden') }}) + hide_label: Optional[bool] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('hide_label') }}) + icon: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('icon') }}) + layout: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('layout') }}) + options: Optional[list[Any]] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('options') }}) + order: Optional[int] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('order') }}) + placeholder: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('placeholder') }}) + preview_value_formatter: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('preview_value_formatter') }}) + protected: Optional[bool] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('protected') }}) + readonly: Optional[bool] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('readonly') }}) + render_condition: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('render_condition') }}) + required: Optional[bool] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('required') }}) + setting_flag: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('setting_flag') }}) + show_in_table: Optional[bool] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('show_in_table') }}) + type: Optional[MultiSelectAttributeTypeEnum] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('type') }}) + value_formatter: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('value_formatter') }}) + diff --git a/src/epilotapi/models/shared/numberattribute.py b/src/epilotapi/models/shared/numberattribute.py new file mode 100755 index 000000000..e41730ade --- /dev/null +++ b/src/epilotapi/models/shared/numberattribute.py @@ -0,0 +1,43 @@ +import dataclasses +from typing import Any,Optional +from enum import Enum +from dataclasses_json import dataclass_json +from epilotapi import utils + +class NumberAttributeTypeEnum(str, Enum): + NUMBER = "number" + + +@dataclass_json +@dataclasses.dataclass +class NumberAttribute: + r"""NumberAttribute + Numeric input + """ + + label: str = dataclasses.field(metadata={'dataclasses_json': { 'letter_case': utils.field_name('label') }}) + name: str = dataclasses.field(metadata={'dataclasses_json': { 'letter_case': utils.field_name('name') }}) + purpose: Optional[list[str]] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('_purpose') }}) + constraints: Optional[dict[str, Any]] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('constraints') }}) + default_value: Optional[Any] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('default_value') }}) + deprecated: Optional[bool] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('deprecated') }}) + entity_builder_disable_edit: Optional[bool] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('entity_builder_disable_edit') }}) + feature_flag: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('feature_flag') }}) + format: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('format') }}) + group: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('group') }}) + hidden: Optional[bool] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('hidden') }}) + hide_label: Optional[bool] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('hide_label') }}) + icon: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('icon') }}) + layout: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('layout') }}) + order: Optional[int] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('order') }}) + placeholder: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('placeholder') }}) + preview_value_formatter: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('preview_value_formatter') }}) + protected: Optional[bool] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('protected') }}) + readonly: Optional[bool] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('readonly') }}) + render_condition: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('render_condition') }}) + required: Optional[bool] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('required') }}) + setting_flag: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('setting_flag') }}) + show_in_table: Optional[bool] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('show_in_table') }}) + type: Optional[NumberAttributeTypeEnum] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('type') }}) + value_formatter: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('value_formatter') }}) + diff --git a/src/epilotapi/models/shared/orderedlistattribute.py b/src/epilotapi/models/shared/orderedlistattribute.py new file mode 100755 index 000000000..5400385cb --- /dev/null +++ b/src/epilotapi/models/shared/orderedlistattribute.py @@ -0,0 +1,42 @@ +import dataclasses +from typing import Any,Optional +from enum import Enum +from dataclasses_json import dataclass_json +from epilotapi import utils + +class OrderedListAttributeTypeEnum(str, Enum): + ORDERED_LIST = "ordered_list" + + +@dataclass_json +@dataclasses.dataclass +class OrderedListAttribute: + r"""OrderedListAttribute + Type of attribute to render N number of ordered fields + """ + + label: str = dataclasses.field(metadata={'dataclasses_json': { 'letter_case': utils.field_name('label') }}) + name: str = dataclasses.field(metadata={'dataclasses_json': { 'letter_case': utils.field_name('name') }}) + purpose: Optional[list[str]] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('_purpose') }}) + constraints: Optional[dict[str, Any]] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('constraints') }}) + default_value: Optional[Any] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('default_value') }}) + deprecated: Optional[bool] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('deprecated') }}) + entity_builder_disable_edit: Optional[bool] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('entity_builder_disable_edit') }}) + feature_flag: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('feature_flag') }}) + group: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('group') }}) + hidden: Optional[bool] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('hidden') }}) + hide_label: Optional[bool] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('hide_label') }}) + icon: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('icon') }}) + layout: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('layout') }}) + order: Optional[int] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('order') }}) + placeholder: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('placeholder') }}) + preview_value_formatter: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('preview_value_formatter') }}) + protected: Optional[bool] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('protected') }}) + readonly: Optional[bool] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('readonly') }}) + render_condition: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('render_condition') }}) + required: Optional[bool] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('required') }}) + setting_flag: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('setting_flag') }}) + show_in_table: Optional[bool] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('show_in_table') }}) + type: Optional[OrderedListAttributeTypeEnum] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('type') }}) + value_formatter: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('value_formatter') }}) + diff --git a/src/epilotapi/models/shared/partnerstatusattribute.py b/src/epilotapi/models/shared/partnerstatusattribute.py new file mode 100755 index 000000000..ab90889a6 --- /dev/null +++ b/src/epilotapi/models/shared/partnerstatusattribute.py @@ -0,0 +1,42 @@ +import dataclasses +from typing import Any,Optional +from enum import Enum +from dataclasses_json import dataclass_json +from epilotapi import utils + +class PartnerStatusAttributeTypeEnum(str, Enum): + PARTNER_STATUS = "partner_status" + + +@dataclass_json +@dataclasses.dataclass +class PartnerStatusAttribute: + r"""PartnerStatusAttribute + Partner Status + """ + + label: str = dataclasses.field(metadata={'dataclasses_json': { 'letter_case': utils.field_name('label') }}) + name: str = dataclasses.field(metadata={'dataclasses_json': { 'letter_case': utils.field_name('name') }}) + purpose: Optional[list[str]] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('_purpose') }}) + constraints: Optional[dict[str, Any]] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('constraints') }}) + default_value: Optional[Any] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('default_value') }}) + deprecated: Optional[bool] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('deprecated') }}) + entity_builder_disable_edit: Optional[bool] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('entity_builder_disable_edit') }}) + feature_flag: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('feature_flag') }}) + group: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('group') }}) + hidden: Optional[bool] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('hidden') }}) + hide_label: Optional[bool] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('hide_label') }}) + icon: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('icon') }}) + layout: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('layout') }}) + order: Optional[int] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('order') }}) + placeholder: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('placeholder') }}) + preview_value_formatter: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('preview_value_formatter') }}) + protected: Optional[bool] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('protected') }}) + readonly: Optional[bool] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('readonly') }}) + render_condition: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('render_condition') }}) + required: Optional[bool] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('required') }}) + setting_flag: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('setting_flag') }}) + show_in_table: Optional[bool] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('show_in_table') }}) + type: Optional[PartnerStatusAttributeTypeEnum] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('type') }}) + value_formatter: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('value_formatter') }}) + diff --git a/src/epilotapi/models/shared/paymentmethodrelationattribute.py b/src/epilotapi/models/shared/paymentmethodrelationattribute.py new file mode 100755 index 000000000..19559c810 --- /dev/null +++ b/src/epilotapi/models/shared/paymentmethodrelationattribute.py @@ -0,0 +1,43 @@ +import dataclasses +from typing import Any,Optional +from enum import Enum +from dataclasses_json import dataclass_json +from epilotapi import utils + +class PaymentMethodRelationAttributeTypeEnum(str, Enum): + RELATION_PAYMENT_METHOD = "relation_payment_method" + + +@dataclass_json +@dataclasses.dataclass +class PaymentMethodRelationAttribute: + r"""PaymentMethodRelationAttribute + Reference to a payment method attribute of another entity + """ + + label: str = dataclasses.field(metadata={'dataclasses_json': { 'letter_case': utils.field_name('label') }}) + name: str = dataclasses.field(metadata={'dataclasses_json': { 'letter_case': utils.field_name('name') }}) + purpose: Optional[list[str]] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('_purpose') }}) + constraints: Optional[dict[str, Any]] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('constraints') }}) + default_value: Optional[Any] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('default_value') }}) + deprecated: Optional[bool] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('deprecated') }}) + entity_builder_disable_edit: Optional[bool] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('entity_builder_disable_edit') }}) + feature_flag: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('feature_flag') }}) + group: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('group') }}) + has_primary: Optional[bool] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('has_primary') }}) + hidden: Optional[bool] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('hidden') }}) + hide_label: Optional[bool] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('hide_label') }}) + icon: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('icon') }}) + layout: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('layout') }}) + order: Optional[int] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('order') }}) + placeholder: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('placeholder') }}) + preview_value_formatter: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('preview_value_formatter') }}) + protected: Optional[bool] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('protected') }}) + readonly: Optional[bool] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('readonly') }}) + render_condition: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('render_condition') }}) + required: Optional[bool] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('required') }}) + setting_flag: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('setting_flag') }}) + show_in_table: Optional[bool] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('show_in_table') }}) + type: Optional[PaymentMethodRelationAttributeTypeEnum] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('type') }}) + value_formatter: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('value_formatter') }}) + diff --git a/src/epilotapi/models/shared/purposeattribute.py b/src/epilotapi/models/shared/purposeattribute.py new file mode 100755 index 000000000..130eb1b68 --- /dev/null +++ b/src/epilotapi/models/shared/purposeattribute.py @@ -0,0 +1,49 @@ +import dataclasses +from datetime import date, datetime +from marshmallow import fields +import dateutil.parser +from typing import Any,Optional +from enum import Enum +from dataclasses_json import dataclass_json +from epilotapi import utils + +class PurposeAttributeTypeEnum(str, Enum): + PURPOSE = "purpose" + + +@dataclass_json +@dataclasses.dataclass +class PurposeAttribute: + r"""PurposeAttribute + Entity Taxonomy + """ + + label: str = dataclasses.field(metadata={'dataclasses_json': { 'letter_case': utils.field_name('label') }}) + name: str = dataclasses.field(metadata={'dataclasses_json': { 'letter_case': utils.field_name('name') }}) + purpose: Optional[list[str]] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('_purpose') }}) + constraints: Optional[dict[str, Any]] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('constraints') }}) + created_at: Optional[datetime] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('created_at'), 'encoder': utils.datetimeisoformat(True), 'decoder': dateutil.parser.isoparse, 'mm_field': fields.DateTime(format='iso') }}) + default_value: Optional[Any] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('default_value') }}) + deprecated: Optional[bool] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('deprecated') }}) + entity_builder_disable_edit: Optional[bool] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('entity_builder_disable_edit') }}) + feature_flag: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('feature_flag') }}) + group: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('group') }}) + hidden: Optional[bool] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('hidden') }}) + hide_label: Optional[bool] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('hide_label') }}) + icon: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('icon') }}) + id: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('id') }}) + layout: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('layout') }}) + order: Optional[int] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('order') }}) + parents: Optional[list[str]] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('parents') }}) + placeholder: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('placeholder') }}) + preview_value_formatter: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('preview_value_formatter') }}) + protected: Optional[bool] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('protected') }}) + readonly: Optional[bool] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('readonly') }}) + render_condition: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('render_condition') }}) + required: Optional[bool] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('required') }}) + setting_flag: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('setting_flag') }}) + show_in_table: Optional[bool] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('show_in_table') }}) + type: Optional[PurposeAttributeTypeEnum] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('type') }}) + updated_at: Optional[datetime] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('updated_at'), 'encoder': utils.datetimeisoformat(True), 'decoder': dateutil.parser.isoparse, 'mm_field': fields.DateTime(format='iso') }}) + value_formatter: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('value_formatter') }}) + diff --git a/src/epilotapi/models/shared/receivedemailtrigger.py b/src/epilotapi/models/shared/receivedemailtrigger.py new file mode 100755 index 000000000..1de799a13 --- /dev/null +++ b/src/epilotapi/models/shared/receivedemailtrigger.py @@ -0,0 +1,25 @@ +import dataclasses +from typing import Optional +from enum import Enum +from dataclasses_json import dataclass_json +from epilotapi import utils + +class ReceivedEmailTriggerConfigurationMessageTypeEnum(str, Enum): + RECEIVED = "RECEIVED" + + +@dataclass_json +@dataclasses.dataclass +class ReceivedEmailTriggerConfiguration: + message_type: Optional[ReceivedEmailTriggerConfigurationMessageTypeEnum] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('message_type') }}) + +class ReceivedEmailTriggerTypeEnum(str, Enum): + RECEIVED_EMAIL = "received_email" + + +@dataclass_json +@dataclasses.dataclass +class ReceivedEmailTrigger: + configuration: ReceivedEmailTriggerConfiguration = dataclasses.field(metadata={'dataclasses_json': { 'letter_case': utils.field_name('configuration') }}) + type: ReceivedEmailTriggerTypeEnum = dataclasses.field(metadata={'dataclasses_json': { 'letter_case': utils.field_name('type') }}) + diff --git a/src/epilotapi/models/shared/redirectentityview.py b/src/epilotapi/models/shared/redirectentityview.py new file mode 100755 index 000000000..3d0fb5cf9 --- /dev/null +++ b/src/epilotapi/models/shared/redirectentityview.py @@ -0,0 +1,16 @@ +import dataclasses +from typing import Optional +from enum import Enum +from dataclasses_json import dataclass_json +from epilotapi import utils + +class RedirectEntityViewViewTypeEnum(str, Enum): + REDIRECT = "redirect" + + +@dataclass_json +@dataclasses.dataclass +class RedirectEntityView: + route: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('route') }}) + view_type: Optional[RedirectEntityViewViewTypeEnum] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('view_type') }}) + diff --git a/src/epilotapi/models/shared/relationattribute.py b/src/epilotapi/models/shared/relationattribute.py new file mode 100755 index 000000000..b555648e7 --- /dev/null +++ b/src/epilotapi/models/shared/relationattribute.py @@ -0,0 +1,88 @@ +import dataclasses +from typing import Any,Optional +from enum import Enum +from dataclasses_json import dataclass_json +from epilotapi import utils + +class RelationAttributeActionsActionTypeEnum(str, Enum): + ADD_EXISTING = "add_existing" + CREATE_NEW = "create_new" + CREATE_FROM_EXISTING = "create_from_existing" + + +@dataclass_json +@dataclasses.dataclass +class RelationAttributeActions: + action_type: Optional[RelationAttributeActionsActionTypeEnum] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('action_type') }}) + default: Optional[bool] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('default') }}) + feature_flag: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('feature_flag') }}) + label: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('label') }}) + new_entity_item: Optional[dict[str, Any]] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('new_entity_item') }}) + setting_flag: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('setting_flag') }}) + +class RelationAttributeDrawerSizeEnum(str, Enum): + SMALL = "small" + MEDIUM = "medium" + LARGE = "large" + +class RelationAttributeEditModeEnum(str, Enum): + LIST_VIEW = "list-view" + +class RelationAttributeRelationAffinityModeEnum(str, Enum): + WEAK = "weak" + STRONG = "strong" + +class RelationAttributeRelationTypeEnum(str, Enum): + HAS_MANY = "has_many" + HAS_ONE = "has_one" + +class RelationAttributeTypeEnum(str, Enum): + RELATION = "relation" + + +@dataclass_json +@dataclasses.dataclass +class RelationAttribute: + r"""RelationAttribute + Entity Relationship + """ + + label: str = dataclasses.field(metadata={'dataclasses_json': { 'letter_case': utils.field_name('label') }}) + name: str = dataclasses.field(metadata={'dataclasses_json': { 'letter_case': utils.field_name('name') }}) + purpose: Optional[list[str]] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('_purpose') }}) + actions: Optional[list[RelationAttributeActions]] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('actions') }}) + add_button_label: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('add_button_label') }}) + allowed_schemas: Optional[list[str]] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('allowedSchemas') }}) + constraints: Optional[dict[str, Any]] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('constraints') }}) + default_value: Optional[Any] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('default_value') }}) + deprecated: Optional[bool] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('deprecated') }}) + details_view_mode_enabled: Optional[bool] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('details_view_mode_enabled') }}) + drawer_size: Optional[RelationAttributeDrawerSizeEnum] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('drawer_size') }}) + edit_mode: Optional[RelationAttributeEditModeEnum] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('edit_mode') }}) + enable_relation_picker: Optional[bool] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('enable_relation_picker') }}) + enable_relation_tags: Optional[bool] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('enable_relation_tags') }}) + entity_builder_disable_edit: Optional[bool] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('entity_builder_disable_edit') }}) + feature_flag: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('feature_flag') }}) + group: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('group') }}) + has_primary: Optional[bool] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('has_primary') }}) + hidden: Optional[bool] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('hidden') }}) + hide_label: Optional[bool] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('hide_label') }}) + icon: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('icon') }}) + layout: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('layout') }}) + order: Optional[int] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('order') }}) + placeholder: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('placeholder') }}) + preview_value_formatter: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('preview_value_formatter') }}) + protected: Optional[bool] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('protected') }}) + readonly: Optional[bool] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('readonly') }}) + relation_affinity_mode: Optional[RelationAttributeRelationAffinityModeEnum] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('relation_affinity_mode') }}) + relation_type: Optional[RelationAttributeRelationTypeEnum] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('relation_type') }}) + render_condition: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('render_condition') }}) + required: Optional[bool] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('required') }}) + reverse_attributes: Optional[dict[str, str]] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('reverse_attributes') }}) + search_placeholder: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('search_placeholder') }}) + setting_flag: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('setting_flag') }}) + show_in_table: Optional[bool] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('show_in_table') }}) + summary_fields: Optional[list[Any]] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('summary_fields') }}) + type: Optional[RelationAttributeTypeEnum] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('type') }}) + value_formatter: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('value_formatter') }}) + diff --git a/src/epilotapi/models/shared/relationattribute1.py b/src/epilotapi/models/shared/relationattribute1.py new file mode 100755 index 000000000..3c526e2f4 --- /dev/null +++ b/src/epilotapi/models/shared/relationattribute1.py @@ -0,0 +1,37 @@ +import dataclasses +from typing import Any,Optional +from enum import Enum +from dataclasses_json import dataclass_json +from epilotapi import utils + +class RelationAttribute1ModeEnum(str, Enum): + APPEND = "append" + PREPEND = "prepend" + SET = "set" + + +@dataclass_json +@dataclasses.dataclass +class RelationAttribute1SourceFilter: + r"""RelationAttribute1SourceFilter + A filter to identify which source entities to pick as relations from main entity + """ + + attribute: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('attribute') }}) + limit: Optional[int] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('limit') }}) + relation_tag: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('relation_tag') }}) + schema: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('schema') }}) + self: Optional[bool] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('self') }}) + tag: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('tag') }}) + + +@dataclass_json +@dataclasses.dataclass +class RelationAttribute1: + mode: RelationAttribute1ModeEnum = dataclasses.field(metadata={'dataclasses_json': { 'letter_case': utils.field_name('mode') }}) + target: str = dataclasses.field(metadata={'dataclasses_json': { 'letter_case': utils.field_name('target') }}) + related_to: Optional[dict[str, Any]] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('related_to') }}) + source_filter: Optional[RelationAttribute1SourceFilter] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('source_filter') }}) + target_tags: Optional[list[str]] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('target_tags') }}) + target_tags_include_source: Optional[bool] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('target_tags_include_source') }}) + diff --git a/src/epilotapi/models/shared/relationitem.py b/src/epilotapi/models/shared/relationitem.py new file mode 100755 index 000000000..3b18e1562 --- /dev/null +++ b/src/epilotapi/models/shared/relationitem.py @@ -0,0 +1,14 @@ +import dataclasses +from typing import Optional +from dataclasses_json import dataclass_json +from epilotapi import utils + + +@dataclass_json +@dataclasses.dataclass +class RelationItem: + attribute: str = dataclasses.field(metadata={'dataclasses_json': { 'letter_case': utils.field_name('attribute') }}) + entity_id: str = dataclasses.field(metadata={'dataclasses_json': { 'letter_case': utils.field_name('entity_id') }}) + tags: Optional[list[str]] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('_tags') }}) + reverse: Optional[bool] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('reverse') }}) + diff --git a/src/epilotapi/models/shared/repeatableattribute.py b/src/epilotapi/models/shared/repeatableattribute.py new file mode 100755 index 000000000..ae1e42fdb --- /dev/null +++ b/src/epilotapi/models/shared/repeatableattribute.py @@ -0,0 +1,60 @@ +import dataclasses +from datetime import date, datetime +from marshmallow import fields +import dateutil.parser +from typing import Any,Optional +from enum import Enum +from dataclasses_json import dataclass_json +from epilotapi import utils + +class RepeatableAttributeRelationAffinityModeEnum(str, Enum): + WEAK = "weak" + STRONG = "strong" + +class RepeatableAttributeTypeEnum(str, Enum): + STRING = "string" + PHONE = "phone" + EMAIL = "email" + ADDRESS = "address" + RELATION = "relation" + PAYMENT = "payment" + PRICE_COMPONENT = "price_component" + DATE = "date" + + +@dataclass_json +@dataclasses.dataclass +class RepeatableAttribute: + r"""RepeatableAttribute + Repeatable (add N number of fields) + """ + + label: str = dataclasses.field(metadata={'dataclasses_json': { 'letter_case': utils.field_name('label') }}) + name: str = dataclasses.field(metadata={'dataclasses_json': { 'letter_case': utils.field_name('name') }}) + purpose: Optional[list[str]] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('_purpose') }}) + constraints: Optional[dict[str, Any]] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('constraints') }}) + default_value: Optional[Any] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('default_value') }}) + deprecated: Optional[bool] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('deprecated') }}) + enable_relation_picker: Optional[bool] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('enable_relation_picker') }}) + entity_builder_disable_edit: Optional[bool] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('entity_builder_disable_edit') }}) + feature_flag: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('feature_flag') }}) + group: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('group') }}) + has_primary: Optional[bool] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('has_primary') }}) + hidden: Optional[bool] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('hidden') }}) + hide_label: Optional[bool] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('hide_label') }}) + icon: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('icon') }}) + layout: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('layout') }}) + order: Optional[int] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('order') }}) + placeholder: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('placeholder') }}) + preview_value_formatter: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('preview_value_formatter') }}) + protected: Optional[bool] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('protected') }}) + readonly: Optional[bool] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('readonly') }}) + relation_affinity_mode: Optional[RepeatableAttributeRelationAffinityModeEnum] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('relation_affinity_mode') }}) + render_condition: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('render_condition') }}) + repeatable: Optional[bool] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('repeatable') }}) + required: Optional[bool] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('required') }}) + setting_flag: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('setting_flag') }}) + show_in_table: Optional[bool] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('show_in_table') }}) + type: Optional[RepeatableAttributeTypeEnum] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('type') }}) + value_formatter: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('value_formatter') }}) + diff --git a/src/epilotapi/models/shared/retryreq.py b/src/epilotapi/models/shared/retryreq.py new file mode 100755 index 000000000..5dc6308a5 --- /dev/null +++ b/src/epilotapi/models/shared/retryreq.py @@ -0,0 +1,13 @@ +import dataclasses +from typing import Optional +from enum import Enum +from dataclasses_json import dataclass_json +from epilotapi import utils +from ..shared import retrystrategy_enum as shared_retrystrategy_enum + + +@dataclass_json +@dataclasses.dataclass +class RetryReq: + retry_strategy: Optional[shared_retrystrategy_enum.RetryStrategyEnum] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('retry_strategy') }}) + diff --git a/src/epilotapi/models/shared/retrystrategy_enum.py b/src/epilotapi/models/shared/retrystrategy_enum.py new file mode 100755 index 000000000..5f3fc83e6 --- /dev/null +++ b/src/epilotapi/models/shared/retrystrategy_enum.py @@ -0,0 +1,7 @@ +import dataclasses +from enum import Enum + +class RetryStrategyEnum(str, Enum): + RETRY_AND_RESUME = "RETRY_AND_RESUME" + RETRY_AND_STOP = "RETRY_AND_STOP" + diff --git a/src/epilotapi/models/shared/savedview.py b/src/epilotapi/models/shared/savedview.py new file mode 100755 index 000000000..e258a7c94 --- /dev/null +++ b/src/epilotapi/models/shared/savedview.py @@ -0,0 +1,30 @@ +import dataclasses +from typing import Any,Optional +from dataclasses_json import dataclass_json +from epilotapi import utils + + +@dataclass_json +@dataclasses.dataclass +class SavedViewCreatedBy1: + r"""SavedViewCreatedBy1 + A user that created the view + """ + + user_id: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('user_id') }}) + + +@dataclass_json +@dataclasses.dataclass +class SavedView: + r"""SavedView + A saved entity view + """ + + created_by: Any = dataclasses.field(metadata={'dataclasses_json': { 'letter_case': utils.field_name('created_by') }}) + name: str = dataclasses.field(metadata={'dataclasses_json': { 'letter_case': utils.field_name('name') }}) + slug: list[str] = dataclasses.field(metadata={'dataclasses_json': { 'letter_case': utils.field_name('slug') }}) + ui_config: dict[str, Any] = dataclasses.field(metadata={'dataclasses_json': { 'letter_case': utils.field_name('ui_config') }}) + org: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('org') }}) + shared: Optional[bool] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('shared') }}) + diff --git a/src/epilotapi/models/shared/savedviewitem.py b/src/epilotapi/models/shared/savedviewitem.py new file mode 100755 index 000000000..702ef1591 --- /dev/null +++ b/src/epilotapi/models/shared/savedviewitem.py @@ -0,0 +1,36 @@ +import dataclasses +from datetime import date, datetime +from marshmallow import fields +import dateutil.parser +from typing import Any,Optional +from dataclasses_json import dataclass_json +from epilotapi import utils + + +@dataclass_json +@dataclasses.dataclass +class SavedViewItemCreatedBy1: + r"""SavedViewItemCreatedBy1 + A user that created the view + """ + + user_id: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('user_id') }}) + + +@dataclass_json +@dataclasses.dataclass +class SavedViewItem: + r"""SavedViewItem + A saved entity view + """ + + created_by: Any = dataclasses.field(metadata={'dataclasses_json': { 'letter_case': utils.field_name('created_by') }}) + name: str = dataclasses.field(metadata={'dataclasses_json': { 'letter_case': utils.field_name('name') }}) + slug: list[str] = dataclasses.field(metadata={'dataclasses_json': { 'letter_case': utils.field_name('slug') }}) + ui_config: dict[str, Any] = dataclasses.field(metadata={'dataclasses_json': { 'letter_case': utils.field_name('ui_config') }}) + created_at: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('created_at') }}) + id: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('id') }}) + org: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('org') }}) + shared: Optional[bool] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('shared') }}) + updated_at: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('updated_at') }}) + diff --git a/src/epilotapi/models/shared/searchautomationsresp.py b/src/epilotapi/models/shared/searchautomationsresp.py new file mode 100755 index 000000000..c56a31b0e --- /dev/null +++ b/src/epilotapi/models/shared/searchautomationsresp.py @@ -0,0 +1,12 @@ +import dataclasses +from dataclasses_json import dataclass_json +from epilotapi import utils +from ..shared import automationflow as shared_automationflow + + +@dataclass_json +@dataclasses.dataclass +class SearchAutomationsResp: + results: list[shared_automationflow.AutomationFlow] = dataclasses.field(metadata={'dataclasses_json': { 'letter_case': utils.field_name('results') }}) + total: float = dataclasses.field(metadata={'dataclasses_json': { 'letter_case': utils.field_name('total') }}) + diff --git a/src/epilotapi/models/shared/searchjourneysqueryrequest.py b/src/epilotapi/models/shared/searchjourneysqueryrequest.py new file mode 100755 index 000000000..ed1881ac8 --- /dev/null +++ b/src/epilotapi/models/shared/searchjourneysqueryrequest.py @@ -0,0 +1,14 @@ +import dataclasses +from typing import Optional +from dataclasses_json import dataclass_json +from epilotapi import utils + + +@dataclass_json +@dataclasses.dataclass +class SearchJourneysQueryRequest: + from_: Optional[int] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('from') }}) + q: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('q') }}) + size: Optional[int] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('size') }}) + sort: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('sort') }}) + diff --git a/src/epilotapi/models/shared/searchjourneysresponse.py b/src/epilotapi/models/shared/searchjourneysresponse.py new file mode 100755 index 000000000..80b455a1a --- /dev/null +++ b/src/epilotapi/models/shared/searchjourneysresponse.py @@ -0,0 +1,44 @@ +import dataclasses +from datetime import date, datetime +from marshmallow import fields +import dateutil.parser +from typing import Optional +from enum import Enum +from dataclasses_json import dataclass_json +from epilotapi import utils + + +@dataclass_json +@dataclasses.dataclass +class SearchJourneysResponseResultsCreatedBy: + id: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('id') }}) + +class SearchJourneysResponseResultsJourneyVersionEnum(str, Enum): + FLEX = "Flex" + WIDGET = "Widget" + + +@dataclass_json +@dataclasses.dataclass +class SearchJourneysResponseResults: + created_at: Optional[datetime] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('_created_at'), 'encoder': utils.datetimeisoformat(True), 'decoder': dateutil.parser.isoparse, 'mm_field': fields.DateTime(format='iso') }}) + id: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('_id') }}) + org: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('_org') }}) + schema: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('_schema') }}) + tags: Optional[list[str]] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('_tags') }}) + title: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('_title') }}) + updated_at: Optional[datetime] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('_updated_at'), 'encoder': utils.datetimeisoformat(True), 'decoder': dateutil.parser.isoparse, 'mm_field': fields.DateTime(format='iso') }}) + created_by: Optional[list[SearchJourneysResponseResultsCreatedBy]] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('created_by') }}) + design: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('design') }}) + journey_id: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('journey_id') }}) + journey_name: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('journey_name') }}) + journey_type: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('journey_type') }}) + journey_version: Optional[SearchJourneysResponseResultsJourneyVersionEnum] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('journey_version') }}) + + +@dataclass_json +@dataclasses.dataclass +class SearchJourneysResponse: + hits: Optional[float] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('hits') }}) + results: Optional[list[SearchJourneysResponseResults]] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('results') }}) + diff --git a/src/epilotapi/models/shared/searchmappings.py b/src/epilotapi/models/shared/searchmappings.py new file mode 100755 index 000000000..cda36c816 --- /dev/null +++ b/src/epilotapi/models/shared/searchmappings.py @@ -0,0 +1,28 @@ +import dataclasses +from datetime import date, datetime +from marshmallow import fields +import dateutil.parser +from typing import Any,Optional +from enum import Enum +from dataclasses_json import dataclass_json +from epilotapi import utils + +class SearchMappingsTypeEnum(str, Enum): + KEYWORD = "keyword" + TEXT = "text" + BOOLEAN = "boolean" + INTEGER = "integer" + LONG = "long" + FLOAT = "float" + DATE = "date" + FLATTENED = "flattened" + NESTED = "nested" + + +@dataclass_json +@dataclasses.dataclass +class SearchMappings: + fields: Optional[Any] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('fields') }}) + index: Optional[bool] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('index') }}) + type: Optional[SearchMappingsTypeEnum] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('type') }}) + diff --git a/src/epilotapi/models/shared/security.py b/src/epilotapi/models/shared/security.py new file mode 100755 index 000000000..3d9391e84 --- /dev/null +++ b/src/epilotapi/models/shared/security.py @@ -0,0 +1,13 @@ +import dataclasses + + + +@dataclasses.dataclass +class SchemeEpilotAuth: + authorization: str = dataclasses.field(metadata={'security': { 'field_name': 'Authorization' }}) + + +@dataclasses.dataclass +class Security: + epilot_auth: SchemeEpilotAuth = dataclasses.field(metadata={'security': { 'scheme': True, 'type': 'http', 'sub_type': 'bearer' }}) + diff --git a/src/epilotapi/models/shared/selectattribute.py b/src/epilotapi/models/shared/selectattribute.py new file mode 100755 index 000000000..a194cfdc0 --- /dev/null +++ b/src/epilotapi/models/shared/selectattribute.py @@ -0,0 +1,52 @@ +import dataclasses +from typing import Any,Optional +from enum import Enum +from dataclasses_json import dataclass_json +from epilotapi import utils + + +@dataclass_json +@dataclasses.dataclass +class SelectAttributeOptions2: + value: str = dataclasses.field(metadata={'dataclasses_json': { 'letter_case': utils.field_name('value') }}) + title: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('title') }}) + +class SelectAttributeTypeEnum(str, Enum): + SELECT = "select" + RADIO = "radio" + + +@dataclass_json +@dataclasses.dataclass +class SelectAttribute: + r"""SelectAttribute + Dropdown select + """ + + label: str = dataclasses.field(metadata={'dataclasses_json': { 'letter_case': utils.field_name('label') }}) + name: str = dataclasses.field(metadata={'dataclasses_json': { 'letter_case': utils.field_name('name') }}) + purpose: Optional[list[str]] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('_purpose') }}) + allow_any: Optional[bool] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('allow_any') }}) + constraints: Optional[dict[str, Any]] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('constraints') }}) + default_value: Optional[Any] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('default_value') }}) + deprecated: Optional[bool] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('deprecated') }}) + entity_builder_disable_edit: Optional[bool] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('entity_builder_disable_edit') }}) + feature_flag: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('feature_flag') }}) + group: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('group') }}) + hidden: Optional[bool] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('hidden') }}) + hide_label: Optional[bool] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('hide_label') }}) + icon: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('icon') }}) + layout: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('layout') }}) + options: Optional[list[Any]] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('options') }}) + order: Optional[int] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('order') }}) + placeholder: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('placeholder') }}) + preview_value_formatter: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('preview_value_formatter') }}) + protected: Optional[bool] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('protected') }}) + readonly: Optional[bool] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('readonly') }}) + render_condition: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('render_condition') }}) + required: Optional[bool] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('required') }}) + setting_flag: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('setting_flag') }}) + show_in_table: Optional[bool] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('show_in_table') }}) + type: Optional[SelectAttributeTypeEnum] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('type') }}) + value_formatter: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('value_formatter') }}) + diff --git a/src/epilotapi/models/shared/sendemailaction.py b/src/epilotapi/models/shared/sendemailaction.py new file mode 100755 index 000000000..7acae7632 --- /dev/null +++ b/src/epilotapi/models/shared/sendemailaction.py @@ -0,0 +1,31 @@ +import dataclasses +from datetime import date, datetime +from marshmallow import fields +import dateutil.parser +from typing import Any,Optional +from enum import Enum +from dataclasses_json import dataclass_json +from epilotapi import utils +from ..shared import sendemailconfig as shared_sendemailconfig +from ..shared import erroroutput as shared_erroroutput +from ..shared import executionstatus_enum as shared_executionstatus_enum +from ..shared import retrystrategy_enum as shared_retrystrategy_enum + + +@dataclass_json +@dataclasses.dataclass +class SendEmailAction: + allow_failure: Optional[bool] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('allow_failure') }}) + config: Optional[shared_sendemailconfig.SendEmailConfig] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('config') }}) + created_automatically: Optional[bool] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('created_automatically') }}) + error_output: Optional[shared_erroroutput.ErrorOutput] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('error_output') }}) + execution_status: Optional[shared_executionstatus_enum.ExecutionStatusEnum] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('execution_status') }}) + flow_action_id: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('flow_action_id') }}) + id: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('id') }}) + name: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('name') }}) + outputs: Optional[dict[str, Any]] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('outputs') }}) + retry_strategy: Optional[shared_retrystrategy_enum.RetryStrategyEnum] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('retry_strategy') }}) + started_at: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('started_at') }}) + type: Optional[Any] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('type') }}) + updated_at: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('updated_at') }}) + diff --git a/src/epilotapi/models/shared/sendemailactionconfig.py b/src/epilotapi/models/shared/sendemailactionconfig.py new file mode 100755 index 000000000..bba5fa319 --- /dev/null +++ b/src/epilotapi/models/shared/sendemailactionconfig.py @@ -0,0 +1,18 @@ +import dataclasses +from typing import Any,Optional +from dataclasses_json import dataclass_json +from epilotapi import utils +from ..shared import sendemailconfig as shared_sendemailconfig + + +@dataclass_json +@dataclasses.dataclass +class SendEmailActionConfig: + allow_failure: Optional[bool] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('allow_failure') }}) + config: Optional[shared_sendemailconfig.SendEmailConfig] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('config') }}) + created_automatically: Optional[bool] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('created_automatically') }}) + flow_action_id: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('flow_action_id') }}) + id: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('id') }}) + name: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('name') }}) + type: Optional[Any] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('type') }}) + diff --git a/src/epilotapi/models/shared/sendemailconfig.py b/src/epilotapi/models/shared/sendemailconfig.py new file mode 100755 index 000000000..d0c17886c --- /dev/null +++ b/src/epilotapi/models/shared/sendemailconfig.py @@ -0,0 +1,53 @@ +import dataclasses +from typing import Optional +from enum import Enum +from dataclasses_json import dataclass_json +from epilotapi import utils + +class SendEmailConfigAttachmentsSourceFilterDocumentTypeEnum(str, Enum): + DOCUMENT = "document" + TEXT = "text" + IMAGE = "image" + VIDEO = "video" + AUDIO = "audio" + SPREADSHEET = "spreadsheet" + PRESENTATION = "presentation" + FONT = "font" + ARCHIVE = "archive" + APPLICATION = "application" + UNKNOWN = "unknown" + + +@dataclass_json +@dataclasses.dataclass +class SendEmailConfigAttachmentsSourceFilter: + r"""SendEmailConfigAttachmentsSourceFilter + Specify filters to match file entities related to main entity + """ + + attribute: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('attribute') }}) + document_type: Optional[SendEmailConfigAttachmentsSourceFilterDocumentTypeEnum] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('document_type') }}) + filename_regex: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('filename_regex') }}) + limit: Optional[int] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('limit') }}) + relation_tag: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('relation_tag') }}) + self: Optional[bool] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('self') }}) + tag: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('tag') }}) + + +@dataclass_json +@dataclasses.dataclass +class SendEmailConfigAttachments: + source_filter: Optional[SendEmailConfigAttachmentsSourceFilter] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('source_filter') }}) + +class SendEmailConfigLanguageCodeEnum(str, Enum): + DE = "de" + EN = "en" + + +@dataclass_json +@dataclasses.dataclass +class SendEmailConfig: + attachments: Optional[list[SendEmailConfigAttachments]] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('attachments') }}) + email_template_id: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('email_template_id') }}) + language_code: Optional[SendEmailConfigLanguageCodeEnum] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('language_code') }}) + diff --git a/src/epilotapi/models/shared/sequenceattribute.py b/src/epilotapi/models/shared/sequenceattribute.py new file mode 100755 index 000000000..6683268ef --- /dev/null +++ b/src/epilotapi/models/shared/sequenceattribute.py @@ -0,0 +1,44 @@ +import dataclasses +from typing import Any,Optional +from enum import Enum +from dataclasses_json import dataclass_json +from epilotapi import utils + +class SequenceAttributeTypeEnum(str, Enum): + SEQUENCE = "sequence" + + +@dataclass_json +@dataclasses.dataclass +class SequenceAttribute: + r"""SequenceAttribute + Sequence of unique identifiers + """ + + label: str = dataclasses.field(metadata={'dataclasses_json': { 'letter_case': utils.field_name('label') }}) + name: str = dataclasses.field(metadata={'dataclasses_json': { 'letter_case': utils.field_name('name') }}) + purpose: Optional[list[str]] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('_purpose') }}) + constraints: Optional[dict[str, Any]] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('constraints') }}) + default_value: Optional[Any] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('default_value') }}) + deprecated: Optional[bool] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('deprecated') }}) + entity_builder_disable_edit: Optional[bool] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('entity_builder_disable_edit') }}) + feature_flag: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('feature_flag') }}) + group: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('group') }}) + hidden: Optional[bool] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('hidden') }}) + hide_label: Optional[bool] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('hide_label') }}) + icon: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('icon') }}) + layout: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('layout') }}) + order: Optional[int] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('order') }}) + placeholder: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('placeholder') }}) + prefix: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('prefix') }}) + preview_value_formatter: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('preview_value_formatter') }}) + protected: Optional[bool] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('protected') }}) + readonly: Optional[bool] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('readonly') }}) + render_condition: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('render_condition') }}) + required: Optional[bool] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('required') }}) + setting_flag: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('setting_flag') }}) + show_in_table: Optional[bool] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('show_in_table') }}) + start_number: Optional[int] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('start_number') }}) + type: Optional[SequenceAttributeTypeEnum] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('type') }}) + value_formatter: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('value_formatter') }}) + diff --git a/src/epilotapi/models/shared/setvaluemapper.py b/src/epilotapi/models/shared/setvaluemapper.py new file mode 100755 index 000000000..eed4ab1d3 --- /dev/null +++ b/src/epilotapi/models/shared/setvaluemapper.py @@ -0,0 +1,15 @@ +import dataclasses +from typing import Any +from enum import Enum +from dataclasses_json import dataclass_json +from epilotapi import utils +from ..shared import mappingattributemode_enum as shared_mappingattributemode_enum + + +@dataclass_json +@dataclasses.dataclass +class SetValueMapper: + mode: shared_mappingattributemode_enum.MappingAttributeModeEnum = dataclasses.field(metadata={'dataclasses_json': { 'letter_case': utils.field_name('mode') }}) + target: str = dataclasses.field(metadata={'dataclasses_json': { 'letter_case': utils.field_name('target') }}) + value: Any = dataclasses.field(metadata={'dataclasses_json': { 'letter_case': utils.field_name('value') }}) + diff --git a/src/epilotapi/models/shared/startexecutionrequest.py b/src/epilotapi/models/shared/startexecutionrequest.py new file mode 100755 index 000000000..eaac32c70 --- /dev/null +++ b/src/epilotapi/models/shared/startexecutionrequest.py @@ -0,0 +1,12 @@ +import dataclasses +from typing import Optional +from dataclasses_json import dataclass_json +from epilotapi import utils + + +@dataclass_json +@dataclasses.dataclass +class StartExecutionRequest: + entity_id: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('entity_id') }}) + flow_id: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('flow_id') }}) + diff --git a/src/epilotapi/models/shared/statusattribute.py b/src/epilotapi/models/shared/statusattribute.py new file mode 100755 index 000000000..f59fd7224 --- /dev/null +++ b/src/epilotapi/models/shared/statusattribute.py @@ -0,0 +1,50 @@ +import dataclasses +from typing import Any,Optional +from enum import Enum +from dataclasses_json import dataclass_json +from epilotapi import utils + + +@dataclass_json +@dataclasses.dataclass +class StatusAttributeOptions2: + value: str = dataclasses.field(metadata={'dataclasses_json': { 'letter_case': utils.field_name('value') }}) + title: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('title') }}) + +class StatusAttributeTypeEnum(str, Enum): + STATUS = "status" + + +@dataclass_json +@dataclasses.dataclass +class StatusAttribute: + r"""StatusAttribute + Status select + """ + + label: str = dataclasses.field(metadata={'dataclasses_json': { 'letter_case': utils.field_name('label') }}) + name: str = dataclasses.field(metadata={'dataclasses_json': { 'letter_case': utils.field_name('name') }}) + purpose: Optional[list[str]] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('_purpose') }}) + constraints: Optional[dict[str, Any]] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('constraints') }}) + default_value: Optional[Any] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('default_value') }}) + deprecated: Optional[bool] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('deprecated') }}) + entity_builder_disable_edit: Optional[bool] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('entity_builder_disable_edit') }}) + feature_flag: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('feature_flag') }}) + group: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('group') }}) + hidden: Optional[bool] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('hidden') }}) + hide_label: Optional[bool] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('hide_label') }}) + icon: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('icon') }}) + layout: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('layout') }}) + options: Optional[list[Any]] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('options') }}) + order: Optional[int] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('order') }}) + placeholder: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('placeholder') }}) + preview_value_formatter: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('preview_value_formatter') }}) + protected: Optional[bool] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('protected') }}) + readonly: Optional[bool] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('readonly') }}) + render_condition: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('render_condition') }}) + required: Optional[bool] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('required') }}) + setting_flag: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('setting_flag') }}) + show_in_table: Optional[bool] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('show_in_table') }}) + type: Optional[StatusAttributeTypeEnum] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('type') }}) + value_formatter: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('value_formatter') }}) + diff --git a/src/epilotapi/models/shared/summaryattribute.py b/src/epilotapi/models/shared/summaryattribute.py new file mode 100755 index 000000000..182368386 --- /dev/null +++ b/src/epilotapi/models/shared/summaryattribute.py @@ -0,0 +1,32 @@ +import dataclasses +from typing import Optional +from dataclasses_json import dataclass_json +from epilotapi import utils + + +@dataclass_json +@dataclasses.dataclass +class SummaryAttribute: + r"""SummaryAttribute + Represents an expanded version of an attribute to be displayed in the list item summary. + This configuration can be used in the following way: + ```js + { + \"label\": \"Price components\" + \"value\": \"{{item.prices.length}} price components\" + \"show_as_tag\": true + \"render_condition\": \"is_composite_price = \"true\"\" + } + ``` + The value field supports handlebar expressions from which you can pick any field from the entity state. + + """ + + label: str = dataclasses.field(metadata={'dataclasses_json': { 'letter_case': utils.field_name('label') }}) + value: str = dataclasses.field(metadata={'dataclasses_json': { 'letter_case': utils.field_name('value') }}) + feature_flag: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('feature_flag') }}) + render_condition: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('render_condition') }}) + setting_flag: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('setting_flag') }}) + show_as_tag: Optional[bool] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('show_as_tag') }}) + tag_color: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('tag_color') }}) + diff --git a/src/epilotapi/models/shared/summaryfield.py b/src/epilotapi/models/shared/summaryfield.py new file mode 100755 index 000000000..cbbf3e089 --- /dev/null +++ b/src/epilotapi/models/shared/summaryfield.py @@ -0,0 +1,16 @@ +import dataclasses +from typing import Optional +from dataclasses_json import dataclass_json +from epilotapi import utils + + +@dataclass_json +@dataclasses.dataclass +class SummaryField: + r"""SummaryField + Summary Fields are displayed inside list view as a resume of the relation entity. + """ + + display_as: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('display_as') }}) + field: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('field') }}) + diff --git a/src/epilotapi/models/shared/tagsattribute.py b/src/epilotapi/models/shared/tagsattribute.py new file mode 100755 index 000000000..4c6186f5c --- /dev/null +++ b/src/epilotapi/models/shared/tagsattribute.py @@ -0,0 +1,44 @@ +import dataclasses +from typing import Any,Optional +from enum import Enum +from dataclasses_json import dataclass_json +from epilotapi import utils + +class TagsAttributeTypeEnum(str, Enum): + TAGS = "tags" + + +@dataclass_json +@dataclasses.dataclass +class TagsAttribute: + r"""TagsAttribute + Tags + """ + + label: str = dataclasses.field(metadata={'dataclasses_json': { 'letter_case': utils.field_name('label') }}) + name: str = dataclasses.field(metadata={'dataclasses_json': { 'letter_case': utils.field_name('name') }}) + purpose: Optional[list[str]] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('_purpose') }}) + constraints: Optional[dict[str, Any]] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('constraints') }}) + default_value: Optional[Any] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('default_value') }}) + deprecated: Optional[bool] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('deprecated') }}) + entity_builder_disable_edit: Optional[bool] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('entity_builder_disable_edit') }}) + feature_flag: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('feature_flag') }}) + group: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('group') }}) + hidden: Optional[bool] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('hidden') }}) + hide_label: Optional[bool] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('hide_label') }}) + icon: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('icon') }}) + layout: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('layout') }}) + options: Optional[list[str]] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('options') }}) + order: Optional[int] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('order') }}) + placeholder: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('placeholder') }}) + preview_value_formatter: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('preview_value_formatter') }}) + protected: Optional[bool] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('protected') }}) + readonly: Optional[bool] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('readonly') }}) + render_condition: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('render_condition') }}) + required: Optional[bool] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('required') }}) + setting_flag: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('setting_flag') }}) + show_in_table: Optional[bool] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('show_in_table') }}) + suggestions: Optional[list[str]] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('suggestions') }}) + type: Optional[TagsAttributeTypeEnum] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('type') }}) + value_formatter: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('value_formatter') }}) + diff --git a/src/epilotapi/models/shared/taxonomy.py b/src/epilotapi/models/shared/taxonomy.py new file mode 100755 index 000000000..b3fabc168 --- /dev/null +++ b/src/epilotapi/models/shared/taxonomy.py @@ -0,0 +1,18 @@ +import dataclasses +from datetime import date, datetime +from marshmallow import fields +import dateutil.parser +from typing import Optional +from dataclasses_json import dataclass_json +from epilotapi import utils + + +@dataclass_json +@dataclasses.dataclass +class Taxonomy: + name: str = dataclasses.field(metadata={'dataclasses_json': { 'letter_case': utils.field_name('name') }}) + slug: str = dataclasses.field(metadata={'dataclasses_json': { 'letter_case': utils.field_name('slug') }}) + created_at: Optional[datetime] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('created_at'), 'encoder': utils.datetimeisoformat(True), 'decoder': dateutil.parser.isoparse, 'mm_field': fields.DateTime(format='iso') }}) + plural: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('plural') }}) + updated_at: Optional[datetime] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('updated_at'), 'encoder': utils.datetimeisoformat(True), 'decoder': dateutil.parser.isoparse, 'mm_field': fields.DateTime(format='iso') }}) + diff --git a/src/epilotapi/models/shared/taxonomyclassification.py b/src/epilotapi/models/shared/taxonomyclassification.py new file mode 100755 index 000000000..3fee418e0 --- /dev/null +++ b/src/epilotapi/models/shared/taxonomyclassification.py @@ -0,0 +1,18 @@ +import dataclasses +from datetime import date, datetime +from marshmallow import fields +import dateutil.parser +from typing import Optional +from dataclasses_json import dataclass_json +from epilotapi import utils + + +@dataclass_json +@dataclasses.dataclass +class TaxonomyClassification: + name: str = dataclasses.field(metadata={'dataclasses_json': { 'letter_case': utils.field_name('name') }}) + created_at: Optional[datetime] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('created_at'), 'encoder': utils.datetimeisoformat(True), 'decoder': dateutil.parser.isoparse, 'mm_field': fields.DateTime(format='iso') }}) + id: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('id') }}) + parents: Optional[list[str]] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('parents') }}) + updated_at: Optional[datetime] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('updated_at'), 'encoder': utils.datetimeisoformat(True), 'decoder': dateutil.parser.isoparse, 'mm_field': fields.DateTime(format='iso') }}) + diff --git a/src/epilotapi/models/shared/textattribute.py b/src/epilotapi/models/shared/textattribute.py new file mode 100755 index 000000000..72225b704 --- /dev/null +++ b/src/epilotapi/models/shared/textattribute.py @@ -0,0 +1,43 @@ +import dataclasses +from typing import Any,Optional +from enum import Enum +from dataclasses_json import dataclass_json +from epilotapi import utils + +class TextAttributeTypeEnum(str, Enum): + STRING = "string" + + +@dataclass_json +@dataclasses.dataclass +class TextAttribute: + r"""TextAttribute + Textarea or text input + """ + + label: str = dataclasses.field(metadata={'dataclasses_json': { 'letter_case': utils.field_name('label') }}) + name: str = dataclasses.field(metadata={'dataclasses_json': { 'letter_case': utils.field_name('name') }}) + purpose: Optional[list[str]] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('_purpose') }}) + constraints: Optional[dict[str, Any]] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('constraints') }}) + default_value: Optional[Any] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('default_value') }}) + deprecated: Optional[bool] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('deprecated') }}) + entity_builder_disable_edit: Optional[bool] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('entity_builder_disable_edit') }}) + feature_flag: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('feature_flag') }}) + group: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('group') }}) + hidden: Optional[bool] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('hidden') }}) + hide_label: Optional[bool] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('hide_label') }}) + icon: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('icon') }}) + layout: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('layout') }}) + multiline: Optional[bool] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('multiline') }}) + order: Optional[int] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('order') }}) + placeholder: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('placeholder') }}) + preview_value_formatter: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('preview_value_formatter') }}) + protected: Optional[bool] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('protected') }}) + readonly: Optional[bool] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('readonly') }}) + render_condition: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('render_condition') }}) + required: Optional[bool] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('required') }}) + setting_flag: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('setting_flag') }}) + show_in_table: Optional[bool] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('show_in_table') }}) + type: Optional[TextAttributeTypeEnum] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('type') }}) + value_formatter: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('value_formatter') }}) + diff --git a/src/epilotapi/models/shared/triggercondition.py b/src/epilotapi/models/shared/triggercondition.py new file mode 100755 index 000000000..a5d6394ae --- /dev/null +++ b/src/epilotapi/models/shared/triggercondition.py @@ -0,0 +1,15 @@ +import dataclasses +from typing import Any,Optional +from enum import Enum +from dataclasses_json import dataclass_json +from epilotapi import utils +from ..shared import comparison_enum as shared_comparison_enum + + +@dataclass_json +@dataclasses.dataclass +class TriggerCondition: + comparison: shared_comparison_enum.ComparisonEnum = dataclasses.field(metadata={'dataclasses_json': { 'letter_case': utils.field_name('comparison') }}) + source: str = dataclasses.field(metadata={'dataclasses_json': { 'letter_case': utils.field_name('source') }}) + value: Optional[Any] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('value') }}) + diff --git a/src/epilotapi/models/shared/triggerwebhookaction.py b/src/epilotapi/models/shared/triggerwebhookaction.py new file mode 100755 index 000000000..148d578bd --- /dev/null +++ b/src/epilotapi/models/shared/triggerwebhookaction.py @@ -0,0 +1,31 @@ +import dataclasses +from datetime import date, datetime +from marshmallow import fields +import dateutil.parser +from typing import Any,Optional +from enum import Enum +from dataclasses_json import dataclass_json +from epilotapi import utils +from ..shared import triggerwebhookconfig as shared_triggerwebhookconfig +from ..shared import erroroutput as shared_erroroutput +from ..shared import executionstatus_enum as shared_executionstatus_enum +from ..shared import retrystrategy_enum as shared_retrystrategy_enum + + +@dataclass_json +@dataclasses.dataclass +class TriggerWebhookAction: + allow_failure: Optional[bool] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('allow_failure') }}) + config: Optional[shared_triggerwebhookconfig.TriggerWebhookConfig] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('config') }}) + created_automatically: Optional[bool] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('created_automatically') }}) + error_output: Optional[shared_erroroutput.ErrorOutput] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('error_output') }}) + execution_status: Optional[shared_executionstatus_enum.ExecutionStatusEnum] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('execution_status') }}) + flow_action_id: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('flow_action_id') }}) + id: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('id') }}) + name: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('name') }}) + outputs: Optional[dict[str, Any]] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('outputs') }}) + retry_strategy: Optional[shared_retrystrategy_enum.RetryStrategyEnum] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('retry_strategy') }}) + started_at: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('started_at') }}) + type: Optional[Any] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('type') }}) + updated_at: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('updated_at') }}) + diff --git a/src/epilotapi/models/shared/triggerwebhookactionconfig.py b/src/epilotapi/models/shared/triggerwebhookactionconfig.py new file mode 100755 index 000000000..e90483523 --- /dev/null +++ b/src/epilotapi/models/shared/triggerwebhookactionconfig.py @@ -0,0 +1,18 @@ +import dataclasses +from typing import Any,Optional +from dataclasses_json import dataclass_json +from epilotapi import utils +from ..shared import triggerwebhookconfig as shared_triggerwebhookconfig + + +@dataclass_json +@dataclasses.dataclass +class TriggerWebhookActionConfig: + allow_failure: Optional[bool] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('allow_failure') }}) + config: Optional[shared_triggerwebhookconfig.TriggerWebhookConfig] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('config') }}) + created_automatically: Optional[bool] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('created_automatically') }}) + flow_action_id: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('flow_action_id') }}) + id: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('id') }}) + name: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('name') }}) + type: Optional[Any] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('type') }}) + diff --git a/src/epilotapi/models/shared/triggerwebhookconfig.py b/src/epilotapi/models/shared/triggerwebhookconfig.py new file mode 100755 index 000000000..149933f5f --- /dev/null +++ b/src/epilotapi/models/shared/triggerwebhookconfig.py @@ -0,0 +1,12 @@ +import dataclasses +from typing import Optional +from dataclasses_json import dataclass_json +from epilotapi import utils + + +@dataclass_json +@dataclasses.dataclass +class TriggerWebhookConfig: + entity_sources: Optional[list[str]] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('entity_sources') }}) + target_webhook_id: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('target_webhook_id') }}) + diff --git a/src/epilotapi/models/shared/triggerworkflowaction.py b/src/epilotapi/models/shared/triggerworkflowaction.py new file mode 100755 index 000000000..fd0122d95 --- /dev/null +++ b/src/epilotapi/models/shared/triggerworkflowaction.py @@ -0,0 +1,31 @@ +import dataclasses +from datetime import date, datetime +from marshmallow import fields +import dateutil.parser +from typing import Any,Optional +from enum import Enum +from dataclasses_json import dataclass_json +from epilotapi import utils +from ..shared import triggerworkflowconfig as shared_triggerworkflowconfig +from ..shared import erroroutput as shared_erroroutput +from ..shared import executionstatus_enum as shared_executionstatus_enum +from ..shared import retrystrategy_enum as shared_retrystrategy_enum + + +@dataclass_json +@dataclasses.dataclass +class TriggerWorkflowAction: + allow_failure: Optional[bool] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('allow_failure') }}) + config: Optional[shared_triggerworkflowconfig.TriggerWorkflowConfig] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('config') }}) + created_automatically: Optional[bool] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('created_automatically') }}) + error_output: Optional[shared_erroroutput.ErrorOutput] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('error_output') }}) + execution_status: Optional[shared_executionstatus_enum.ExecutionStatusEnum] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('execution_status') }}) + flow_action_id: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('flow_action_id') }}) + id: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('id') }}) + name: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('name') }}) + outputs: Optional[dict[str, Any]] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('outputs') }}) + retry_strategy: Optional[shared_retrystrategy_enum.RetryStrategyEnum] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('retry_strategy') }}) + started_at: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('started_at') }}) + type: Optional[Any] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('type') }}) + updated_at: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('updated_at') }}) + diff --git a/src/epilotapi/models/shared/triggerworkflowactionconfig.py b/src/epilotapi/models/shared/triggerworkflowactionconfig.py new file mode 100755 index 000000000..9bf37b4ba --- /dev/null +++ b/src/epilotapi/models/shared/triggerworkflowactionconfig.py @@ -0,0 +1,18 @@ +import dataclasses +from typing import Any,Optional +from dataclasses_json import dataclass_json +from epilotapi import utils +from ..shared import triggerworkflowconfig as shared_triggerworkflowconfig + + +@dataclass_json +@dataclasses.dataclass +class TriggerWorkflowActionConfig: + allow_failure: Optional[bool] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('allow_failure') }}) + config: Optional[shared_triggerworkflowconfig.TriggerWorkflowConfig] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('config') }}) + created_automatically: Optional[bool] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('created_automatically') }}) + flow_action_id: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('flow_action_id') }}) + id: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('id') }}) + name: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('name') }}) + type: Optional[Any] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('type') }}) + diff --git a/src/epilotapi/models/shared/triggerworkflowcondition.py b/src/epilotapi/models/shared/triggerworkflowcondition.py new file mode 100755 index 000000000..28efe1ae0 --- /dev/null +++ b/src/epilotapi/models/shared/triggerworkflowcondition.py @@ -0,0 +1,16 @@ +import dataclasses +from typing import Any,Optional +from enum import Enum +from dataclasses_json import dataclass_json +from epilotapi import utils +from ..shared import comparison_enum as shared_comparison_enum + + +@dataclass_json +@dataclasses.dataclass +class TriggerWorkflowCondition: + comparison: shared_comparison_enum.ComparisonEnum = dataclasses.field(metadata={'dataclasses_json': { 'letter_case': utils.field_name('comparison') }}) + schema: str = dataclasses.field(metadata={'dataclasses_json': { 'letter_case': utils.field_name('schema') }}) + source: str = dataclasses.field(metadata={'dataclasses_json': { 'letter_case': utils.field_name('source') }}) + value: Optional[Any] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('value') }}) + diff --git a/src/epilotapi/models/shared/triggerworkflowconfig.py b/src/epilotapi/models/shared/triggerworkflowconfig.py new file mode 100755 index 000000000..755a21257 --- /dev/null +++ b/src/epilotapi/models/shared/triggerworkflowconfig.py @@ -0,0 +1,16 @@ +import dataclasses +from typing import Optional +from dataclasses_json import dataclass_json +from epilotapi import utils +from ..shared import assignuserstostep as shared_assignuserstostep +from ..shared import triggerworkflowcondition as shared_triggerworkflowcondition + + +@dataclass_json +@dataclasses.dataclass +class TriggerWorkflowConfig: + assign_steps: Optional[list[shared_assignuserstostep.AssignUsersToStep]] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('assign_steps') }}) + assignees: Optional[list[str]] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('assignees') }}) + conditions: Optional[list[shared_triggerworkflowcondition.TriggerWorkflowCondition]] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('conditions') }}) + target_workflow: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('target_workflow') }}) + diff --git a/src/epilotapi/models/shared/userrelationattribute.py b/src/epilotapi/models/shared/userrelationattribute.py new file mode 100755 index 000000000..48e6afaa8 --- /dev/null +++ b/src/epilotapi/models/shared/userrelationattribute.py @@ -0,0 +1,43 @@ +import dataclasses +from typing import Any,Optional +from enum import Enum +from dataclasses_json import dataclass_json +from epilotapi import utils + +class UserRelationAttributeTypeEnum(str, Enum): + RELATION_USER = "relation_user" + + +@dataclass_json +@dataclasses.dataclass +class UserRelationAttribute: + r"""UserRelationAttribute + User Relationship + """ + + label: str = dataclasses.field(metadata={'dataclasses_json': { 'letter_case': utils.field_name('label') }}) + name: str = dataclasses.field(metadata={'dataclasses_json': { 'letter_case': utils.field_name('name') }}) + purpose: Optional[list[str]] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('_purpose') }}) + constraints: Optional[dict[str, Any]] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('constraints') }}) + default_value: Optional[Any] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('default_value') }}) + deprecated: Optional[bool] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('deprecated') }}) + entity_builder_disable_edit: Optional[bool] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('entity_builder_disable_edit') }}) + feature_flag: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('feature_flag') }}) + group: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('group') }}) + hidden: Optional[bool] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('hidden') }}) + hide_label: Optional[bool] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('hide_label') }}) + icon: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('icon') }}) + layout: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('layout') }}) + multiple: Optional[bool] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('multiple') }}) + order: Optional[int] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('order') }}) + placeholder: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('placeholder') }}) + preview_value_formatter: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('preview_value_formatter') }}) + protected: Optional[bool] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('protected') }}) + readonly: Optional[bool] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('readonly') }}) + render_condition: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('render_condition') }}) + required: Optional[bool] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('required') }}) + setting_flag: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('setting_flag') }}) + show_in_table: Optional[bool] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('show_in_table') }}) + type: Optional[UserRelationAttributeTypeEnum] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('type') }}) + value_formatter: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('value_formatter') }}) + diff --git a/src/epilotapi/models/webhooks/__init__.py b/src/epilotapi/models/webhooks/__init__.py new file mode 100755 index 000000000..f809361ad --- /dev/null +++ b/src/epilotapi/models/webhooks/__init__.py @@ -0,0 +1,2 @@ + +__all__ = [] \ No newline at end of file diff --git a/src/epilotapi/relations.py b/src/epilotapi/relations.py new file mode 100755 index 000000000..9dba120f7 --- /dev/null +++ b/src/epilotapi/relations.py @@ -0,0 +1,137 @@ +import requests +from typing import Any,Optional +from epilotapi.models import shared, operations +from . import utils + +class Relations: + _client: requests.Session + _security_client: requests.Session + _server_url: str + _language: str + _sdk_version: str + _gen_version: str + + def __init__(self, client: requests.Session, security_client: requests.Session, server_url: str, language: str, sdk_version: str, gen_version: str) -> None: + self._client = client + self._security_client = security_client + self._server_url = server_url + self._language = language + self._sdk_version = sdk_version + self._gen_version = gen_version + + + def add_relations(self, request: operations.AddRelationsRequest) -> operations.AddRelationsResponse: + r"""addRelations + Relates one or more entities to parent entity by adding items to a relation attribute + """ + + base_url = self._server_url + + url = utils.generate_url(base_url, "/v1/entity/{slug}/{id}/relations", request.path_params) + + headers = {} + req_content_type, data, json, files = utils.serialize_request_body(request) + if req_content_type != "multipart/form-data" and req_content_type != "multipart/mixed": + headers["content-type"] = req_content_type + query_params = utils.get_query_params(request.query_params) + + client = self._security_client + + r = client.request("POST", url, params=query_params, data=data, json=json, files=files, headers=headers) + content_type = r.headers.get("Content-Type") + + res = operations.AddRelationsResponse(status_code=r.status_code, content_type=content_type) + + if r.status_code == 200: + if utils.match_content_type(content_type, "application/json"): + out = utils.unmarshal_json(r.text, Optional[shared.RelationItem]) + res.relation_item = out + + return res + + + def delete_relation(self, request: operations.DeleteRelationRequest) -> operations.DeleteRelationResponse: + r"""deleteRelation + Removes relation between two entities + """ + + base_url = self._server_url + + url = utils.generate_url(base_url, "/v1/entity/{slug}/{id}/relations/{attribute}/{entity_id}", request.path_params) + + query_params = utils.get_query_params(request.query_params) + + client = self._security_client + + r = client.request("DELETE", url, params=query_params) + content_type = r.headers.get("Content-Type") + + res = operations.DeleteRelationResponse(status_code=r.status_code, content_type=content_type) + + if r.status_code == 204: + pass + + return res + + + def get_relations(self, request: operations.GetRelationsRequest) -> operations.GetRelationsResponse: + r"""getRelations + Returns 1st level direct relations for an entity. + + You can control whether to return the full entity or just the relation item with the `?hydrate` query param. + + Reverse relations i.e. entities referring to this entity are included with the `?include_reverse` query param. + + """ + + base_url = self._server_url + + url = utils.generate_url(base_url, "/v1/entity/{slug}/{id}/relations", request.path_params) + + query_params = utils.get_query_params(request.query_params) + + client = self._security_client + + r = client.request("GET", url, params=query_params) + content_type = r.headers.get("Content-Type") + + res = operations.GetRelationsResponse(status_code=r.status_code, content_type=content_type) + + if r.status_code == 200: + if utils.match_content_type(content_type, "application/json"): + out = utils.unmarshal_json(r.text, Optional[list[Any]]) + res.get_relations_resp = out + + return res + + + def update_relation(self, request: operations.UpdateRelationRequest) -> operations.UpdateRelationResponse: + r"""updateRelation + Updates an existing relation between two entities. + """ + + base_url = self._server_url + + url = utils.generate_url(base_url, "/v1/entity/{slug}/{id}/relations/{attribute}/{entity_id}", request.path_params) + + headers = {} + req_content_type, data, json, files = utils.serialize_request_body(request) + if req_content_type != "multipart/form-data" and req_content_type != "multipart/mixed": + headers["content-type"] = req_content_type + query_params = utils.get_query_params(request.query_params) + + client = self._security_client + + r = client.request("PUT", url, params=query_params, data=data, json=json, files=files, headers=headers) + content_type = r.headers.get("Content-Type") + + res = operations.UpdateRelationResponse(status_code=r.status_code, content_type=content_type) + + if r.status_code == 200: + if utils.match_content_type(content_type, "application/json"): + out = utils.unmarshal_json(r.text, Optional[shared.RelationItem]) + res.relation_item = out + + return res + + \ No newline at end of file diff --git a/src/epilotapi/saved_views.py b/src/epilotapi/saved_views.py new file mode 100755 index 000000000..564815f81 --- /dev/null +++ b/src/epilotapi/saved_views.py @@ -0,0 +1,153 @@ +import requests +from typing import Optional +from epilotapi.models import shared, operations +from . import utils + +class SavedViews: + _client: requests.Session + _security_client: requests.Session + _server_url: str + _language: str + _sdk_version: str + _gen_version: str + + def __init__(self, client: requests.Session, security_client: requests.Session, server_url: str, language: str, sdk_version: str, gen_version: str) -> None: + self._client = client + self._security_client = security_client + self._server_url = server_url + self._language = language + self._sdk_version = sdk_version + self._gen_version = gen_version + + + def create_saved_view(self, request: operations.CreateSavedViewRequest) -> operations.CreateSavedViewResponse: + r"""createSavedView + Creates a new saved view + """ + + base_url = self._server_url + + url = base_url.removesuffix("/") + "/v1/entity/view" + + headers = {} + req_content_type, data, json, files = utils.serialize_request_body(request) + if req_content_type != "multipart/form-data" and req_content_type != "multipart/mixed": + headers["content-type"] = req_content_type + + client = self._security_client + + r = client.request("POST", url, data=data, json=json, files=files, headers=headers) + content_type = r.headers.get("Content-Type") + + res = operations.CreateSavedViewResponse(status_code=r.status_code, content_type=content_type) + + if r.status_code == 201: + if utils.match_content_type(content_type, "application/json"): + out = utils.unmarshal_json(r.text, Optional[shared.SavedViewItem]) + res.saved_view_item = out + + return res + + + def delete_saved_view(self, request: operations.DeleteSavedViewRequest) -> operations.DeleteSavedViewResponse: + r"""deleteSavedView + Deletes a saved view + """ + + base_url = self._server_url + + url = utils.generate_url(base_url, "/v1/entity/view/{id}", request.path_params) + + + client = self._security_client + + r = client.request("DELETE", url) + content_type = r.headers.get("Content-Type") + + res = operations.DeleteSavedViewResponse(status_code=r.status_code, content_type=content_type) + + if r.status_code == 200: + pass + + return res + + + def get_saved_view(self, request: operations.GetSavedViewRequest) -> operations.GetSavedViewResponse: + r"""getSavedView + Gets Saved View configuration by id. + """ + + base_url = self._server_url + + url = utils.generate_url(base_url, "/v1/entity/view/{id}", request.path_params) + + + client = self._security_client + + r = client.request("GET", url) + content_type = r.headers.get("Content-Type") + + res = operations.GetSavedViewResponse(status_code=r.status_code, content_type=content_type) + + if r.status_code == 200: + if utils.match_content_type(content_type, "application/json"): + out = utils.unmarshal_json(r.text, Optional[operations.GetSavedView200ApplicationJSON]) + res.get_saved_view_200_application_json_object = out + + return res + + + def list_saved_views(self) -> operations.ListSavedViewsResponse: + r"""listSavedViews + Get the Saved Views based on the schema + """ + + base_url = self._server_url + + url = base_url.removesuffix("/") + "/v1/entity/views" + + + client = self._security_client + + r = client.request("GET", url) + content_type = r.headers.get("Content-Type") + + res = operations.ListSavedViewsResponse(status_code=r.status_code, content_type=content_type) + + if r.status_code == 200: + if utils.match_content_type(content_type, "application/json"): + out = utils.unmarshal_json(r.text, Optional[operations.ListSavedViews200ApplicationJSON]) + res.list_saved_views_200_application_json_object = out + + return res + + + def update_saved_view(self, request: operations.UpdateSavedViewRequest) -> operations.UpdateSavedViewResponse: + r"""updateSavedView + Updates a saved view + """ + + base_url = self._server_url + + url = utils.generate_url(base_url, "/v1/entity/view/{id}", request.path_params) + + headers = {} + req_content_type, data, json, files = utils.serialize_request_body(request) + if req_content_type != "multipart/form-data" and req_content_type != "multipart/mixed": + headers["content-type"] = req_content_type + + client = self._security_client + + r = client.request("PUT", url, data=data, json=json, files=files, headers=headers) + content_type = r.headers.get("Content-Type") + + res = operations.UpdateSavedViewResponse(status_code=r.status_code, content_type=content_type) + + if r.status_code == 200: + if utils.match_content_type(content_type, "application/json"): + out = utils.unmarshal_json(r.text, Optional[shared.SavedViewItem]) + res.saved_view_item = out + + return res + + \ No newline at end of file diff --git a/src/epilotapi/schemas.py b/src/epilotapi/schemas.py new file mode 100755 index 000000000..4434940b6 --- /dev/null +++ b/src/epilotapi/schemas.py @@ -0,0 +1,204 @@ +import requests +from typing import Optional +from epilotapi.models import shared, operations +from . import utils + +class Schemas: + _client: requests.Session + _security_client: requests.Session + _server_url: str + _language: str + _sdk_version: str + _gen_version: str + + def __init__(self, client: requests.Session, security_client: requests.Session, server_url: str, language: str, sdk_version: str, gen_version: str) -> None: + self._client = client + self._security_client = security_client + self._server_url = server_url + self._language = language + self._sdk_version = sdk_version + self._gen_version = gen_version + + + def create_new_schema_version(self, request: operations.CreateNewSchemaVersionRequest) -> operations.CreateNewSchemaVersionResponse: + r"""createNewSchemaVersion + Create new version of the schema and default draft is false. + """ + + base_url = self._server_url + + url = utils.generate_url(base_url, "/v1/entity/schemas/{slug}", request.path_params) + + headers = {} + req_content_type, data, json, files = utils.serialize_request_body(request) + if req_content_type != "multipart/form-data" and req_content_type != "multipart/mixed": + headers["content-type"] = req_content_type + query_params = utils.get_query_params(request.query_params) + + client = self._security_client + + r = client.request("PUT", url, params=query_params, data=data, json=json, files=files, headers=headers) + content_type = r.headers.get("Content-Type") + + res = operations.CreateNewSchemaVersionResponse(status_code=r.status_code, content_type=content_type) + + if r.status_code == 200: + if utils.match_content_type(content_type, "application/json"): + out = utils.unmarshal_json(r.text, Optional[shared.EntitySchemaItem]) + res.entity_schema_item = out + + return res + + + def delete_schema_by_id(self, request: operations.DeleteSchemaByIDRequest) -> operations.DeleteSchemaByIDResponse: + r"""deleteSchemaById + Delete schema by Id + """ + + base_url = self._server_url + + url = utils.generate_url(base_url, "/v1/entity/schemas/{slug}", request.path_params) + + query_params = utils.get_query_params(request.query_params) + + client = self._security_client + + r = client.request("DELETE", url, params=query_params) + content_type = r.headers.get("Content-Type") + + res = operations.DeleteSchemaByIDResponse(status_code=r.status_code, content_type=content_type) + + if r.status_code == 204: + pass + + return res + + + def get_schema(self, request: operations.GetSchemaRequest) -> operations.GetSchemaResponse: + r"""getSchema + By default gets the latest version of the Schema and to get the specific version of schema pass the id. + """ + + base_url = self._server_url + + url = utils.generate_url(base_url, "/v1/entity/schemas/{slug}", request.path_params) + + query_params = utils.get_query_params(request.query_params) + + client = self._security_client + + r = client.request("GET", url, params=query_params) + content_type = r.headers.get("Content-Type") + + res = operations.GetSchemaResponse(status_code=r.status_code, content_type=content_type) + + if r.status_code == 200: + if utils.match_content_type(content_type, "application/json"): + out = utils.unmarshal_json(r.text, Optional[shared.EntitySchemaItem]) + res.entity_schema_item = out + + return res + + + def get_schema_versions(self, request: operations.GetSchemaVersionsRequest) -> operations.GetSchemaVersionsResponse: + r"""getSchemaVersions + Get all versions of this schema ordered by the latest versions including drafts. + """ + + base_url = self._server_url + + url = utils.generate_url(base_url, "/v1/entity/schemas/{slug}/versions", request.path_params) + + + client = self._security_client + + r = client.request("GET", url) + content_type = r.headers.get("Content-Type") + + res = operations.GetSchemaVersionsResponse(status_code=r.status_code, content_type=content_type) + + if r.status_code == 200: + if utils.match_content_type(content_type, "application/json"): + out = utils.unmarshal_json(r.text, Optional[operations.GetSchemaVersions200ApplicationJSON]) + res.get_schema_versions_200_application_json_object = out + + return res + + + def list_schema_blueprints(self) -> operations.ListSchemaBlueprintsResponse: + r"""listSchemaBlueprints + List canonical versions of all available schemas + """ + + base_url = self._server_url + + url = base_url.removesuffix("/") + "/v1/entity/schemas/blueprints" + + + client = self._security_client + + r = client.request("GET", url) + content_type = r.headers.get("Content-Type") + + res = operations.ListSchemaBlueprintsResponse(status_code=r.status_code, content_type=content_type) + + if r.status_code == 200: + if utils.match_content_type(content_type, "application/json"): + out = utils.unmarshal_json(r.text, Optional[operations.ListSchemaBlueprints200ApplicationJSON]) + res.list_schema_blueprints_200_application_json_object = out + + return res + + + def list_schemas(self, request: operations.ListSchemasRequest) -> operations.ListSchemasResponse: + r"""listSchemas + Get the latest version of local schema + """ + + base_url = self._server_url + + url = base_url.removesuffix("/") + "/v1/entity/schemas" + + query_params = utils.get_query_params(request.query_params) + + client = self._security_client + + r = client.request("GET", url, params=query_params) + content_type = r.headers.get("Content-Type") + + res = operations.ListSchemasResponse(status_code=r.status_code, content_type=content_type) + + if r.status_code == 200: + if utils.match_content_type(content_type, "application/json"): + out = utils.unmarshal_json(r.text, Optional[operations.ListSchemas200ApplicationJSON]) + res.list_schemas_200_application_json_object = out + + return res + + + def list_taxonomy_classifications_for_schema(self, request: operations.ListTaxonomyClassificationsForSchemaRequest) -> operations.ListTaxonomyClassificationsForSchemaResponse: + r"""listTaxonomyClassificationsForSchema + List taxonomy classifications for a given schema + """ + + base_url = self._server_url + + url = utils.generate_url(base_url, "/v1/entity/schemas/{slug}/taxonomy/{taxonomySlug}", request.path_params) + + query_params = utils.get_query_params(request.query_params) + + client = self._security_client + + r = client.request("GET", url, params=query_params) + content_type = r.headers.get("Content-Type") + + res = operations.ListTaxonomyClassificationsForSchemaResponse(status_code=r.status_code, content_type=content_type) + + if r.status_code == 200: + if utils.match_content_type(content_type, "application/json"): + out = utils.unmarshal_json(r.text, Optional[operations.ListTaxonomyClassificationsForSchema200ApplicationJSON]) + res.list_taxonomy_classifications_for_schema_200_application_json_object = out + + return res + + \ No newline at end of file diff --git a/src/epilotapi/sdk.py b/src/epilotapi/sdk.py new file mode 100755 index 000000000..418e562a9 --- /dev/null +++ b/src/epilotapi/sdk.py @@ -0,0 +1,166 @@ + + +import requests +from epilotapi.models import shared +from . import utils + +from .activity import Activity +from .entities import Entities +from .export import Export +from .journeys import Journeys +from .relations import Relations +from .saved_views import SavedViews +from .schemas import Schemas +from .taxonomy import Taxonomy +from .executions import Executions +from .flows import Flows + + +SERVERS = [ + "https://journey-config.sls.epilot.io", +] + + +class EpilotAPI: + + activity: Activity + entities: Entities + export: Export + journeys: Journeys + relations: Relations + saved_views: SavedViews + schemas: Schemas + taxonomy: Taxonomy + executions: Executions + flows: Flows + + _client: requests.Session + _security_client: requests.Session + _security: shared.Security + _server_url: str = SERVERS[0] + _language: str = "python" + _sdk_version: str = "1.1.0" + _gen_version: str = "0.22.0" + + def __init__(self) -> None: + self._client = requests.Session() + self._security_client = requests.Session() + self._init_sdks() + + + def config_server_url(self, server_url: str, params: dict[str, str]): + if params is not None: + self._server_url = utils.replace_parameters(server_url, params) + else: + self._server_url = server_url + + self._init_sdks() + + + def config_client(self, client: requests.Session): + self._client = client + + if self._security is not None: + self._security_client = utils.configure_security_client(self._client, self._security) + self._init_sdks() + + + def config_security(self, security: shared.Security): + self._security = security + self._security_client = utils.configure_security_client(self._client, security) + self._init_sdks() + + + def _init_sdks(self): + + self.activity = Activity( + self._client, + self._security_client, + self._server_url, + self._language, + self._sdk_version, + self._gen_version + ) + + self.entities = Entities( + self._client, + self._security_client, + self._server_url, + self._language, + self._sdk_version, + self._gen_version + ) + + self.export = Export( + self._client, + self._security_client, + self._server_url, + self._language, + self._sdk_version, + self._gen_version + ) + + self.journeys = Journeys( + self._client, + self._security_client, + self._server_url, + self._language, + self._sdk_version, + self._gen_version + ) + + self.relations = Relations( + self._client, + self._security_client, + self._server_url, + self._language, + self._sdk_version, + self._gen_version + ) + + self.saved_views = SavedViews( + self._client, + self._security_client, + self._server_url, + self._language, + self._sdk_version, + self._gen_version + ) + + self.schemas = Schemas( + self._client, + self._security_client, + self._server_url, + self._language, + self._sdk_version, + self._gen_version + ) + + self.taxonomy = Taxonomy( + self._client, + self._security_client, + self._server_url, + self._language, + self._sdk_version, + self._gen_version + ) + + self.executions = Executions( + self._client, + self._security_client, + self._server_url, + self._language, + self._sdk_version, + self._gen_version + ) + + self.flows = Flows( + self._client, + self._security_client, + self._server_url, + self._language, + self._sdk_version, + self._gen_version + ) + + \ No newline at end of file diff --git a/src/epilotapi/taxonomy.py b/src/epilotapi/taxonomy.py new file mode 100755 index 000000000..86b7ca023 --- /dev/null +++ b/src/epilotapi/taxonomy.py @@ -0,0 +1,157 @@ +import requests +from typing import Optional +from epilotapi.models import shared, operations +from . import utils + +class Taxonomy: + _client: requests.Session + _security_client: requests.Session + _server_url: str + _language: str + _sdk_version: str + _gen_version: str + + def __init__(self, client: requests.Session, security_client: requests.Session, server_url: str, language: str, sdk_version: str, gen_version: str) -> None: + self._client = client + self._security_client = security_client + self._server_url = server_url + self._language = language + self._sdk_version = sdk_version + self._gen_version = gen_version + + + def get_taxonomy(self, request: operations.GetTaxonomyRequest) -> operations.GetTaxonomyResponse: + r"""getTaxonomy + Get taxonomy by slug + """ + + base_url = self._server_url + + url = utils.generate_url(base_url, "/v1/entity/taxonomies/{taxonomySlug}", request.path_params) + + + client = self._security_client + + r = client.request("GET", url) + content_type = r.headers.get("Content-Type") + + res = operations.GetTaxonomyResponse(status_code=r.status_code, content_type=content_type) + + if r.status_code == 200: + if utils.match_content_type(content_type, "application/json"): + out = utils.unmarshal_json(r.text, Optional[shared.Taxonomy]) + res.taxonomy = out + + return res + + + def list_taxonomies(self) -> operations.ListTaxonomiesResponse: + r"""listTaxonomies + List taxonomies in an organisation + """ + + base_url = self._server_url + + url = base_url.removesuffix("/") + "/v1/entity/listTaxonomies" + + + client = self._security_client + + r = client.request("GET", url) + content_type = r.headers.get("Content-Type") + + res = operations.ListTaxonomiesResponse(status_code=r.status_code, content_type=content_type) + + if r.status_code == 200: + if utils.match_content_type(content_type, "application/json"): + out = utils.unmarshal_json(r.text, Optional[operations.ListTaxonomies200ApplicationJSON]) + res.list_taxonomies_200_application_json_object = out + + return res + + + def taxonomies_classifications_search(self, request: operations.TaxonomiesClassificationsSearchRequest) -> operations.TaxonomiesClassificationsSearchResponse: + r"""taxonomiesClassificationsSearch + List taxonomy classifications in an organisation based on taxonomy slug + """ + + base_url = self._server_url + + url = base_url.removesuffix("/") + "/v1/entity/taxonomies/classifications:search" + + headers = {} + req_content_type, data, json, files = utils.serialize_request_body(request) + if req_content_type != "multipart/form-data" and req_content_type != "multipart/mixed": + headers["content-type"] = req_content_type + query_params = utils.get_query_params(request.query_params) + + client = self._security_client + + r = client.request("POST", url, params=query_params, data=data, json=json, files=files, headers=headers) + content_type = r.headers.get("Content-Type") + + res = operations.TaxonomiesClassificationsSearchResponse(status_code=r.status_code, content_type=content_type) + + if r.status_code == 200: + if utils.match_content_type(content_type, "application/json"): + out = utils.unmarshal_json(r.text, Optional[operations.TaxonomiesClassificationsSearch200ApplicationJSON]) + res.taxonomies_classifications_search_200_application_json_object = out + + return res + + + def taxonomy_autocomplete(self, request: operations.TaxonomyAutocompleteRequest) -> operations.TaxonomyAutocompleteResponse: + r"""taxonomyAutocomplete + Taxonomies autocomplete + """ + + base_url = self._server_url + + url = utils.generate_url(base_url, "/v1/entity/taxonomies/{taxonomySlug}:autocomplete", request.path_params) + + query_params = utils.get_query_params(request.query_params) + + client = self._security_client + + r = client.request("GET", url, params=query_params) + content_type = r.headers.get("Content-Type") + + res = operations.TaxonomyAutocompleteResponse(status_code=r.status_code, content_type=content_type) + + if r.status_code == 200: + if utils.match_content_type(content_type, "application/json"): + out = utils.unmarshal_json(r.text, Optional[operations.TaxonomyAutocomplete200ApplicationJSON]) + res.taxonomy_autocomplete_200_application_json_object = out + + return res + + + def update_classifications_for_taxonomy(self, request: operations.UpdateClassificationsForTaxonomyRequest) -> operations.UpdateClassificationsForTaxonomyResponse: + r"""updateClassificationsForTaxonomy + Update taxonomies in an organisation based in taxonomy slug + """ + + base_url = self._server_url + + url = utils.generate_url(base_url, "/v1/entity/taxonomies/{taxonomySlug}/classifications", request.path_params) + + headers = {} + req_content_type, data, json, files = utils.serialize_request_body(request) + if req_content_type != "multipart/form-data" and req_content_type != "multipart/mixed": + headers["content-type"] = req_content_type + + client = self._security_client + + r = client.request("POST", url, data=data, json=json, files=files, headers=headers) + content_type = r.headers.get("Content-Type") + + res = operations.UpdateClassificationsForTaxonomyResponse(status_code=r.status_code, content_type=content_type) + + if r.status_code == 200: + if utils.match_content_type(content_type, "application/json"): + out = utils.unmarshal_json(r.text, Optional[operations.UpdateClassificationsForTaxonomy200ApplicationJSON]) + res.update_classifications_for_taxonomy_200_application_json_object = out + + return res + + \ No newline at end of file diff --git a/src/epilotapi/utils/__init__.py b/src/epilotapi/utils/__init__.py new file mode 100755 index 000000000..2f39e5450 --- /dev/null +++ b/src/epilotapi/utils/__init__.py @@ -0,0 +1,2 @@ +from .retries import * +from .utils import * diff --git a/src/epilotapi/utils/retries.py b/src/epilotapi/utils/retries.py new file mode 100755 index 000000000..983d0d462 --- /dev/null +++ b/src/epilotapi/utils/retries.py @@ -0,0 +1,116 @@ +import random +import time + +import requests + + +class BackoffStrategy: + initial_interval: int + max_interval: int + exponent: float + max_elapsed_time: int + + def __init__(self, initial_interval: int, max_interval: int, exponent: float, max_elapsed_time: int): + self.initial_interval = initial_interval + self.max_interval = max_interval + self.exponent = exponent + self.max_elapsed_time = max_elapsed_time + + +class RetryConfig: + strategy: str + backoff: BackoffStrategy + retry_connection_errors: bool + + def __init__(self, strategy: str, retry_connection_errors: bool): + self.strategy = strategy + self.retry_connection_errors = retry_connection_errors + + +class Retries: + config: RetryConfig + status_codes: list[str] + + def __init__(self, config: RetryConfig, status_codes: list[str]): + self.config = config + self.status_codes = status_codes + + +class TemporaryError(Exception): + response: requests.Response + + def __init__(self, response: requests.Response): + self.response = response + + +class PermanentError(Exception): + inner: Exception + + def __init__(self, inner: Exception): + self.inner = inner + + +def retry(fn, retries: Retries): + if retries.config.strategy == 'backoff': + def do_request(): + res: requests.Response + try: + res = fn() + + for code in retries.status_codes: + if "X" in code.upper(): + codeRange = int(code[0]) + + s = res.status_code / 100 + + if s >= codeRange and s < codeRange + 1: + raise TemporaryError(res) + else: + parsed_code = int(code) + + if res.status_code == parsed_code: + raise TemporaryError(res) + except requests.exceptions.ConnectionError as e: + if not retries.config.config.retry_connection_errors: + raise + else: + raise PermanentError(e) + except requests.exceptions.Timeout as e: + if not retries.config.config.retry_connection_errors: + raise + else: + raise PermanentError(e) + except TemporaryError: + raise + except Exception as e: + raise PermanentError(e) + + return res + + return retry_with_backoff(do_request, retries.config.backoff.initial_interval, retries.config.backoff.max_interval, retries.config.backoff.exponent, retries.config.backoff.max_elapsed_time) + else: + fn() + + +def retry_with_backoff(fn, initial_interval=500, max_interval=60000, exponent=1.5, max_elapsed_time=3600000): + start = round(time.time()*1000) + x = 0 + + while True: + try: + return fn() + except PermanentError as e: + raise e.inner + except Exception as e: + now = round(time.time()*1000) + if now - start > max_elapsed_time: + if isinstance(e, TemporaryError): + return e.response + else: + raise + sleep = ((initial_interval/1000) * + exponent**x + random.uniform(0, 1)) + if sleep > max_interval/1000: + sleep = max_interval/1000 + time.sleep(sleep) + x += 1 diff --git a/src/epilotapi/utils/utils.py b/src/epilotapi/utils/utils.py new file mode 100755 index 000000000..d7b94207e --- /dev/null +++ b/src/epilotapi/utils/utils.py @@ -0,0 +1,738 @@ +import base64 +import cgi +import json +import re +from dataclasses import Field, dataclass, fields, is_dataclass, make_dataclass +from datetime import date, datetime +from typing import Callable, Optional, Tuple, Union, get_args, get_origin +from xmlrpc.client import boolean + +import requests +from dacite import from_dict +from dataclasses_json import DataClassJsonMixin + + +class SecurityClient: + client: requests.Session + query_params: dict[str, str] = {} + + def __init__(self, client: requests.Session): + self.client = client + + def request(self, method, url, **kwargs): + params = kwargs.get('params', {}) + kwargs["params"] = self.query_params | params + + return self.client.request(method, url, **kwargs) + + +def configure_security_client(client: requests.Session, security: dataclass): + client = SecurityClient(client) + + sec_fields: Tuple[Field, ...] = fields(security) + for sec_field in sec_fields: + value = getattr(security, sec_field.name) + if value is None: + continue + + metadata = sec_field.metadata.get('security') + if metadata is None: + continue + if metadata.get('option'): + _parse_security_option(client, value) + return + elif metadata.get('scheme'): + _parse_security_scheme(client, metadata, value) + + return client + + +def _parse_security_option(client: SecurityClient, option: dataclass): + opt_fields: Tuple[Field, ...] = fields(option) + for opt_field in opt_fields: + metadata = opt_field.metadata.get('security') + if metadata is None or metadata.get('scheme') is None: + continue + _parse_security_scheme(client, metadata.get( + 'scheme'), getattr(option, opt_field.name)) + + +def _parse_security_scheme(client: SecurityClient, scheme_metadata: dict, scheme: dataclass): + scheme_type = scheme_metadata.get('type') + sub_type = scheme_metadata.get('sub_type') + + if scheme_type == 'http' and sub_type == 'basic': + _parse_basic_auth_scheme(client, scheme) + return + + scheme_fields: Tuple[Field, ...] = fields(scheme) + for scheme_field in scheme_fields: + metadata = scheme_field.metadata.get('security') + if metadata is None or metadata.get('field_name') is None: + continue + + header_name = metadata.get('field_name') + value = getattr(scheme, scheme_field.name) + + if scheme_type == "apiKey": + if sub_type == 'header': + client.client.headers[header_name] = value + elif sub_type == 'query': + client.query_params[header_name] = value + elif sub_type == 'cookie': + client.client.cookies[header_name] = value + else: + raise Exception('not supported') + elif scheme_type == "openIdConnect": + client.client.headers[header_name] = value + elif scheme_type == 'oauth2': + client.client.headers[header_name] = value + elif scheme_type == 'http': + if sub_type == 'bearer': + client.client.headers[header_name] = value + else: + raise Exception('not supported') + else: + raise Exception('not supported') + + +def _parse_basic_auth_scheme(client: SecurityClient, scheme: dataclass): + username, password = "" + + scheme_fields: Tuple[Field, ...] = fields(scheme) + for scheme_field in scheme_fields: + metadata = scheme_field.metadata.get('security') + if metadata is None or metadata.get('field_name') is None: + continue + + field_name = metadata.get('field_name') + value = getattr(scheme, scheme_field.name) + + if field_name == 'username': + username = value + if field_name == 'password': + password = value + + data = f'{username}:{password}'.encode() + client.client.headers['Authorization'] = f'Basic {base64.b64encode(data)}' + + +def generate_url(server_url: str, path: str, path_params: dataclass) -> str: + param_fields: Tuple[Field, ...] = fields(path_params) + for f in param_fields: + param_metadata = f.metadata.get('path_param') + if not param_metadata: + continue + if param_metadata.get('style', 'simple') == 'simple': + param = getattr(path_params, f.name) + if type(param) is list: + pp_vals: list[str] = [] + for pp_val in param: + pp_vals.append(str(pp_val)) + path = path.replace( + '{' + param_metadata.get('field_name', f.name) + '}', ",".join(pp_vals), 1) + elif type(param) is dict: + pp_vals: list[str] = [] + for pp_key in param: + if param_metadata.get('explode'): + pp_vals.append(f"{pp_key}={param[pp_key]}") + else: + pp_vals.append(f"{pp_key},{param[pp_key]}") + path = path.replace( + '{' + param_metadata.get('field_name', f.name) + '}', ",".join(pp_vals), 1) + elif not isinstance(param, (str, int, float, complex, bool)): + pp_vals: list[str] = [] + attrs: list[str] = [p for p in dir(param) if not p.startswith( + '__') and not callable(getattr(param, p))] + for attr in attrs: + field: Field = _get_field_from_attr(param, attr) + + param_value_metadata = field.metadata.get('path_param') + if not param_value_metadata: + continue + + parm_name = param_value_metadata.get('field_name', f.name) + + param_field_val = getattr(param, attr) + if field is not None and is_optional(field) and param_field_val is None: + continue + elif param_metadata.get('explode'): + pp_vals.append(f"{parm_name}={param_field_val}") + else: + pp_vals.append(f"{parm_name},{param_field_val}") + path = path.replace( + '{' + param_metadata.get('field_name', f.name) + '}', ",".join(pp_vals), 1) + else: + path = path.replace( + '{' + param_metadata.get('field_name', f.name) + '}', str(param), 1) + + return server_url.removesuffix("/") + path + + +def _get_field_from_attr(obj, attr: str) -> Field: + pp_fields: Tuple[Field, ...] = fields(obj) + for pp_field in pp_fields: + if pp_field.name == attr: + return pp_field + return None + + +def is_optional(field): + return get_origin(field) is Union and type(None) in get_args(field) + + +def replace_parameters(string_with_params: str, params: dict[str, str]) -> str: + for key, value in params.items(): + string_with_params = string_with_params.replace( + '{' + key + '}', value) + + return string_with_params + + +def get_query_params(query_params: dataclass) -> dict[str, list[str]]: + if query_params is None: + return {} + + params: dict[str, list[str]] = {} + + param_fields: Tuple[Field, ...] = fields(query_params) + for f in param_fields: + metadata = f.metadata.get('query_param') + if not metadata: + continue + + param_name = f.name + f_name = metadata.get("field_name") + serialization = metadata.get('serialization', '') + if serialization != '': + params = params | _get_serialized_query_params( + metadata, f_name, getattr(query_params, param_name)) + else: + style = metadata.get('style', 'form') + if style == 'deepObject': + params = params | _get_deep_object_query_params( + metadata, f_name, getattr(query_params, param_name)) + elif style == 'form': + params = params | _get_form_query_params( + metadata, f_name, getattr(query_params, param_name)) + else: + raise Exception('not yet implemented') + return params + + +def get_headers(headers_params: dataclass) -> dict[str, str]: + if headers_params is None: + return {} + + headers: dict[str, str] = {} + + param_fields: Tuple[Field, ...] = fields(headers_params) + for f in param_fields: + metadata = f.metadata.get('header') + if not metadata: + continue + + value = _serialize_header(metadata.get( + 'explode', False), getattr(headers_params, f.name)) + + if value != '': + headers[metadata.get('field_name', f.name)] = value + + return headers + + +def _get_serialized_query_params(metadata: dict, field_name: str, obj: any) -> dict[str, list[str]]: + params: dict[str, list[str]] = {} + + serialization = metadata.get('serialization', '') + if serialization == 'json': + params[metadata.get("field_name", field_name)] = marshal_json(obj) + + return params + + +def _get_deep_object_query_params(metadata: dict, field_name: str, obj: any) -> dict[str, list[str]]: + params: dict[str, list[str]] = {} + + if is_dataclass(obj): + obj_fields: Tuple[Field, ...] = fields(obj) + for obj_field in obj_fields: + obj_param_metadata = obj_field.metadata.get('query_param') + if not obj_param_metadata: + continue + params[ + f'{metadata.get("field_name", field_name)}[{obj_param_metadata.get("field_name", obj_field.name)}]'] = [ + getattr(obj, obj_field.name)] + elif isinstance(obj, dict): + for key, value in obj.items(): + if isinstance(value, list): + params[f'{metadata.get("field_name", field_name)}[{key}]'] = value + else: + params[f'{metadata.get("field_name", field_name)}[{key}]'] = [ + value] + return params + + +def _get_query_param_field_name(obj_field: Field) -> str: + obj_param_metadata = obj_field.metadata.get('query_param') + + if not obj_param_metadata: + return "" + + return obj_param_metadata.get("field_name", obj_field.name) + + +def _get_form_query_params(metadata: dict, field_name: str, obj: any) -> dict[str, list[str]]: + return _populate_form(field_name, metadata.get("explode", True), obj, _get_query_param_field_name) + + +def serialize_request_body(request: dataclass) -> Tuple[str, any, any]: + if request is None: + return None, None, None, None + + request_val = getattr(request, "request") + if request_val is None: + raise Exception("request body not found") + + request_fields: Tuple[Field, ...] = fields(request) + request_metadata = None + + for f in request_fields: + if f.name == "request": + request_metadata = f.metadata.get('request') + break + + if request_metadata is not None: + # single request + return serialize_content_type(request_metadata, request_val) + + request_fields: Tuple[Field, ...] = fields(request_val) + for f in request_fields: + req = getattr(request_val, f.name) + if req is None: + continue + + request_metadata = f.metadata.get('request') + if request_metadata is None: + raise Exception( + f'missing request tag on request body field {f.name}') + + return serialize_content_type(request_metadata, request_val) + + +def serialize_content_type(metadata, request: dataclass) -> Tuple[str, any, list[list[any]]]: + media_type = metadata.get('media_type', 'application/octet-stream') + if re.match(r'text/plain', media_type) != None: + return media_type, serialize_text(request), None, None + if re.match(r'(application|text)\/.*?\+*json.*', media_type) != None: + return media_type, None, serialize_json(request), None + if re.match(r'multipart\/.*', media_type) != None: + return serialize_multipart_form(media_type, request) + if re.match(r'application\/x-www-form-urlencoded.*', media_type) != None: + return media_type, serialize_form(request, 'request'), None, None + if isinstance(request, (bytes, bytearray)): + return media_type, request, None, None + if isinstance(request, str): + return media_type, request, None, None + + raise Exception( + f"invalid request body type {type(request)} for mediaType {metadata['media_type']}") + + +def serialize_text(request: dataclass) -> str: + request_fields: Tuple[Field, ...] = fields(request) + for f in request_fields: + field_metadata = f.metadata.get('request') + if field_metadata is None: + continue + + field_value = getattr(request, f.name) + if field_value is None or not isinstance(field_value, str): + continue + return field_value + return None + + +def serialize_json(request: dataclass) -> str: + request_fields: Tuple[Field, ...] = fields(request) + for f in request_fields: + field_metadata = f.metadata.get('request') + if field_metadata is None: + continue + + field_value = getattr(request, f.name) + if field_value is None: + continue + + return json.dumps(field_value) + return marshal_json(request) + + +def dict_to_dataclass(orig: dict[str, any], dataclass_type: str): + cast_type = str(dataclass_type).replace( + "typing.Optional[", "").replace("]", "") + + cast_modules = cast_type.split(".")[:-1] + if cast_modules[0] == "typing": + # This is a built-in type, not a data_class + return orig + + module = None + for m in cast_modules: + if not module: + module = __import__(m) + else: + module = getattr(module, m) + + cast_type = cast_type.split(".")[-1:][0] + cast_class = getattr(module, cast_type) + data_class = from_dict(cast_class, orig) + data_fields = fields(data_class) + for f in data_fields: + name = f.name + for meta_key, meta_value in f.metadata.items(): + try: + name = meta_value["field_name"] + break + except KeyError: + continue + + try: + original_value = orig[f.name] + except KeyError: + original_value = orig[name] + + setattr(data_class, f.name, original_value) + return data_class + + +def parse_field(field: Field, data_class: dataclass, metadata_string: str): + field_metadata = field.metadata.get(metadata_string) + if field_metadata is None: + return None + + field_value = getattr(data_class, field.name) + if field_value is None: + return None + try: + return dict_to_dataclass(field_value, field.type) + except Exception: + return field_value + + +def serialize_multipart_form(media_type: str, request: dataclass) -> Tuple[str, any, list[list[any]]]: + form: list[list[any]] = [] + request_fields: Tuple[Field, ...] = fields(request) + for f in request_fields: + field_value = parse_field(f, request, 'request') + if not field_value: + continue + + if is_dataclass(field_value): + value_request_fields = fields(field_value) + + for field_value_f in value_request_fields: + field_metadata = field_value_f.metadata.get('multipart_form') + + if not field_metadata: + continue + if field_metadata.get("file") is True: + file = getattr(field_value, field_value_f.name) + file = dict_to_dataclass(file, field_value_f.type) + file_fields = fields(file) + + file_name = "" + field_name = "" + content = bytes() + + for file_field in file_fields: + file_metadata = file_field.metadata.get( + 'multipart_form') + if file_metadata is None: + continue + if file_metadata.get("content") is True: + content = getattr(file, file_field.name) + else: + field_name = file_metadata.get( + "field_name", file_field.name) + file_name = getattr(file, file_field.name) + if field_name == "" or file_name == "" or content == bytes(): + raise Exception('invalid multipart/form-data file') + + form.append([field_name, [file_name, content]]) + elif field_metadata.get("json") is True: + to_append = [field_metadata.get("field_name", field_value_f.name), [ + None, marshal_json(getattr(field_value, field_value_f.name)), "application/json"]] + form.append(to_append) + else: + val = getattr(field_value, field_value_f.name) + field_name = field_metadata.get( + "field_name", field_value_f.name) + if isinstance(val, list): + for value in val: + form.append([field_name + "[]", [None, value]]) + else: + form.append([field_name, [None, val]]) + return media_type, None, None, form + + +def _get_form_field_name(obj_field: Field) -> str: + obj_param_metadata = obj_field.metadata.get('form') + + if not obj_param_metadata: + return "" + + return obj_param_metadata.get("field_name", obj_field.name) + + +def serialize_dict(original: dict, explode: bool, field_name, existing: Optional[dict[str, list[str]]]) -> dict[ + str, list[str]]: + if existing is None: + existing = [] + + if explode is True: + for k, v in original.items(): + if k not in existing: + existing[k] = [] + existing[k].append(v) + else: + temp = [] + for k, v in original.items(): + temp.append(str(k)) + temp.append(str(v)) + if field_name not in existing: + existing[field_name] = [] + existing[field_name].append(",".join(temp)) + return existing + + +def serialize_form(data: dataclass, meta_string: str) -> dict[str, any]: + form: dict[str, list[str]] = {} + request_fields: Tuple[Field, ...] = fields(data) + + for f in request_fields: + field_value = parse_field(f, data, meta_string) + if not field_value: + continue + + if is_dataclass(field_value): + value_fields = fields(field_value) + for value_f in value_fields: + value = parse_field(value_f, field_value, 'form') + if not value: + continue + metadata = value_f.metadata.get('form') + if metadata is None: + continue + + f_name = metadata["field_name"] + if is_dataclass(value): + if "style" not in metadata or ("json" in metadata and metadata["json"] is True): + if f_name not in form: + form[f_name] = [] + form[f_name].append(json.dumps( + getattr(field_value, f_name))) + else: + if "style" in metadata and metadata["style"] == "form": + form = form | serialize_form(value, "form") + + elif isinstance(value, dict): + if "json" in metadata and metadata["json"] is True: + if f_name not in form: + form[f_name] = [] + form[f_name].append(json.dumps(value)) + else: + explode = "explode" in metadata and metadata["explode"] is True + serialize_dict(value, explode, f_name, form) + elif isinstance(value, list): + if "explode" in metadata and metadata["explode"] is True: + if f_name not in form: + form[f_name] = [] + for item in value: + form[f_name].append(item) + else: + if value_f.name not in form: + form[f_name] = [] + form[f_name].append(",".join(value)) + else: + if value_f.name not in form: + form[f_name] = [] + form[f_name].append(str(value)) + elif isinstance(data, dict): + for key, value in data.items(): + if isinstance(value, list): + for v in value: + if not key in form: + form[key] = [] + form[key].append(v) + else: + if not key in form: + form[key] = [] + form[key].append(value) + elif isinstance(data, list): + for value in data: + if isinstance(value, list): + for v in value: + if not key in form: + form[meta_string] = [] + form[meta_string].append(v) + else: + if not key in form: + form[meta_string] = [] + form[meta_string].append(value) + return form + + +def _populate_form(field_name: str, explode: boolean, obj: any, get_field_name_func: Callable) -> dict[str, list[str]]: + params: dict[str, str | list[str]] = {} + + if is_dataclass(obj): + items = [] + + obj_fields: Tuple[Field, ...] = fields(obj) + for obj_field in obj_fields: + obj_field_name = get_field_name_func(obj_field) + if obj_field_name == "": + continue + + if explode: + params[obj_field_name] = [getattr(obj, obj_field.name)] + else: + items.append( + f'{obj_field_name},{getattr(obj, obj_field.name)}') + + if len(items) > 0: + params[field_name] = [','.join(items)] + elif isinstance(obj, dict): + items = [] + for key, value in obj.items(): + if explode: + _populate_simple_param(params, key, value) + else: + items.append(f'{key},{value}') + + if len(items) > 0: + params[field_name] = [','.join(items)] + elif isinstance(obj, list): + items = [] + + for value in obj: + if explode: + if not field_name in params: + params[field_name] = [] + params[field_name].append(value) + else: + items.append(value) + + if len(items) > 0: + params[field_name] = [','.join([str(item) for item in items])] + else: + _populate_simple_param(params, field_name, obj) + + return params + + +def _populate_simple_param(params: dict[str, str | list[str]], field_name: str, value: any): + # Python uses True and False instead of true and false for booleans; + # This json encodes the values _only_ if the value is a boolean. + if value is True or value is False: + params[field_name] = json.dumps(value) + else: + params[field_name] = value + + +def _serialize_header(explode: boolean, obj: any) -> str: + if is_dataclass(obj): + items = [] + obj_fields: Tuple[Field, ...] = fields(obj) + for obj_field in obj_fields: + obj_param_metadata = obj_field.metadata.get('header') + + if not obj_param_metadata: + continue + + obj_field_name = obj_param_metadata.get( + "field_name", obj_field.name) + if obj_field_name == "": + continue + + if explode: + items.append( + f'{obj_field_name}={getattr(obj, obj_field.name)}') + else: + items.append(obj_field_name) + items.append(getattr(obj, obj_field.name)) + + if len(items) > 0: + return [','.join(items)] + elif isinstance(obj, dict): + items = [] + + for key, value in obj.items(): + if explode: + items.append(f'{key}={value}') + else: + items.append(key) + items.append(value) + + if len(items) > 0: + return ','.join([str(item) for item in items]) + elif isinstance(obj, list): + return ','.join(obj) + else: + return f'{obj}' + + +def unmarshal_json(data, t): + d = json.loads(data) + return dict_to_dataclass(d, t) + + +def marshal_json(c): + Marshal = make_dataclass('Marshal', [('res', type(c))], + bases=(DataClassJsonMixin,)) + m = Marshal(res=c) + d = m.to_dict() + return json.dumps(d["res"]) + + +def match_content_type(content_type: str, pattern: str) -> boolean: + if content_type == pattern or pattern == "*" or pattern == "*/*": + return True + + media_type, _ = cgi.parse_header(content_type) + + if media_type == pattern: + return True + + parts = media_type.split("/") + if len(parts) == 2: + if f'{parts[0]}/*' == pattern or f'*/{parts[1]}' == pattern: + return True + + return False + + +def datetimeisoformat(optional: bool): + def isoformatoptional(v): + if optional and v is None: + return None + return datetime.isoformat(v) + + return isoformatoptional + + +def dateisoformat(optional: bool): + def isoformatoptional(v): + if optional and v is None: + return None + return date.isoformat(v) + + return isoformatoptional + + +def field_name(name): + def override(_, _field_name=name): + return _field_name + + return override