diff --git a/hubspot3/base.py b/hubspot3/base.py index a4a5583..ee7816f 100644 --- a/hubspot3/base.py +++ b/hubspot3/base.py @@ -110,9 +110,10 @@ def _prepare_request_auth(self, subpath, params, data, opts): params["hapikey"] = params.get("hapikey") or self.api_key def _prepare_request( - self, subpath, params, data, opts, doseq=False, query="", retried=False + self, subpath, params, data, opts, doseq=False, query="", retried=False, properties=None ): params = params or {} + properties = properties or [] self._prepare_request_auth(subpath, params, data, opts) if opts.get("hub_id") or opts.get("portal_id"): @@ -139,6 +140,9 @@ def _prepare_request( if data and headers["Content-Type"] == "application/json" and not retried: data = json.dumps(data) + for hs_property in properties: + url += '&properties={}'.format(hs_property) + return url, headers, data def _create_request(self, conn, method, url, headers, data): @@ -221,6 +225,7 @@ def _call_raw( doseq=False, query="", retried=False, + properties=None, **options ): opts = self.options.copy() @@ -229,7 +234,11 @@ def _call_raw( debug = opts.get("debug") url, headers, data = self._prepare_request( - subpath, params, data, opts, doseq=doseq, query=query, retried=retried + subpath, params, data, opts, + doseq=doseq, + query=query, + retried=retried, + properties=properties ) if debug: @@ -343,6 +352,7 @@ def _call( doseq: bool = False, query: str = "", raw: bool = False, + properties: list = None, **options ): result = self._call_raw( @@ -353,6 +363,7 @@ def _call( doseq=doseq, query=query, retried=False, + properties=properties, **options ) return result if raw else self._digest_result(result.body) diff --git a/hubspot3/tickets.py b/hubspot3/tickets.py index 4bb8f36..f55147b 100644 --- a/hubspot3/tickets.py +++ b/hubspot3/tickets.py @@ -42,26 +42,36 @@ def create( ticket_data.append({"name": "hs_pipeline_stage", "value": stage}) return self._call("objects/tickets", data=ticket_data, method="POST", **options) - def get(self, ticket_id: str, include_deleted: bool = False, **options) -> Dict: + def update(self, ticket_id: str, data: dict, **options) -> Dict: + return self._call( + "objects/tickets/{}".format(ticket_id), method="PUT", data=data, **options + ) + + def get( + self, ticket_id: str, properties: list = None, include_deleted: bool = False, **options + ) -> Dict: """ get a ticket by its ticket_id TODO: add properties support :see: https://developers.hubspot.com/docs/methods/tickets/get_ticket_by_id """ + properties = properties or ["subject", "content", "hs_pipeline", "hs_pipeline_stage"] params = options.pop("params", {}) params.update({"includeDeletes": include_deleted}) options.update({"params": params}) return self._call( - "objects/tickets/{}".format(ticket_id), method="GET", **options + "objects/tickets/{}".format(ticket_id), method="GET", properties=properties, **options ) - def get_all(self, limit: int = -1, **options) -> list: + def get_all(self, properties: list = None, limit: int = -1, **options) -> list: """ Get all tickets in hubspot :see: https://developers.hubspot.com/docs/methods/tickets/get-all-tickets """ + properties = properties or ["subject", "content", "hs_pipeline", "hs_pipeline_stage"] + finished = False output = [] # type: list offset = 0 @@ -71,6 +81,7 @@ def get_all(self, limit: int = -1, **options) -> list: "objects/tickets/paged", method="GET", params={"offset": offset}, + properties=properties, **options ) output.extend(batch["objects"]) diff --git a/setup.cfg b/setup.cfg index 885b668..befd103 100644 --- a/setup.cfg +++ b/setup.cfg @@ -6,4 +6,4 @@ ignore_missing_imports = True [flake8] ignore = N802,N807,W503 max-line-length = 100 -max-complexity = 20 +max-complexity = 20 \ No newline at end of file