Submit a Job to the Job Pool Using Jobs Component

You can use the Jobs component to submit jobs to its job pool instantly. The job can be created and submitted either using the console’s Builder or using the Java, Node.js or Python SDK.

Before you submit a job to the job pool, you need to ensure:

To submit a job to a job pool:

  1. Navigate to the Catalyst Job Scheduling Service section of the console, then click Start Exploring.
catalyst_job_scheduling_start_exploring_page
  1. Navigate to Jobs under JOB EXECUTOR present in the side-bar, then click Create Job.
catalyst_job_scheduling_jobs_create_start

Create Job Using Builder

  1. Provide a name for your job in the Job Name input field.
catalyst_job_scheduling_jobs_jobs_name
  1. Select the Job Pool you wish to submit this job in using the Select Job Pool drop-down.
catalyst_job_scheduling_jobs_jobpool_choice
Note: If you have not previously created any job pools, click Create New. You will be directed to the Job Pool section. Steps to create a job pool can be found here.
  1. Based on your job pool’s Target Type, the steps to configure a job vary. For the purposes of this help documentation, we are going to create a job for the Function Job Pool.
catalyst_job_scheduling_jobs_sub_func_jp

Note: You can find the steps to configure a job for:

  • Webhook Job Pool: here

  • Circuit Job Pool: here

  • AppSail Job Pool: here

  1. Select the Job Function you wish to trigger from the Target Function drop-down.
catalyst_job_scheduling_jobs_submit_target_func

Note:

  • If you have initialized and coded a Job Function from the CLI, ensure you deploy it to the Catalyst console for the function to be listed in the drop-down.

  • If you have not created a Job Function, click Create New. You will be directed to the Catalyst Serverless section of the console. You can find steps to create a Job Function from this section.

  1. You can also enable the toggle present in the pop up to pass Query Parameters to your Job Function when the job triggers the function.
catalyst_job_scheduling_jobs_query_params
Note: Query Parameters are custom parameters that you can pass to your job function. They are passed in a User-Defined format, and you customize the parameter value and include any terms that you require to be passed in the parameter.
  1. You can click the Show Advanced Options to provide resubmission instructions.
catalyst_job_scheduling_jobs_options_start
  1. You can choose the number of retries you wish to attempt from the No. of Retries drop-down, and you can choose the time interval between each retry attempt using the Retry Interval drop-down.
catalyst_job_scheduling_jobs_retry_attempts
Note: The retries will only be attempted if the initial submission of the job ended in Failure status. You can choose to attempt a maximum of 10 retries with a minimum retry interval of 1 minute and a maximum retry interval of 24Hrs.
  1. Confirm your configurations and click Create.
catalyst_job_scheduling_jobs_check_confirm

Once you click Create, the job will be immediately submitted to the job pool for execution. This makes the Builder option a great tool to test your job pools performance.

Create Job Using SDK

  1. Click the SDK tab.
catalyst_job_scheduling_jobs_sdk_create_sub
  1. Based on your target type requirement, choose the relevant SDK from the drop-down.
catalyst_job_scheduling_jobs_sdk_choose_target_drop_down

Function Target Type

catalyst_job_scheduling_jobs_sdk_create_sub
  1. Select The required runtime, and click the copy button to copy the code snippet.
catalyst_job_scheduling_jobs_runtime_nav_copy
    
Submit Job
copy

// FUNCTION JOB

// get job scheduling instance ZCJobScheduling jobScheduling = ZCJobScheduling.getInstance();

ZCJobpool jobpool = jobScheduling.jobpoolInstance(“test”); // create a job pool instance for the function job pool named test

// generate function job meta ZCJobMetaDetail jobMeta = ZCJobBuilder.functionJobBuilder() // get function job builder .setJobConfig(2, 15 * 60 * 1000L) // set job config - job retries => 2 retries in 15 mins (optional) .setTargetName(“target_function”) // set target function’s name (optional) (either TargetName or TargetId is mandatory) // .setTargetId(1234567890L) // set the target function’s Id (optional) (either TargetName or TargetId is mandatory) .setParams(new JSONObject() { { put(“arg1”, “job”); put(“arg2”, “test”); } }) // set params to be passed to target function (optional) .setJobName(“job_name”) // set job name .build(); // build job meta

// submit function job ZCJobDetails functionJob = jobpool.submitJob(jobMeta);

View more
    
Submit Job
copy

// FUNCTION JOB

