diff --git a/qfieldcloud_sdk/cli.py b/qfieldcloud_sdk/cli.py index 448506b..7c0fcd4 100755 --- a/qfieldcloud_sdk/cli.py +++ b/qfieldcloud_sdk/cli.py @@ -225,6 +225,24 @@ def list_projects(ctx: Context, include_public: bool, **opts) -> None: log("User does not have any projects yet.") +@cli.command() +@click.argument("project_id") +@click.pass_context +def get_project(ctx: Context, project_id: str) -> None: + """Get QFieldCloud project data.""" + + project: Dict[str, Any] = ctx.obj["client"].get_project(project_id) + + if ctx.obj["format_json"]: + print_json(project) + else: + if project: + log("Project data:") + log(format_project_table([project])) + else: + log("User does not have access to projects yet.") + + @cli.command() @click.argument("project_id") @click.option( diff --git a/qfieldcloud_sdk/sdk.py b/qfieldcloud_sdk/sdk.py index 8b9d409..a975809 100644 --- a/qfieldcloud_sdk/sdk.py +++ b/qfieldcloud_sdk/sdk.py @@ -377,6 +377,27 @@ def list_projects( ) return cast(List, payload) + def get_project( + self, + project_id: str, + ) -> Dict[str, Any]: + """Get project data. + + Args: + project_id: the project data to get data for. + + Returns: + A dictionary containing project details. + + Example: + ```python + client.get_project(project_id) + ``` + """ + payload = self._request_json("GET", f"projects/{project_id}") + + return cast(Dict, payload) + def list_remote_files( self, project_id: str, skip_metadata: bool = True ) -> List[Dict[str, Any]]: