Application

token_auth = dmda.DomoTokenAuth(
    domo_instance="domo-alpha",
    domo_access_token=os.environ["ALPHA_ACCESS_TOKEN"],
)

What are applications?

Applications tend to be tooling that domo implemented on the executor framework or extensions to domo products that originated as custom apps that have been fully integrated into the UI.

For example Publish started out as a 3rd party app that was later integrated into domo as an App, and then later received dedicated API paths.

Similarly Remote DomoStats / Observability metrics started out as 3rd party scripting, which was later integrated into Domo’s “Executor Framework” an internal framework for managing java / lambda functions, now defined under the application APIs.

Note, pieces of the executor framework has slowly been morphed and adapted into CodeEngine and exposed to end users.


source

DomoJob_Types

 DomoJob_Types (value, names=None, module=None, qualname=None, type=None,
                start=1)

An enumeration.

res = await application_routes.get_applications(auth = token_auth)

pprint([app.get('name') for app in res.response])

rds_app = next((obj for obj in res.response if "Remote Domo Stats" in obj['name']))
['Toolkit: DataSet S3 Backup',
 'Toolkit: Schema Management',
 'Sony PDP Executor',
 'Sony Collaboration Publisher Executor',
 'Toolkit: User Automation',
 'Toolkit: DataSet Tag Automation',
 'Geocoder Executor',
 'Toolkit: Virtual Dataset Sharing',
 'Toolkit: Data Copy',
 'Toolkit: PDP Automation',
 'Toolkit: Group Management',
 'Toolkit: Triggered Reports',
 'Toolkit: Remote Domo Stats',
 'Toolkit: Data Watchdog']

source

DomoApplication

 DomoApplication (auth:domolibrary.client.DomoAuth.DomoAuth, id:str,
                  version:str=None, name:str=None, customer_id:str=None,
                  description:str=None, execution_class:str=None,
                  grants:List[str]=None, jobs:List[domolibrary.classes.Dom
                  oApplication_Job_Base.DomoJob_Base]=None, jobs_schedule:
                  List[domolibrary.classes.DomoApplication_Job_Base.DomoTr
                  igger_Schedule]=None)
Exported source
@dataclass
class DomoApplication:
    auth: dmda.DomoAuth = field(repr=False)
    id: str
    version: str = None
    name: str = None
    customer_id: str = None
    description: str = None
    execution_class: str = None
    grants: List[str] = None
    jobs: List[dmdj.DomoJob] = field(default=None)
    jobs_schedule: List[dmdj.DomoTrigger_Schedule] = field(default=None, repr=False)

    @classmethod
    def _from_json(cls, obj, auth: dmda.DomoAuth = None):
        dd = util_dd.DictDot(obj)

        return cls(
            id=dd.applicationId,
            customer_id=dd.customerId,
            name=dd.name,
            description=dd.description,
            version=dd.version,
            execution_class=dd.executionClass,
            grants=dd.authorities,
            auth=auth,
        )

    def _get_job_class(self):
        return DomoJob_Types.get_from_api_name(self.name)
test_application = await DomoApplication.get_by_id(
    auth=token_auth,
    application_id=rds_app['applicationId'],
    return_raw=False,
)

pprint(test_application)
DomoApplication(id='50e7230f-d2f2-42e2-a208-d94c8ae9f64c',
                version='1.2.469_1',
                name='Toolkit: Remote Domo Stats',
                customer_id='domo-alpha',
                description='Remote Domo Stats',
                execution_class='com.domo.executor.subscriberstats.SubscriberStatsExecutor',
                grants=['developer.token.manage',
                        'pipeline.executor.job.create',
                        'content.export',
                        'service.internal',
                        'dataset.admin',
                        'audit',
                        'domostats-connector',
                        'content.admin',
                        'usage.reports.view',
                        'authenticated.user'],
                jobs=None)
await test_application.get_jobs()
[DomoJob_RemoteDomoStats(name='domo-community', application_id='50e7230f-d2f2-42e2-a208-d94c8ae9f64c', logs_dataset_id='c29116fa-c3ad-4bc9-9de5-0f05ce7e7649', id='95ace776-c254-4e61-97f6-77671f3b098b', user_id=1623162654, execution_timeout=1440, is_enabled=False, customer_id='domo-alpha', created_dt=datetime.datetime(2024, 9, 19, 21, 32, 55), updated_dt=datetime.datetime(2024, 9, 19, 21, 35, 2), description='', execution_payload={'remoteInstance': 'domo-community', 'subscriberJobId': 'df57f5b6-9219-46ec-9cf9-d0c8ae56b76f', 'policies': {'People': '7a7caccc-4724-470d-b89f-e5f6d27676a8'}, 'metricsDatasetId': 'c29116fa-c3ad-4bc9-9de5-0f05ce7e7649'}, share_state={'sharedEntities': [{'id': '1623162654', 'type': 'USER', 'accessLevel': 'OWNER'}]}, accounts=[14], triggers=[], remote_instance='domo-community', subscriber_job_id='df57f5b6-9219-46ec-9cf9-d0c8ae56b76f', config=RemoteDomoStats_Config(policies=[RemoteDomoStats_Config_Policy(type='People', dataset_id='7a7caccc-4724-470d-b89f-e5f6d27676a8')])),
 DomoJob_RemoteDomoStats(name='REMOTE_Users', application_id='50e7230f-d2f2-42e2-a208-d94c8ae9f64c', logs_dataset_id='c29116fa-c3ad-4bc9-9de5-0f05ce7e7649', id='b4fd853a-1524-4512-9e4f-1d7a809913db', user_id=1623162654, execution_timeout=1440, is_enabled=False, customer_id='domo-alpha', created_dt=datetime.datetime(2024, 3, 8, 21, 35, 46), updated_dt=datetime.datetime(2024, 9, 19, 21, 30, 25), description='updated - 2024-03-08 17:50:24.269350', execution_payload={'remoteInstance': 'domo-alpha.domo.com', 'policies': {'People': '7a7caccc-4724-470d-b89f-e5f6d27676a8'}, 'metricsDatasetId': 'c29116fa-c3ad-4bc9-9de5-0f05ce7e7649'}, share_state={'sharedEntities': [{'id': '1623162654', 'type': 'USER', 'accessLevel': 'OWNER'}]}, accounts=[10], triggers=[], remote_instance='domo-alpha', subscriber_job_id=None, config=RemoteDomoStats_Config(policies=[RemoteDomoStats_Config_Policy(type='People', dataset_id='7a7caccc-4724-470d-b89f-e5f6d27676a8')]))]
test_application = await DomoApplication.get_by_id(
    auth=token_auth, application_id="50e7230f-d2f2-42e2-a208-d94c8ae9f64c"
)

await test_application.get_schedules()
test_application = await DomoApplication.get_by_id(
    auth=token_auth, application_id="50e7230f-d2f2-42e2-a208-d94c8ae9f64c"
)
await test_application.find_next_job_schedule(return_raw=False)
DomoTrigger_Schedule(schedule_text=None, schedule_type='scheduleTriggered', minute=0, hour=0, minute_str=None, hour_str=None)