const jobScheduling = app.jobScheduling(); // create job scheduling instance

const jobpool = jobScheduling.jobpool({ name: ’test’ }); // create job pool instance for the function job pool named test

// create function job const functionJob = await jobpool.submitJob({ job_name: ’test_job’, // set a name for the job target_type: ‘Function’, // set the target type as Function for function jobs target_name: ’target_function’, // set the target function’s name (optional) (either target_id or target_name is mandatory) // target_id: ‘123467890’, // set the target functions’s Id (optional) (either target_id or target_name is mandatory) params: { arg1: ’test’, arg2: ‘job’ }, // set params to be passed to target function (optional) job_config: { number_of_retries: 2, // set the number of retries retry_interval: 15 * 60 * 1000 + ’’ // set the retry interval } // set job config - job retries => 2 retries in 15 mins (optional) });

View more
    
Submit Job
copy

FUNCTION JOB

job_scheduling = app.job_scheduling() # create job scheduling instance

jobpool = job_scheduling.jobpool(jobpool_name=“test”) # create jobpool instance for the function jobpool named test

# create function job

function_job = jobpool.submit_job({ ‘job_name’: ’test_job’, # set a name for the job ’target_type’: ‘Function’, # set the target type as Function for function jobs ’target_name’: ’target_function’, # set the target function’s name (optional) (either target_id or target_name is mandatory) # ’target_id’: ‘123467890’, # set the target functions’s Id (optional) (either target_id or target_name is mandatory) ‘params’: { ‘arg1’: ’test’, ‘arg2’: ‘job’ }, # set params to be passed to target function (optional) ‘job_config’: { ’number_of_retries’: 2, # set the number of retries ‘retry_interval’: 15 * 60 * 1000 # set the retry interval } # set job config - job retries => 2 retries in 15 mins (optional) })

View more

Circuit Target Type

catalyst_job_scheduling_jobs_circuit_jobs_sub
  1. Select The required runtime, and click the copy button to copy the code snippet.
catalyst_job_scheduling_jobs_run_time_nav_circuits
    
Submit Job
copy

// CIRCUIT JOB

// get job scheduling instance ZCJobScheduling jobScheduling = ZCJobScheduling.getInstance();

// create a job pool instance ZCJobpool jobpool = jobScheduling.jobpoolInstance(“test”); // create a job pool instance for the circuit job pool named test

// generate circuit job meta ZCJobMetaDetail jobMeta = ZCJobBuilder.circuitJobBuilder() // create circuit job builder .setJobConfig(2, 15 * 60 * 1000L) // set job config - job retries => 2 retries in 15 mins (optional) .setTargetName(“target_circuit”) // set target circuits’s name (optional) (either TargetName or TargetId is mandatory) // .setTargetId(1234567890L) // set the target circuits’s Id (optional) (either TargetName or TargetId is mandatory) .setCircuitInput(new JSONObject() { { put(“key1”, “value1”); put(“key2”, “value2”); } }) // set the test cases for the circuit .setJobName(“test_job”) // set job name .build(); // build circuit job meta

// submit circuit job ZCJobDetails circuitJob = jobpool.submitJob(jobMeta);

View more
    
Submit Job
copy

// CIRCUIT JOB

const jobScheduling = app.jobScheduling(); // create job scheduling instance

const jobpool = jobScheduling.jobpool({ name: ’test’ }); // create job pool instance for the circuit job pool named test

// create circuit job const circuitJob = await jobpool.submitJob({ job_name: ’test_job’, // set a name for the job target_type: ‘Circuit’, // set the target type as Circuit for circuit jobs target_name: ’target_circuit’, // set the target circuit’s name (optional) (either target_id or target_name is mandatory) // target_id: ‘123467890’, // set the target circuit’s Id (optional) (either target_id or target_name is mandatory) test_cases: { arg1: “job”, arg2: “test” }, // set the circuit test cases job_config: { number_of_retries: 2, // set the number of retries retry_interval: 15 * 60 * 1000 + ’’ // set the retry interval } // set job config - job retries => 2 retries in 15 mins (optional) });

View more
    
Submit Job
copy

CIRCUIT JOB

job_scheduling = app.job_scheduling() # create job scheduling instance

jobpool = job_scheduling.jobpool(jobpool_name=“test”) # create jobpool instance for the circuit jobpool named test

# create circuit job

circuit_job = jobpool.submit_job({ ‘job_name’: ’test_job’, # set a name for the job ’target_type’: ‘Circuit’, # set the target type as Circuit for circuit jobs ’target_name’: ’target_circuit’, # set the target circuit’s name (optional) (either target_id or target_name is mandatory) # ’target_id’: ‘123467890’, # set the target circuit’s Id (optional) (either target_id or target_name is mandatory) ’test_cases’: { ‘arg1’: ‘job’, ‘arg2’: ’test’ }, # set the circuit test cases ‘job_config’: { ’number_of_retries’: 2, # set the number of retries ‘retry_interval’: 15 * 60 * 1000 # set the retry interval } # set job config - job retries => 2 retries in 15 mins (optional) })

View more

Webhook Target Type

catalyst_job_scheduling_jobs_webhook_code
  1. Select The required runtime, and click the copy button to copy the code snippet.
catalyst_job_scheduling_jobs_webhook_runtime_nav
    
Submit Job
copy

// WEB HOOK JOB

// get job scheduling instance ZCJobScheduling jobScheduling = ZCJobScheduling.getInstance();

// create a job pool instance ZCJobpool jobpool = jobScheduling.jobpoolInstance(“test”); // create a job pool instance for the webhook job pool named test

// generate webhook job meta ZCJobMetaDetail jobMeta = ZCJobBuilder.webhookJobBuilder() // create webhook job builder .setJobConfig(2, 15 * 60 * 1000L) // set job config - job retries => 2 retries in 15 mins (optional) .setRequestMethod(“POST”) // set webhook request’s method .setUrl(“https://catalyst.zoho.com”) // set webhook request’s url .setParams(new JSONObject() { { put(“arg1”, “test”); put(“arg2”, “job”); } }) // set the webhook request’s query params (optional) .setHeaders(new JSONObject() { { put(“IS_TEST_REQUEST”, “true”); } }) // set the webhook request’s headers (optional) .setRequestBody(“test_request”) // set the webhook request’s body (optional) .setJobName(“test_job”) // set job name .build(); // build webhook job meta

// submit webhook job ZCJobDetails webHookJob = jobpool.submitJob(jobMeta);

View more
    
Submit Job
copy

// WEBHOOK JOB

const jobScheduling = app.jobScheduling(); // create job scheduling instance

const jobpool = jobScheduling.jobpool({ name: ’test’ }); // create job pool instance for the webhook job pool named test

// create webhook job const webhookJob = await jobpool.submitJob({ job_name: ’test_job’, // set a name for the job target_type: ‘Webhook’, // set the target type as Webhook for webhook jobs request_method: ‘POST’, // set the webhook request’s method url: ‘https://catalyst.zoho.com’, // set the webhook request’s url params: { arg1: ’test’, arg2: ‘job’ }, // set the webhook request’s query params (optional) headers: { IS_TEST_REQUEST: ’true’ }, // set the webhook request’s headers (optional) request_body: ’test_request’, // set the webhook request’s body (optional) job_config: { number_of_retries: 2, // set the number of retries retry_interval: 15 * 60 * 1000 + ’’ // set the retry interval } // set job config - job retries => 2 retries in 15 mins (optional) });

View more
    
Submit Job
copy

WEBHOOK JOB

job_scheduling = app.job_scheduling() # create job scheduling instance

jobpool = job_scheduling.jobpool(jobpool_name=“test”) # create jobpool instance for the webhook jobpool named test

 # create webhook job

webhook_job = jobpool.submit_job({ ‘job_name’: ’test_job’, # set a name for the job ’target_type’: ‘Webhook’, # set the target type as Webhook for webhook jobs ‘request_method’: ‘POST’, # set the webhook request’s method ‘url’: ‘https://catalyst.zoho.com’, # set the webhook request’s url ‘params’: { ‘arg1’: ’test’, ‘arg2’: ‘job’ }, # set the webhook request’s query params (optional) ‘headers’: { ‘IS_TEST_REQUEST’: ’true’ }, # set the webhook request’s headers (optional) ‘request_body’: ’test_request’, # set the webhook request’s body (optional) ‘job_config’: { ’number_of_retries’: 2, # set the number of retries ‘retry_interval’: 15 * 60 * 1000 # set the retry interval } # set job config - job retries => 2 retries in 15 mins (optional) })

View more

AppSail Target Type

catalyst_job_scheduling_jobs_appsail_code
  1. Select The required runtime, and click the copy button to copy the code snippet.
catalyst_job_scheduling_jobs_appsail_runtime_nav
    
Submit Job
copy

// APPSAIL JOB

// get job scheduling instance ZCJobScheduling jobScheduling = ZCJobScheduling.getInstance();

// create a job pool instance ZCJobpool jobpool = jobScheduling.jobpoolInstance(“test”); // create a job pool instance for the appsail job pool named test

// generate appsail job meta ZCJobMetaDetail jobMeta = ZCJobBuilder.appSailJobBuilder() // create appsail job builder .setJobConfig(2, 15 * 60 * 1000L) // set job config - job retries => 2 retries in 15 mins (optional) .setTargetName(“test_appsail”) // set appsail name .setRequestMethod(“POST”) // set appsail request method .setUrl("/test") // set appsail request url .setParams(new JSONObject() { { put(“arg1”, “value1”); put(“arg2”, “value2”); } }) // set appsail request query params .setHeaders(new JSONObject() { { put(“IS_TEST_REQUEST”, “true”); } }) // set the appsail request’s headers (optional) .setRequestBody(“test_request”) // set the appsail request’s body (optional) .setJobName(“test_job”) // set job name .build(); // build appsail job meta

// submit appsail job ZCJobDetails appSailJob = jobpool.submitJob(jobMeta);

View more
    
Submit Job
copy

// APPSAIL JOB

const jobScheduling = app.jobScheduling(); // create job scheduling instance

const jobpool = jobScheduling.jobpool({ name: ’test’ }); // create job pool instance for the appsail job pool named test

// create appsail job const appsailJob = await jobpool.submitJob({ job_name: ’test_job’, // set a name for the job target_type: ‘AppSail’, // set the target type as AppSail for appsail jobs target_name: ’target_appsail’, // set the target appsail’s name (optional) (either target_id or target_name is mandatory) // target_id: ‘123467890’, // set the target appsail’s Id (optional) (either target_id or target_name is mandatory) request_method: ‘POST’, // set the appsail request’s method url: ‘/test’, // set the appsail’s url path (optional) params: { arg1: ’test’, arg2: ‘job’ }, // set the appsail request’s query params (optional) headers: { IS_TEST_REQUEST: ’true’ }, // set the appsail request’s headers (optional) request_body: ’test_request’, // set the appsail request’s body (optional) job_config: { number_of_retries: 2, // set the number of retries retry_interval: 15 * 60 * 1000 + ’’ // set the retry interval } // set job config - job retries => 2 retries in 15 mins (optional) });

View more
    
Submit Job
copy

APPSAIL JOB

job_scheduling = app.job_scheduling() # create job scheduling instance

jobpool = job_scheduling.jobpool(jobpool_name=“test”) # create jobpool instance for the appsail jobpool named test

 # create appsail job

appsail_job = jobpool.submit_job({ ‘job_name’: ’test_job’, # set a name for the job ’target_type’: ‘AppSail’, # set the target type as AppSail for appsail jobs ’target_name’: ’target_appsail’, # set the target appsail’s name (optional) (either target_id or target_name is mandatory) # ’target_id’: ‘123467890’, # set the target appsail’s Id (optional) (either target_id or target_name is mandatory) ‘request_method’: ‘POST’, # set the appsail request’s method ‘url’: ‘/test’, # set the appsail’s url path (optional) ‘params’: { ‘arg1’: ’test’, ‘arg2’: ‘job’ }, # set the appsail request’s query params (optional) ‘headers’: { ‘IS_TEST_REQUEST’: ’true’ }, # set the appsail request’s headers (optional) ‘request_body’: ’test_request’, # set the appsail request’s body (optional) ‘job_config’: { ’number_of_retries’: 2, # set the number of retries ‘retry_interval’: 15 * 60 * 1000 # set the retry interval } # set job config - job retries => 2 retries in 15 mins (optional) })

View more
  1. Paste the snippet in your code file and engineer your logic.

The job that you create for your project will always be available in the Job component section.

Once the job is submitted, you will be able to view all the general details of the submitted job in the Job Definition section. You will also be able to view the status of the job execution in the Job Execution & Status section.

catalyst_job_scheduling_jobs_submit_job

The execution status of the job will also be labeled at the top next to the Job Name. You will also be provided with the Job Definition in a JSON code format that you can copy and use to submit a new job with the same specifications. You can also visit the logs of the execution generated in DevOps’s Logs component by clicking the View Logs button.

Last Updated 2025-06-03 18:19:55 +0530 +0530