- help_text:
    brief: Create a Cloud Scheduler job with an App Engine target.
    description: Create a Cloud Scheduler job with an App Engine target.
    examples: |
      The following command creates a job that sends a request to the
      '/cron-handler' path in you App Engine app every 3 hours:

        $ {command} my-job --schedule="0 */3 * * *"
          --relative-url="/cron-handler"

  request:
    collection: cloudscheduler.projects.locations.jobs
    method: create
    modify_request_hooks:
    - googlecloudsdk.command_lib.scheduler.util:ModifyCreateJobRequest

  arguments:
    resource:
      help_text: Job to create.
      spec: !REF googlecloudsdk.command_lib.scheduler.resources:job
    params:
    - _REF_: googlecloudsdk.command_lib.scheduler.flags:schedule
      required: true
    - _REF_: googlecloudsdk.command_lib.scheduler.flags:timezone
    - _REF_: googlecloudsdk.command_lib.scheduler.flags:description
    - _REF_: googlecloudsdk.command_lib.scheduler.flags:attempt_deadline
    - _REF_: googlecloudsdk.command_lib.scheduler.flags:retry_attempts
    - _REF_: googlecloudsdk.command_lib.scheduler.flags:retry_duration
    - _REF_: googlecloudsdk.command_lib.scheduler.flags:min_backoff
    - _REF_: googlecloudsdk.command_lib.scheduler.flags:max_backoff
    - _REF_: googlecloudsdk.command_lib.scheduler.flags:max_doublings
    - api_field: job.appEngineHttpTarget.relativeUri
      arg_name: relative-url
      default: /
      type: googlecloudsdk.calliope.arg_parsers:RegexpValidator:pattern=^/.*,description=Must
        begin with [/].)
      help_text: |
        Relative URL to use for the request (beginning with "/").
    - api_field: job.appEngineHttpTarget.httpMethod
      arg_name: http-method
      default: post
      choices:
      - arg_value: post
        enum_value: POST
      - arg_value: head
        enum_value: HEAD
      - arg_value: get
        enum_value: GET
      - arg_value: put
        enum_value: PUT
      - arg_value: delete
        enum_value: DELETE
      help_text: |
        HTTP method to use for the request.
    # TODO(b/113588592) Convert --version and --service to a resource arg.
    - api_field: job.appEngineHttpTarget.appEngineRouting.version
      arg_name: version
      help_text: |
        Version of the App Engine service to send the request to.
    - api_field: job.appEngineHttpTarget.appEngineRouting.service
      arg_name: service
      help_text: |
        ID of the App Engine service to send the request to.
    - api_field: job.appEngineHttpTarget.headers.additionalProperties
      arg_name: headers
      metavar: KEY=VALUE
      type:
        arg_dict:
          flatten: true
          spec:
          - api_field: key
          - api_field: value
      help_text: |-
        KEY=VALUE pairs of HTTP headers to include in the request.
        *Cannot be repeated*. For example:
        `--headers Accept-Language=en-us,Accept=text/plain`
    - group:
        mutex: true
        params:
        - api_field: job.appEngineHttpTarget.body
          arg_name: message-body
          help_text: |
            Data payload to be included as the body of the HTTP
            request. May only be given with compatible HTTP methods (PUT
            or POST).

        - api_field: job.appEngineHttpTarget.body
          arg_name: message-body-from-file
          type: "googlecloudsdk.calliope.arg_parsers:FileContents:binary=True"
          help_text: |
            Path to file containing the data payload to be included as the
            body of the HTTP request. May only be given with compatible HTTP
            methods (PUT or POST).
