{
  "version": "1.8.2",
  "timeZone": "Etc/UTC",
  "title": "API examples for use of declared arguments",
  "orderPreparation": {
    "parameters": {
      "color_blue": {
        "type": "String",
        "default": "\"blue\""
      },
      "color_red": {
        "type": "String",
        "default": "\"red\""
      },
      "color_orange": {
        "type": "String",
        "default": "\"orange\""
      },
      "num_of_days": {
        "type": "Number",
        "default": "3"
      },
      "is_end_of_month": {
        "type": "Boolean",
        "default": "true"
      },
      "password": {
        "type": "String",
        "default": "\"secret\""
      }
    },
    "allowUndeclared": false
  },
  "instructions": [
    {
      "TYPE": "Execute.Named",
      "jobName": "job-python-get-arguments",
      "label": "job-python-get-arguments"
    },
    {
      "TYPE": "Execute.Named",
      "jobName": "job-python-list-arguments",
      "label": "job-python-list-arguments"
    }
  ],
  "jobs": {
    "job-python-get-arguments": {
      "agentName": "testAgent",
      "withSubagentClusterIdExpr": false,
      "executable": {
        "TYPE": "InternalExecutable",
        "internalType": "Python_Graal",
        "script": "class JobArguments:\n  def __init__(self):\n      self.color_blue = js7.JobArgument(\"color_blue\", True)\n\nclass JS7Job(js7.Job):\n    def __init__(self):\n        self.declaredArguments = JobArguments()\n\n    def processOrder(self, js7Step):    \n        logger = js7Step.getLogger()\n\n        # Option 1:   Access declared argument\n        # Option 1.a: Access declared argument by name\n        logger.info(\"[GetDeclaredArgument] by name:\")\n        declared_arg_1a = js7Step.getDeclaredArgument(\"color_blue\")\n        logger.info(f\"declaredArgument: {declared_arg_1a.getName()}={declared_arg_1a.getValue()}\")\n\n        # Option 1.b: Access declared argument by object name\n        logger.info(\"[GetDeclaredArgument] by object name:\")\n        declared_arg_1b = js7Step.getDeclaredArgument(self.declaredArguments.color_blue.name)\n        logger.info(f\"declaredArgument: {declared_arg_1b.getName()}={declared_arg_1b.getValue()}\")\n\n        # Option 2:   Access declared argument value\n        # Option 2.a: Access declared argument value by name\n        logger.info(\"[GetDeclaredArgumentValue] by name:\")\n        logger.info(js7Step.getDeclaredArgumentValue(\"color_blue\"))\n\n        # Option 2.b: Access declared argument value by object name\n        logger.info(\"[GetDeclaredArgumentValue] by object name:\")\n        logger.info(js7Step.getDeclaredArgumentValue(self.declaredArguments.color_blue.name))"
      },
      "skipIfNoAdmissionForOrderDay": false,
      "killAtEndOfAdmissionPeriod": false,
      "parallelism": 1,
      "graceTimeout": 1,
      "failOnErrWritten": false,
      "warnOnErrWritten": false,
      "title": "Access specific declared argument",
      "isNotRestartable": false
    },
    "job-python-list-arguments": {
      "agentName": "testAgent",
      "withSubagentClusterIdExpr": false,
      "executable": {
        "TYPE": "InternalExecutable",
        "internalType": "Python_Graal",
        "script": "class JobArguments:\n  def __init__(self):\n      # Arguments with string data type\n      self.color_blue = js7.JobArgument(\"color_blue\", True, \"N/A\")\n      self.color_red = js7.JobArgument(\"color_red\", True, \"N/A\")\n      self.color_orange = js7.JobArgument(\"color_orange\", True, \"N/A\")\n\n      # Arguments with numeric data type\n      num_of_days = js7.JobArgument(\"num_of_days\", True, 0)\n\n      # Arguments with Boolean data type\n      is_end_of_month = js7.JobArgument(\"is_end_of_month\", True, False)\n\n      # Arguments with masked output that prevents value from being logged\n      password = js7.JobArgument(\"password\", True, \"secret\", js7.DisplayMode.MASKED)\n\nclass JS7Job(js7.Job):\n    def __init__(self):\n        self.declaredArguments = JobArguments()\n\n    def processOrder(self, js7Step):\n        logger = js7Step.getLogger()\n\n        # Get list of all declared arguments\n        all_args = js7Step.getAllDeclaredArguments()\n\n        logger.info(\"[getAllDeclaredArguments]:\")\n\n        for arg in all_args:\n            logger.info(f\"declared argument: {arg.getName()}={arg.getValue()}\")"
      },
      "skipIfNoAdmissionForOrderDay": false,
      "killAtEndOfAdmissionPeriod": false,
      "parallelism": 1,
      "graceTimeout": 1,
      "failOnErrWritten": false,
      "warnOnErrWritten": false,
      "title": "Access list of declared arguments",
      "isNotRestartable": false
    }
  }
}