Workflow

The Workflow module provides functionality for working with workflows.

class Workflow(api, uuid, data={})[source]

Bases: Base

Parameters:
BASE_ENDPOINT = 'workflows/'
__init__(api, uuid, data={})[source]

Initialize a workflow instance.

Parameters:
  • api (GeoboxClient) – The GeoboxClient instance for making requests.

  • uuid (str) – The unique identifier for the workflow.

  • data (Dict) – The response data of the workflow.

classmethod get_workflows(api, **kwargs)[source]

Get list of workflows with optional filtering and pagination.

Parameters:

api (GeoboxClient) – The GeoboxClient instance for making requests.

Keyword Arguments:
  • q (str) – query filter based on OGC CQL standard. e.g. “field1 LIKE ‘%GIS%’ AND created_at > ‘2021-01-01’”

  • search (str) – search term for keyword-based searching among search_fields or all textual fields if search_fields does not have value. NOTE: if q param is defined this param will be ignored.

  • search_fields (str) – comma separated list of fields for searching.

  • order_by (str) – comma separated list of fields for sorting results [field1 A|D, field2 A|D, …]. e.g. name A, type D. NOTE: “A” denotes ascending order and “D” denotes descending order.

  • return_count (bool) – Whether to return total count. default is False.

  • skip (int) – Number of items to skip. default is 0.

  • limit (int) – Number of items to return. default is 10.

  • user_id (int) – Specific user. privileges required.

  • shared (bool) – Whether to return shared workflows. default is False.

Returns:

A list of workflow instances or the total number of workflows.

Return type:

List[Workflow] | int

Example

>>> from geobox import GeoboxClient
>>> from geobox.workflow import Workflow
>>> client = GeoboxClient()
>>> workflows = Workflow.get_workflows(client, q="name LIKE '%My workflow%'")
or
>>> workflows = client.get_workflows(q="name LIKE '%My workflow%'")
classmethod create_workflow(api, name, display_name=None, description=None, settings={}, thumbnail=None, user_id=None)[source]

Create a new workflow.

Parameters:
  • api (GeoboxClient) – The GeoboxClient instance for making requests.

  • name (str) – The name of the Workflow.

  • display_name (str) – The display name of the workflow.

  • description (str) – The description of the workflow.

  • settings (Dict) – The settings of the workflow.

  • thumbnail (str) – The thumbnail of the workflow.

  • user_id (int) – Specific user. privileges workflow.

Returns:

The newly created workflow instance.

Return type:

Workflow

Raises:

ValidationError – If the workflow data is invalid.

Example

>>> from geobox import GeoboxClient
>>> from geobox.workflow import Workflow
>>> client = GeoboxClient()
>>> workflow = Workflow.create_workflow(client, name="my_workflow")
or
>>> workflow = client.create_workflow(name="my_workflow")
classmethod get_workflow(api, uuid, user_id=None)[source]

Get a workflow by its UUID.

Parameters:
  • api (GeoboxClient) – The GeoboxClient instance for making requests.

  • uuid (str) – The UUID of the workflow to get.

  • user_id (int) – Specific user. privileges required.

Returns:

The workflow object.

Return type:

Workflow

Raises:

NotFoundError – If the workflow with the specified UUID is not found.

Example

>>> from geobox import GeoboxClient
>>> from geobox.workflow import Workflow
>>> client = GeoboxClient()
>>> workflow = Workflow.get_workflow(client, uuid="12345678-1234-5678-1234-567812345678")
or
>>> workflow = client.get_workflow(uuid="12345678-1234-5678-1234-567812345678")
classmethod get_workflow_by_name(api, name, user_id=None)[source]

Get a workflow by name

Parameters:
  • api (GeoboxClient) – The GeoboxClient instance for making requests.

  • name (str) – the name of the workflow to get

  • user_id (int, optional) – specific user. privileges required.

Returns:

returns the workflow if a workflow matches the given name, else None

Return type:

Workflow | None

Example

>>> from geobox import GeoboxClient
>>> from geobox.workflow import Workflow
>>> client = GeoboxClient()
>>> workflow = Workflow.get_workflow_by_name(client, name='test')
or
>>> workflow = client.get_workflow_by_name(name='test')
update(**kwargs)[source]

Update the workflow.

Keyword Arguments:
  • name (str) – The name of the workflow.

  • display_name (str) – The display name of the workflow.

  • description (str) – The description of the workflow.

  • settings (Dict) – The settings of the workflow.

  • thumbnail (str) – The thumbnail of the workflow.

Returns:

The updated workflow data.

Return type:

Dict

Raises:

ValidationError – If the workflow data is invalid.

Example

>>> from geobox import GeoboxClient
>>> from geobox.workflow import Workflow
>>> client = GeoboxClient()
>>> workflow = Workflow.get_workflow(client, uuid="12345678-1234-5678-1234-567812345678")
>>> workflow.update_workflow(display_name="New Display Name")
delete()[source]

Delete the Workflow.

Returns:

None

Return type:

None

Example

>>> from geobox import GeoboxClient
>>> from geobox.workflow import Workflow
>>> client = GeoboxClient()
>>> workflow = Workflow.get_workflow(client, uuid="12345678-1234-5678-1234-567812345678")
>>> workflow.delete()
property thumbnail: str

Get the thumbnail URL of the Workflow.

Returns:

The thumbnail of the Workflow.

Return type:

str

Example

>>> from geobox import GeoboxClient
>>> from geobox.workflow import Workflow
>>> client = GeoboxClient()
>>> workflow = Workflow.get_workflow(client, uuid="12345678-1234-5678-1234-567812345678")
>>> workflow.thumbnail
share(users)[source]

Shares the workflow with specified users.

Parameters:

users (List[User]) – The list of user objects to share the workflow with.

Returns:

None

Return type:

None

Example

>>> from geobox import GeoboxClient
>>> from geobox.workflow import Workflow
>>> client = GeoboxClient()
>>> workflow = Workflow.get_workflow(client, uuid="12345678-1234-5678-1234-567812345678")
>>> users = client.search_users(search='John')
>>> workflow.share(users=users)
unshare(users)[source]

Unshares the workflow with specified users.

Parameters:

users (List[User]) – The list of user objects to unshare the workflow with.

Returns:

None

Return type:

None

Example

>>> from geobox import GeoboxClient
>>> from geobox.workflow import Workflow
>>> client = GeoboxClient()
>>> workflow = Workflow.get_workflow(client, uuid="12345678-1234-5678-1234-567812345678")
>>> users = client.search_users(search='John')
>>> workflow.unshare(users=users)
get_shared_users(search=None, skip=0, limit=10)[source]

Retrieves the list of users the workflow is shared with.

Parameters:
  • search (str, optional) – The search query.

  • skip (int, optional) – The number of users to skip.

  • limit (int, optional) – The maximum number of users to retrieve.

Returns:

The list of shared users.

Return type:

List[User]

Example

>>> from geobox import GeoboxClient
>>> from geobox.workflow import Workflow
>>> client = GeoboxClient()
>>> workflow = Workflow.get_workflow(client, uuid="12345678-1234-5678-1234-567812345678")
>>> workflow.get_shared_users(search='John', skip=0, limit=10)