openapi: 3.0.3
info:
  version: "7"
  title: Job Execution
  description: The Job Execution API is used to execute and manage asynchronous jobs across environments.
  termsOfService: https://www.sas.com/en_us/legal/copyright.html
  contact:
    name: SAS Developers
    url: https://developer.sas.com
    email: devex@sas.com
servers:
  - url: http://example.com/jobExecution
    description: Kubernetes mock server
tags:
  - name: Root
    description: Contains the root of the Job Execution API.
  - name: Jobs
    description: Contains the operations for the Jobs resource.
  - name: JobRequests
    description: Contains the operations for the Job Requests resource.
  - name: Providers
    description: Contains the operations for the Providers resource.
paths:
  /:
    get:
      operationId: root
      summary: Get a collection of top-level links
      description: Returns a collection of links to the top-level collections surfaced through this API.
      tags:
        - Root
      responses:
        "200":
          description: The request succeeded.
          content:
            application/vnd.sas.api+json:
              schema:
                $ref: "#/components/schemas/api"
              examples:
                json:
                  $ref: "#/components/examples/rootSampleResponse"
            application/json:
              schema:
                $ref: "#/components/schemas/api"
              examples:
                json:
                  $ref: "#/components/examples/rootSampleResponse"
    head:
      operationId: headersForRoot
      summary: Check API availability
      description: Returns the header information that the corresponding GET returns. Clients can use this to determine whether the API is running.
      tags:
        - Root
      responses:
        "200":
          description: The request succeeded. The API is running and available.
  /jobs:
    post:
      operationId: createJob
      summary: Submit a job request
      description: Submits a job request.
      tags:
        - Jobs
      parameters:
        - name: annotationUri
          in: query
          required: false
          description: Adds the created job as a member of the specified annotation.
          schema:
            type: string
        - name: submitter
          in: query
          required: false
          description: Persisted in the submittedByApplication member of the created Job and used as the submitter portion of the job state change event routing key.  Only the characters in the set [a-zA-Z0-9] and hyphens are valid with a maximum of 64 characters.
          schema:
            type: string
        - name: Delegate-Domain
          in: header
          description: >
            The name of a credential domain of type OAuth2.0. The credential secret is retrieved to impersonate a group-managed service account  for the current request.
          schema:
            type: string
      requestBody:
        content:
          application/vnd.sas.job.execution.job.request+json:
            schema:
              $ref: "#/components/schemas/jobRequest"
            examples:
              json:
                $ref: "#/components/examples/submitJobSampleBody"
          application/json:
            schema:
              $ref: "#/components/schemas/jobRequest"
            examples:
              json:
                $ref: "#/components/examples/submitJobSampleBody"
        description: The job request that describes the job to be executed.
        required: true
      responses:
        "201":
          description: The job was created.
          headers:
            ETag:
              description: The entity tag for the job.
              schema:
                type: string
            Last-Modified:
              description: The timestamp that indicates when the job was last modified. It uses the format in `EEE, dd MMM yyyy HH:mm:ss GMT`.
              schema:
                type: string
            Location:
              description: The URL location of the newly created job.
              schema:
                type: string
          content:
            application/vnd.sas.job.execution.job+json:
              schema:
                $ref: "#/components/schemas/job"
              examples:
                json:
                  $ref: "#/components/examples/submitJobSampleResponse"
            application/json:
              schema:
                $ref: "#/components/schemas/job"
              examples:
                json:
                  $ref: "#/components/examples/submitJobSampleResponse"
        "400":
          description: The request was invalid.
          content:
            application/vnd.sas.error+json:
              schema:
                $ref: "#/components/schemas/error2"
              examples:
                json:
                  $ref: "#/components/examples/submitJobRequest400Response"
        "415":
          description: The requested media type is not supported.
          content:
            application/vnd.sas.error+json:
              schema:
                $ref: "#/components/schemas/error2"
              examples:
                json:
                  $ref: "#/components/examples/submitJobRequest415Response"
    get:
      operationId: getJobs
      summary: Get a list of jobs
      description: Returns a collection of job resources. Standard paging, filtering, and sorting options are specified in the Query Parameters section.
      tags:
        - Jobs
      parameters:
        - name: start
          in: query
          description: The zero-based index of the first job to return. The default is 0 (zero).
          schema:
            type: integer
        - name: limit
          in: query
          description: The maximum number of jobs to return in this page of results. The actual number of returned jobs might be less if the collection has been exhausted. The default is 10. If a large number is specified, it is recommended to combine a filter with the query to improve performance.
          schema:
            type: integer
        - name: filter
          in: query
          description: "The criteria used to filter the returned jobs. The following queries are examples: <ul> <li>Filter by name: /jobExecution/jobs?filter=startsWith(id, 'myJob')</li> <li>Filter by job request ID: /jobExecution/jobs?filter=eq(jobRequest.id, 'ec0292d8-884d-47c4-860c-52a774e55786')</li> </ul> Direct comparisons on values of `results` and `jobRequest.properties` are not guaranteed to work across all platforms. Use the `contains` function instead."
          schema:
            type: string
            format: filter-criteria
        - name: sortBy
          in: query
          description: "Defines how the returned jobs are sorted. The default sort order is descending on the creation timestamp field. The following sorts are examples: <ul> <li>Sort ascending by ID: /jobExecution/jobs?sortBy=id:ascending</li> <li>Sort descending by ID: /jobExecution/jobs?sortBy=id:descending</li> </ul>"
          schema:
            type: string
            format: sort-criteria
        - name: Delegate-Domain
          in: header
          description: >
            The name of a credential domain of type OAuth2.0. The credential secret is retrieved to impersonate a group-managed service account  for the current request.
          schema:
            type: string
      responses:
        "200":
          description: The request succeeded.
          content:
            application/vnd.sas.collection+json:
              schema:
                $ref: "#/components/schemas/jobCollection"
              examples:
                json:
                  $ref: "#/components/examples/getJobsSampleResponse"
            application/json:
              schema:
                $ref: "#/components/schemas/jobCollection"
              examples:
                json:
                  $ref: "#/components/examples/getJobsSampleResponse"
        "400":
          description: The request was invalid. An invalid filter or combination of request parameters was provided.
          content:
            application/vnd.sas.error+json:
              schema:
                $ref: "#/components/schemas/error2"
              examples:
                json:
                  $ref: "#/components/examples/getJobs400Response"
  /jobs#withQuery:
    post:
      x-sas-since: "2"
      operationId: getJobsWithQuery
      summary: Get all jobs
      description: Returns all jobs by using a filter in the body of the request. This is intended for large filters that are too long to be used as a query parameter. Standard paging, filtering, and sorting options are specified in the Query Parameters and Request Body sections.
      tags:
        - Jobs
      parameters:
        - name: start
          in: query
          description: The zero-based index of the first job to return. The default is 0 (zero).
          schema:
            type: integer
        - name: limit
          in: query
          description: The maximum number of jobs to return in this page of results. The actual number of returned jobs might be less if the collection has been exhausted. The default is 10.
          schema:
            type: integer
        - name: sortBy
          in: query
          description: "Defines how the returned jobs are sorted. The default sort order is descending on the creation timestamp field. The following sorts are examples: <ul> <li>Sort ascending by ID: /jobExecution/jobs?sortBy=id:ascending</li> <li>Sort descending by ID: /jobExecution/jobs?sortBy=id:descending</li> </ul>"
          schema:
            type: string
            format: sort-criteria
        - name: Delegate-Domain
          in: header
          description: >
            The name of a credential domain of type OAuth2.0. The credential secret is retrieved to impersonate a group-managed service account  for the current request.
          schema:
            type: string
      requestBody:
        content:
          text/plain:
            schema:
              type: string
            example: eq(name, 'jobName')
        description: "The criteria for filtering the returned jobs. See the [Filtering section](https://developer.sas.com/rest-apis/jobExecution-v7/docs/getting-started/usage-notes#filtering) for more information about how to construct a request. The following request bodies are examples: <ul> <li>Filter by name: startsWith(name, 'myJob')</li> <li>Filter by createdBy: eq(createdBy,'myUserId')</li> </ul> Direct comparisons on values of `results` and `jobRequest.properties` are not guaranteed to work across all platforms. Use the `contains` function instead."
      responses:
        "200":
          description: The request succeeded. The jobs (if any) are returned in a resource collection.
          content:
            application/vnd.sas.collection+json:
              schema:
                $ref: "#/components/schemas/jobCollection"
              examples:
                json:
                  $ref: "#/components/examples/getJobsSampleResponse"
            application/json:
              schema:
                $ref: "#/components/schemas/jobCollection"
              examples:
                json:
                  $ref: "#/components/examples/getJobsSampleResponse"
        "400":
          description: >
            The request was invalid. An invalid request occurs in the following scenarios: <ul> <li>A negative start value is provided.</li> <li>A negative limit value is provided.</li> <li>An unsupported field is specified in the sortBy parameter.</li> </ul>
          content:
            application/vnd.sas.error+json:
              schema:
                $ref: "#/components/schemas/error2"
              examples:
                json:
                  $ref: "#/components/examples/getJobs400Response"
  /jobs/@selection/state:
    put:
      operationId: updateJobsState
      summary: Update the state of multiple jobs
      description: Updates the state of multiple jobs. The new state must be set as the value-query parameter. The request body identifies the jobs to update. The selection type must be URI and the resources are an array of URIs that identify the jobs. The items in the response MUST match 1-to-1 with the items in the request. If the update is successful, the item in the response is an application/vnd.sas.summary object. If the update failed for a particular job, the corresponding item in the response is an application/vnd.sas.error object.
      tags:
        - Jobs
      parameters:
        - name: value
          in: query
          description: The value of the state.
          required: false
          x-sas-since: "2"
          schema:
            type: string
      requestBody:
        content:
          application/vnd.sas.selection+json:
            schema:
              $ref: "#/components/schemas/resourceSelection"
            examples:
              json:
                $ref: "#/components/examples/stateResourceSelectionSampleBody"
        description: The resource-selection URIs that identify the jobs whose states must be updated.
      responses:
        "200":
          description: The request succeeded. The items in the response MUST match 1-to-1 with the items in the request. If the update is successful, the item in the response is an application/vnd.sas.summary object. If the update failed for a particular job, the corresponding item in the response is an application/vnd.sas.error object.
          content:
            application/vnd.sas.collection+json:
              schema:
                $ref: "#/components/schemas/updateJobsStateCollection"
              examples:
                json:
                  $ref: "#/components/examples/updateJobsStateSampleResponse"
        "400":
          description: >
            The request was invalid. An invalid request occurs in the following scenarios: <ul> <li>An invalid state value was provided (error code 31506).</li> <li>The state was not specified in the value-query parameter or in the body of the request (error code 31505). </li> <li>An empty or missing body.</li><li>An invalid resource-selection type in the body. The supported type is URI.<li> </ul>
          content:
            application/vnd.sas.error+json:
              schema:
                $ref: "#/components/schemas/error2"
              examples:
                json:
                  $ref: "#/components/examples/stateResourceSelection400Response"
  "/jobs/{jobId}":
    get:
      operationId: getJob
      summary: Get a job
      description: Returns information about one job based on its unique ID. After the job execution has completed, various execution artifacts can be obtained from the `results` member of the returned job (application/vnd.sas.job.execution.job). The items returned in the `results` map are provider specific. A log, if available, can be obtained from the `logLocation` member of the job.
      tags:
        - Jobs
      parameters:
        - name: jobId
          in: path
          description: The ID of job.
          required: true
          schema:
            type: string
        - name: Delegate-Domain
          in: header
          description: >
            The name of a credential domain of type OAuth2.0. The credential secret is retrieved to impersonate a group-managed service account  for the current request.
          schema:
            type: string
      responses:
        "200":
          description: The request succeeded.
          headers:
            ETag:
              description: The entity tag for the job.
              schema:
                type: string
            Last-Modified:
              description: The timestamp for the job request that indicates when it was last modified. It uses the format `EEE, dd MMM yyyy HH:mm:ss GMT`.
              schema:
                type: string
          content:
            application/vnd.sas.job.execution.job+json:
              schema:
                $ref: "#/components/schemas/job"
              examples:
                json:
                  $ref: "#/components/examples/getJobSampleResponse"
            application/json:
              schema:
                $ref: "#/components/schemas/job"
              examples:
                json:
                  $ref: "#/components/examples/getJobSampleResponse"
        "404":
          description: No job exists at the requested path.
          content:
            application/vnd.sas.error+json:
              schema:
                $ref: "#/components/schemas/error2"
              examples:
                json:
                  $ref: "#/components/examples/getJob404Response"
    head:
      operationId: headersForJob
      summary: Check job availability
      description: Returns the headers for the job that the corresponding `GET` returns. Clients can use this operation to determine whether the job exists.
      tags:
        - Jobs
      parameters:
        - name: jobId
          in: path
          description: The ID of the job.
          required: true
          schema:
            type: string
        - name: Delegate-Domain
          in: header
          description: >
            The name of a credential domain of type OAuth2.0. The credential secret is retrieved to impersonate a group-managed service account  for the current request.
          schema:
            type: string
      responses:
        "200":
          description: The request succeeded.
          headers:
            ETag:
              description: The entity tag for the job.
              schema:
                type: string
            Last-Modified:
              description: The timestamp for the job request that indicates when it was last modified. It uses the format `EEE, dd MMM yyyy HH:mm:ss GMT`.
              schema:
                type: string
        "404":
          description: No job exists at the requested path.
    put:
      operationId: updateJob
      summary: Update or replace an existing job
      description: "Updates or replaces the specified job. <b>Note</b>: Only execution providers can use this operation."
      tags:
        - Jobs
      parameters:
        - name: jobId
          in: path
          description: The ID of the job.
          required: true
          schema:
            type: string
        - name: If-Match
          in: header
          description: The entity tag obtained from the most recent `ETag` response header of this job. It must match the current entity tag for the job.
          schema:
            type: string
        - name: If-Unmodified-Since
          in: header
          description: Ignored when `If-Match` is specified. The timestamp obtained from the most recent `Last-Modified` response header of this job. It must be later than or equal to the timestamp when the job was last modified.
          schema:
            type: string
        - name: Delegate-Domain
          in: header
          description: >
            The name of a credential domain of type OAuth2.0. The credential secret is retrieved to impersonate a group-managed service account  for the current request.
          schema:
            type: string
      requestBody:
        content:
          application/vnd.sas.job.execution.job+json:
            schema:
              $ref: "#/components/schemas/job"
            examples:
              json:
                $ref: "#/components/examples/putJobSampleBody"
          application/json:
            schema:
              $ref: "#/components/schemas/job"
            examples:
              json:
                $ref: "#/components/examples/putJobSampleBody"
        description: The new job values.
        required: true
      responses:
        "200":
          description: The request succeeded. The job updated successfully.
          headers:
            ETag:
              description: The entity tag for the job.
              schema:
                type: string
            Last-Modified:
              description: The timestamp for the job request that indicates when it was last modified. It uses the format `EEE, dd MMM yyyy HH:mm:ss GMT`.
              schema:
                type: string
          content:
            application/vnd.sas.job.execution.job+json:
              schema:
                $ref: "#/components/schemas/job"
              examples:
                json:
                  $ref: "#/components/examples/putJobResponse"
            application/json:
              schema:
                $ref: "#/components/schemas/job"
              examples:
                json:
                  $ref: "#/components/examples/putJobResponse"
        "400":
          description: The request was invalid. This occurs when the user provides an ID in the request that does not match the ID in the path of the URL.
          content:
            application/vnd.sas.error+json:
              schema:
                $ref: "#/components/schemas/error2"
              examples:
                json:
                  $ref: "#/components/examples/putJob400Response"
            application/json:
              schema:
                $ref: "#/components/schemas/error2"
              examples:
                json:
                  $ref: "#/components/examples/putJob400Response"
        "404":
          description: No job exists at the requested path.
          content:
            application/vnd.sas.error+json:
              schema:
                $ref: "#/components/schemas/error2"
              examples:
                json:
                  $ref: "#/components/examples/putJob404Response"
            application/json:
              schema:
                $ref: "#/components/schemas/error2"
              examples:
                json:
                  $ref: "#/components/examples/putJob404Response"
        "405":
          description: The request could not be completed due to a conflict with the current state of the resource. The job has already completed and can no longer be updated (error code 31501).
          content:
            application/vnd.sas.error+json:
              schema:
                $ref: "#/components/schemas/error2"
              examples:
                json:
                  $ref: "#/components/examples/putJob405Response"
            application/json:
              schema:
                $ref: "#/components/schemas/error2"
              examples:
                json:
                  $ref: "#/components/examples/putJob405Response"
        "412":
          description: The `If-Match` request header did not match the resource's entity tag or the `If-Unmodified-Since` request header was earlier than the resource's last modified timestamp.
          content:
            application/vnd.sas.error+json:
              schema:
                $ref: "#/components/schemas/error2"
              examples:
                json:
                  $ref: "#/components/examples/putJob412Response"
            application/vndjson:
              schema:
                $ref: "#/components/schemas/error2"
              examples:
                json:
                  $ref: "#/components/examples/putJob412Response"
        "415":
          description: The requested media type is not supported.
          content:
            application/vnd.sas.error+json:
              schema:
                $ref: "#/components/schemas/error2"
              examples:
                json:
                  $ref: "#/components/examples/putJob415Response"
            application/json:
              schema:
                $ref: "#/components/schemas/error2"
              examples:
                json:
                  $ref: "#/components/examples/putJob415Response"
        "428":
          description: The request was missing a `If-Match` or `If-Unmodified-Since` header.
          content:
            application/vnd.sas.error+json:
              schema:
                $ref: "#/components/schemas/error2"
              examples:
                json:
                  $ref: "#/components/examples/putJob428Response"
            application/json:
              schema:
                $ref: "#/components/schemas/error2"
              examples:
                json:
                  $ref: "#/components/examples/putJob428Response"
    delete:
      operationId: deleteJob
      summary: Delete a job
      description: Deletes the job, if the job is no longer required. If the Job Request (application/vnd.sas.job.execution.job.request) is submitted without an "expiresAfter" setting, or a global or provider-specific "expiresAfter" property is not set, it is the client's responsibility to delete the job from the system when it is no longer needed. If the job's logLocation is present, a delete request is issued to the log as well. The only exception is if the log is stored in files service and its parentUri points to a resource other than this job.
      tags:
        - Jobs
      parameters:
        - name: jobId
          in: path
          description: The ID of the job.
          required: true
          schema:
            type: string
        - name: Delegate-Domain
          in: header
          description: >
            The name of a credential domain of type OAuth2.0. The credential secret is retrieved to impersonate a group-managed service account  for the current request.
          schema:
            type: string
      responses:
        "204":
          description: The job was deleted.
        "404":
          description: No job exists at the requested path.
          content:
            application/vnd.sas.error+json:
              schema:
                $ref: "#/components/schemas/error2"
              examples:
                json:
                  $ref: "#/components/examples/deleteJob404Response"
            application/json:
              schema:
                $ref: "#/components/schemas/error2"
              examples:
                json:
                  $ref: "#/components/examples/deleteJob404Response"
  "/jobs/{jobId}/state":
    get:
      operationId: getJobState
      summary: Get the state of the job
      description: "Returns the following states: pending, running, canceled, completed, or failed."
      tags:
        - Jobs
      parameters:
        - name: jobId
          in: path
          description: The ID of the job.
          required: true
          schema:
            type: string
      responses:
        "200":
          description: The request succeeded.
          content:
            text/plain:
              schema:
                type: string
              example: completed
        "404":
          description: No job exists at the requested path.
          content:
            text/plain:
              schema:
                type: string
              example: "ErrorResponse[version=2,status=404,err=0,id=<null>,message=Job not found with ID: 859ad72d-5fa2-470c-9d43-f7a65829ae5xf.,detail=[traceId: e07db28a5fbe58e0, path: /jobExecution/jobs/859ad72d-5fa2-470c-9d43-f7a65829ae5xf/state],remediation=<null>,targetUri=<null>,errors=<null>,links=[]]"
    head:
      operationId: headersForJobState
      summary: Check whether the job state exists
      description: Returns the header information for the job state that the corresponding `GET` returns.
      tags:
        - Jobs
      parameters:
        - name: jobId
          in: path
          description: The ID of the job.
          required: true
          schema:
            type: string
      responses:
        "200":
          description: The request succeeded.
        "404":
          description: No job exists at the requested path.
    put:
      operationId: updateJobState
      summary: Update the state of the job
      description: Updates the state of the current job. The new state must be set as either the value-query parameter or in the body of the request. The value-query parameter takes precedence if both are specified. If neither is specified, a 400 bad request error response is returned (error code 31505).
      tags:
        - Jobs
      parameters:
        - name: jobId
          in: path
          description: The ID of the job.
          required: true
          schema:
            type: string
        - name: value
          in: query
          description: The value of the state. If this value and the body specify a state, then this value takes precedence.
          required: false
          x-sas-since: "2"
          schema:
            type: string
      requestBody:
        content:
          text/plain:
            schema:
              type: string
            example: completed
        description: The new value of the state.
      responses:
        "200":
          description: The request succeeded.
        "400":
          description: >
            The request was invalid. An invalid request occurs in the following scenarios: <ul> <li>An invalid state value was provided (error code 31506).</li> <li>The state was not specified in the value query parameter or in the body of the request (error code 31505). </li> </ul>
          content:
            text/plain:
              schema:
                type: string
              example: "ErrorResponse[version=2,status=400,err=31506,id=<null>,message=Unknown job state: completedxxx.,detail=[traceId: 57a10d5ac37e77c6, path: /jobExecution/jobs/3b8f6385-9aa8-4039-8036-e31392b5cb82/state],remediation=<null>,targetUri=<null>,errors=<null>,links=[]]"
        "404":
          description: No job exists at the requested path.
          content:
            text/plain:
              schema:
                type: string
              example: "ErrorResponse[version=2,status=404,err=0,id=<null>,message=Job not found with ID: 3b8f6385-9aa8-4039-8036-e31392b5cb82xx.,detail=[traceId: c89d154a48a2e541, path: /jobExecution/jobs/3b8f6385-9aa8-4039-8036-e31392b5cb82xx/state],remediation=<null>,targetUri=<null>,errors=<null>,links=[]]"
        "405":
          description: The request could not be completed due to a conflict with the current state of the resource. The job has already completed and can no longer be updated (error code 31501).
          content:
            text/plain:
              schema:
                type: string
              example: "ErrorResponse[version=2,status=405,err=31501,id=<null>,message=The job 859ad72d-5fa2-470c-9d43-f7a65829ae5f has already finished, and can no longer be updated.,detail=[traceId: defd90e131729576, path: /jobExecution/jobs/859ad72d-5fa2-470c-9d43-f7a65829ae5f/state],remediation=<null>,targetUri=<null>,errors=<null>,links=[]]"
  "/jobs/{jobId}/heartbeatTimeStamp":
    get:
      x-sas-since: "2"
      operationId: getJobHeartbeatTimeStamp
      summary: Get the heartbeat timestamp
      description: Returns a timestamp that represents the last received heartbeat update of the job. It uses the format yyyy-MM-ddTHH:mm:ss.SSSZ.
      tags:
        - Jobs
      parameters:
        - name: jobId
          in: path
          description: The ID of the job.
          required: true
          schema:
            type: string
      responses:
        "200":
          description: The request succeeded.
          content:
            text/plain:
              schema:
                description: A timestamp in the format of yyyy-MM-ddTHH:mm:ss.SSSZ.
                type: string
              example: 2022-04-07T23:59:31.570Z
        "204":
          description: The heartbeatTimeStamp has not been set yet.
        "404":
          description: No job exists at the requested path.
          content:
            text/plain:
              schema:
                type: string
              example: "ErrorResponse[version=2,status=404,err=0,id=<null>,message=Job not found with ID: 3b8f6385-9aa8-4039-8036-e31392b5cb82x.,detail=[traceId: daecb3ac58b0ba60, path: /jobExecution/jobs/3b8f6385-9aa8-4039-8036-e31392b5cb82x/heartbeatTimeStamp],remediation=<null>,targetUri=<null>,errors=<null>,links=[]]"
    head:
      x-sas-since: "2"
      operationId: headersForJobHeartbeatTimeStamp
      summary: Check whether the heartbeat timestamp exists
      description: Returns the header information for the heartbeat timestamp job.
      tags:
        - Jobs
      parameters:
        - name: jobId
          in: path
          description: The ID of the job.
          required: true
          schema:
            type: string
      responses:
        "200":
          description: The request succeeded.
        "204":
          description: The `heartbeatTimeStamp` has not been set yet.
        "404":
          description: No job exists at the requested path.
    post:
      x-sas-since: "2"
      operationId: createHeartbeatTimeStamp
      summary: Set the heartbeat timestamp
      description: Updates the job's heartbeat timestamp. The heartbeat timestamp value is updated when the API receives this request. The body of this request should be empty, and it is ignored if provided.
      tags:
        - Jobs
      parameters:
        - name: jobId
          in: path
          description: The ID of the job.
          required: true
          schema:
            type: string
      responses:
        "200":
          description: The request succeeded.
          content:
            text/plain:
              schema:
                type: string
              example: 2022-04-08T13:08:05.867Z
        "404":
          description: No job exists at the requested path.
          content:
            text/plain:
              schema:
                type: string
              example: "ErrorResponse[version=2,status=404,err=0,id=<null>,message=Job not found with ID: fb4e1369-544c-47ca-bd70-10d892795d71x.,detail=[traceId: b1f1c435561d114c, path: /jobExecution/jobs/fb4e1369-544c-47ca-bd70-10d892795d71x/heartbeatTimeStamp],remediation=<null>,targetUri=<null>,errors=<null>,links=[]]"
        "405":
          description: The job has already completed and can no longer be updated.
          content:
            text/plain:
              schema:
                type: string
              example: "ErrorResponse[version=2,status=405,err=31501,id=<null>,message=The job fb4e1369-544c-47ca-bd70-10d892795d71 has already finished, and can no longer be updated.,detail=[traceId: 9e727b7bd2b84038, path: /jobExecution/jobs/fb4e1369-544c-47ca-bd70-10d892795d71/heartbeatTimeStamp],remediation=<null>,targetUri=<null>,errors=<null>,links=[]]"
  "/jobs/{jobId}/expirationTimeStamp":
    get:
      x-sas-since: "2"
      operationId: getJobExpirationTimeStamp
      summary: Get the expiration timestamp
      description: Retrieves the expiration timestamp as a data string the format yyyy-MM-ddTHH:mm:ss.SSSZ. The timestamp indicates when this job expired and was deleted.
      tags:
        - Jobs
      parameters:
        - name: jobId
          in: path
          description: The ID of the job.
          required: true
          schema:
            type: string
      responses:
        "200":
          description: The request succeeded.
          content:
            text/plain:
              schema:
                type: string
                description: The timestamp in a string format of yyyy-MM-ddTHH:mm:ss.SSSZ.
              example: 2022-04-07T23:59:31.570Z
        "204":
          description: The expiration timestamp is not set.
          content:
            text/plain:
              schema:
                type: string
              example: ""
        "404":
          description: No job exists at the requested path.
          content:
            text/plain:
              schema:
                type: string
              example: "ErrorResponse[version=2,status=404,err=0,id=<null>,message=Job not found with ID: 3b8f6385-9aa8-4039-8036-xe31392b5cb82.,detail=[traceId: 728582bc607955b8, path: /jobExecution/jobs/3b8f6385-9aa8-4039-8036-xe31392b5cb82/expirationTimeStamp],remediation=<null>,targetUri=<null>,errors=<null>,links=[]]"
    head:
      x-sas-since: "2"
      operationId: headersForJobExpirationTimeStamp
      summary: Get the headers for the job-expiration timestamp
      description: Returns the header information for the job-expiration timestamp.
      tags:
        - Jobs
      parameters:
        - name: jobId
          in: path
          description: The ID of the job.
          required: true
          schema:
            type: string
      responses:
        "200":
          description: The request succeeded.
        "204":
          description: The expiration timestamp is not set.
        "404":
          description: No job exists at the requested path.
    put:
      x-sas-since: "2"
      operationId: updateExpirationTimeStamp
      summary: Set the expiration timestamp
      description: Updates the job's expiration timestamp with a data string in the format yyyy-MM-ddTHH:mm:ss.SSSZ. To clear the expiration timestamp, provide an empty value for the value-query parameter. The body of this request must be empty. Until the job has completed, this operation returns a 409 conflict with an error code of 31503.
      tags:
        - Jobs
      parameters:
        - name: jobId
          in: path
          description: The ID of the job.
          required: true
          schema:
            type: string
        - name: value
          in: query
          description: The expiration timestamp in the format yyyy-MM-ddTHH:mm:ss.SSSZ. To clear the expirationTimeStamp, leave this field empty.
          required: false
          schema:
            type: string
      responses:
        "200":
          description: The request succeeded. The timestamp is returned in a string format of yyyy-MM-ddTHH:mm:ss.SSSZ.
          content:
            text/plain:
              schema:
                type: string
              example: 2023-04-07T23:59:31.570Z
        "204":
          description: The expiration timestamp is not set.
        "400":
          description: The request was invalid. The request included a timestamp that was not in the format yyyy-MM-ddTHH:mm:ss.SSSZ (error code 31504).
          content:
            text/plain:
              schema:
                type: string
              example: "ErrorResponse[version=2,status=400,err=31504,id=<null>,message=The provided expiration timestamp 23-04-07T23:59:31.570Z is not a valid timestamp: java.time.format.DateTimeParseException: Text '23-04-07T23:59:31.570Z' could not be parsed at index 0,detail=[traceId: 53cad1cfd8cc447e, path: /jobExecution/jobs/3b8f6385-9aa8-4039-8036-e31392b5cb82/expirationTimeStamp],remediation=<null>,targetUri=<null>,errors=<null>,links=[]]"
        "404":
          description: No job exists at the requested path.
          content:
            text/plain:
              schema:
                type: string
              example: "ErrorResponse[version=2,status=404,err=0,id=<null>,message=Job not found with ID: 3b8f6385-9aa8-4039-8036-xe31392b5cb82.,detail=[traceId: f01a14543f874a34, path: /jobExecution/jobs/3b8f6385-9aa8-4039-8036-xe31392b5cb82/expirationTimeStamp],remediation=<null>,targetUri=<null>,errors=<null>,links=[]]"
        "409":
          description: The request could not be completed due to a conflict with the current state of the resource.  The job has not yet completed and the expiration timestamp cannot be set (error code 31503).
          content:
            text/plain:
              schema:
                type: string
              example: "ErrorResponse[version=2,status=409,err=31503,id=<null>,message=The expiration timestamp of job 9b346923-4771-4be7-bc6b-5e4e9c18c9e9 cannot be set until the job has finished.,detail=[traceId: 63fcebb08d236b65, path: /jobExecution/jobs/9b346923-4771-4be7-bc6b-5e4e9c18c9e9/expirationTimeStamp],remediation=<null>,targetUri=<null>,errors=<null>,links=[]]"
  /jobRequests:
    get:
      x-sas-since: "2"
      operationId: getJobRequests
      summary: Get a list of job requests
      description: Returns a collection of application/vnd.sas.job.execution.job.request resources. Standard paging, filtering, and sorting options are specified in the Query Parameters section.
      tags:
        - JobRequests
      parameters:
        - name: start
          in: query
          description: The starting index of the first job request in a page. The default is 0 (zero).
          schema:
            type: integer
        - name: limit
          in: query
          description: The maximum number of job requests to return in this page of results. The actual number of returned job requests might be less if the collection has been exhausted. The default is 10.
          schema:
            type: integer
        - name: filter
          in: query
          description: "The criteria for filtering the returned job requests. The supported functions are: and, or, not, eq, lt, le, gt, ge, contains, startsWith, endsWith, and isNull. The following queries are examples: <ul> <li>Search by name starting with the following: /jobExecution/jobRequests?filter=startsWith(name, 'myJobRe')</li> <li>Search by name: /jobExecution/jobRequests?filter=eq(name, 'myJobRequest1')</li> <li>Search for multiple job requests: /jobExecution/jobRequests?filter=in(name, 'myJobRequest1', 'myJobRequest2', 'myJobRequest3')</li> </ul> Direct comparisons on values of `arguments` and `properties` are not guaranteed to work across all platforms. Use the `contains` function instead."
          schema:
            type: string
            format: filter-criteria
        - name: sortBy
          in: query
          description: "Specifies how to sort the returned job requests. The sort criteria supports all job requests in either ascending or descending order except for jobDefinition, links, or version. The following sorts are examples: <ul> <li>Sort ascending by name: /jobExecution/jobRequests?sortBy=name:ascending</li> <li>Sort descending by name: /jobExecution/jobRequests?sortBy=name:descending</li> </ul> The default sort is by name in ascending order."
          schema:
            type: string
            format: sort-criteria
      responses:
        "200":
          description: The request succeeded. The job requests (if any) are returned in a resource collection.
          content:
            application/vnd.sas.collection+json:
              schema:
                $ref: "#/components/schemas/jobRequestCollection"
              examples:
                json:
                  $ref: "#/components/examples/getJobRequestsSampleResponse"
            application/json:
              schema:
                $ref: "#/components/schemas/jobRequestCollection"
              examples:
                json:
                  $ref: "#/components/examples/getJobRequestsSampleResponse"
        "400":
          description: >
            The request was invalid. An invalid request occurs in the following scenarios: <ul> <li>A negative start value is provided.</li> <li>A negative limit value is provided.</li> <li>An unsupported field is specified in the sortBy parameter.</li> </ul>
          content:
            application/vnd.sas.error+json:
              schema:
                $ref: "#/components/schemas/error2"
              examples:
                json:
                  $ref: "#/components/examples/getJobRequests400Response"
    post:
      x-sas-since: "2"
      operationId: createJobRequest
      summary: Create a job request
      description: Creates a new job request. <p> If the Job Request is submitted without an "expiresAfter" setting, or a global or provider-specific "expiresAfter" property is not set, it is the client's responsibility to delete the job from the system when it is no longer needed. A delete request can be issued using the job's "delete" link.
      tags:
        - JobRequests
      parameters:
        - name: parentFolderUri
          in: query
          description: The URI of the parent folder in which to save the job request.
          schema:
            type: string
      requestBody:
        content:
          application/vnd.sas.job.execution.job.request+json:
            schema:
              $ref: "#/components/schemas/jobRequest"
            examples:
              createJobRequestSampleBody:
                $ref: "#/components/examples/createJobRequestSampleBody"
              createJobRequestEmbeddedSampleBody:
                $ref: "#/components/examples/createJobRequestEmbeddedSampleBody"
          application/json:
            schema:
              $ref: "#/components/schemas/jobRequest"
            examples:
              json:
                $ref: "#/components/examples/createJobRequestSampleBody"
        description: The job request to be created.
        required: true
      responses:
        "201":
          description: The job request was created.
          headers:
            Location:
              description: Provides the URI of the newly created job request.
              schema:
                type: string
            ETag:
              description: The entity tag for the job request.
              schema:
                type: string
            Last-Modified:
              description: The timestamp for the job request that indicates when it was last modified. It uses the format `EEE, dd MMM yyyy HH:mm:ss GMT`.
              schema:
                type: string
          content:
            application/vnd.sas.job.execution.job.request+json:
              schema:
                $ref: "#/components/schemas/jobRequest"
              examples:
                json:
                  $ref: "#/components/examples/createJobRequestSampleResponse"
            application/json:
              schema:
                $ref: "#/components/schemas/jobRequest"
              examples:
                json:
                  $ref: "#/components/examples/createJobRequestSampleResponse"
        "400":
          description: The request was not valid.
          content:
            application/vnd.sas.error+json:
              schema:
                $ref: "#/components/schemas/error2"
              examples:
                json:
                  $ref: "#/components/examples/submitJobRequestNoDefinition400Response"
  "/jobRequests/{jobRequestId}#resourceSummary":
    get:
      operationId: getJobRequestSummary
      summary: Get a job request summary
      description: Returns the summary representation about a single job request based on its unique ID.
      parameters:
        - name: jobRequestId
          in: path
          description: The ID of the job request.
          required: true
          schema:
            type: string
        - name: Delegate-Domain
          in: header
          description: >
            The name of a credential domain of type OAuth2.0. The credential secret is retrieved to impersonate a group-managed service account  for the current request.
          schema:
            type: string
      tags:
        - JobRequests
      responses:
        "200":
          description: The request succeeded.
          headers:
            ETag:
              description: The entity tag for the job request.
              schema:
                type: string
            Last-Modified:
              description: The timestamp for the job request that indicates when it was last modified. It uses the format `EEE, dd MMM yyyy HH:mm:ss GMT`.
              schema:
                type: string
          content:
            application/vnd.sas.summary+json:
              schema:
                $ref: "#/components/schemas/resourceSummary"
              examples:
                json:
                  $ref: "#/components/examples/getJobRequestResourceSummaryResponse"
        "404":
          description: No job request exists at the requested path.
          content:
            application/vnd.sas.error+json:
              schema:
                $ref: "#/components/schemas/error2"
              examples:
                json:
                  $ref: "#/components/examples/getJobRequest404Response"
    head:
      operationId: headersForJobRequestSummary
      summary: Check whether the job-request summary exists
      description: Returns the header information for the job-request summary.
      tags:
        - JobRequests
      parameters:
        - name: jobRequestId
          in: path
          description: The ID of the job request.
          required: true
          schema:
            type: string
        - name: Delegate-Domain
          in: header
          description: >
            The name of a credential domain of type OAuth2.0. The credential secret is retrieved to impersonate a group-managed service account  for the current request.
          schema:
            type: string
      responses:
        "200":
          description: The request succeeded.
          headers:
            ETag:
              description: The entity tag for the job request.
              schema:
                type: string
            Last-Modified:
              description: The timestamp for the job request that indicates when it was last modified. It uses the format `EEE, dd MMM yyyy HH:mm:ss GMT`.
              schema:
                type: string
        "404":
          description: No job request exists at the requested path.
  "/jobRequests/{jobRequestId}":
    get:
      x-sas-since: "2"
      operationId: getJobRequest
      summary: Get a job request
      description: Returns information about a single job request based on its unique ID.
      parameters:
        - name: jobRequestId
          in: path
          description: The ID of the job request.
          required: true
          schema:
            type: string
        - name: Delegate-Domain
          in: header
          description: >
            The name of a credential domain of type OAuth2.0. The credential secret is retrieved to impersonate a group-managed service account  for the current request.
          schema:
            type: string
      tags:
        - JobRequests
      responses:
        "200":
          description: The request succeeded.
          headers:
            ETag:
              description: The entity tag for the job request.
              schema:
                type: string
            Last-Modified:
              description: The timestamp for the job request that indicates when it was last modified. It uses the format `EEE, dd MMM yyyy HH:mm:ss GMT`.
              schema:
                type: string
          content:
            application/vnd.sas.job.execution.job.request+json:
              schema:
                $ref: "#/components/schemas/jobRequest"
              examples:
                json:
                  $ref: "#/components/examples/getJobRequestResponse"
            application/json:
              schema:
                $ref: "#/components/schemas/jobRequest"
              examples:
                json:
                  $ref: "#/components/examples/getJobRequestResponse"
        "404":
          description: No job request exists at the requested path.
          content:
            application/vnd.sas.error+json:
              schema:
                $ref: "#/components/schemas/error2"
              examples:
                json:
                  $ref: "#/components/examples/getJobRequest404Response"
    head:
      x-sas-since: "2"
      operationId: headersForJobRequest
      summary: Check whether the job request exists
      description: Returns the header information for the job request.
      tags:
        - JobRequests
      parameters:
        - name: jobRequestId
          in: path
          description: The ID of the job request.
          required: true
          schema:
            type: string
        - name: Delegate-Domain
          in: header
          description: >
            The name of a credential domain of type OAuth2.0. The credential secret is retrieved to impersonate a group-managed service account  for the current request.
          schema:
            type: string
      responses:
        "200":
          description: The request succeeded.
          headers:
            ETag:
              description: The entity tag for the job request.
              schema:
                type: string
            Last-Modified:
              description: The timestamp for the job request that indicates when it was last modified. It uses the format `EEE, dd MMM yyyy HH:mm:ss GMT`.
              schema:
                type: string
        "404":
          description: No job request exists at the requested path.
    put:
      x-sas-since: "2"
      operationId: updateJobRequest
      summary: Update a job request
      description: Updates an existing job request via a full replacement of the resource. The ID field might not be modified by this operation.
      tags:
        - JobRequests
      parameters:
        - name: jobRequestId
          in: path
          description: The ID of the job request.
          required: true
          schema:
            type: string
        - name: If-Match
          in: header
          description: The entity tag obtained from the most recent `ETag` response header of this job request. Must match the current entity tag for the job request.
          schema:
            type: string
        - name: If-Unmodified-Since
          in: header
          description: Ignored when `If-Match` is specified. The timestamp obtained from the most recent `Last-Modified` response header of this job request. Must be later than or equal to the timestamp when the job request was last modified.
          schema:
            type: string
        - name: parentFolderUri
          in: query
          description: The URI of the parent folder in which to save the job request. If the job request is in a different folder, it is moved to the specified parent folder.
          schema:
            type: string
        - name: Delegate-Domain
          in: header
          description: >
            The name of a credential domain of type OAuth2.0. The credential secret is retrieved to impersonate a group-managed service account  for the current request.
          schema:
            type: string
      requestBody:
        content:
          application/vnd.sas.job.execution.job.request+json:
            schema:
              $ref: "#/components/schemas/jobRequest"
            examples:
              json:
                $ref: "#/components/examples/updateJobRequestSampleBody"
          application/json:
            schema:
              $ref: "#/components/schemas/jobRequest"
            examples:
              json:
                $ref: "#/components/examples/updateJobRequestSampleBody"
        description: The job request to be updated.
        required: true
      responses:
        "200":
          description: The request succeeded. The job request definition updated successfully.
          headers:
            ETag:
              description: The entity tag for the job request.
              schema:
                type: string
            Last-Modified:
              description: The timestamp for the job request that indicates when it was last modified. It uses the format `EEE, dd MMM yyyy HH:mm:ss GMT`.
              schema:
                type: string
          content:
            application/vnd.sas.job.execution.job.request+json:
              schema:
                $ref: "#/components/schemas/jobRequest"
              examples:
                json:
                  $ref: "#/components/examples/updateJobRequestSampleResponse"
            application/json:
              schema:
                $ref: "#/components/schemas/jobRequest"
              examples:
                json:
                  $ref: "#/components/examples/updateJobRequestSampleResponse"
        "400":
          description: The request was invalid. This occurs when the user provides an ID in the request that does not match the ID in the path of the URL.
          content:
            application/vnd.sas.error+json:
              schema:
                $ref: "#/components/schemas/error2"
              examples:
                json:
                  $ref: "#/components/examples/putJobRequest400Response"
            application/json:
              schema:
                $ref: "#/components/schemas/error2"
              examples:
                json:
                  $ref: "#/components/examples/putJobRequest400Response"
        "404":
          description: No job request exists at the requested path.
          content:
            application/vnd.sas.error+json:
              schema:
                $ref: "#/components/schemas/error2"
              examples:
                json:
                  $ref: "#/components/examples/putJobRequest404Response"
            application/json:
              schema:
                $ref: "#/components/schemas/error2"
              examples:
                json:
                  $ref: "#/components/examples/putJobRequest404Response"
        "412":
          description: The `If-Match` request header did not match the resource's entity tag, or the `If-Unmodified-Since` request header was earlier than the resource's last modified timestamp.
          content:
            application/vnd.sas.error+json:
              schema:
                $ref: "#/components/schemas/error2"
              examples:
                json:
                  $ref: "#/components/examples/putJobRequest412Response"
            application/json:
              schema:
                $ref: "#/components/schemas/error2"
              examples:
                json:
                  $ref: "#/components/examples/putJobRequest412Response"
        "415":
          description: The requested media type is not supported.
          content:
            application/vnd.sas.error+json:
              schema:
                $ref: "#/components/schemas/error2"
              examples:
                json:
                  $ref: "#/components/examples/putJobRequest415Response"
            application/json:
              schema:
                $ref: "#/components/schemas/error2"
              examples:
                json:
                  $ref: "#/components/examples/putJobRequest415Response"
        "428":
          description: The request was missing an `If-Match` or `If-Unmodified-Since` header.
          content:
            application/vnd.sas.error+json:
              schema:
                $ref: "#/components/schemas/error2"
              examples:
                json:
                  $ref: "#/components/examples/putJobRequest428Response"
            application/json:
              schema:
                $ref: "#/components/schemas/error2"
              examples:
                json:
                  $ref: "#/components/examples/putJobRequest428Response"
    delete:
      x-sas-since: "2"
      operationId: deleteJobRequest
      summary: Delete a job request
      description: Deletes the specified job request.
      tags:
        - JobRequests
      parameters:
        - name: jobRequestId
          in: path
          description: The ID of the job request.
          required: true
          schema:
            type: string
        - name: Delegate-Domain
          in: header
          description: >
            The name of a credential domain of type OAuth2.0. The credential secret is retrieved to impersonate a group-managed service account  for the current request.
          schema:
            type: string
      responses:
        "204":
          description: The job request was deleted.
        "404":
          description: No job request exists at the requested path.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/error2"
              examples:
                json:
                  $ref: "#/components/examples/deleteJobRequest404Response"
            application/vnd.sas.error+json:
              schema:
                $ref: "#/components/schemas/error2"
              examples:
                json:
                  $ref: "#/components/examples/deleteJobRequest404Response"
  /jobRequests/@selection/jobs:
    post:
      x-sas-since: "6"
      operationId: createJobRequestsJob
      summary: Submit multiple jobs using the specified job requests
      description: Submits jobs using the job-request URIs specified in the body resource selection. The request body identifies the job requests to submit. The selection type must be URI and the resources must be an array of URIs that identify the job requests. The items in the response MUST match 1-to-1 with the items in the request. If the job is submitted successfully, the corresponding item in the response is an application/vnd.sas.job.execution.job object. If the job submission failed, the corresponding item in the response is an application/vnd.sas.error object.
      tags:
        - JobRequests
      parameters:
        - name: submitter
          in: query
          required: false
          description: Persisted in the `submittedByApplication` member of the created Job and used as the submitter portion of the job state change event routing key. Only characters in the set [a-zA-Z0-9] and hyphen are valid with a maximum of 64 characters.
          schema:
            type: string
      requestBody:
        content:
          application/vnd.sas.selection+json:
            schema:
              $ref: "#/components/schemas/resourceSelection"
            examples:
              json:
                $ref: "#/components/examples/submitJobsResourceSelectionSampleBody"
      responses:
        "200":
          description: The request succeeded.
          content:
            application/vnd.sas.collection+json:
              schema:
                $ref: "#/components/schemas/jobSubmitCollection"
              examples:
                submitJobsSampleResponse:
                  $ref: "#/components/examples/submitJobsSampleResponse"
                submitJobsWithErrorSampleResponse:
                  $ref: "#/components/examples/submitJobsWithErrorSampleResponse"
        "400":
          description: >
            The request was invalid. An invalid request occurs in the following scenarios: <ul> <li>An empty or missing body.</li><li>An invalid resource selection type in the body. The supported type is URI.<li></ul>
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/error2"
              examples:
                postSelection400Response:
                  $ref: "#/components/examples/postSelection400Response"
            application/vnd.sas.error+json:
              schema:
                $ref: "#/components/schemas/error2"
              examples:
                postSelection400Response:
                  $ref: "#/components/examples/postSelection400Response"
  "/jobRequests/{jobRequestId}/jobs":
    get:
      x-sas-since: "2"
      operationId: getJobRequestJobs
      summary: Get list of jobs associated with a job request
      description: Returns a collection of application/vnd.sas.job.execution.job resources that were submitted using the specified job request. Standard paging, filtering, and sorting options are specified in the Query Parameters section.
      tags:
        - JobRequests
      parameters:
        - name: jobRequestId
          in: path
          description: The ID of the job request.
          required: true
          schema:
            type: string
        - name: start
          in: query
          description: The zero-based index of the first job to return. The default is 0 (zero).
          schema:
            type: integer
        - name: limit
          in: query
          description: Represents the maximum number of jobs to return in this page of results. The actual number of returned jobs might be less if the collection has been exhausted. The default is 10.
          schema:
            type: integer
        - name: filter
          in: query
          description: "Filter criteria for returned jobs. The following queries are examples: <ul> <li>Filter by name: /jobExecution/jobRequests/{jobRequestId}/jobs?filter=startsWith(name,'myJob')</li> <li>Filter by createdBy: /jobExecution/jobRequests/{jobRequestId}/jobs?filter=eq(createdBy, 'myUserId')</li> </ul> Direct comparisons on values of `results` and `jobRequest.properties` are not guaranteed to work across all platforms. Use the `contains` function instead."
          schema:
            type: string
            format: filter-criteria
        - name: sortBy
          in: query
          description: "Specifies how to sort the returned jobs. The default sort order is descending on the creationTimeStamp field. The following sorts are examples: <ul> <li>Sort ascending by ID: /jobExecution/jobRequests/{jobRequestId}/jobs?sortBy=id:ascending</li> <li>Sort descending by ID: /jobExecution/jobRequests/{jobRequestId}/jobs?sortBy=id:descending</li> </ul>"
          schema:
            type: string
            format: sort-criteria
        - name: Delegate-Domain
          in: header
          description: >
            The name of a credential domain of type OAuth2.0. The credential secret is retrieved to impersonate a group-managed service account  for the current request.
          schema:
            type: string
      responses:
        "200":
          description: The request succeeded. The job requests (if any) are returned in a resource collection.
          content:
            application/vnd.sas.collection+json:
              schema:
                $ref: "#/components/schemas/jobCollection"
              examples:
                json:
                  $ref: "#/components/examples/getJobRequestJobsResponse"
            application/json:
              schema:
                $ref: "#/components/schemas/jobCollection"
              examples:
                json:
                  $ref: "#/components/examples/getJobRequestJobsResponse"
        "400":
          description: >
            The request was invalid. An invalid request occurs in the following scenarios: <ul> <li>A negative start value is provided.</li> <li>A negative limit value is provided. </li> <li>An unsupported field is specified in the sortBy parameter. </li> </ul>
          content:
            application/vnd.sas.error+json:
              schema:
                $ref: "#/components/schemas/error2"
              examples:
                json:
                  $ref: "#/components/examples/getJobRequestJobs400Response"
            application/json:
              schema:
                $ref: "#/components/schemas/error2"
              examples:
                json:
                  $ref: "#/components/examples/getJobRequestJobs400Response"
        "404":
          description: No provider exists at the requested path.
          content:
            application/vnd.sas.error+json:
              schema:
                $ref: "#/components/schemas/error2"
              examples:
                json:
                  $ref: "#/components/examples/getJobRequestJobs404Response"
            application/json:
              schema:
                $ref: "#/components/schemas/error2"
              examples:
                json:
                  $ref: "#/components/examples/getJobRequestJobs404Response"
    post:
      x-sas-since: "2"
      operationId: createJobRequestJob
      summary: Submit a job using the specified job request
      description: "Submits a job using the job request specified in the path parameter jobRequestId. The body for this request must be empty. The returned job stores the following members from the specified job request in its `jobRequest` member to allow for future retrieval: ID, createdBy, creationTimeStamp, modifiedBy, and modifiedTimeStamp."
      tags:
        - JobRequests
      parameters:
        - name: jobRequestId
          in: path
          description: The ID of the job request.
          required: true
          schema:
            type: string
        - name: submitter
          in: query
          required: false
          description: Persisted in the `submittedByApplication` member of the created Job and used as the submitter portion of the job state change event routing key. Only characters in the set [a-zA-Z0-9] and hyphen are valid with a maximum of 64 characters. Do note the misspelled "sumbitter" query described below.
          schema:
            type: string
        - name: sumbitter
          in: query
          required: false
          description: Persisted in the `submittedByApplication` member of the created Job and used as the submitter portion of the job state change event routing key. Only characters in the set [a-zA-Z0-9] and hyphen are valid with a maximum of 64 characters. Do note the misspelling in the query parameter name to reflect the misspelling in the version 3 implementation. This misspelled query parameter is now deprecated and the correctly spelled "submitter" has been implemented and documented (see previous entry). If both query parameters are specified, then their values must be the same.
          schema:
            type: string
        - name: Delegate-Domain
          in: header
          description: >
            The name of a credential domain of type OAuth2.0. The credential secret is retrieved to impersonate a group-managed service account  for the current request.
          schema:
            type: string
      responses:
        "201":
          description: The job request was created.
          headers:
            ETag:
              description: The entity tag for the job.
              schema:
                type: string
            Last-Modified:
              description: The timestamp for the job request that indicates when it was last modified. It uses the format `EEE, dd MMM yyyy HH:mm:ss GMT`.
              schema:
                type: string
            Location:
              description: The URL location of the newly created job request job.
              schema:
                type: string
          content:
            application/vnd.sas.job.execution.job+json:
              schema:
                $ref: "#/components/schemas/job"
              examples:
                json:
                  $ref: "#/components/examples/createJobRequestJobResponse"
            application/json:
              schema:
                $ref: "#/components/schemas/job"
              examples:
                json:
                  $ref: "#/components/examples/createJobRequestJobResponse"
        "400":
          description: The request was invalid.
          content:
            application/vnd.sas.error+json:
              schema:
                $ref: "#/components/schemas/error2"
              examples:
                json:
                  $ref: "#/components/examples/createJobRequestJob400Response"
            application/json:
              schema:
                $ref: "#/components/schemas/error2"
              examples:
                json:
                  $ref: "#/components/examples/createJobRequestJob400Response"
        "404":
          description: No job request exists at the requested path.
          content:
            application/vnd.sas.error+json:
              schema:
                $ref: "#/components/schemas/error2"
              examples:
                json:
                  $ref: "#/components/examples/createJobRequestJob404Response"
            application/json:
              schema:
                $ref: "#/components/schemas/error2"
              examples:
                json:
                  $ref: "#/components/examples/createJobRequestJob404Response"
  "/jobRequests/{jobRequestId}/jobs#withQuery":
    post:
      x-sas-since: "2"
      operationId: getJobRequestJobsByFilter
      summary: Gets a filtered list of jobs associated with the job request
      description: Returns a collection of application/vnd.sas.job.execution.job resources that were submitted using the specified job request. This particular call takes the filter in the body of the request to allow large filters that exceed standard URL length limits. Standard paging, filtering, and sorting options are specified in the Query Parameters and Request Body sections.
      tags:
        - JobRequests
      parameters:
        - name: jobRequestId
          in: path
          description: The ID of the job request.
          required: true
          schema:
            type: string
        - name: start
          in: query
          description: Represents the zero-based index of the first job to return. The default is 0 (zero).
          schema:
            type: integer
        - name: limit
          in: query
          description: Represents the maximum number of jobs to return in this page of results. The actual number of returned jobs might be less if the collection has been exhausted. The default is 10.
          schema:
            type: integer
        - name: sortBy
          in: query
          description: "This determines the sort order of the returned jobs. The default sort order is descending on the creationTimeStamp field. the following sorts are examples: <ul> <li>Sort ascending by ID: /jobExecution/jobRequests/{jobRequestId}/jobs?sortBy=id:ascending</li> <li>Sort descending by ID: /jobExecution/jobRequests/{jobRequestId}/jobs?sortBy=id:descending</li> </ul>"
          schema:
            type: string
            format: sort-criteria
        - name: Delegate-Domain
          in: header
          description: >
            The name of a credential domain of type OAuth2.0. The credential secret is retrieved to impersonate a group-managed service account  for the current request.
          schema:
            type: string
      requestBody:
        content:
          text/plain:
            schema:
              type: string
            example: eq(createdBy, 'user1')
        description: "This determines the filter criteria for the returned jobs. The following request bodies are examples: <ul> <li>Filter by name: startsWith(name, 'myJob')</li> <li>Filter by createdBy: eq(createdBy, 'myUserId')</li> </ul> Direct comparisons on values of `results` and `jobRequest.properties` are not guaranteed to work across all platforms. Use the `contains` function instead."
      responses:
        "200":
          description: The request succeeded. The jobs (if any) are returned in a resource collection.
          content:
            application/vnd.sas.collection+json:
              schema:
                $ref: "#/components/schemas/jobCollection"
              examples:
                json:
                  $ref: "#/components/examples/getJobRequestJobsByFilterResponse"
            application/json:
              schema:
                $ref: "#/components/schemas/jobCollection"
              examples:
                json:
                  $ref: "#/components/examples/getJobRequestJobsByFilterResponse"
        "400":
          description: >
            The request was invalid. An invalid request occurs in the following scenarios: <ul> <li>A negative start value is provided. </li> <li>A negative limit value is provided.</li> <li>An unsupported field is specified in the sortBy parameter.</li> </ul>
          content:
            application/vnd.sas.error+json:
              schema:
                $ref: "#/components/schemas/error2"
              examples:
                json:
                  $ref: "#/components/examples/getJobRequestJobs400Response"
            application/json:
              schema:
                $ref: "#/components/schemas/error2"
              examples:
                json:
                  $ref: "#/components/examples/getJobRequestJobs400Response"
        "404":
          description: No job request exists at the requested path.
          content:
            application/vnd.sas.error+json:
              schema:
                $ref: "#/components/schemas/error2"
              examples:
                json:
                  $ref: "#/components/examples/getJobRequestJobs404Response"
            application/json:
              schema:
                $ref: "#/components/schemas/error2"
              examples:
                json:
                  $ref: "#/components/examples/getJobRequestJobs404Response"
  /providers:
    get:
      x-sas-since: "2"
      operationId: getProviders
      summary: Get a list of providers
      description: Returns a collection of application/vnd.sas.job.execution.provider resources. Standard paging, filtering, and sorting options are specified in the Parameters section.
      tags:
        - Providers
      parameters:
        - name: Accept-Item
          in: header
          required: false
          description: "The desired column representation.<br> The Accept-Item options are: <ul> <li>application/vnd.sas.job.execution.provider.summary+json</li> <li>application/vnd.sas.job.execution.provider+json </li> <li>blank </li> </ul> The providers are returned as the summary representation provider objects in either of the following situations: <ul> <li>The Accept-Item header is set to application/vnd.sas.job.execution.provider.summary+json</li> <li>There is no Accept-Item header.</li> </ul> In this case, the provider contains only the following properties: ID, version, and links. If application/vnd.sas.job.execution.provider.summary+json is specified, the provider resource contains all of the following properties: ID, heartbeatInterval, expiresAfter, version, and links."
          schema:
            type: string
            enum:
              - application/vnd.sas.job.execution.provider.summary+json
              - application/vnd.sas.job.execution.provider+json
        - name: start
          in: query
          description: The zero-based index of the first provider to be returned. The default is 0 (zero).
          schema:
            type: integer
        - name: limit
          in: query
          description: The maximum number of providers to return in this page of results. The actual number of returned providers might be less if the collection has been exhausted. The default is 10.
          schema:
            type: integer
        - name: filter
          in: query
          description: "Filter criteria for the returned providers. The only valid filter is by `id`. The supported functions are: and, or, not, eq, lt, le, gt, ge, contains, startsWith, endsWith, isNull. The following queries are examples: <ul> <li>Search by ID starting with the following: /jobExecution/providers?filter=startsWith(id, 'prov')</li> <li>Search by ID: /jobExecution/providers?filter=eq(id, 'provider1')</li> <li>Search for multiple providers: /jobExecution/providers?filter=in(id, 'provider1', 'provider2', 'provider3')</li> </ul>"
          schema:
            type: string
            format: filter-criteria
        - name: sortBy
          in: query
          description: "Specifies how the providers are sorted. The only valid sorting option is the ID field. The default sort order is ascending on the ID field. The following sorts are examples: <ul> <li>Sort ascending by ID: /jobExecution/providers?sortBy=id:ascending</li> <li>Sort descending by ID: /jobExecution/providers?sortBy=id:descending</li> </ul>"
          schema:
            type: string
            format: sort-criteria
      responses:
        "200":
          description: The request succeeded. The providers (if any) are returned in a resource collection.
          content:
            application/vnd.sas.collection+json:
              schema:
                $ref: "#/components/schemas/providerSummaryCollection"
              examples:
                json:
                  $ref: "#/components/examples/getProvidersResponse"
            application/json:
              schema:
                $ref: "#/components/schemas/providerSummaryCollection"
              examples:
                json:
                  $ref: "#/components/examples/getProvidersResponse"
        "400":
          description: >
            The request was invalid. An invalid request occurs in the following scenarios: <ul> <li>A negative start value is provided.</li> <li>A negative limit value is provided.</li> <li>An unsupported field is specified in the sortBy parameter.</li> </ul>
          content:
            application/vnd.sas.error+json:
              schema:
                $ref: "#/components/schemas/error2"
              examples:
                json:
                  $ref: "#/components/examples/getProviders400Response"
            application/json:
              schema:
                $ref: "#/components/schemas/error2"
              examples:
                json:
                  $ref: "#/components/examples/getProviders400Response"
  "/providers/{providerId}":
    get:
      x-sas-since: "2"
      operationId: getProvider
      summary: Get provider information
      description: Returns information about a single provider based on its unique ID.
      parameters:
        - name: providerId
          in: path
          description: The ID of the provider.
          required: true
          schema:
            type: string
      tags:
        - Providers
      responses:
        "200":
          description: The request succeeded.
          content:
            application/vnd.sas.job.execution.provider+json:
              schema:
                $ref: "#/components/schemas/provider"
              examples:
                json:
                  $ref: "#/components/examples/getProviderResponse"
            application/vnd.sas.job.execution.provider.summary+json:
              schema:
                $ref: "#/components/schemas/provider"
              examples:
                json:
                  $ref: "#/components/examples/getProviderResponse"
            application/json:
              schema:
                $ref: "#/components/schemas/provider"
              examples:
                json:
                  $ref: "#/components/examples/getProviderResponse"
        "404":
          description: No job request exists at the requested path.
          content:
            application/vnd.sas.error+json:
              schema:
                $ref: "#/components/schemas/error2"
              examples:
                json:
                  $ref: "#/components/examples/getProvider404Response"
            application/json:
              schema:
                $ref: "#/components/schemas/error2"
              examples:
                json:
                  $ref: "#/components/examples/getProvider404Response"
    head:
      x-sas-since: "2"
      operationId: headersForProvider
      summary: Check whether a provider exists
      description: Returns the header information for the provider.
      tags:
        - Providers
      parameters:
        - name: providerId
          in: path
          description: The ID of the provider.
          required: true
          schema:
            type: string
      responses:
        "200":
          description: The request succeeded.
        "404":
          description: The provider does not exist at the requested path.
components:
  schemas:
    jobDefinitionParameter:
      title: Job Definition Parameter Schema
      description: Job definition parameter.
      properties:
        name:
          type: string
          description: The name of the parameter.
          maxLength: 100
        type:
          type: string
          description: The type of the parameter (TABLE, NUMERIC, DATE, CHARACTER).
          maxLength: 20
        label:
          type: string
          description: The display value for the name of this parameter.
          maxLength: 250
        required:
          type: boolean
          description: Specifies if the parameter is required for execution.
        defaultValue:
          type: string
          description: The default value for this parameter, if one is not specified at execution time.
        version:
          type: integer
          description: The version number of the representation. The current version is 1.
    jobDefinition:
      title: Job Definition Schema
      description: The job definition.
      type: object
      properties:
        id:
          type: string
          description: The unique identifier for the job that is generated by the API.
        name:
          type: string
          description: The name of the job.
          maxLength: 255
        description:
          type: string
          description: The description of the job.
          maxLength: 1000
        type:
          type: string
          description: The type of job. This property determines the execution provider that executes this job.
          maxLength: 250
        code:
          type: string
          description: Execution-provider-specific code to be executed.
        parameters:
          type: array
          description: An array of input parameters to be collected when executing this job definition
          items:
            $ref: "#/components/schemas/jobDefinitionParameter"
        properties:
          type: array
          description: An array of name-value pairs required to execute a job definition The maximum name length is 100.
          items:
            $ref: "#/components/schemas/resourceProperty"
        creationTimeStamp:
          type: string
          format: date-time
          description: The timestamp when the job was created. It uses the format `YYYY-MM-DDThh:mm:ss.sssZ`.
        modifiedTimeStamp:
          type: string
          format: date-time
          description: The timestamp when the job was last modified. It uses the format `YYYY-MM-DDThh:mm:ss.sssZ`.
        createdBy:
          type: string
          description: The name of the user who created the job.
        modifiedBy:
          type: string
          description: The name of the last user who modified this object.
        links:
          type: array
          description: Links that apply to this object. Includes "self" and "alternate".
          items:
            $ref: "#/components/schemas/link"
        version:
          type: integer
          description: The version number of the representation. The current version is 2.
    jobRequest:
      title: Job Request Schema
      description: The job request.
      type: object
      properties:
        id:
          type: string
          description: The unique identifier for the job request. This is only required for a persisted job request.
        name:
          type: string
          description: The name of the job request. If empty, the name of the job definition will be used for a job request that is embedded in the 'application/vnd.sas.job.execution.job' media type.
        description:
          type: string
          description: The description of the job request.
        creationTimeStamp:
          type: string
          format: date-time
          description: The timestamp when the job request was created. It uses the format `YYYY-MM-DDThh:mm:ss.sssZ`. This is set only on a persisted job request.
        modifiedTimeStamp:
          type: string
          format: date-time
          description: The timestamp when the job request was last modified. It uses the format `YYYY-MM-DDThh:mm:ss.sssZ`. This is set only on a persisted job request.
        createdBy:
          type: string
          description: The name of the user who created the job request. This is set only on a persisted job request.
        modifiedBy:
          type: string
          description: The name of the last user who modified this object. This is set only on a persisted job request
        jobDefinitionUri:
          type: string
          description: The URI of the job definition that is to be executed. Either the jobDefinitionUri or the jobDefinition property must be set in a job request submitted to Job Execution service for execution.
        jobDefinition:
          $ref: "#/components/schemas/jobDefinition"
        expiresAfter:
          type: string
          description: The duration of time (in W3C XML duration format) after the completion of the job when the job must be deleted by the Job Execution service. If a value is specified for this property, it overrides any value specified by the provider's /commons/settings endpoint for the job request.  For a job request that is embedded in the `application/vnd.sas.job.execution.job` media type, if a value is not already set for the "expiresAfter" property, the value is set by the Job Execution Service to either the provider's value or the global "expiresAfter" value in sas.job.execution configuration, if one exists.
        arguments:
          type: object
          description: The values of the arguments are name-value pairs specified as a map of string keys and values. Values can be supplied for parameters not defined in the job definition. The maximum name length is 100. <p> Hibernate does not persist a map entry with a null value. Therefore, a persisted Job Request does not contain such entries. <p> For a job request that is embedded in the 'application/vnd.sas.job.execution.job' media type, this value is set by the Job Execution service and contains the complete set of arguments to use in the execution by the provider. Arguments that already exist in the original job request are left unchanged. If there are arguments in the job definition that do not exist in the original job request arguments map, those arguments and any default values, including null values, are added to the arguments map. However, because the Job object is persisted before being sent to the provider, no entries for such null-value arguments in the Job are sent to the provider (because of the Hibernate behavior of not persisting map/collection entries with null values). The Job Execution service also guarantees that any required argument has an associated non-null value.
          additionalProperties:
            type: string
        properties:
          type: array
          description: The value of properties are name-value pairs specified as a map of string keys and values. The maximum name length is 100.
          items:
            $ref: "#/components/schemas/resourceProperty"
        createdByApplication:
          type: string
          description: The application that created the job request. The value is typically from the `spring.application.name` property. The value is used as the "creator" in the routing key of the Job State Change events, and if it is not present in the job request the value "jobExecution" is used. Valid characters are [a-zA-Z0-9] and the hyphen.
          maxLength: 64
        links:
          type: array
          description: Links that apply to this object. Includes "self", "alternate", "export", "delete", "update", "import", "up", "jobs" and "submitJob".
          items:
            $ref: "#/components/schemas/link"
        version:
          type: integer
          description: The version number of the representation. The current version is 3.
    job:
      title: Execution Job Schema
      description: The execution job.
      properties:
        id:
          type: string
          description: The unique identifier that is generated by the API.
        state:
          type: string
          description: The current state of the job.
          enum:
            - pending
            - running
            - canceled
            - completed
            - failed
            - timedOut
        stateDetails:
          type: string
          description: Details that supplement the "state" by providing a hint that additional information is available. It is a hint and not the actual information. The purpose of this field is for providers to provide a hint, where applicable, about the state set and for that hint to be used by components which convey state information to clients. It must be set in conjunction with "state".
        results:
          type: object
          description: The output of the job execution as a map of string keys and values.
          additionalProperties:
            type: string
        error:
          $ref: "#/components/schemas/error2"
        jobRequest:
          $ref: "#/components/schemas/jobRequest"
        heartbeatInterval:
          type: integer
          format: int32
          description: The interval in seconds that the heartbeatTimeStamp is updated by the provider before the job times out. This is 0 if there is no heartbeat.
        heartbeatTimeStamp:
          type: string
          format: date-time
          description: The timestamp identifying when the last heartbeat was received. It uses the format `YYYY-MM-DDThh:mm:ss.sssZ`.
        creationTimeStamp:
          type: string
          format: date-time
          description: The timestamp identifying when the job was created. It uses the format `YYYY-MM-DDThh:mm:ss.sssZ`.
        modifiedTimeStamp:
          type: string
          format: date-time
          description: The timestamp identifying when the job was last modified. It uses the format `YYYY-MM-DDThh:mm:ss.sssZ`.
        endTimeStamp:
          type: string
          format: date-time
          description: The timestamp identifying when the job state changed to completed or failed. It uses the format `YYYY-MM-DDThh:mm:ss.sssZ`.
        elapsedTime:
          type: number
          description: If the job has ended, the value is the difference between the endTimeStamp and the creationTimeStamp. If the job has not ended, the value is the difference between the time that this representation was created and the creationTimeStamp. The units are in milliseconds. A value of -1 is returned if a value is not set for the creationTimeStamp.
        logLocation:
          type: string
          description: The URI for the log, if one exists. The provider might provide additional information.
        expirationTimeStamp:
          type: string
          format: date-time
          description: The timestamp when the job expired and is deleted by the Job Execution service. It uses the format `YYYY-MM-DDThh:mm:ss.sssZ`. This is set by the service after the job has completed based on the value of the `expiresAfter` member of the job request.
        createdBy:
          type: string
          description: The name of the user who created or submitted the job.
        modifiedBy:
          type: string
          description: The name of the last user who modified this object.
        submittedByApplication:
          type: string
          description: Value of the query parameter "submitter" on the `POST` endpoints to submit a job. If the query parameter is not present, the createdByApplication value from the embedded JobRequest is used. The createdByApplication value in the embedded JobRequest that is used is the same as what was in the submitted job request if one was present. If it is not present, the value "jobExecution" is used. The submittedByApplication value is used as the "submitter" in the routing routing key of Job State Change events. Only characters in the set [a-zA-Z0-9] and hyphen are valid for submitter.
          maxLength: 64
        links:
          type: array
          description: Links that apply to this object. Includes "self", "state", "update", "delete", "updateState", "updateHeartbeatTimeStamp", "jobRequest" and "log".
          items:
            $ref: "#/components/schemas/link"
        version:
          type: integer
          description: The version number of the representation. The current version is 4.
    jobRequestCollection:
      title: Job Request Collection
      type: object
      description: A page-able collection of job-request resources.
      allOf:
        - $ref: "#/components/schemas/baseCollection2"
        - type: object
          required:
            - items
          properties:
            items:
              type: array
              description: An array containing job-request resources.
              items:
                $ref: "#/components/schemas/jobRequest"
    jobCollection:
      title: Job Collection
      type: object
      description: A page-able collection of job objects.
      allOf:
        - $ref: "#/components/schemas/baseCollection2"
        - type: object
          required:
            - items
          properties:
            items:
              type: array
              description: An array that contains job resources.
              items:
                $ref: "#/components/schemas/job"
    resourceProperty:
      title: Resource Property
      type: object
      description: A simple name-value pair.
      properties:
        name:
          type: string
          description: The name.
        value:
          type: string
          description: The value.
    providerSummary:
      title: Provider Summary
      type: object
      description: Summary information about a provider.
      properties:
        id:
          type: string
          description: The unique provider identifier.
        version:
          type: integer
          description: The version of the provider schema.
        links:
          type: array
          description: The links that apply to this resource.
          items:
            $ref: "#/components/schemas/link"
    provider:
      title: Provider
      type: object
      description: Summary information about a provider.
      properties:
        id:
          type: string
          description: The unique provider identifier.
        version:
          type: integer
          description: The version of the provider schema.
        heartbeatInterval:
          type: integer
          format: int32
          description: The interval (in seconds) that the heartbeatTimeStamp is updated by the provider before the job times out. This is 0 if there is no heartbeat.
        expiresAfter:
          type: string
          description: 'The duration of time (in <a href="https://www.w3.org/TR/xmlschema-2/#duration" target="_blank">W3C XML duration format</a>) after the job is complete when the job must be deleted by the job execution API. For example, to indicate that the job expires after 30 days, write: `P30D`.'
        links:
          type: array
          description: The links that apply to this resource.
          items:
            $ref: "#/components/schemas/link"
    providerSummaryCollection:
      type: object
      description: A page-able collection of provider resources.
      title: Provider Summary Collection
      allOf:
        - $ref: "#/components/schemas/baseCollection2"
        - type: object
          required:
            - items
          properties:
            items:
              type: array
              description: An array containing provider resources.
              items:
                $ref: "#/components/schemas/providerSummary"
    jobSubmitCollection:
      title: Collection of Job Objects and Possible Error Objects
      description: A collection of job or error objects. When submitting multiple jobs, the items in the response MUST match 1-to-1 with the items in the request. The corresponding item is either a job object or an error object.
      allOf:
        - $ref: "#/components/schemas/baseCollection2"
        - type: object
          properties:
            items:
              type: array
              description: Job objects and error objects.
              items:
                $ref: "#/components/schemas/jobOrError"
    jobOrError:
      title: Job or Error Object
      description: A job object or error object.
      oneOf:
        - $ref: "#/components/schemas/job"
        - $ref: "#/components/schemas/error2"
    updateJobsStateCollection:
      title: Collection of Resource Summary and Possible Error Objects
      description: A collection of resource summary or error objects. When updating the state of multiple jobs, the items in the response MUST match 1-to-1 with the items in the request. The corresponding item is either a resource summary object or an error object.
      allOf:
        - $ref: "#/components/schemas/baseCollection2"
        - type: object
          properties:
            items:
              type: array
              description: Resource summary objects and error objects.
              items:
                $ref: "#/components/schemas/resourceSummaryOrError"
    resourceSummaryOrError:
      title: Resource Summary or Error Object
      description: A resource summary object or error object.
      oneOf:
        - $ref: "#/components/schemas/resourceSummary"
        - $ref: "#/components/schemas/error2"
    resourceSummary:
      title: Resource Summary Schema
      description: The resource summary object.
      type: object
      properties:
        name:
          type: string
          description: The name of the resource.
        id:
          type: string
          description: The ID of the resource.
        type:
          type: string
          description: The resource type.
        description:
          type: string
          description: The resource description.
        typeDefName:
          type: string
          description: The name of the TypeDef.
        iconUri:
          type: string
          description: The icon URI.
        links:
          type: array
          description: Paging links that apply to this object.
          items:
            $ref: "#/components/schemas/link"
        version:
          type: integer
          description: The version of the resource summary schema. This is version 2.
    baseCollection2:
      title: Base Collection
      description: This is a base schema used to define paginated collections of resources. This base schema is extended by other schemas in APIs by adding an 'items' array property. These extensions define the `application/vnd.sas.collection` media type (version 2).
      properties:
        name:
          type: string
          description: The name of the collection.
        start:
          type: integer
          description: The zero-based index of the first item in the collection.
          format: int64
        limit:
          type: integer
          description: The number of items that were requested for the collection.
        count:
          type: integer
          description: If populated, indicates the number of items in the collection.
          format: int64
        accept:
          type: string
          description: A space-delimited list of media types from which an `Accept` header can be constructed.
        links:
          type: array
          description: The links that apply to the collection.
          items:
            $ref: "#/components/schemas/link"
        version:
          type: integer
          description: The version number of the collection representation. This representation is version 2.
    link:
      title: Link
      type: object
      description: A link to a related operation or resource.
      required:
        - rel
      properties:
        method:
          type: string
          description: The HTTP method for the link.
        rel:
          type: string
          description: The relationship of the link to the resource.
        uri:
          type: string
          description: The relative URI for the link.
        href:
          type: string
          description: The URL for the link.
        title:
          type: string
          description: The title for the link.
        type:
          type: string
          description: The media type or link type for the link.
        itemType:
          type: string
          description: If this is a link to a container, `itemType` is the media type or link type for the items in the container.
        responseType:
          type: string
          description: The media type or link type of the response body for a `PUT`, `POST`, or `PATCH` operation.
        responseItemType:
          type: string
          description: The media type or link type of the items in the response body for a `PUT`, `POST`, or `PATCH` operation.
    error2:
      title: Error
      type: object
      description: The representation of an error.
      x-sas-media-type:
        name: application/vnd.sas.error
        version: 2
      required:
        - httpStatusCode
        - version
      properties:
        message:
          type: string
          description: The message for the error.
        id:
          type: string
          description: The string ID for the error.
        errorCode:
          type: integer
          description: The numeric ID for the error.
        httpStatusCode:
          type: integer
          description: The HTTP status code for the error.
        details:
          type: array
          description: Messages that provide additional details about the cause of the error.
          items:
            type: string
        remediation:
          type: string
          description: A message that describes how to resolve the error.
        errors:
          type: array
          description: Any additional errors that occurred.
          items:
            $ref: "#/components/schemas/error2"
        links:
          type: array
          description: The links that apply to the error.
          items:
            $ref: "#/components/schemas/link"
        version:
          type: integer
          description: The version number of the error representation. This representation is version 2.
    resourceSelection:
      title: Resource Selection
      type: object
      description: The representation of a selection of zero or more resources.
      required:
        - version
        - resources
      x-sas-media-type:
        name: application/vnd.sas.selection+json
        version: 1
      properties:
        name:
          type: string
          description: The ID of the selection.
        type:
          type: string
          description: Specifies whether the resources array contains IDs, URIs, or both. If \"id\", the array contains resource identifiers only. This is the default if \"type\" is omitted. If \"uri\", the array contains resource URIs.  If \"mixed\", the array contains a mixture of identifiers and URIs.
          enum:
            - id
            - uri
            - mixed
        template:
          type: string
          description: A URI template in which the {id} parameter can be replaced with a value from the \"resources\" array in order to yield the URI of the identified resource.
          format: uri
        resources:
          type: array
          description: The selected resources as an array of resource IDs or URIs.
          items:
            type: string
        links:
          type: array
          description: The links that apply to the selection.
          items:
            $ref: "#/components/schemas/link"
        version:
          description: The schema version number of this media type. This representation is version 1.
          type: integer
    api:
      title: API
      description: The list of links to top-level resources and operations available from the root of the API.
      x-sas-media-type:
        name: application/vnd.sas.api
        version: 1
      required:
        - version
        - links
      properties:
        version:
          type: integer
          description: The version number of the API representation. This is version 3.
          minimum: 1
        links:
          description: The API's top-level links.
          type: array
          items:
            $ref: "#/components/schemas/link"
  examples:
    rootSampleResponse:
      summary: Root response
      description: This is an example response when using `GET` on the root resource.
      value:
        version: 1
        links:
          - method: GET
            rel: jobs
            href: /jobExecution/jobs
            uri: /jobExecution/jobs
            type: application/vnd.sas.collection
            itemType: application/vnd.sas.job.execution.job
            responseItemType: application/vnd.sas.job.execution.job
          - method: POST
            rel: create
            href: /jobExecution/jobs
            uri: /jobExecution/jobs
            type: application/vnd.sas.job.execution.job.request
            responseType: application/vnd.sas.job.execution.job
          - method: GET
            rel: jobRequests
            href: /jobExecution/jobRequests
            uri: /jobExecution/jobRequests
            type: application/vnd.sas.collection
            itemType: application/vnd.sas.job.execution.job.request
    updateJobRequestSampleBody:
      summary: Body to update an existing Job Request
      description: This is an example body to update a job request.
      value:
        id: "{{JOBREQID}}"
        name: sashelp.class distribution
        description: ods output with age 14 cutoff
        jobDefinitionUri: /jobDefinitions/definitions/dabd2a63-ae2f-4559-b110-ad989ff642a5
        arguments:
          AGE: "14"
    updateJobRequestSampleResponse:
      summary: Update Job Request response
      description: This is an example response when using `PUT` to update a job request.
      value:
        creationTimeStamp: 2018-03-12T19:37:28.318Z
        modifiedTimeStamp: 2018-03-12T19:51:07.178Z
        createdBy: user1
        modifiedBy: user1
        version: 3
        id: f9c52f58-9639-45ae-b24c-23cfff0b2f5b
        name: sashelp.class distribution
        description: ods output with age 14 cutoff
        jobDefinitionUri: /jobDefinitions/definitions/dabd2a63-ae2f-4559-b110-ad989ff642a5
        arguments:
          _contextName: SAS Job Execution compute context
          AGE: "14"
        properties: []
        links:
          - method: GET
            rel: self
            href: /jobExecution/jobRequests/f9c52f58-9639-45ae-b24c-23cfff0b2f5b
            uri: /jobExecution/jobRequests/f9c52f58-9639-45ae-b24c-23cfff0b2f5b
            type: application/vnd.sas.job.execution.job.request
          - method: GET
            rel: export
            href: /jobExecution/jobRequests/f9c52f58-9639-45ae-b24c-23cfff0b2f5b
            uri: /jobExecution/jobRequests/f9c52f58-9639-45ae-b24c-23cfff0b2f5b
            type: application/vnd.sas.transfer.object
          - method: DELETE
            rel: delete
            href: /jobExecution/jobRequests/f9c52f58-9639-45ae-b24c-23cfff0b2f5b
            uri: /jobExecution/jobRequests/f9c52f58-9639-45ae-b24c-23cfff0b2f5b
          - method: PUT
            rel: update
            href: /jobExecution/jobRequests/f9c52f58-9639-45ae-b24c-23cfff0b2f5b
            uri: /jobExecution/jobRequests/f9c52f58-9639-45ae-b24c-23cfff0b2f5b
            type: application/vnd.sas.job.execution.job.request
          - method: PUT
            rel: import
            href: /jobExecution/jobRequests/f9c52f58-9639-45ae-b24c-23cfff0b2f5b
            uri: /jobExecution/jobRequests/f9c52f58-9639-45ae-b24c-23cfff0b2f5b
            type: application/vnd.sas.transfer.object
            responseType: application/vnd.sas.summary
          - method: GET
            rel: up
            href: /jobExecution/jobRequests
            uri: /jobExecution/jobRequests
            type: application/vnd.sas.collection
            itemType: application/vnd.sas.job.execution.job.request
          - method: GET
            rel: jobs
            href: /jobExecution/jobRequests/f9c52f58-9639-45ae-b24c-23cfff0b2f5b/jobs
            uri: /jobExecution/jobRequests/f9c52f58-9639-45ae-b24c-23cfff0b2f5b/jobs
            type: application/vnd.sas.collection
            itemType: application/vnd.sas.job.execution.job
          - method: POST
            rel: submitJob
            href: /jobExecution/jobRequests/f9c52f58-9639-45ae-b24c-23cfff0b2f5b/jobs
            uri: /jobExecution/jobRequests/f9c52f58-9639-45ae-b24c-23cfff0b2f5b/jobs
            responseType: application/vnd.sas.job.execution.job
    createJobRequestEmbeddedSampleBody:
      summary: Body to create a Job Request with an embedded Job Definition
      description: This is an example body to create a job request using an embedded Job Definition.
      value:
        name: PROC PRINT
        description: ods output
        jobDefinition:
          version: 1
          name: Simple PROC PRINT
          type: Compute
          parameters:
            - version: 1
              name: _contextName
              defaultValue: SAS Job Execution compute context
              type: CHARACTER
              label: Context Name
              required: false
          code: >-
            ods html style=HTMLBlue;

            proc print data=sashelp.class; run; quit;

            ods html close;
    createJobRequestSampleBody:
      summary: Body to create a Job Request
      description: This is an example body to create a job request.
      value:
        name: sashelp class distribution
        description: ods output with age 14 cutoff
        jobDefinitionUri: /jobDefinitions/definitions/dabd2a63-ae2f-4559-b110-ad989ff642a5
        arguments:
          AGE: "14"
        createdByApplication: jobrequestui
    createJobRequestSampleResponse:
      summary: Create job request response
      description: This is an example response when using `POST` to create a job request.
      value:
        creationTimeStamp: 2018-03-12T19:37:28.318Z
        modifiedTimeStamp: 2018-03-12T19:37:28.318Z
        createdBy: user1
        modifiedBy: user1
        version: 3
        id: f9c52f58-9639-45ae-b24c-23cfff0b2f5b
        name: sashelp class distribution
        description: ods output with age 14 cutoff
        jobDefinitionUri: /jobDefinitions/definitions/dabd2a63-ae2f-4559-b110-ad989ff642a5
        arguments:
          AGE: "14"
          _contextName: SAS Job Execution compute context
        properties: []
        createdByApplication: jobrequestui
        links:
          - method: GET
            rel: self
            href: /jobExecution/jobRequests/f9c52f58-9639-45ae-b24c-23cfff0b2f5b
            uri: /jobExecution/jobRequests/f9c52f58-9639-45ae-b24c-23cfff0b2f5b
            type: application/vnd.sas.job.execution.job.request
          - method: GET
            rel: export
            href: /jobExecution/jobRequests/f9c52f58-9639-45ae-b24c-23cfff0b2f5b
            uri: /jobExecution/jobRequests/f9c52f58-9639-45ae-b24c-23cfff0b2f5b
            type: application/vnd.sas.transfer.object
          - method: DELETE
            rel: delete
            href: /jobExecution/jobRequests/f9c52f58-9639-45ae-b24c-23cfff0b2f5b
            uri: /jobExecution/jobRequests/f9c52f58-9639-45ae-b24c-23cfff0b2f5b
          - method: PUT
            rel: update
            href: /jobExecution/jobRequests/f9c52f58-9639-45ae-b24c-23cfff0b2f5b
            uri: /jobExecution/jobRequests/f9c52f58-9639-45ae-b24c-23cfff0b2f5b
            type: application/vnd.sas.job.execution.job.request
          - method: PUT
            rel: import
            href: /jobExecution/jobRequests/f9c52f58-9639-45ae-b24c-23cfff0b2f5b
            uri: /jobExecution/jobRequests/f9c52f58-9639-45ae-b24c-23cfff0b2f5b
            type: application/vnd.sas.transfer.object
            responseType: application/vnd.sas.summary
          - method: GET
            rel: up
            href: /jobExecution/jobRequests
            uri: /jobExecution/jobRequests
            type: application/vnd.sas.collection
            itemType: application/vnd.sas.job.execution.job.request
          - method: GET
            rel: jobs
            href: /jobExecution/jobRequests/f9c52f58-9639-45ae-b24c-23cfff0b2f5b/jobs
            uri: /jobExecution/jobRequests/f9c52f58-9639-45ae-b24c-23cfff0b2f5b/jobs
            type: application/vnd.sas.collection
            itemType: application/vnd.sas.job.execution.job
          - method: POST
            rel: submitJob
            href: /jobExecution/jobRequests/f9c52f58-9639-45ae-b24c-23cfff0b2f5b/jobs
            uri: /jobExecution/jobRequests/f9c52f58-9639-45ae-b24c-23cfff0b2f5b/jobs
            responseType: application/vnd.sas.job.execution.job
    stateResourceSelectionSampleBody:
      summary: Body to change the state of multiple jobs
      description: This is an example body when changing the state of multiple jobs using the multi-PUT.
      value:
        version: 1
        type: uri
        resources:
          - /jobExecution/jobs/de941a62-9099-4081-b696-23ffad922963
          - /jobExecution/jobs/efc70058-4731-4ffd-8f2e-3da6f472fd6e
          - /jobExecution/jobs/368d5e04-c3d4-493d-8b1a-2c24816ef71d
    submitJobSampleBody:
      summary: Body to submit the job.
      description: This is an example body when submitting a job. In this example, the following request body overrides the "AGE" argument defined in Job Definition.
      value:
        name: PROC PRINT example
        description: ods output with age 14 cutoff
        jobDefinitionUri: /jobDefinitions/definitions/2cbe5f60-1391-42db-a857-271e83eb7e48
        arguments:
          AGE: "14"
    submitJobSampleResponse:
      summary: Submit job response
      description: This is example response when using `POST` to submit a job.
      value:
        creationTimeStamp: 2018-03-12T19:21:15.877Z
        modifiedTimeStamp: 2018-03-12T19:21:16.105Z
        createdBy: user1
        modifiedBy: user1
        version: 3
        id: f9dbe76c-1a13-491e-b1e4-eda2219a2320
        jobRequest:
          version: 3
          name: PROC PRINT example
          description: ods output with age 14 cutoff
          jobDefinitionUri: /jobDefinitions/definitions/dabd2a63-ae2f-4559-b110-ad989ff642a5
          jobDefinition:
            creationTimeStamp: 2018-03-12T19:20:22.136Z
            modifiedTimeStamp: 2018-03-12T19:20:22.136Z
            createdBy: user1
            modifiedBy: user1
            version: 2
            id: dabd2a63-ae2f-4559-b110-ad989ff642a5
            name: Simple PROC PRINT
            type: Compute
            parameters:
              - version: 1
                name: _contextName
                defaultValue: SAS Job Execution compute context
                type: CHARACTER
                label: Context Name
                required: false
              - version: 1
                name: AGE
                defaultValue: "10"
                type: NUMERIC
                label: Lowest age for report
                required: false
            code: >-
              ods html style=HTMLBlue;

              proc print data=sashelp.class; where age > &AGE; run; quit;

              ods html close;
            links:
              - method: GET
                rel: self
                href: /jobDefinitions/definitions/dabd2a63-ae2f-4559-b110-ad989ff642a5
                uri: /jobDefinitions/definitions/dabd2a63-ae2f-4559-b110-ad989ff642a5
                type: application/vnd.sas.job.definition
              - method: PUT
                rel: update
                href: /jobDefinitions/definitions/dabd2a63-ae2f-4559-b110-ad989ff642a5
                uri: /jobDefinitions/definitions/dabd2a63-ae2f-4559-b110-ad989ff642a5
                type: application/vnd.sas.job.definition
                responseType: application/vnd.sas.job.definition
              - method: DELETE
                rel: delete
                href: /jobDefinitions/definitions/dabd2a63-ae2f-4559-b110-ad989ff642a5
                uri: /jobDefinitions/definitions/dabd2a63-ae2f-4559-b110-ad989ff642a5
            properties: []
          arguments:
            _contextName: SAS Job Execution compute context
            AGE: "14"
          properties: []
          createdByApplication: jobExecution
        state: running
        submittedByApplication: workflow
        heartbeatInterval: 0
        elapsedTime: 546
        results: {}
        links:
          - method: GET
            rel: self
            href: /jobExecution/jobs/f9dbe76c-1a13-491e-b1e4-eda2219a2320
            uri: /jobExecution/jobs/f9dbe76c-1a13-491e-b1e4-eda2219a2320
            type: application/vnd.sas.job.execution.job
          - method: GET
            rel: state
            href: /jobExecution/jobs/f9dbe76c-1a13-491e-b1e4-eda2219a2320/state
            uri: /jobExecution/jobs/f9dbe76c-1a13-491e-b1e4-eda2219a2320/state
            type: text/plain
          - method: PUT
            rel: update
            href: /jobExecution/jobs/f9dbe76c-1a13-491e-b1e4-eda2219a2320
            uri: /jobExecution/jobs/f9dbe76c-1a13-491e-b1e4-eda2219a2320
            type: application/vnd.sas.job.execution.job
            responseType: application/vnd.sas.job.execution.job
          - method: DELETE
            rel: delete
            href: /jobExecution/jobs/f9dbe76c-1a13-491e-b1e4-eda2219a2320
            uri: /jobExecution/jobs/f9dbe76c-1a13-491e-b1e4-eda2219a2320
          - method: PUT
            rel: updateState
            href: /jobExecution/jobs/f9dbe76c-1a13-491e-b1e4-eda2219a2320/state
            uri: /jobExecution/jobs/f9dbe76c-1a13-491e-b1e4-eda2219a2320/state
            type: text/plain
          - method: POST
            rel: updateHeartbeatTimeStamp
            href: /jobExecution/jobs/f9dbe76c-1a13-491e-b1e4-eda2219a2320/heartbeatTimeStamp
            uri: /jobExecution/jobs/f9dbe76c-1a13-491e-b1e4-eda2219a2320/heartbeatTimeStamp
            type: text/plain
          - method: GET
            rel: jobDefinition
            href: /jobDefinitions/definitions/dabd2a63-ae2f-4559-b110-ad989ff642a5
            uri: /jobDefinitions/definitions/dabd2a63-ae2f-4559-b110-ad989ff642a5
            type: application/vnd.sas.job.definition
    updateJobsStateSampleResponse:
      summary: Update jobs' state response
      description: This is an example of using `PUT` to update the state of multiple jobs.
      value:
        links: []
        name: items
        items:
          - id: 1c2b0fea-d0f9-4073-a79c-61cf779bb97d
            type: application/vnd.sas.job.execution.job
            name: Balance updates
            version: 2
          - id: 018c5b29-c2d2-4180-b205-b5f8da1b3886
            type: application/vnd.sas.job.execution.job
            name: Update Monthly data
            version: 2
        version: 2
    getJobSampleResponse:
      summary: Get job response
      description: This is an example of using `GET` to obtain a specific job.
      value:
        creationTimeStamp: 2018-03-12T18:48:29.471Z
        modifiedTimeStamp: 2018-03-12T18:48:42.753Z
        createdBy: user1
        modifiedBy: user1
        version: 3
        id: 6efcf389-7d63-4929-b532-13be28460eea
        jobRequest:
          version: 3
          name: PROC PRINT
          description: ods output
          jobDefinitionUri: /jobDefinitions/definitions/aa3065a0-8ef6-42d1-965d-e77652aea7af
          jobDefinition:
            creationTimeStamp: 2018-03-12T18:46:31.665Z
            modifiedTimeStamp: 2018-03-12T18:46:31.666Z
            createdBy: user1
            modifiedBy: user1
            version: 2
            id: aa3065a0-8ef6-42d1-965d-e77652aea7af
            name: Simple PROC PRINT
            type: Compute
            parameters:
              - version: 1
                name: _contextName
                defaultValue: SAS Job Execution compute context
                type: CHARACTER
                label: Context Name
                required: false
            code: >-
              ods html style=HTMLBlue;

              proc print data=sashelp.class; run; quit;

              ods html close;
            links:
              - method: GET
                rel: self
                href: /jobDefinitions/definitions/aa3065a0-8ef6-42d1-965d-e77652aea7af
                uri: /jobDefinitions/definitions/aa3065a0-8ef6-42d1-965d-e77652aea7af
                type: application/vnd.sas.job.definition
              - method: PUT
                rel: update
                href: /jobDefinitions/definitions/aa3065a0-8ef6-42d1-965d-e77652aea7af
                uri: /jobDefinitions/definitions/aa3065a0-8ef6-42d1-965d-e77652aea7af
                type: application/vnd.sas.job.definition
                responseType: application/vnd.sas.job.definition
              - method: DELETE
                rel: delete
                href: /jobDefinitions/definitions/aa3065a0-8ef6-42d1-965d-e77652aea7af
                uri: /jobDefinitions/definitions/aa3065a0-8ef6-42d1-965d-e77652aea7af
            properties: []
          arguments:
            _contextName: SAS Job Execution compute context
          properties: []
          createdByApplication: jobExecution
        state: completed
        endTimeStamp: 2018-03-12T18:48:42.753Z
        submittedByApplication: jobExecution
        heartbeatInterval: 0
        elapsedTime: 13282
        results:
          COMPUTE_CONTEXT: SAS Job Execution compute context
          sashtml.htm: /files/files/4908deb5-1b61-4473-a54a-aa02710b611b
          D4363A55-6BC1-1C49-B559-8CFFC570DCF3.log.txt: /files/files/96fb540c-b6be-4fc0-b2c1-3dbb5a3873f4
          D4363A55-6BC1-1C49-B559-8CFFC570DCF3.list: /files/files/f5e9d616-ad1b-49cf-a96c-26d2d2bfb567
          COMPUTE_JOB: D4363A55-6BC1-1C49-B559-8CFFC570DCF3
          D4363A55-6BC1-1C49-B559-8CFFC570DCF3.list.txt: /files/files/fcc792d1-bb57-4456-89fe-651c94d9f536
          COMPUTE_SESSION: 53cd7934-767d-4823-8fd0-24f0fe9af953-ses0000 Ended.
        logLocation: /files/files/3303a3eb-2a6c-4123-9f9b-7d20993edd2b
        links:
          - method: GET
            rel: self
            href: /jobExecution/jobs/6efcf389-7d63-4929-b532-13be28460eea
            uri: /jobExecution/jobs/6efcf389-7d63-4929-b532-13be28460eea
            type: application/vnd.sas.job.execution.job
          - method: GET
            rel: state
            href: /jobExecution/jobs/6efcf389-7d63-4929-b532-13be28460eea/state
            uri: /jobExecution/jobs/6efcf389-7d63-4929-b532-13be28460eea/state
            type: text/plain
          - method: PUT
            rel: update
            href: /jobExecution/jobs/6efcf389-7d63-4929-b532-13be28460eea
            uri: /jobExecution/jobs/6efcf389-7d63-4929-b532-13be28460eea
            type: application/vnd.sas.job.execution.job
            responseType: application/vnd.sas.job.execution.job
          - method: DELETE
            rel: delete
            href: /jobExecution/jobs/6efcf389-7d63-4929-b532-13be28460eea
            uri: /jobExecution/jobs/6efcf389-7d63-4929-b532-13be28460eea
          - method: PUT
            rel: updateState
            href: /jobExecution/jobs/6efcf389-7d63-4929-b532-13be28460eea/state
            uri: /jobExecution/jobs/6efcf389-7d63-4929-b532-13be28460eea/state
            type: text/plain
          - method: POST
            rel: updateHeartbeatTimeStamp
            href: /jobExecution/jobs/6efcf389-7d63-4929-b532-13be28460eea/heartbeatTimeStamp
            uri: /jobExecution/jobs/6efcf389-7d63-4929-b532-13be28460eea/heartbeatTimeStamp
            type: text/plain
          - method: GET
            rel: jobDefinition
            href: /jobDefinitions/definitions/aa3065a0-8ef6-42d1-965d-e77652aea7af
            uri: /jobDefinitions/definitions/aa3065a0-8ef6-42d1-965d-e77652aea7af
            type: application/vnd.sas.job.definition
          - method: GET
            rel: log
            href: /files/files/3303a3eb-2a6c-4123-9f9b-7d20993edd2b
            uri: /files/files/3303a3eb-2a6c-4123-9f9b-7d20993edd2b
    submitJobsResourceSelectionSampleBody:
      summary: Body to submit the jobs
      description: This is an example body of submitting multiple jobs using the multi-POST.
      value:
        version: 1
        type: uri
        resources:
          - /jobExecution/jobRequests/de941a62-9099-4081-b696-23ffad922963
          - /jobExecution/jobRequests/efc70058-4731-4ffd-8f2e-3da6f472fd6e
          - /jobExecution/jobRequests/368d5e04-c3d4-493d-8b1a-2c24816ef71d
    submitJobsWithErrorSampleResponse:
      summary: Submit jobs response that includes job and error objects
      description: This is an example of using `POST` to submit multiple jobs. Some succeed and one fails.
      value:
        links: []
        name: items
        items:
          - creationTimeStamp: 2021-11-09T13:51:33.352Z
            modifiedTimeStamp: 2021-11-09T13:51:33.794Z
            createdBy: user1
            modifiedBy: user1
            version: 4
            id: 1b891edb-69a0-412c-b0d0-482f14882455
            jobRequest:
              creationTimeStamp: 2021-11-09T13:49:08.793Z
              modifiedTimeStamp: 2021-11-09T13:49:08.793Z
              createdBy: user1
              modifiedBy: user1
              version: 3
              id: 7a49c947-9023-4636-94d6-935a7d2715a7
              name: Update tasks
              description: The job that updates the tasks.
              jobDefinition:
                version: 1
                name: Update tasks
                type: Compute
                parameters:
                  - version: 1
                    name: _contextName
                    defaultValue: SAS Job Execution compute context
                    type: CHARACTER
                    label: Context Name
                    required: false
                code: >-
                  data a;x=1;do while (x < 50) ;  call sleep(30000);end;run;quit;

                  ;
                properties: []
              arguments:
                _contextName: SAS Job Execution compute context
              properties: []
              createdByApplication: jobExecution
              links:
                - method: GET
                  rel: self
                  href: /jobExecution/jobRequests/7a49c947-9023-4636-94d6-935a7d2715a7
                  uri: /jobExecution/jobRequests/7a49c947-9023-4636-94d6-935a7d2715a7
                  type: application/vnd.sas.job.execution.job.request
            state: running
            heartbeatTimeStamp: 2021-11-09T13:51:33.788Z
            submittedByApplication: jobExecution
            heartbeatInterval: 600
            elapsedTime: 515
            results: {}
            links:
              - method: GET
                rel: self
                href: /jobExecution/jobs/1b891edb-69a0-412c-b0d0-482f14882455
                uri: /jobExecution/jobs/1b891edb-69a0-412c-b0d0-482f14882455
                type: application/vnd.sas.job.execution.job
              - method: GET
                rel: state
                href: /jobExecution/jobs/1b891edb-69a0-412c-b0d0-482f14882455/state
                uri: /jobExecution/jobs/1b891edb-69a0-412c-b0d0-482f14882455/state
                type: text/plain
              - method: PUT
                rel: update
                href: /jobExecution/jobs/1b891edb-69a0-412c-b0d0-482f14882455
                uri: /jobExecution/jobs/1b891edb-69a0-412c-b0d0-482f14882455
                type: application/vnd.sas.job.execution.job
                responseType: application/vnd.sas.job.execution.job
              - method: DELETE
                rel: delete
                href: /jobExecution/jobs/1b891edb-69a0-412c-b0d0-482f14882455
                uri: /jobExecution/jobs/1b891edb-69a0-412c-b0d0-482f14882455
              - method: PUT
                rel: updateState
                href: /jobExecution/jobs/1b891edb-69a0-412c-b0d0-482f14882455/state
                uri: /jobExecution/jobs/1b891edb-69a0-412c-b0d0-482f14882455/state
                type: text/plain
              - method: POST
                rel: updateHeartbeatTimeStamp
                href: /jobExecution/jobs/1b891edb-69a0-412c-b0d0-482f14882455/heartbeatTimeStamp
                uri: /jobExecution/jobs/1b891edb-69a0-412c-b0d0-482f14882455/heartbeatTimeStamp
                type: text/plain
              - method: GET
                rel: jobRequest
                href: /jobExecution/jobRequests/7a49c947-9023-4636-94d6-935a7d2715a7
                uri: /jobExecution/jobRequests/7a49c947-9023-4636-94d6-935a7d2715a7
                type: application/vnd.sas.job.execution.job.request
          - errorCode: 0
            message: "Job request not found with ID: a1fd3a90-d33e-47c7-bae3-2125ec86389f"
            details: []
            links: []
            version: 2
            httpStatusCode: 404
          - creationTimeStamp: 2021-11-09T13:51:33.909Z
            modifiedTimeStamp: 2021-11-09T13:51:34.340Z
            createdBy: user1
            modifiedBy: user1
            version: 4
            id: f3b188cc-3fde-43bd-a848-c1482fa5e588
            jobRequest:
              creationTimeStamp: 2021-11-09T13:50:16.194Z
              modifiedTimeStamp: 2021-11-09T13:50:16.194Z
              createdBy: user1
              modifiedBy: user1
              version: 3
              id: a43f3071-707e-45d1-a750-5e7b06bc98c6
              name: Monthly Results
              description: Monthly results.
              jobDefinition:
                version: 1
                name: Monthly Results
                type: Compute
                parameters:
                  - version: 1
                    name: _contextName
                    defaultValue: SAS Job Execution compute context
                    type: CHARACTER
                    label: Context Name
                    required: false
                code: >-
                  data a;x=1;do while (x < 50) ;  call sleep(30000);end;run;quit;

                  ;
                properties: []
              arguments:
                _contextName: SAS Job Execution compute context
              properties: []
              createdByApplication: jobExecution
              links:
                - method: GET
                  rel: self
                  href: /jobExecution/jobRequests/a43f3071-707e-45d1-a750-5e7b06bc98c6
                  uri: /jobExecution/jobRequests/a43f3071-707e-45d1-a750-5e7b06bc98c6
                  type: application/vnd.sas.job.execution.job.request
            state: running
            heartbeatTimeStamp: 2021-11-09T13:51:34.333Z
            submittedByApplication: jobExecution
            heartbeatInterval: 600
            elapsedTime: 475
            results: {}
            links:
              - method: GET
                rel: self
                href: /jobExecution/jobs/f3b188cc-3fde-43bd-a848-c1482fa5e588
                uri: /jobExecution/jobs/f3b188cc-3fde-43bd-a848-c1482fa5e588
                type: application/vnd.sas.job.execution.job
              - method: GET
                rel: state
                href: /jobExecution/jobs/f3b188cc-3fde-43bd-a848-c1482fa5e588/state
                uri: /jobExecution/jobs/f3b188cc-3fde-43bd-a848-c1482fa5e588/state
                type: text/plain
              - method: PUT
                rel: update
                href: /jobExecution/jobs/f3b188cc-3fde-43bd-a848-c1482fa5e588
                uri: /jobExecution/jobs/f3b188cc-3fde-43bd-a848-c1482fa5e588
                type: application/vnd.sas.job.execution.job
                responseType: application/vnd.sas.job.execution.job
              - method: DELETE
                rel: delete
                href: /jobExecution/jobs/f3b188cc-3fde-43bd-a848-c1482fa5e588
                uri: /jobExecution/jobs/f3b188cc-3fde-43bd-a848-c1482fa5e588
              - method: PUT
                rel: updateState
                href: /jobExecution/jobs/f3b188cc-3fde-43bd-a848-c1482fa5e588/state
                uri: /jobExecution/jobs/f3b188cc-3fde-43bd-a848-c1482fa5e588/state
                type: text/plain
              - method: POST
                rel: updateHeartbeatTimeStamp
                href: /jobExecution/jobs/f3b188cc-3fde-43bd-a848-c1482fa5e588/heartbeatTimeStamp
                uri: /jobExecution/jobs/f3b188cc-3fde-43bd-a848-c1482fa5e588/heartbeatTimeStamp
                type: text/plain
              - method: GET
                rel: jobRequest
                href: /jobExecution/jobRequests/a43f3071-707e-45d1-a750-5e7b06bc98c6
                uri: /jobExecution/jobRequests/a43f3071-707e-45d1-a750-5e7b06bc98c6
                type: application/vnd.sas.job.execution.job.request
        version: 2
    createJobRequestJob400Response:
      summary: Create job request job 400 response
      description: This is an example of a Bad Request response to `POST` job request job.
      value:
        errorCode: 0
        message: Both query parameters submitter ("steph2") and submitter ("steph") should not be specified.
        details:
          - "traceId: 3bde71b81ee51316"
          - "path: /jobExecution/jobRequests/3c6338bf-a2a0-4d2a-89d2-22d64ffb69e4/jobs"
        links: []
        version: 2
        httpStatusCode: 400
    getProvider404Response:
      summary: Get provider 404 response
      description: This is an example of a Not Found response to a `GET` provider.
      value:
        errorCode: 0
        message: The execution provider "Computex" could not be found.
        details:
          - "traceId: 5b425b19ea3b3609"
          - "path: /jobExecution/providers/Computex"
        links: []
        version: 2
        httpStatusCode: 404
    createJobRequestJob404Response:
      summary: Create job request job 404 response
      description: This is an example of a Not Found response to a `POST` job request job.
      value:
        errorCode: 0
        message: "Job request not found with ID: 3c6338bf-a2a0-4d2a-89d2-22d64ffb69e4x"
        details:
          - "traceId: 006d298f5bd1bf7e"
          - "path: /jobExecution/jobRequests/3c6338bf-a2a0-4d2a-89d2-22d64ffb69e4x/jobs"
        links: []
        version: 2
        httpStatusCode: 404
    postSelection400Response:
      summary: Multi-post 400 response
      description: This is an example of a Bad Request response to a `POST` of multiple job requests.
      value:
        errorCode: 0
        message: Invalid selection type. A resource selection type of URI is required.
        details:
          - "traceId: e4627ced752993a4"
          - "path: /jobExecution/jobRequests/@selection/jobs"
        links: []
        version: 2
        httpStatusCode: 400
    getJobRequestJobs400Response:
      summary: Get job request jobs 400 response
      description: This is an example of a Bad Request response to a `GET` job request jobs.
      value:
        errorCode: 1126
        message: The limit parameter must be greater or equal to zero.
        details:
          - "traceId: 5d6244b36dea012d"
          - "path: /jobExecution/jobRequests/71d7f203-4a30-4471-9f35-b29e32126b5c/jobs"
        links: []
        version: 2
        httpStatusCode: 400
    getProviders400Response:
      summary: Get providers  400 response
      description: This is an example of a Bad Request response to `GET` providers.
      value:
        errorCode: 0
        message: The start parameter must be greater than or equal to zero.
        details:
          - "traceId: 5b1a8a8cee185add"
          - "path: /jobExecution/providers"
        links: []
        version: 2
        httpStatusCode: 400
    getJobRequestJobs404Response:
      summary: Get job request jobs 404 response
      description: This is an example of a Not Found response to `GET` job request jobs.
      value:
        errorCode: 0
        message: "Job request not found with ID: 71d7f203-4a30-4471-9f35-b29e32126b5cx"
        details:
          - "traceId: ce7ea434b871b7bc"
          - "path: /jobExecution/jobRequests/71d7f203-4a30-4471-9f35-b29e32126b5cx/jobs"
        links: []
        version: 2
        httpStatusCode: 404
    getJobRequests400Response:
      summary: Get job requests 400 response
      description: This is an example of a Bad Request response to a `GET` job requests.
      value:
        errorCode: 1125
        message: The start parameter must be greater or equal to zero.
        details:
          - "traceId: 53998af1d9abfeab"
          - "path: /jobExecution/jobRequests"
        links: []
        version: 2
        httpStatusCode: 400
    putJobRequest400Response:
      summary: Put job request 400 response
      description: This is an example of a Bad Request response to a `PUT` job request.
      value:
        errorCode: 0
        message: "Job request with ID: 7a49c947-9023-4636-94d6-935a7d2715a7 does not match passed in id: fe697677-15a8-4d33-807c-6c34b743bb8b."
        details:
          - "traceId: 296db44bebfcb9a8"
          - "path: /jobExecution/jobRequests/7a49c947-9023-4636-94d6-935a7d2715a7"
        links: []
        version: 2
        httpStatusCode: 400
    putJobRequest415Response:
      summary: Update job request 415 response
      description: This is an example of an Unsupported Media Type response to a `PUT` to update a job request.
      value:
        errorCode: 0
        message: The value (text/plain) for the request header field "Content-Type" does not specify a supported media type.
        details:
          - "traceId: ab0b7e198ea62e26"
          - "path: /jobExecution/jobRequests/fe697677-15a8-4d33-807c-6c34b743bb8b"
        remediation: 'For the request header field "Content-Type", specify one of the following media types: "application/json", "application/vnd.sas.job.execution.job.request+json", "application/vnd.sas.transfer.object+json".'
        links: []
        version: 2
        httpStatusCode: 415
    putJobRequest428Response:
      summary: Put job request 428 response
      description: This is an example of a PRECONDITION REQUIRED response for the `PUT` of a specific job request.
      value:
        errorCode: 1010
        message: 'One of the following request header fields is required: "If-Match" or "If-Unmodified-Since".'
        details:
          - "traceId: fcd340f35781ab52"
          - "path: /jobExecution/jobRequests/fe697677-15a8-4d33-807c-6c34b743bb8b"
        remediation: "In the request header, include one of the following: the resource's entity tag for the field \"If-Match\", or the resource's last-modified timestamp for the field \"If-Unmodified-Since\"."
        links: []
        version: 2
        httpStatusCode: 428
    putJobRequest412Response:
      summary: Put job request 412 response
      description: This is an example of a PRECONDITION FAILED response for the `PUT` of a specific job request.
      value:
        errorCode: 1013
        message: The values for the request header field "If-Match" ("l1o4hj35") and the resource's entity tag ("l1quxgzu") are not the same.
        details:
          - "traceId: 8c0fa6d82a8a9b5c"
          - "path: /jobExecution/jobRequests/fe697677-15a8-4d33-807c-6c34b743bb8b"
        remediation: Get the latest representation of the resource and apply the desired changes. Retry the operation with the modified representation and the entity tag from the response header field "ETag".
        links: []
        version: 2
        httpStatusCode: 412
    putJobRequest404Response:
      summary: Put job request 404 response
      description: This is an example of a NOT FOUND response for the `PUT` of a specific job request.
      value:
        errorCode: 0
        message: "Job request not found with ID: fe697677-15a8-4d33-807c-6c34b743bb8bx"
        details:
          - "traceId: 5207de02ddac30de"
          - "path: /jobExecution/jobs/41e44582-e556-448e-95a0-5340d94ce55ex"
        links: []
        version: 2
        httpStatusCode: 404
    deleteJobRequest404Response:
      summary: Delete job request 404 response
      description: This is an example of a NOT FOUND response for the delete of a specific job request.
      value:
        errorCode: 0
        message: "Job request not found with ID: fe697677-15a8-4d33-807c-6c34b743bb8bx"
        details:
          - "traceId: 5207de02ddac30de"
          - "path: /jobExecution/jobs/41e44582-e556-448e-95a0-5340d94ce55ex"
        links: []
        version: 2
        httpStatusCode: 404
    submitJobRequestNoDefinition400Response:
      summary: Submit job request 400 response
      description: This is an example of a Bad Request response to a `POST` to submit job request. In this example, the definition is missing.
      value:
        errorCode: 0
        message: Either a job definition ID or an embedded job definition is required in a job request.
        details:
          - "traceId: 940cc9a4b023973d"
          - "path: /jobExecution/jobRequests"
        links: []
        version: 2
        httpStatusCode: 400
    submitJobRequest400Response:
      summary: Submit job request 400 response
      description: This is an example of a Bad Request response to a `POST` to submit job request.
      value:
        errorCode: 0
        message: The request body was missing or invalid.
        details:
          - "traceId: 76faa88466a3e85c"
          - "path: /jobExecution/jobRequests"
        links: []
        version: 2
        httpStatusCode: 400
    submitJobRequest415Response:
      summary: Submit job request 415 response
      description: This is an example of an Unsupported Media Type response to a `POST` to submit a job request.
      value:
        errorCode: 0
        message: The value (application/vnd.sas.job+json) for the request header field "Content-Type" does not specify a supported media type.
        details:
          - "traceId: 0bc7bc5d2abb119b"
          - "path: /jobExecution/jobRequests"
        remediation: 'For the request header field "Content-Type", specify one of the following media types: "application/json", "application/vnd.sas.job.execution.job.request+json".'
        links: []
        version: 2
        httpStatusCode: 415
    getJobs400Response:
      summary: Get jobs request 400 response
      description: This is an example of a Bad Request response for a `GET` to return all jobs. This example uses an invalid filter name.
      value:
        errorCode: 1100
        message: "Unsupported function in filter request: nojakj"
        details:
          - "traceId: f80fb285f501eb33"
          - "path: /jobExecution/jobs"
        links: []
        version: 2
        httpStatusCode: 400
    stateResourceSelection400Response:
      summary: Update state of multiple jobs request 400 response
      description: This is an example of a Bad Request response for a `PUT` to update the state of multiple jobs. This example uses an invalid selection type.
      value:
        errorCode: 401
        message: Full authentication is required to access this resource
        details:
          - "path: /jobExecution/jobRequests/@selection/jobs"
        links: []
        version: 2
        httpStatusCode: 401
    getJob404Response:
      summary: Get job 404 response
      description: This is an example of a NOT FOUND response for the `GET` of a specific job.
      value:
        errorCode: 0
        message: "Job not found with ID: 41e44582-e556-448e-95a0-5340d94ce55ex."
        details:
          - "traceId: 5207de02ddac30de"
          - "path: /jobExecution/jobs/41e44582-e556-448e-95a0-5340d94ce55ex"
        links: []
        version: 2
        httpStatusCode: 404
    logForEV404Response:
      summary: Get text log for job 404 response
      description: This is an example of a NOT FOUND response for the `GET` of a job's log as text.
      value:
        errorCode: 0
        message: "Job not found with ID: 859ad72d-5fa2-470c-9d43-f7a65829ae5xf."
        details:
          - "traceId: 1f08e65e1979fc4e"
          - "path: /jobExecution/jobs/859ad72d-5fa2-470c-9d43-f7a65829ae5xf/logForEV"
        links: []
        version: 2
        httpStatusCode: 404
    deleteJob404Response:
      summary: Delete job 404 response
      description: This is an example of a NOT FOUND response for the DELETE of a specific job.
      value:
        errorCode: 0
        message: "Job not found with ID: 41e44582-e556-448e-95a0-5340d94ce55ex."
        details:
          - "traceId: 5207de02ddac30de"
          - "path: /jobExecution/jobs/41e44582-e556-448e-95a0-5340d94ce55ex"
        links: []
        version: 2
        httpStatusCode: 404
    putJob405Response:
      summary: Put job 405 response
      description: This is an example of a METHOD NOT FOUND response for the `PUT` of a specific job.
      value:
        errorCode: 31501
        message: The job 859ad72d-5fa2-470c-9d43-f7a65829ae5f has already finished and can no longer be updated.
        details:
          - "traceId: d2cde67e40af8178"
          - "path: /jobExecution/jobs/859ad72d-5fa2-470c-9d43-f7a65829ae5f"
        links: []
        version: 2
        httpStatusCode: 405
    putJob412Response:
      summary: Put job 412 response
      description: This is an example of a PRECONDITION FAILED response for the `PUT` of a specific job.
      value:
        errorCode: 1013
        message: The values for the request header field "If-Match" ("l1pfbamhx") and the resource's entity tag ("l1pfbamh") are not the same.
        details:
          - "traceId: 76005450033a2c11"
          - "path: /jobExecution/jobs/859ad72d-5fa2-470c-9d43-f7a65829ae5f"
        remediation: Get the latest representation of the resource and apply the desired changes. Retry the operation with the modified representation and the entity tag from the response header field "ETag".
        links: []
        version: 2
        httpStatusCode: 412
    putJob415Response:
      summary: Put job 415 response
      description: This is an example of an UNSUPPORTED MEDIA TYPE response for the `PUT` of a specific job.
      value:
        errorCode: 0
        message: The value (text/plain) for the request header field "Content-Type" does not specify a supported media type.
        details:
          - "traceId: d8c87bb382d349a1"
          - "path: /jobExecution/jobs/859ad72d-5fa2-470c-9d43-f7a65829ae5f"
        remediation: 'For the request header field "Content-Type", specify one of the following media types: "application/vnd.sas.job.execution.job+json", "application/json".'
        links: []
        version: 2
        httpStatusCode: 415
    putJob404Response:
      summary: Put job 404 response
      description: This is an example of a NOT FOUND response for the `PUT` of a specific job.
      value:
        errorCode: 0
        message: "Job not found with ID: 859ad72d-5fa2-470c-9d43-f7a65829ae5fx."
        details:
          - "traceId: a2e53b8f0f5a028d"
          - "path: /jobExecution/jobs/859ad72d-5fa2-470c-9d43-f7a65829ae5fx"
        links: []
        version: 2
        httpStatusCode: 404
    putJob428Response:
      summary: Put job 428 response
      description: This is an example of a PRECONDITION REQUIRED response for the `PUT` of a specific job.
      value:
        errorCode: 1010
        message: 'One of the following request header fields is required: "If-Match" or "If-Unmodified-Since".'
        details:
          - "traceId: 62d43e87dbebbc7c"
          - "path: /jobExecution/jobs/859ad72d-5fa2-470c-9d43-f7a65829ae5f"
        remediation: "In the request header, include one of the following values: the resource's entity tag for the field \"If-Match\" or the resource's last-modified timestamp for the field \"If-Unmodified-Since\"."
        links: []
        version: 2
        httpStatusCode: 428
    putJob400Response:
      summary: Put job 400 response
      description: This is an example of a BAD REQUEST response for the `PUT` of a specific job.
      value:
        errorCode: 0
        message: "Job with ID: 859ad72d-5fa2-470c-9d43-f7a65829ae5fx does not match passed in ID: 859ad72d-5fa2-470c-9d43-f7a65829ae5f."
        details:
          - "traceId: 9a815587dd2fe13a"
          - "path: /jobExecution/jobs/859ad72d-5fa2-470c-9d43-f7a65829ae5f"
        links: []
        version: 2
        httpStatusCode: 400
    updateState405Response:
      summary: Update state 405 response
      description: This is an example of a METHOD NOT FOUND response for update state.
      value:
        errorCode: 31501
        message: The job 859ad72d-5fa2-470c-9d43-f7a65829ae5f has already finished and can no longer be updated.
        details:
          - "traceId: 7228f86649df8667"
          - "path: /jobExecution/jobs/859ad72d-5fa2-470c-9d43-f7a65829ae5f/state"
        links: []
        version: 2
        httpStatusCode: 405
    getJobRequestJobsResponse:
      summary: Get job request jobs response
      description: This is example get job requests jobs response.
      value:
        links:
          - method: GET
            rel: collection
            href: /jobExecution/jobRequests/3c6338bf-a2a0-4d2a-89d2-22d64ffb69e4/jobs
            uri: /jobExecution/jobRequests/3c6338bf-a2a0-4d2a-89d2-22d64ffb69e4/jobs
            type: application/vnd.sas.collection
            itemType: application/vnd.sas.job.execution.job
          - method: GET
            rel: self
            href: /jobExecution/jobRequests/3c6338bf-a2a0-4d2a-89d2-22d64ffb69e4/jobs?sortBy=creationTimeStamp:descending&start=0&limit=10
            uri: /jobExecution/jobRequests/3c6338bf-a2a0-4d2a-89d2-22d64ffb69e4/jobs?sortBy=creationTimeStamp:descending&start=0&limit=10
            type: application/vnd.sas.collection
            itemType: application/vnd.sas.job.execution.job
          - method: GET
            rel: up
            href: /jobExecution/jobRequests/3c6338bf-a2a0-4d2a-89d2-22d64ffb69e4/
            uri: /jobExecution/jobRequests/3c6338bf-a2a0-4d2a-89d2-22d64ffb69e4/
            type: application/vnd.sas.job.execution.job
          - method: POST
            rel: submitJob
            href: /jobExecution/jobRequests/3c6338bf-a2a0-4d2a-89d2-22d64ffb69e4/jobs
            uri: /jobExecution/jobRequests/3c6338bf-a2a0-4d2a-89d2-22d64ffb69e4/jobs
            responseType: application/vnd.sas.job.execution.job
        name: jobs
        accept: application/vnd.sas.job.execution.job
        start: 0
        count: 6
        items:
          - creationTimeStamp: 2022-04-12T20:12:32.653Z
            modifiedTimeStamp: 2022-04-12T20:12:54.053Z
            createdBy: user1
            modifiedBy: user1
            version: 4
            id: fd4f8d7c-2fa0-4753-a537-45deb08e3fe2
            jobRequest:
              creationTimeStamp: 2022-04-11T21:36:15.155Z
              modifiedTimeStamp: 2022-04-11T21:36:15.155Z
              createdBy: sas.catalog
              modifiedBy: sas.catalog
              version: 3
              id: 3c6338bf-a2a0-4d2a-89d2-22d64ffb69e4
              name: List Catalogs
              jobDefinition:
                creationTimeStamp: 0001-01-01T00:00:00.000Z
                modifiedTimeStamp: 0001-01-01T00:00:00.000Z
                version: 1
                name: List Catalogs
                type: Compute
                parameters: []
                code: >
                  %macro web_list_catalogs(library);
                  	%let library=%upcase(&library);
                      proc sql ;
                          create table work.catalogs as select memname as Catalog, memtype as 
                              Type, engine as Engine from sashelp.vmember where 
                              libname="&library" and memtype="CATALOG";
                          run;
                          title "Catalogs in &library";

                      proc print data=work.catalogs;
                      run;
                  %mend;


                  %web_list_catalogs(SASHELP);
                properties: []
              arguments:
                _contextName: SAS Job Execution compute context
              properties: []
              createdByApplication: jobExecution
              links:
                - method: GET
                  rel: self
                  href: /jobExecution/jobRequests/3c6338bf-a2a0-4d2a-89d2-22d64ffb69e4
                  uri: /jobExecution/jobRequests/3c6338bf-a2a0-4d2a-89d2-22d64ffb69e4
                  type: application/vnd.sas.job.execution.job.request
            state: completed
            endTimeStamp: 2022-04-12T20:12:54.053Z
            heartbeatTimeStamp: 2022-04-12T20:12:33.797Z
            submittedByApplication: jobExecution
            heartbeatInterval: 600
            elapsedTime: 21400
            results:
              COMPUTE_CONTEXT: SAS Studio compute context
              "#LN00007": /files/files/98e4ae4b-76ce-40c6-9404-e786ba4a913c
              "#LN00006": /files/files/746ae002-c220-4525-ab0f-d832a165169c
              35F69210-3CCB-A043-9D00-7532BDB6465D.log.txt: /files/files/e5508264-58c0-4ad4-aa1e-8798e0c42435
              COMPUTE_JOB: 35F69210-3CCB-A043-9D00-7532BDB6465D
              COMPUTE_SESSION: 30ac3ff7-8b32-4210-8c1f-85aecaf0f0d3-ses0000 ended.
            logLocation: /files/files/3d597573-e225-45cf-9b53-47ac4b2501c6
            links:
              - method: GET
                rel: self
                href: /jobExecution/jobs/fd4f8d7c-2fa0-4753-a537-45deb08e3fe2
                uri: /jobExecution/jobs/fd4f8d7c-2fa0-4753-a537-45deb08e3fe2
                type: application/vnd.sas.job.execution.job
              - method: GET
                rel: state
                href: /jobExecution/jobs/fd4f8d7c-2fa0-4753-a537-45deb08e3fe2/state
                uri: /jobExecution/jobs/fd4f8d7c-2fa0-4753-a537-45deb08e3fe2/state
                type: text/plain
              - method: PUT
                rel: update
                href: /jobExecution/jobs/fd4f8d7c-2fa0-4753-a537-45deb08e3fe2
                uri: /jobExecution/jobs/fd4f8d7c-2fa0-4753-a537-45deb08e3fe2
                type: application/vnd.sas.job.execution.job
                responseType: application/vnd.sas.job.execution.job
              - method: DELETE
                rel: delete
                href: /jobExecution/jobs/fd4f8d7c-2fa0-4753-a537-45deb08e3fe2
                uri: /jobExecution/jobs/fd4f8d7c-2fa0-4753-a537-45deb08e3fe2
              - method: PUT
                rel: updateState
                href: /jobExecution/jobs/fd4f8d7c-2fa0-4753-a537-45deb08e3fe2/state
                uri: /jobExecution/jobs/fd4f8d7c-2fa0-4753-a537-45deb08e3fe2/state
                type: text/plain
              - method: POST
                rel: updateHeartbeatTimeStamp
                href: /jobExecution/jobs/fd4f8d7c-2fa0-4753-a537-45deb08e3fe2/heartbeatTimeStamp
                uri: /jobExecution/jobs/fd4f8d7c-2fa0-4753-a537-45deb08e3fe2/heartbeatTimeStamp
                type: text/plain
              - method: GET
                rel: jobRequest
                href: /jobExecution/jobRequests/3c6338bf-a2a0-4d2a-89d2-22d64ffb69e4
                uri: /jobExecution/jobRequests/3c6338bf-a2a0-4d2a-89d2-22d64ffb69e4
                type: application/vnd.sas.job.execution.job.request
              - method: GET
                rel: log
                href: /files/files/3d597573-e225-45cf-9b53-47ac4b2501c6
                uri: /files/files/3d597573-e225-45cf-9b53-47ac4b2501c6
        limit: 10
        version: 2
    submitJobsSampleResponse:
      summary: Submit jobs response
      description: This is an example of using `POST` to submit multiple jobs.
      value:
        links: []
        name: items
        items:
          - creationTimeStamp: 2021-11-09T13:51:33.352Z
            modifiedTimeStamp: 2021-11-09T13:51:33.794Z
            createdBy: user1
            modifiedBy: user1
            version: 4
            id: 1b891edb-69a0-412c-b0d0-482f14882455
            jobRequest:
              creationTimeStamp: 2021-11-09T13:49:08.793Z
              modifiedTimeStamp: 2021-11-09T13:49:08.793Z
              createdBy: user1
              modifiedBy: user1
              version: 3
              id: 7a49c947-9023-4636-94d6-935a7d2715a7
              name: Update tasks
              description: Job that will update tasks.
              jobDefinition:
                version: 1
                name: Update tasks
                type: Compute
                parameters:
                  - version: 1
                    name: _contextName
                    defaultValue: SAS Job Execution compute context
                    type: CHARACTER
                    label: Context Name
                    required: false
                code: >-
                  data a;x=1;do while (x < 50) ;  call sleep(30000);end;run;quit;

                  ;
                properties: []
              arguments:
                _contextName: SAS Job Execution compute context
              properties: []
              createdByApplication: jobExecution
              links:
                - method: GET
                  rel: self
                  href: /jobExecution/jobRequests/7a49c947-9023-4636-94d6-935a7d2715a7
                  uri: /jobExecution/jobRequests/7a49c947-9023-4636-94d6-935a7d2715a7
                  type: application/vnd.sas.job.execution.job.request
            state: running
            heartbeatTimeStamp: 2021-11-09T13:51:33.788Z
            submittedByApplication: jobExecution
            heartbeatInterval: 600
            elapsedTime: 515
            results: {}
            links:
              - method: GET
                rel: self
                href: /jobExecution/jobs/1b891edb-69a0-412c-b0d0-482f14882455
                uri: /jobExecution/jobs/1b891edb-69a0-412c-b0d0-482f14882455
                type: application/vnd.sas.job.execution.job
              - method: GET
                rel: state
                href: /jobExecution/jobs/1b891edb-69a0-412c-b0d0-482f14882455/state
                uri: /jobExecution/jobs/1b891edb-69a0-412c-b0d0-482f14882455/state
                type: text/plain
              - method: PUT
                rel: update
                href: /jobExecution/jobs/1b891edb-69a0-412c-b0d0-482f14882455
                uri: /jobExecution/jobs/1b891edb-69a0-412c-b0d0-482f14882455
                type: application/vnd.sas.job.execution.job
                responseType: application/vnd.sas.job.execution.job
              - method: DELETE
                rel: delete
                href: /jobExecution/jobs/1b891edb-69a0-412c-b0d0-482f14882455
                uri: /jobExecution/jobs/1b891edb-69a0-412c-b0d0-482f14882455
              - method: PUT
                rel: updateState
                href: /jobExecution/jobs/1b891edb-69a0-412c-b0d0-482f14882455/state
                uri: /jobExecution/jobs/1b891edb-69a0-412c-b0d0-482f14882455/state
                type: text/plain
              - method: POST
                rel: updateHeartbeatTimeStamp
                href: /jobExecution/jobs/1b891edb-69a0-412c-b0d0-482f14882455/heartbeatTimeStamp
                uri: /jobExecution/jobs/1b891edb-69a0-412c-b0d0-482f14882455/heartbeatTimeStamp
                type: text/plain
              - method: GET
                rel: jobRequest
                href: /jobExecution/jobRequests/7a49c947-9023-4636-94d6-935a7d2715a7
                uri: /jobExecution/jobRequests/7a49c947-9023-4636-94d6-935a7d2715a7
                type: application/vnd.sas.job.execution.job.request
          - creationTimeStamp: 2021-11-09T13:51:33.909Z
            modifiedTimeStamp: 2021-11-09T13:51:34.340Z
            createdBy: user1
            modifiedBy: user1
            version: 4
            id: f3b188cc-3fde-43bd-a848-c1482fa5e588
            jobRequest:
              creationTimeStamp: 2021-11-09T13:50:16.194Z
              modifiedTimeStamp: 2021-11-09T13:50:16.194Z
              createdBy: user1
              modifiedBy: user1
              version: 3
              id: a43f3071-707e-45d1-a750-5e7b06bc98c6
              name: Monthly Results
              description: Monthly results.
              jobDefinition:
                version: 1
                name: Monthly Results
                type: Compute
                parameters:
                  - version: 1
                    name: _contextName
                    defaultValue: SAS Job Execution compute context
                    type: CHARACTER
                    label: Context Name
                    required: false
                code: >-
                  data a;x=1;do while (x < 50) ;  call sleep(30000);end;run;quit;

                  ;
                properties: []
              arguments:
                _contextName: SAS Job Execution compute context
              properties: []
              createdByApplication: jobExecution
              links:
                - method: GET
                  rel: self
                  href: /jobExecution/jobRequests/a43f3071-707e-45d1-a750-5e7b06bc98c6
                  uri: /jobExecution/jobRequests/a43f3071-707e-45d1-a750-5e7b06bc98c6
                  type: application/vnd.sas.job.execution.job.request
            state: running
            heartbeatTimeStamp: 2021-11-09T13:51:34.333Z
            submittedByApplication: jobExecution
            heartbeatInterval: 600
            elapsedTime: 475
            results: {}
            links:
              - method: GET
                rel: self
                href: /jobExecution/jobs/f3b188cc-3fde-43bd-a848-c1482fa5e588
                uri: /jobExecution/jobs/f3b188cc-3fde-43bd-a848-c1482fa5e588
                type: application/vnd.sas.job.execution.job
              - method: GET
                rel: state
                href: /jobExecution/jobs/f3b188cc-3fde-43bd-a848-c1482fa5e588/state
                uri: /jobExecution/jobs/f3b188cc-3fde-43bd-a848-c1482fa5e588/state
                type: text/plain
              - method: PUT
                rel: update
                href: /jobExecution/jobs/f3b188cc-3fde-43bd-a848-c1482fa5e588
                uri: /jobExecution/jobs/f3b188cc-3fde-43bd-a848-c1482fa5e588
                type: application/vnd.sas.job.execution.job
                responseType: application/vnd.sas.job.execution.job
              - method: DELETE
                rel: delete
                href: /jobExecution/jobs/f3b188cc-3fde-43bd-a848-c1482fa5e588
                uri: /jobExecution/jobs/f3b188cc-3fde-43bd-a848-c1482fa5e588
              - method: PUT
                rel: updateState
                href: /jobExecution/jobs/f3b188cc-3fde-43bd-a848-c1482fa5e588/state
                uri: /jobExecution/jobs/f3b188cc-3fde-43bd-a848-c1482fa5e588/state
                type: text/plain
              - method: POST
                rel: updateHeartbeatTimeStamp
                href: /jobExecution/jobs/f3b188cc-3fde-43bd-a848-c1482fa5e588/heartbeatTimeStamp
                uri: /jobExecution/jobs/f3b188cc-3fde-43bd-a848-c1482fa5e588/heartbeatTimeStamp
                type: text/plain
              - method: GET
                rel: jobRequest
                href: /jobExecution/jobRequests/a43f3071-707e-45d1-a750-5e7b06bc98c6
                uri: /jobExecution/jobRequests/a43f3071-707e-45d1-a750-5e7b06bc98c6
                type: application/vnd.sas.job.execution.job.request
        version: 2
    putJobSampleBody:
      summary: Body to update a job
      description: This is an example body to update a job.
      value:
        creationTimeStamp: 2022-04-07T20:00:02.338Z
        modifiedTimeStamp: 2022-04-07T20:00:03.977Z
        createdBy: sas.audit
        modifiedBy: sas.audit
        version: 4
        id: 859ad72d-5fa2-470c-9d43-f7a65829ae5f
        jobRequest:
          version: 3
          name: Update CAS Audit data
          jobDefinitionUri: /jobDefinitions/definitions/7b5ef82d-19e3-46e1-ebeb-cf15b8675309
          jobDefinition:
            creationTimeStamp: 2022-04-06T22:08:06.127Z
            modifiedTimeStamp: 2022-04-06T22:08:06.131Z
            createdBy: sas.audit
            modifiedBy: sas.audit
            version: 2
            id: 7b5ef82d-19e3-46e1-ebeb-cf15b8675309
            name: CAS Audit table update
            description: After upload of the new Audit data into a temporary CAS table, this job appends the new data to the existing Audit data.
            type: casl
            parameters:
              - version: 1
                name: "%VAR-expireDate"
                type: CHARACTER
                required: true
              - version: 1
                name: "%VAR-tempTableName"
                type: CHARACTER
                required: true
              - version: 1
                name: "%VAR-targetCaslib"
                type: CHARACTER
                required: true
              - version: 1
                name: serverID
                defaultValue: cas-shared-default
                type: CHARACTER
                required: false
            code: >-
              whereStr=cat("'Timestamp'n <= '", expireDate, "'");

              deleteRows / table={name='AUDIT' caslib=targetCaslib, where=whereStr};

              run;

              codeStr=cat("data AUDIT(caslib=", targetCaslib, " append=yes);set ", tempTableName, "(caslib=", targetCaslib, ");run;");

              datastep.runCode / code=codeStr;

              run;

              table.save status=sc / name='AUDIT' caslib=targetCaslib replace=true table={ name='AUDIT' caslib=targetCaslib };

              run;

              table.dropTable name='AUDIT' caslib=targetCaslib;

              run;

              table.dropTable name=tempTableName caslib=targetCaslib;

              run;
            links:
              - method: GET
                rel: self
                href: /jobDefinitions/definitions/7b5ef82d-19e3-46e1-ebeb-cf15b8675309
                uri: /jobDefinitions/definitions/7b5ef82d-19e3-46e1-ebeb-cf15b8675309
                type: application/vnd.sas.job.definition
              - method: GET
                rel: alternate
                href: /jobDefinitions/definitions/7b5ef82d-19e3-46e1-ebeb-cf15b8675309
                uri: /jobDefinitions/definitions/7b5ef82d-19e3-46e1-ebeb-cf15b8675309
                type: application/vnd.sas.summary
              - method: PUT
                rel: update
                href: /jobDefinitions/definitions/7b5ef82d-19e3-46e1-ebeb-cf15b8675309
                uri: /jobDefinitions/definitions/7b5ef82d-19e3-46e1-ebeb-cf15b8675309
                type: application/vnd.sas.job.definition
                responseType: application/vnd.sas.job.definition
              - method: DELETE
                rel: delete
                href: /jobDefinitions/definitions/7b5ef82d-19e3-46e1-ebeb-cf15b8675309
                uri: /jobDefinitions/definitions/7b5ef82d-19e3-46e1-ebeb-cf15b8675309
            properties: []
          arguments:
            "%VAR-expireDate": 2022-03-31T20:00:01Z
            "%VAR-targetCaslib": SystemData
            "%VAR-tempTableName": audit_2992476099
            serverId: cas-shared-default
          properties: []
          createdByApplication: jobExecution
        state: completed
        endTimeStamp: 2022-04-07T20:00:03.975Z
        heartbeatTimeStamp: 2022-04-07T20:00:02.431Z
        submittedByApplication: audit-service
        heartbeatInterval: 300
        elapsedTime: 1637
        results:
          debuginfo_1: ""
          severity_1: normal
          statusCode_1: "0"
          reason_1: ok
          executedCode: >-
            expireDate="2022-03-31T20:00:01Z";

            tempTableName="audit_2992476099";

            targetCaslib="SystemData";

            whereStr=cat("'Timestamp'n <= '", expireDate, "'");

            deleteRows / table={name='AUDIT' caslib=targetCaslib, where=whereStr};

            run;

            codeStr=cat("data AUDIT(caslib=", targetCaslib, " append=yes);set ", tempTableName, "(caslib=", targetCaslib, ");run;");

            datastep.runCode / code=codeStr;

            run;

            table.save status=sc / name='AUDIT' caslib=targetCaslib replace=true table={ name='AUDIT' caslib=targetCaslib };

            run;

            table.dropTable name='AUDIT' caslib=targetCaslib;

            run;

            table.dropTable name=tempTableName caslib=targetCaslib;

            run;
          status_1: ""
        logLocation: /files/files/4e5356eb-5b9e-45e4-bc11-7c865a4e14db
    putJobResponse:
      summary: Response to `PUT` to update a job
      description: This is an example response to a `PUT` to update a job.
      value:
        creationTimeStamp: 2022-04-07T20:00:02.338Z
        modifiedTimeStamp: 2022-04-07T20:00:03.977Z
        createdBy: sas.audit
        modifiedBy: sas.audit
        version: 4
        id: 859ad72d-5fa2-470c-9d43-f7a65829ae5f
        jobRequest:
          version: 3
          name: Update CAS Audit data
          jobDefinitionUri: /jobDefinitions/definitions/7b5ef82d-19e3-46e1-ebeb-cf15b8675309
          jobDefinition:
            creationTimeStamp: 2022-04-06T22:08:06.127Z
            modifiedTimeStamp: 2022-04-06T22:08:06.131Z
            createdBy: sas.audit
            modifiedBy: sas.audit
            version: 2
            id: 7b5ef82d-19e3-46e1-ebeb-cf15b8675309
            name: CAS Audit table update
            description: After the upload of new Audit data into a temporary CAS table, this job appends the new data to the existing Audit data.
            type: casl
            parameters:
              - version: 1
                name: "%VAR-expireDate"
                type: CHARACTER
                required: true
              - version: 1
                name: "%VAR-tempTableName"
                type: CHARACTER
                required: true
              - version: 1
                name: "%VAR-targetCaslib"
                type: CHARACTER
                required: true
              - version: 1
                name: server ID
                defaultValue: cas-shared-default
                type: CHARACTER
                required: false
            code: >-
              whereStr=cat("'Timestamp'n <= '", expireDate, "'");

              deleteRows / table={name='AUDIT' caslib=targetCaslib, where=whereStr};

              run;

              codeStr=cat("data AUDIT(caslib=", targetCaslib, " append=yes);set ", tempTableName, "(caslib=", targetCaslib, ");run;");

              datastep.runCode / code=codeStr;

              run;

              table.save status=sc / name='AUDIT' caslib=targetCaslib replace=true table={ name='AUDIT' caslib=targetCaslib };

              run;

              table.dropTable name='AUDIT' caslib=targetCaslib;

              run;

              table.dropTable name=tempTableName caslib=targetCaslib;

              run;
            links:
              - method: GET
                rel: self
                href: /jobDefinitions/definitions/7b5ef82d-19e3-46e1-ebeb-cf15b8675309
                uri: /jobDefinitions/definitions/7b5ef82d-19e3-46e1-ebeb-cf15b8675309
                type: application/vnd.sas.job.definition
              - method: GET
                rel: alternate
                href: /jobDefinitions/definitions/7b5ef82d-19e3-46e1-ebeb-cf15b8675309
                uri: /jobDefinitions/definitions/7b5ef82d-19e3-46e1-ebeb-cf15b8675309
                type: application/vnd.sas.summary
              - method: PUT
                rel: update
                href: /jobDefinitions/definitions/7b5ef82d-19e3-46e1-ebeb-cf15b8675309
                uri: /jobDefinitions/definitions/7b5ef82d-19e3-46e1-ebeb-cf15b8675309
                type: application/vnd.sas.job.definition
                responseType: application/vnd.sas.job.definition
              - method: DELETE
                rel: delete
                href: /jobDefinitions/definitions/7b5ef82d-19e3-46e1-ebeb-cf15b8675309
                uri: /jobDefinitions/definitions/7b5ef82d-19e3-46e1-ebeb-cf15b8675309
            properties: []
          arguments:
            "%VAR-expireDate": 2022-03-31T20:00:01Z
            "%VAR-targetCaslib": SystemData
            "%VAR-tempTableName": audit_2992476099
            serverId: cas-shared-default
          properties: []
          createdByApplication: jobExecution
        state: completed
        endTimeStamp: 2022-04-07T20:00:03.975Z
        heartbeatTimeStamp: 2022-04-07T20:00:02.431Z
        submittedByApplication: audit-service
        heartbeatInterval: 300
        elapsedTime: 1637
        results:
          debuginfo_1: ""
          severity_1: normal
          statusCode_1: "0"
          reason_1: ok
          executedCode: >-
            expireDate="2022-03-31T20:00:01Z";

            tempTableName="audit_2992476099";

            targetCaslib="SystemData";

            whereStr=cat("'Timestamp'n <= '", expireDate, "'");

            deleteRows / table={name='AUDIT' caslib=targetCaslib, where=whereStr};

            run;

            codeStr=cat("data AUDIT(caslib=", targetCaslib, " append=yes);set ", tempTableName, "(caslib=", targetCaslib, ");run;");

            datastep.runCode / code=codeStr;

            run;

            table.save status=sc / name='AUDIT' caslib=targetCaslib replace=true table={ name='AUDIT' caslib=targetCaslib };

            run;

            table.dropTable name='AUDIT' caslib=targetCaslib;

            run;

            table.dropTable name=tempTableName caslib=targetCaslib;

            run;
          status_1: ""
        logLocation: /files/files/4e5356eb-5b9e-45e4-bc11-7c865a4e14db
    getJobRequestsSampleResponse:
      summary: Get job requests response
      description: This is an example of using `GET` to return job requests.
      value:
        links:
          - method: GET
            rel: collection
            href: /jobExecution/jobRequests
            uri: /jobExecution/jobRequests
            type: application/vnd.sas.collection
            itemType: application/vnd.sas.job.execution.job.request
          - method: GET
            rel: self
            href: /jobExecution/jobRequests?sortBy=name:ascending&start=0&limit=10
            uri: /jobExecution/jobRequests?sortBy=name:ascending&start=0&limit=10
            type: application/vnd.sas.collection
            itemType: application/vnd.sas.job.execution.job.request
          - method: GET
            rel: next
            href: /jobExecution/jobRequests?sortBy=name:ascending&start=10&limit=10
            uri: /jobExecution/jobRequests?sortBy=name:ascending&start=10&limit=10
            type: application/vnd.sas.collection
            itemType: application/vnd.sas.job.execution.job.request
          - method: GET
            rel: up
            href: /jobExecution
            uri: /jobExecution
            type: application/vnd.sas.api
          - method: POST
            rel: createJobRequest
            href: /jobExecution/jobRequests
            uri: /jobExecution/jobRequests
            type: application/vnd.sas.job.execution.job.request
          - method: POST
            rel: import
            href: /jobExecution/jobRequests
            uri: /jobExecution/jobRequests
            type: application/vnd.sas.transfer.object
            responseType: application/vnd.sas.summary
        name: jobRequests
        accept: application/vnd.sas.job.execution.job.request
        start: 0
        count: 2
        items:
          - creationTimeStamp: 2022-04-06T22:09:12.929Z
            modifiedTimeStamp: 2022-04-06T22:09:12.929Z
            createdBy: sas.catalog
            modifiedBy: sas.catalog
            version: 3
            id: fe697677-15a8-4d33-807c-6c34b743bb8b
            name: List Catalogs
            jobDefinition:
              creationTimeStamp: 0001-01-01T00:00:00.000Z
              modifiedTimeStamp: 0001-01-01T00:00:00.000Z
              version: 1
              name: List Catalogs
              type: Compute
              parameters: []
              code: >
                %macro web_list_catalogs(library);
                	%let library=%upcase(&library);
                    proc sql ;
                        create table work.catalogs as select memname as Catalog, memtype as 
                            Type, engine as Engine from sashelp.vmember where 
                            libname="&library" and memtype="CATALOG";
                        run;
                        title "Catalogs in &library";

                    proc print data=work.catalogs;
                    run;
                %mend;


                %web_list_catalogs(SASHELP);
              properties: []
            arguments:
              _contextName: SAS Job Execution compute context
            properties: []
            links:
              - method: GET
                rel: self
                href: /jobExecution/jobRequests/fe697677-15a8-4d33-807c-6c34b743bb8b
                uri: /jobExecution/jobRequests/fe697677-15a8-4d33-807c-6c34b743bb8b
                type: application/vnd.sas.job.execution.job.request
              - method: GET
                rel: alternate
                href: /jobExecution/jobRequests/fe697677-15a8-4d33-807c-6c34b743bb8b
                uri: /jobExecution/jobRequests/fe697677-15a8-4d33-807c-6c34b743bb8b
                type: application/vnd.sas.summary
              - method: GET
                rel: export
                href: /jobExecution/jobRequests/fe697677-15a8-4d33-807c-6c34b743bb8b
                uri: /jobExecution/jobRequests/fe697677-15a8-4d33-807c-6c34b743bb8b
                type: application/vnd.sas.transfer.object
              - method: DELETE
                rel: delete
                href: /jobExecution/jobRequests/fe697677-15a8-4d33-807c-6c34b743bb8b
                uri: /jobExecution/jobRequests/fe697677-15a8-4d33-807c-6c34b743bb8b
              - method: PUT
                rel: update
                href: /jobExecution/jobRequests/fe697677-15a8-4d33-807c-6c34b743bb8b
                uri: /jobExecution/jobRequests/fe697677-15a8-4d33-807c-6c34b743bb8b
                type: application/vnd.sas.job.execution.job.request
              - method: PUT
                rel: import
                href: /jobExecution/jobRequests/fe697677-15a8-4d33-807c-6c34b743bb8b
                uri: /jobExecution/jobRequests/fe697677-15a8-4d33-807c-6c34b743bb8b
                type: application/vnd.sas.transfer.object
                responseType: application/vnd.sas.summary
              - method: GET
                rel: up
                href: /jobExecution/jobRequests
                uri: /jobExecution/jobRequests
                type: application/vnd.sas.collection
                itemType: application/vnd.sas.job.execution.job.request
              - method: GET
                rel: jobs
                href: /jobExecution/jobRequests/fe697677-15a8-4d33-807c-6c34b743bb8b/jobs
                uri: /jobExecution/jobRequests/fe697677-15a8-4d33-807c-6c34b743bb8b/jobs
                type: application/vnd.sas.collection
                itemType: application/vnd.sas.job.execution.job
              - method: POST
                rel: submitJob
                href: /jobExecution/jobRequests/fe697677-15a8-4d33-807c-6c34b743bb8b/jobs
                uri: /jobExecution/jobRequests/fe697677-15a8-4d33-807c-6c34b743bb8b/jobs
                responseType: application/vnd.sas.job.execution.job
          - creationTimeStamp: 2022-04-06T22:09:32.844Z
            modifiedTimeStamp: 2022-04-06T22:09:32.844Z
            createdBy: sas.dataFlows
            modifiedBy: sas.dataFlows
            version: 3
            id: 1af4342a-41ef-4d70-bbfc-a2ef96687890
            name: Rebuild Catalog index "dataflows"
            description: Rebuild Information Catalog Index "dataflows"
            jobDefinition:
              creationTimeStamp: 0001-01-01T00:00:00.000Z
              modifiedTimeStamp: 0001-01-01T00:00:00.000Z
              version: 0
              name: indexMaintenance
              type: CATALOG
              parameters: []
              code: '{"index":"dataflows"}'
              properties: []
            arguments: {}
            properties: []
            links:
              - method: GET
                rel: self
                href: /jobExecution/jobRequests/1af4342a-41ef-4d70-bbfc-a2ef96687890
                uri: /jobExecution/jobRequests/1af4342a-41ef-4d70-bbfc-a2ef96687890
                type: application/vnd.sas.job.execution.job.request
              - method: GET
                rel: alternate
                href: /jobExecution/jobRequests/1af4342a-41ef-4d70-bbfc-a2ef96687890
                uri: /jobExecution/jobRequests/1af4342a-41ef-4d70-bbfc-a2ef96687890
                type: application/vnd.sas.summary
              - method: GET
                rel: export
                href: /jobExecution/jobRequests/1af4342a-41ef-4d70-bbfc-a2ef96687890
                uri: /jobExecution/jobRequests/1af4342a-41ef-4d70-bbfc-a2ef96687890
                type: application/vnd.sas.transfer.object
              - method: DELETE
                rel: delete
                href: /jobExecution/jobRequests/1af4342a-41ef-4d70-bbfc-a2ef96687890
                uri: /jobExecution/jobRequests/1af4342a-41ef-4d70-bbfc-a2ef96687890
              - method: PUT
                rel: update
                href: /jobExecution/jobRequests/1af4342a-41ef-4d70-bbfc-a2ef96687890
                uri: /jobExecution/jobRequests/1af4342a-41ef-4d70-bbfc-a2ef96687890
                type: application/vnd.sas.job.execution.job.request
              - method: PUT
                rel: import
                href: /jobExecution/jobRequests/1af4342a-41ef-4d70-bbfc-a2ef96687890
                uri: /jobExecution/jobRequests/1af4342a-41ef-4d70-bbfc-a2ef96687890
                type: application/vnd.sas.transfer.object
                responseType: application/vnd.sas.summary
              - method: GET
                rel: up
                href: /jobExecution/jobRequests
                uri: /jobExecution/jobRequests
                type: application/vnd.sas.collection
                itemType: application/vnd.sas.job.execution.job.request
              - method: GET
                rel: jobs
                href: /jobExecution/jobRequests/1af4342a-41ef-4d70-bbfc-a2ef96687890/jobs
                uri: /jobExecution/jobRequests/1af4342a-41ef-4d70-bbfc-a2ef96687890/jobs
                type: application/vnd.sas.collection
                itemType: application/vnd.sas.job.execution.job
              - method: POST
                rel: submitJob
                href: /jobExecution/jobRequests/1af4342a-41ef-4d70-bbfc-a2ef96687890/jobs
                uri: /jobExecution/jobRequests/1af4342a-41ef-4d70-bbfc-a2ef96687890/jobs
                responseType: application/vnd.sas.job.execution.job
        limit: 2
        version: 2
    getJobRequest404Response:
      summary: Get job request 404 response
      description: This is an example of a NOT FOUND response for the `GET` of a specific job request.
      value:
        errorCode: 0
        message: "Job request not found with ID: fe697677-15a8-4d33-807c-6c34b743bb8bx"
        details:
          - "traceId: c20b38c5cc2d06af"
          - "path: /jobExecution/jobRequests/fe697677-15a8-4d33-807c-6c34b743bb8bx"
        links: []
        version: 2
        httpStatusCode: 404
    getProviderResponse:
      summary: Get provider response
      description: Get provider response.
      value:
        id: Compute
        links:
          - method: GET
            rel: self
            href: /jobExecution/providers/Compute
            uri: /jobExecution/providers/Compute
            type: application/vnd.sas.job.execution.provider
          - method: GET
            rel: alternate
            href: /jobExecution/providers/Compute
            uri: /jobExecution/providers/Compute
            type: application/vnd.sas.job.execution.provider.summary
          - method: GET
            rel: up
            href: /jobExecution/providers
            uri: /jobExecution/providers
            type: application/vnd.sas.collection
            itemType: application/vnd.sas.job.execution.provider.summary
        version: 1
        heartbeatInterval: 600
    getProvidersResponse:
      summary: Get providers response
      description: Get providers response
      value:
        links:
          - method: GET
            rel: collection
            href: /jobExecution/providers
            uri: /jobExecution/providers
            type: application/vnd.sas.collection
          - method: GET
            rel: self
            href: /jobExecution/providers?start=0&limit=10
            uri: /jobExecution/providers?start=0&limit=10
            type: application/vnd.sas.collection
            itemType: application/vnd.sas.job.execution.provider.summary
          - method: GET
            rel: next
            href: /jobExecution/providers?start=10&limit=10
            uri: /jobExecution/providers?start=10&limit=10
            type: application/vnd.sas.collection
          - method: GET
            rel: last
            href: /jobExecution/providers?start=10&limit=10
            uri: /jobExecution/providers?start=10&limit=10
            type: application/vnd.sas.collection
          - method: GET
            rel: up
            href: /jobExecution/
            uri: /jobExecution/
            type: application/vnd.sas.api
        name: providers
        accept: application/vnd.sas.job.execution.provider.summary application/vnd.sas.job.execution.provider
        start: 0
        count: 2
        items:
          - id: AnalyticsFlow
            links:
              - method: GET
                rel: self
                href: /jobExecution/providers/AnalyticsFlow
                uri: /jobExecution/providers/AnalyticsFlow
                type: application/vnd.sas.job.execution.provider
              - method: GET
                rel: alternate
                href: /jobExecution/providers/AnalyticsFlow
                uri: /jobExecution/providers/AnalyticsFlow
                type: application/vnd.sas.job.execution.provider.summary
              - method: GET
                rel: up
                href: /jobExecution/providers
                uri: /jobExecution/providers
                type: application/vnd.sas.collection
                itemType: application/vnd.sas.job.execution.provider.summary
            version: 1
          - id: Compute
            links:
              - method: GET
                rel: self
                href: /jobExecution/providers/Compute
                uri: /jobExecution/providers/Compute
                type: application/vnd.sas.job.execution.provider
              - method: GET
                rel: alternate
                href: /jobExecution/providers/Compute
                uri: /jobExecution/providers/Compute
                type: application/vnd.sas.job.execution.provider.summary
              - method: GET
                rel: up
                href: /jobExecution/providers
                uri: /jobExecution/providers
                type: application/vnd.sas.collection
                itemType: application/vnd.sas.job.execution.provider.summary
            version: 1
        limit: 10
        version: 2
    getJobRequestResponse:
      summary: Get job request response
      description: This is an example response when using `GET` to obtain a job request.
      value:
        creationTimeStamp: 2022-04-06T22:09:12.929Z
        modifiedTimeStamp: 2022-04-06T22:09:12.929Z
        createdBy: sas.catalog
        modifiedBy: sas.catalog
        version: 3
        id: fe697677-15a8-4d33-807c-6c34b743bb8b
        name: List Catalogs
        jobDefinition:
          creationTimeStamp: 0001-01-01T00:00:00.000Z
          modifiedTimeStamp: 0001-01-01T00:00:00.000Z
          version: 1
          name: List Catalogs
          type: Compute
          parameters: []
          code: >
            %macro web_list_catalogs(library);
            	%let library=%upcase(&library);
                proc sql ;
                    create table work.catalogs as select memname as Catalog, memtype as 
                        Type, engine as Engine from sashelp.vmember where 
                        libname="&library" and memtype="CATALOG";
                    run;
                    title "Catalogs in &library";

                proc print data=work.catalogs;
                run;
            %mend;


            %web_list_catalogs(SASHELP);
          properties: []
        arguments:
          _contextName: SAS Job Execution compute context
        properties: []
        links:
          - method: GET
            rel: self
            href: /jobExecution/jobRequests/fe697677-15a8-4d33-807c-6c34b743bb8b
            uri: /jobExecution/jobRequests/fe697677-15a8-4d33-807c-6c34b743bb8b
            type: application/vnd.sas.job.execution.job.request
          - method: GET
            rel: alternate
            href: /jobExecution/jobRequests/fe697677-15a8-4d33-807c-6c34b743bb8b
            uri: /jobExecution/jobRequests/fe697677-15a8-4d33-807c-6c34b743bb8b
            type: application/vnd.sas.summary
          - method: GET
            rel: export
            href: /jobExecution/jobRequests/fe697677-15a8-4d33-807c-6c34b743bb8b
            uri: /jobExecution/jobRequests/fe697677-15a8-4d33-807c-6c34b743bb8b
            type: application/vnd.sas.transfer.object
          - method: DELETE
            rel: delete
            href: /jobExecution/jobRequests/fe697677-15a8-4d33-807c-6c34b743bb8b
            uri: /jobExecution/jobRequests/fe697677-15a8-4d33-807c-6c34b743bb8b
          - method: PUT
            rel: update
            href: /jobExecution/jobRequests/fe697677-15a8-4d33-807c-6c34b743bb8b
            uri: /jobExecution/jobRequests/fe697677-15a8-4d33-807c-6c34b743bb8b
            type: application/vnd.sas.job.execution.job.request
          - method: PUT
            rel: import
            href: /jobExecution/jobRequests/fe697677-15a8-4d33-807c-6c34b743bb8b
            uri: /jobExecution/jobRequests/fe697677-15a8-4d33-807c-6c34b743bb8b
            type: application/vnd.sas.transfer.object
            responseType: application/vnd.sas.summary
          - method: GET
            rel: up
            href: /jobExecution/jobRequests
            uri: /jobExecution/jobRequests
            type: application/vnd.sas.collection
            itemType: application/vnd.sas.job.execution.job.request
          - method: GET
            rel: jobs
            href: /jobExecution/jobRequests/fe697677-15a8-4d33-807c-6c34b743bb8b/jobs
            uri: /jobExecution/jobRequests/fe697677-15a8-4d33-807c-6c34b743bb8b/jobs
            type: application/vnd.sas.collection
            itemType: application/vnd.sas.job.execution.job
          - method: POST
            rel: submitJob
            href: /jobExecution/jobRequests/fe697677-15a8-4d33-807c-6c34b743bb8b/jobs
            uri: /jobExecution/jobRequests/fe697677-15a8-4d33-807c-6c34b743bb8b/jobs
            responseType: application/vnd.sas.job.execution.job
    getJobRequestResourceSummaryResponse:
      summary: Get job request as a resource summary response
      description: This is an example response when using `GET` to obtain the job request as a resource summary.
      value:
        creationTimeStamp: 2022-04-06T22:09:12.929Z
        modifiedTimeStamp: 2022-04-06T22:09:12.929Z
        createdBy: sas.catalog
        modifiedBy: sas.catalog
        id: fe697677-15a8-4d33-807c-6c34b743bb8b
        type: jobRequest
        name: Load metadata into the Information Catalog
        description: Load metadata for supported SAS content
        links:
          - method: GET
            rel: self
            href: /jobExecution/jobRequests/fe697677-15a8-4d33-807c-6c34b743bb8b
            uri: /jobExecution/jobRequests/fe697677-15a8-4d33-807c-6c34b743bb8b
            type: application/vnd.sas.job.execution.job.request
        version: 2
    createJobRequestJobResponse:
      summary: Post job request job
      description: This is an example response when using `POST` to create a job request job.
      value:
        creationTimeStamp: 2022-04-12T19:52:42.297Z
        modifiedTimeStamp: 2022-04-12T19:52:47.855Z
        createdBy: user1
        modifiedBy: user1
        version: 4
        id: 5324e52f-4b1b-46b8-bbf9-a039c1091fab
        jobRequest:
          creationTimeStamp: 2022-04-11T21:36:15.155Z
          modifiedTimeStamp: 2022-04-11T21:36:15.155Z
          createdBy: sas.catalog
          modifiedBy: sas.catalog
          version: 3
          id: 3c6338bf-a2a0-4d2a-89d2-22d64ffb69e4
          name: List Catalogs
          jobDefinition:
            creationTimeStamp: 0001-01-01T00:00:00.000Z
            modifiedTimeStamp: 0001-01-01T00:00:00.000Z
            version: 1
            name: List Catalogs
            type: Compute
            parameters: []
            code: >
              %macro web_list_catalogs(library);
              	%let library=%upcase(&library);
                  proc sql ;
                      create table work.catalogs as select memname as Catalog, memtype as 
                          Type, engine as Engine from sashelp.vmember where 
                          libname="&library" and memtype="CATALOG";
                      run;
                      title "Catalogs in &library";

                  proc print data=work.catalogs;
                  run;
              %mend;


              %web_list_catalogs(SASHELP);
            properties: []
          arguments:
            _contextName: SAS Job Execution compute context
          properties: []
          createdByApplication: jobExecution
          links:
            - method: GET
              rel: self
              href: /jobExecution/jobRequests/3c6338bf-a2a0-4d2a-89d2-22d64ffb69e4
              uri: /jobExecution/jobRequests/3c6338bf-a2a0-4d2a-89d2-22d64ffb69e4
              type: application/vnd.sas.job.execution.job.request
        state: running
        heartbeatTimeStamp: 2022-04-12T19:52:47.840Z
        submittedByApplication: jobExecution
        heartbeatInterval: 600
        elapsedTime: 5608
        results: {}
        links:
          - method: GET
            rel: self
            href: /jobExecution/jobs/5324e52f-4b1b-46b8-bbf9-a039c1091fab
            uri: /jobExecution/jobs/5324e52f-4b1b-46b8-bbf9-a039c1091fab
            type: application/vnd.sas.job.execution.job
          - method: GET
            rel: state
            href: /jobExecution/jobs/5324e52f-4b1b-46b8-bbf9-a039c1091fab/state
            uri: /jobExecution/jobs/5324e52f-4b1b-46b8-bbf9-a039c1091fab/state
            type: text/plain
          - method: PUT
            rel: update
            href: /jobExecution/jobs/5324e52f-4b1b-46b8-bbf9-a039c1091fab
            uri: /jobExecution/jobs/5324e52f-4b1b-46b8-bbf9-a039c1091fab
            type: application/vnd.sas.job.execution.job
            responseType: application/vnd.sas.job.execution.job
          - method: DELETE
            rel: delete
            href: /jobExecution/jobs/5324e52f-4b1b-46b8-bbf9-a039c1091fab
            uri: /jobExecution/jobs/5324e52f-4b1b-46b8-bbf9-a039c1091fab
          - method: PUT
            rel: updateState
            href: /jobExecution/jobs/5324e52f-4b1b-46b8-bbf9-a039c1091fab/state
            uri: /jobExecution/jobs/5324e52f-4b1b-46b8-bbf9-a039c1091fab/state
            type: text/plain
          - method: POST
            rel: updateHeartbeatTimeStamp
            href: /jobExecution/jobs/5324e52f-4b1b-46b8-bbf9-a039c1091fab/heartbeatTimeStamp
            uri: /jobExecution/jobs/5324e52f-4b1b-46b8-bbf9-a039c1091fab/heartbeatTimeStamp
            type: text/plain
          - method: GET
            rel: jobRequest
            href: /jobExecution/jobRequests/3c6338bf-a2a0-4d2a-89d2-22d64ffb69e4
            uri: /jobExecution/jobRequests/3c6338bf-a2a0-4d2a-89d2-22d64ffb69e4
            type: application/vnd.sas.job.execution.job.request
    getJobRequestJobsByFilterResponse:
      summary: Get job request jobs by filter
      description: This is example response when using get job request jobs by filter
      value:
        links:
          - method: POST
            rel: collection
            href: /jobExecution/jobRequests/3c6338bf-a2a0-4d2a-89d2-22d64ffb69e4/jobs
            uri: /jobExecution/jobRequests/3c6338bf-a2a0-4d2a-89d2-22d64ffb69e4/jobs
            type: text/plain
            responseType: application/vnd.sas.collection
            responseItemType: application/vnd.sas.job.execution.job
          - method: POST
            rel: self
            href: /jobExecution/jobRequests/3c6338bf-a2a0-4d2a-89d2-22d64ffb69e4/jobs
            uri: /jobExecution/jobRequests/3c6338bf-a2a0-4d2a-89d2-22d64ffb69e4/jobs
            type: text/plain
            responseType: application/vnd.sas.collection
            responseItemType: application/vnd.sas.job.execution.job
          - method: POST
            rel: up
            href: /jobExecution/jobRequests/3c6338bf-a2a0-4d2a-89d2-22d64ffb69e4/
            uri: /jobExecution/jobRequests/3c6338bf-a2a0-4d2a-89d2-22d64ffb69e4/
            type: text/plain
            responseType: application/vnd.sas.collection
            responseItemType: application/vnd.sas.job.execution.job
          - method: POST
            rel: submitJob
            href: /jobExecution/jobRequests/3c6338bf-a2a0-4d2a-89d2-22d64ffb69e4/jobs
            uri: /jobExecution/jobRequests/3c6338bf-a2a0-4d2a-89d2-22d64ffb69e4/jobs
            responseType: application/vnd.sas.job.execution.job
        name: jobs
        accept: application/vnd.sas.job.execution.job
        start: 0
        count: 2
        items:
          - creationTimeStamp: 2022-04-12T20:25:53.936Z
            modifiedTimeStamp: 2022-04-12T20:26:14.424Z
            createdBy: user1
            modifiedBy: user1
            version: 4
            id: 2f52eecc-054b-45b0-837c-b3c21c6115a2
            jobRequest:
              creationTimeStamp: 2022-04-11T21:36:15.155Z
              modifiedTimeStamp: 2022-04-11T21:36:15.155Z
              createdBy: sas.catalog
              modifiedBy: sas.catalog
              version: 3
              id: 3c6338bf-a2a0-4d2a-89d2-22d64ffb69e4
              name: List Catalogs
              jobDefinition:
                creationTimeStamp: 0001-01-01T00:00:00.000Z
                modifiedTimeStamp: 0001-01-01T00:00:00.000Z
                version: 1
                name: List Catalogs
                type: Compute
                parameters: []
                code: >
                  %macro web_list_catalogs(library);
                  	%let library=%upcase(&library);
                      proc sql ;
                          create table work.catalogs as select memname as Catalog, memtype as 
                              Type, engine as Engine from sashelp.vmember where 
                              libname="&library" and memtype="CATALOG";
                          run;
                          title "Catalogs in &library";

                      proc print data=work.catalogs;
                      run;
                  %mend;


                  %web_list_catalogs(SASHELP);
                properties: []
              arguments:
                _contextName: SAS Job Execution compute context
              properties: []
              createdByApplication: jobExecution
              links:
                - method: GET
                  rel: self
                  href: /jobExecution/jobRequests/3c6338bf-a2a0-4d2a-89d2-22d64ffb69e4
                  uri: /jobExecution/jobRequests/3c6338bf-a2a0-4d2a-89d2-22d64ffb69e4
                  type: application/vnd.sas.job.execution.job.request
            state: completed
            endTimeStamp: 2022-04-12T20:26:14.423Z
            heartbeatTimeStamp: 2022-04-12T20:25:54.349Z
            submittedByApplication: jobExecution
            heartbeatInterval: 600
            elapsedTime: 20487
            results:
              COMPUTE_CONTEXT: SAS Studio compute context
              1BCC3AB5-DC93-1040-8B87-B95E92D48DC5.log.txt: /files/files/9ad6e3f4-998a-4512-922b-985ffa2f35bd
              "#LN00007": /files/files/596eb924-93c7-48c8-a79c-b206f6f06df9
              "#LN00006": /files/files/76962281-348a-4f57-978b-d3e42cd0677b
              COMPUTE_JOB: 1BCC3AB5-DC93-1040-8B87-B95E92D48DC5
              COMPUTE_SESSION: 13a661bb-68cc-4061-b49c-c989422c7199-ses0000 ended.
            logLocation: /files/files/e685b834-ca4a-4de5-97e1-53474c3cfe7e
            links:
              - method: GET
                rel: self
                href: /jobExecution/jobs/2f52eecc-054b-45b0-837c-b3c21c6115a2
                uri: /jobExecution/jobs/2f52eecc-054b-45b0-837c-b3c21c6115a2
                type: application/vnd.sas.job.execution.job
              - method: GET
                rel: state
                href: /jobExecution/jobs/2f52eecc-054b-45b0-837c-b3c21c6115a2/state
                uri: /jobExecution/jobs/2f52eecc-054b-45b0-837c-b3c21c6115a2/state
                type: text/plain
              - method: PUT
                rel: update
                href: /jobExecution/jobs/2f52eecc-054b-45b0-837c-b3c21c6115a2
                uri: /jobExecution/jobs/2f52eecc-054b-45b0-837c-b3c21c6115a2
                type: application/vnd.sas.job.execution.job
                responseType: application/vnd.sas.job.execution.job
              - method: DELETE
                rel: delete
                href: /jobExecution/jobs/2f52eecc-054b-45b0-837c-b3c21c6115a2
                uri: /jobExecution/jobs/2f52eecc-054b-45b0-837c-b3c21c6115a2
              - method: PUT
                rel: updateState
                href: /jobExecution/jobs/2f52eecc-054b-45b0-837c-b3c21c6115a2/state
                uri: /jobExecution/jobs/2f52eecc-054b-45b0-837c-b3c21c6115a2/state
                type: text/plain
              - method: POST
                rel: updateHeartbeatTimeStamp
                href: /jobExecution/jobs/2f52eecc-054b-45b0-837c-b3c21c6115a2/heartbeatTimeStamp
                uri: /jobExecution/jobs/2f52eecc-054b-45b0-837c-b3c21c6115a2/heartbeatTimeStamp
                type: text/plain
              - method: GET
                rel: jobRequest
                href: /jobExecution/jobRequests/3c6338bf-a2a0-4d2a-89d2-22d64ffb69e4
                uri: /jobExecution/jobRequests/3c6338bf-a2a0-4d2a-89d2-22d64ffb69e4
                type: application/vnd.sas.job.execution.job.request
              - method: GET
                rel: log
                href: /files/files/e685b834-ca4a-4de5-97e1-53474c3cfe7e
                uri: /files/files/e685b834-ca4a-4de5-97e1-53474c3cfe7e
          - creationTimeStamp: 2022-04-12T20:25:09.668Z
            modifiedTimeStamp: 2022-04-12T20:25:30.334Z
            createdBy: user1
            modifiedBy: user1
            version: 4
            id: f47d224c-5951-47df-b188-488635e04706
            jobRequest:
              creationTimeStamp: 2022-04-11T21:36:15.155Z
              modifiedTimeStamp: 2022-04-11T21:36:15.155Z
              createdBy: sas.catalog
              modifiedBy: sas.catalog
              version: 3
              id: 3c6338bf-a2a0-4d2a-89d2-22d64ffb69e4
              name: List Catalogs
              jobDefinition:
                creationTimeStamp: 0001-01-01T00:00:00.000Z
                modifiedTimeStamp: 0001-01-01T00:00:00.000Z
                version: 1
                name: List Catalogs
                type: Compute
                parameters: []
                code: >
                  %macro web_list_catalogs(library);
                  	%let library=%upcase(&library);
                      proc sql ;
                          create table work.catalogs as select memname as Catalog, memtype as 
                              Type, engine as Engine from sashelp.vmember where 
                              libname="&library" and memtype="CATALOG";
                          run;
                          title "Catalogs in &library";

                      proc print data=work.catalogs;
                      run;
                  %mend;


                  %web_list_catalogs(SASHELP);
                properties: []
              arguments:
                _contextName: SAS Job Execution compute context
              properties: []
              createdByApplication: jobExecution
              links:
                - method: GET
                  rel: self
                  href: /jobExecution/jobRequests/3c6338bf-a2a0-4d2a-89d2-22d64ffb69e4
                  uri: /jobExecution/jobRequests/3c6338bf-a2a0-4d2a-89d2-22d64ffb69e4
                  type: application/vnd.sas.job.execution.job.request
            state: completed
            endTimeStamp: 2022-04-12T20:25:30.333Z
            heartbeatTimeStamp: 2022-04-12T20:25:10.755Z
            submittedByApplication: jobExecution
            heartbeatInterval: 600
            elapsedTime: 20665
            results:
              COMPUTE_CONTEXT: SAS Studio compute context
              "#LN00007": /files/files/3dd98070-7e7c-4790-9520-8c3457788d4d
              "#LN00006": /files/files/6b607655-ec5d-4f80-b328-dcb44c193e21
              COMPUTE_JOB: 57E97ADB-4900-A241-A0B1-90DD5E96D781
              COMPUTE_SESSION: b7260a74-e5f6-42fa-bcd9-431b98544148-ses0000 ended.
              57E97ADB-4900-A241-A0B1-90DD5E96D781.log.txt: /files/files/1b327089-72e3-4a93-a7e5-ea7615abfead
            logLocation: /files/files/030e858d-47f4-45eb-b9b4-2073257d16b8
            links:
              - method: GET
                rel: self
                href: /jobExecution/jobs/f47d224c-5951-47df-b188-488635e04706
                uri: /jobExecution/jobs/f47d224c-5951-47df-b188-488635e04706
                type: application/vnd.sas.job.execution.job
              - method: GET
                rel: state
                href: /jobExecution/jobs/f47d224c-5951-47df-b188-488635e04706/state
                uri: /jobExecution/jobs/f47d224c-5951-47df-b188-488635e04706/state
                type: text/plain
              - method: PUT
                rel: update
                href: /jobExecution/jobs/f47d224c-5951-47df-b188-488635e04706
                uri: /jobExecution/jobs/f47d224c-5951-47df-b188-488635e04706
                type: application/vnd.sas.job.execution.job
                responseType: application/vnd.sas.job.execution.job
              - method: DELETE
                rel: delete
                href: /jobExecution/jobs/f47d224c-5951-47df-b188-488635e04706
                uri: /jobExecution/jobs/f47d224c-5951-47df-b188-488635e04706
              - method: PUT
                rel: updateState
                href: /jobExecution/jobs/f47d224c-5951-47df-b188-488635e04706/state
                uri: /jobExecution/jobs/f47d224c-5951-47df-b188-488635e04706/state
                type: text/plain
              - method: POST
                rel: updateHeartbeatTimeStamp
                href: /jobExecution/jobs/f47d224c-5951-47df-b188-488635e04706/heartbeatTimeStamp
                uri: /jobExecution/jobs/f47d224c-5951-47df-b188-488635e04706/heartbeatTimeStamp
                type: text/plain
              - method: GET
                rel: jobRequest
                href: /jobExecution/jobRequests/3c6338bf-a2a0-4d2a-89d2-22d64ffb69e4
                uri: /jobExecution/jobRequests/3c6338bf-a2a0-4d2a-89d2-22d64ffb69e4
                type: application/vnd.sas.job.execution.job.request
              - method: GET
                rel: log
                href: /files/files/030e858d-47f4-45eb-b9b4-2073257d16b8
                uri: /files/files/030e858d-47f4-45eb-b9b4-2073257d16b8
        limit: 10
        version: 2
    getJobsSampleResponse:
      summary: Get jobs response
      description: This is an example of using `GET` to return jobs.
      value:
        links:
          - method: GET
            rel: collection
            href: /jobExecution/jobs
            uri: /jobExecution/jobs
            type: application/vnd.sas.collection
            itemType: application/vnd.sas.job.execution.job
          - method: GET
            rel: self
            href: /jobExecution/jobs?sortBy=creationTimeStamp:descending&start=0&limit=10
            uri: /jobExecution/jobs?sortBy=creationTimeStamp:descending&start=0&limit=10
            type: application/vnd.sas.collection
            itemType: application/vnd.sas.job.execution.job
          - method: GET
            rel: next
            href: /jobExecution/jobs?sortBy=creationTimeStamp:descending&start=10&limit=10
            uri: /jobExecution/jobs?sortBy=creationTimeStamp:descending&start=10&limit=10
            type: application/vnd.sas.collection
          - method: GET
            rel: up
            href: /jobExecution/
            uri: /jobExecution/
            type: application/vnd.sas.job.execution.job
          - method: POST
            rel: submitJob
            href: /jobExecution/jobs
            uri: /jobExecution/jobs
            type: application/vnd.sas.job.execution.job.request
            responseType: application/vnd.sas.job.execution.job
          - method: POST
            rel: submitJobs
            href: /jobExecution/jobRequests/@selection/jobs
            uri: /jobExecution/jobRequests/@selection/jobs
            type: application/vnd.sas.selection
            responseType: application/vnd.sas.collection
          - method: PUT
            rel: updateStates
            href: /jobExecution/jobs/@selection/state
            uri: /jobExecution/jobs/@selection/state
            type: application/vnd.sas.selection
            responseType: application/vnd.sas.collection
        name: jobs
        accept: application/vnd.sas.job.execution.job
        start: 0
        count: 2
        items:
          - creationTimeStamp: 2022-04-07T14:00:02.853Z
            modifiedTimeStamp: 2022-04-07T14:00:05.389Z
            createdBy: sas.audit
            modifiedBy: sas.audit
            version: 4
            id: f7cb59f8-0f73-4f5c-b7d5-24e9e70e3a9b
            jobRequest:
              version: 3
              name: Update CAS Audit data
              jobDefinitionUri: /jobDefinitions/definitions/7b5ef82d-19e3-46e1-ebeb-cf15b8675309
              jobDefinition:
                creationTimeStamp: 2022-04-06T22:08:06.127Z
                modifiedTimeStamp: 2022-04-06T22:08:06.131Z
                createdBy: sas.audit
                modifiedBy: sas.audit
                version: 2
                id: 7b5ef82d-19e3-46e1-ebeb-cf15b8675309
                name: CAS Audit table update
                description: After upload of new Audit data into a temporary CAS table, this job appends the new data to the existing Audit data
                type: casl
                parameters:
                  - version: 1
                    name: "%VAR-expireDate"
                    type: CHARACTER
                    required: true
                  - version: 1
                    name: "%VAR-tempTableName"
                    type: CHARACTER
                    required: true
                  - version: 1
                    name: "%VAR-targetCaslib"
                    type: CHARACTER
                    required: true
                  - version: 1
                    name: serverId
                    defaultValue: cas-shared-default
                    type: CHARACTER
                    required: false
                code: >-
                  whereStr=cat("'Timestamp'n <= '", expireDate, "'");

                  deleteRows / table={name='AUDIT' caslib=targetCaslib, where=whereStr};

                  run;

                  codeStr=cat("data AUDIT(caslib=", targetCaslib, " append=yes);set ", tempTableName, "(caslib=", targetCaslib, ");run;");

                  datastep.runCode / code=codeStr;

                  run;

                  table.save status=sc / name='AUDIT' caslib=targetCaslib replace=true table={ name='AUDIT' caslib=targetCaslib };

                  run;

                  table.dropTable name='AUDIT' caslib=targetCaslib;

                  run;

                  table.dropTable name=tempTableName caslib=targetCaslib;

                  run;
                links:
                  - method: GET
                    rel: self
                    href: /jobDefinitions/definitions/7b5ef82d-19e3-46e1-ebeb-cf15b8675309
                    uri: /jobDefinitions/definitions/7b5ef82d-19e3-46e1-ebeb-cf15b8675309
                    type: application/vnd.sas.job.definition
                  - method: GET
                    rel: alternate
                    href: /jobDefinitions/definitions/7b5ef82d-19e3-46e1-ebeb-cf15b8675309
                    uri: /jobDefinitions/definitions/7b5ef82d-19e3-46e1-ebeb-cf15b8675309
                    type: application/vnd.sas.summary
                  - method: PUT
                    rel: update
                    href: /jobDefinitions/definitions/7b5ef82d-19e3-46e1-ebeb-cf15b8675309
                    uri: /jobDefinitions/definitions/7b5ef82d-19e3-46e1-ebeb-cf15b8675309
                    type: application/vnd.sas.job.definition
                    responseType: application/vnd.sas.job.definition
                  - method: DELETE
                    rel: delete
                    href: /jobDefinitions/definitions/7b5ef82d-19e3-46e1-ebeb-cf15b8675309
                    uri: /jobDefinitions/definitions/7b5ef82d-19e3-46e1-ebeb-cf15b8675309
                properties: []
              arguments:
                "%VAR-expireDate": 2022-03-31T14:00:02Z
                "%VAR-targetCaslib": SystemData
                "%VAR-tempTableName": audit_2869981866
                serverID: cas-shared-default
              properties: []
              createdByApplication: jobExecution
            state: completed
            endTimeStamp: 2022-04-07T14:00:05.387Z
            heartbeatTimeStamp: 2022-04-07T14:00:03.119Z
            submittedByApplication: audit-service
            heartbeatInterval: 300
            elapsedTime: 2534
            results:
              debuginfo_1: ""
              severity_1: normal
              statusCode_1: "0"
              reason_1: ok
              executedCode: >-
                expireDate="2022-03-31T14:00:02Z";

                tempTableName="audit_2869981866";

                targetCaslib="SystemData";

                whereStr=cat("'Timestamp'n <= '", expireDate, "'");

                deleteRows / table={name='AUDIT' caslib=targetCaslib, where=whereStr};

                run;

                codeStr=cat("data AUDIT(caslib=", targetCaslib, " append=yes);set ", tempTableName, "(caslib=", targetCaslib, ");run;");

                datastep.runCode / code=codeStr;

                run;

                table.save status=sc / name='AUDIT' caslib=targetCaslib replace=true table={ name='AUDIT' caslib=targetCaslib };

                run;

                table.dropTable name='AUDIT' caslib=targetCaslib;

                run;

                table.dropTable name=tempTableName caslib=targetCaslib;

                run;
              status_1: ""
            logLocation: /files/files/e96dd0d1-9158-4a09-9d55-eb56383d73cd
            links:
              - method: GET
                rel: self
                href: /jobExecution/jobs/f7cb59f8-0f73-4f5c-b7d5-24e9e70e3a9b
                uri: /jobExecution/jobs/f7cb59f8-0f73-4f5c-b7d5-24e9e70e3a9b
                type: application/vnd.sas.job.execution.job
              - method: GET
                rel: state
                href: /jobExecution/jobs/f7cb59f8-0f73-4f5c-b7d5-24e9e70e3a9b/state
                uri: /jobExecution/jobs/f7cb59f8-0f73-4f5c-b7d5-24e9e70e3a9b/state
                type: text/plain
              - method: PUT
                rel: update
                href: /jobExecution/jobs/f7cb59f8-0f73-4f5c-b7d5-24e9e70e3a9b
                uri: /jobExecution/jobs/f7cb59f8-0f73-4f5c-b7d5-24e9e70e3a9b
                type: application/vnd.sas.job.execution.job
                responseType: application/vnd.sas.job.execution.job
              - method: DELETE
                rel: delete
                href: /jobExecution/jobs/f7cb59f8-0f73-4f5c-b7d5-24e9e70e3a9b
                uri: /jobExecution/jobs/f7cb59f8-0f73-4f5c-b7d5-24e9e70e3a9b
              - method: PUT
                rel: updateState
                href: /jobExecution/jobs/f7cb59f8-0f73-4f5c-b7d5-24e9e70e3a9b/state
                uri: /jobExecution/jobs/f7cb59f8-0f73-4f5c-b7d5-24e9e70e3a9b/state
                type: text/plain
              - method: POST
                rel: updateHeartbeatTimeStamp
                href: /jobExecution/jobs/f7cb59f8-0f73-4f5c-b7d5-24e9e70e3a9b/heartbeatTimeStamp
                uri: /jobExecution/jobs/f7cb59f8-0f73-4f5c-b7d5-24e9e70e3a9b/heartbeatTimeStamp
                type: text/plain
              - method: GET
                rel: jobDefinition
                href: /jobDefinitions/definitions/7b5ef82d-19e3-46e1-ebeb-cf15b8675309
                uri: /jobDefinitions/definitions/7b5ef82d-19e3-46e1-ebeb-cf15b8675309
                type: application/vnd.sas.job.definition
              - method: GET
                rel: log
                href: /files/files/e96dd0d1-9158-4a09-9d55-eb56383d73cd
                uri: /files/files/e96dd0d1-9158-4a09-9d55-eb56383d73cd
          - creationTimeStamp: 2022-04-07T12:00:03.166Z
            modifiedTimeStamp: 2022-04-07T12:00:05.290Z
            createdBy: sas.audit
            modifiedBy: sas.audit
            version: 4
            id: 79d9a2e8-aa85-4e27-a249-8646e1323707
            jobRequest:
              version: 3
              name: Update CAS Audit data
              jobDefinitionUri: /jobDefinitions/definitions/7b5ef82d-19e3-46e1-ebeb-cf15b8675309
              jobDefinition:
                creationTimeStamp: 2022-04-06T22:08:06.127Z
                modifiedTimeStamp: 2022-04-06T22:08:06.131Z
                createdBy: sas.audit
                modifiedBy: sas.audit
                version: 2
                id: 7b5ef82d-19e3-46e1-ebeb-cf15b8675309
                name: CAS Audit table update
                description: After upload of new Audit data into a temporary CAS table, this job appends the new data to the existing Audit data
                type: casl
                parameters:
                  - version: 1
                    name: "%VAR-expireDate"
                    type: CHARACTER
                    required: true
                  - version: 1
                    name: "%VAR-tempTableName"
                    type: CHARACTER
                    required: true
                  - version: 1
                    name: "%VAR-targetCaslib"
                    type: CHARACTER
                    required: true
                  - version: 1
                    name: serverID
                    defaultValue: cas-shared-default
                    type: CHARACTER
                    required: false
                code: >-
                  whereStr=cat("'Timestamp'n <= '", expireDate, "'");

                  deleteRows / table={name='AUDIT' caslib=targetCaslib, where=whereStr};

                  run;

                  codeStr=cat("data AUDIT(caslib=", targetCaslib, " append=yes);set ", tempTableName, "(caslib=", targetCaslib, ");run;");

                  datastep.runCode / code=codeStr;

                  run;

                  table.save status=sc / name='AUDIT' caslib=targetCaslib replace=true table={ name='AUDIT' caslib=targetCaslib };

                  run;

                  table.dropTable name='AUDIT' caslib=targetCaslib;

                  run;

                  table.dropTable name=tempTableName caslib=targetCaslib;

                  run;
                links:
                  - method: GET
                    rel: self
                    href: /jobDefinitions/definitions/7b5ef82d-19e3-46e1-ebeb-cf15b8675309
                    uri: /jobDefinitions/definitions/7b5ef82d-19e3-46e1-ebeb-cf15b8675309
                    type: application/vnd.sas.job.definition
                  - method: GET
                    rel: alternate
                    href: /jobDefinitions/definitions/7b5ef82d-19e3-46e1-ebeb-cf15b8675309
                    uri: /jobDefinitions/definitions/7b5ef82d-19e3-46e1-ebeb-cf15b8675309
                    type: application/vnd.sas.summary
                  - method: PUT
                    rel: update
                    href: /jobDefinitions/definitions/7b5ef82d-19e3-46e1-ebeb-cf15b8675309
                    uri: /jobDefinitions/definitions/7b5ef82d-19e3-46e1-ebeb-cf15b8675309
                    type: application/vnd.sas.job.definition
                    responseType: application/vnd.sas.job.definition
                  - method: DELETE
                    rel: delete
                    href: /jobDefinitions/definitions/7b5ef82d-19e3-46e1-ebeb-cf15b8675309
                    uri: /jobDefinitions/definitions/7b5ef82d-19e3-46e1-ebeb-cf15b8675309
                properties: []
              arguments:
                "%VAR-expireDate": 2022-03-31T12:00:02Z
                "%VAR-targetCaslib": SystemData
                "%VAR-tempTableName": audit_4114136195
                serverID: cas-shared-default
              properties: []
              createdByApplication: jobExecution
            state: completed
            endTimeStamp: 2022-04-07T12:00:05.287Z
            heartbeatTimeStamp: 2022-04-07T12:00:03.267Z
            submittedByApplication: audit-service
            heartbeatInterval: 300
            elapsedTime: 2121
            results:
              debuginfo_1: ""
              severity_1: normal
              statusCode_1: "0"
              reason_1: ok
              executedCode: >-
                expireDate="2022-03-31T12:00:02Z";

                tempTableName="audit_4114136195";

                targetCaslib="SystemData";

                whereStr=cat("'Timestamp'n <= '", expireDate, "'");

                deleteRows / table={name='AUDIT' caslib=targetCaslib, where=whereStr};

                run;

                codeStr=cat("data AUDIT(caslib=", targetCaslib, " append=yes);set ", tempTableName, "(caslib=", targetCaslib, ");run;");

                datastep.runCode / code=codeStr;

                run;

                table.save status=sc / name='AUDIT' caslib=targetCaslib replace=true table={ name='AUDIT' caslib=targetCaslib };

                run;

                table.dropTable name='AUDIT' caslib=targetCaslib;

                run;

                table.dropTable name=tempTableName caslib=targetCaslib;

                run;
              status_1: ""
            logLocation: /files/files/9bc09fa1-2f94-4bec-9999-299401c6a472
            links:
              - method: GET
                rel: self
                href: /jobExecution/jobs/79d9a2e8-aa85-4e27-a249-8646e1323707
                uri: /jobExecution/jobs/79d9a2e8-aa85-4e27-a249-8646e1323707
                type: application/vnd.sas.job.execution.job
              - method: GET
                rel: state
                href: /jobExecution/jobs/79d9a2e8-aa85-4e27-a249-8646e1323707/state
                uri: /jobExecution/jobs/79d9a2e8-aa85-4e27-a249-8646e1323707/state
                type: text/plain
              - method: PUT
                rel: update
                href: /jobExecution/jobs/79d9a2e8-aa85-4e27-a249-8646e1323707
                uri: /jobExecution/jobs/79d9a2e8-aa85-4e27-a249-8646e1323707
                type: application/vnd.sas.job.execution.job
                responseType: application/vnd.sas.job.execution.job
              - method: DELETE
                rel: delete
                href: /jobExecution/jobs/79d9a2e8-aa85-4e27-a249-8646e1323707
                uri: /jobExecution/jobs/79d9a2e8-aa85-4e27-a249-8646e1323707
              - method: PUT
                rel: updateState
                href: /jobExecution/jobs/79d9a2e8-aa85-4e27-a249-8646e1323707/state
                uri: /jobExecution/jobs/79d9a2e8-aa85-4e27-a249-8646e1323707/state
                type: text/plain
              - method: POST
                rel: updateHeartbeatTimeStamp
                href: /jobExecution/jobs/79d9a2e8-aa85-4e27-a249-8646e1323707/heartbeatTimeStamp
                uri: /jobExecution/jobs/79d9a2e8-aa85-4e27-a249-8646e1323707/heartbeatTimeStamp
                type: text/plain
              - method: GET
                rel: jobDefinition
                href: /jobDefinitions/definitions/7b5ef82d-19e3-46e1-ebeb-cf15b8675309
                uri: /jobDefinitions/definitions/7b5ef82d-19e3-46e1-ebeb-cf15b8675309
                type: application/vnd.sas.job.definition
              - method: GET
                rel: log
                href: /files/files/9bc09fa1-2f94-4bec-9999-299401c6a472
                uri: /files/files/9bc09fa1-2f94-4bec-9999-299401c6a472
        limit: 10
        version: 2
