ADRO Jobs API

The jobs API from ADRO — 24 operation(s) for jobs.

Operations 24

GET /job/{id}/ Job 상세 조회 #
POST /job/{id}/cancel/ Job 취소 #
POST /job/{id}/delete/ Job 삭제 (소프트) #
GET /job/{id}/deletion-preview/ Job 삭제 예정일 미리보기 #
GET /job/{id}/execution-logs/ Result Viewer — 실행 console 로그 #
GET /job/{id}/history/ Result Viewer — 최적화 history CSV #
GET /job/{id}/monitor/ Job 모니터링 (대기화면용) #
GET /job/{id}/optimized-stl/ Optimized STL presigned URL(s) — seed a new project #
GET /job/{id}/parameters/ Job view parameters #
POST /job/{id}/purge-now/ Job 즉시 영구 삭제 접수 #
POST /job/{id}/rename/ Run(Job) 이름 변경 #
POST /job/{id}/restart/ G2 Job 단계 재시작 (restart) #
GET /job/{id}/restart-options/ G2 Job restart 단계 옵션 #
POST /job/{id}/restore/ 삭제 예정 Job 복구 #
GET /job/{id}/result-mesh/ Result Viewer — DSN별 mesh presigned URL #
GET /job/{id}/streamlines/ Result Viewer — DSN별 flow streamlines presigned URL #
GET /job/{id}/usage/ Job 실시간 소모 크레딧 #
GET /job/{id}/valid-dsns/ Result Viewer — 유효 DSN 목록 #
GET /jobs/{job_uid}/asset-publish-candidate/ Jobs asset publish candidate retrieve #
POST /jobs/{job_uid}/asset-submissions/ Jobs asset submissions create #
POST /stl/convert/ STEP -> STL conversion — curvature-adaptive tessellation, returns STL + metrics #
POST /stl/convert-async/ 비동기 STEP -> STL 변환 시작 (S3 in → S3 out) #
GET /stl/convert-async/{task_uid}/ 비동기 STEP 변환 상태 조회 #
POST /stl/repair/ STL watertight repair — weld/fill/pymeshfix, returns repaired STL + metrics #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/adro1b33-jobs-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

adro1b33-jobs-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: aox-django-backend Jobs API
  version: 1.0.0
tags:
- name: Jobs
paths:
  /job/{id}/:
    get:
      operationId: job_retrieve
      description: 'Job 상세, 취소, 모니터링, Result Viewer 엔드포인트.


        엔드포인트:

        GET /job// — Job 상세 조회

        GET /job/by-uid// — Job UID 상세 조회

        POST /job//cancel/ — Job 취소

        POST /job//delete/ — Job 소프트 삭제 (실행 중이면 취소 후 삭제)

        GET /job//monitor/ — 대기화면 모니터링 (프론트 5~10초 폴링)

        GET /job//valid-dsns/ — Result Viewer: 유효 DSN 목록

        GET /job//result-mesh/ — Result Viewer: DSN별 mesh presigned URL

        GET /job//streamlines/ — Result Viewer: DSN별 flow streamlines presigned URL

        GET /job//history/ — Result Viewer: 최적화 history CSV

        GET /job//execution-logs/ — Result Viewer: 실행 console 로그'
      summary: Job 상세 조회
      parameters:
      - in: path
        name: id
        schema:
          type: integer
        description: 작업을 식별하는 고유한 정수 값.
        required: true
      tags:
      - Jobs
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Job'
          description: ''
  /job/{id}/cancel/:
    post:
      operationId: job_cancel_create
      description: POST /job/{id}/cancel/ — request body 불필요.
      summary: Job 취소
      parameters:
      - in: path
        name: id
        schema:
          type: integer
        description: 작업을 식별하는 고유한 정수 값.
        required: true
      tags:
      - Jobs
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Job'
          description: ''
  /job/{id}/delete/:
    post:
      operationId: job_delete_create
      description: 'POST /job/{id}/delete/ — Job 소프트 삭제.


        - 실행 중(QUEUED / RUNNING)이면 먼저 취소(cancel) 후 소프트 삭제.

        - 삭제된 Job은 API 응답에서 제외됨 (is_deleted=True 필터링).

        - 어드민에서 is_deleted=False로 되돌려 복구 가능.

        - request body 불필요.'
      summary: Job 삭제 (소프트)
      parameters:
      - in: path
        name: id
        schema:
          type: integer
        description: 작업을 식별하는 고유한 정수 값.
        required: true
      tags:
      - Jobs
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Job'
          description: ''
  /job/{id}/deletion-preview/:
    get:
      operationId: job_deletion_preview_retrieve
      description: 'Job 상세, 취소, 모니터링, Result Viewer 엔드포인트.


        엔드포인트:

        GET /job// — Job 상세 조회

        GET /job/by-uid// — Job UID 상세 조회

        POST /job//cancel/ — Job 취소

        POST /job//delete/ — Job 소프트 삭제 (실행 중이면 취소 후 삭제)

        GET /job//monitor/ — 대기화면 모니터링 (프론트 5~10초 폴링)

        GET /job//valid-dsns/ — Result Viewer: 유효 DSN 목록

        GET /job//result-mesh/ — Result Viewer: DSN별 mesh presigned URL

        GET /job//streamlines/ — Result Viewer: DSN별 flow streamlines presigned URL

        GET /job//history/ — Result Viewer: 최적화 history CSV

        GET /job//execution-logs/ — Result Viewer: 실행 console 로그'
      summary: Job 삭제 예정일 미리보기
      parameters:
      - in: path
        name: id
        schema:
          type: integer
        description: 작업을 식별하는 고유한 정수 값.
        required: true
      tags:
      - Jobs
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Job'
          description: ''
  /job/{id}/execution-logs/:
    get:
      operationId: job_execution_logs_retrieve
      description: 'GET /job/{id}/execution-logs/


        execution.metadata["console_logs"] 를 monitor 응답과 동일 포맷으로 반환.'
      summary: Result Viewer — 실행 console 로그
      parameters:
      - in: path
        name: id
        schema:
          type: integer
        description: 작업을 식별하는 고유한 정수 값.
        required: true
      tags:
      - Jobs
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Job'
          description: ''
  /job/{id}/history/:
    get:
      operationId: job_history_retrieve
      description: 'GET /job/{id}/history


        S3 {s3_output_prefix}/history_project.csv 를 파싱하여 최근 200 row 반환.'
      summary: Result Viewer — 최적화 history CSV
      parameters:
      - in: path
        name: id
        schema:
          type: integer
        description: 작업을 식별하는 고유한 정수 값.
        required: true
      tags:
      - Jobs
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Job'
          description: ''
  /job/{id}/monitor/:
    get:
      operationId: job_monitor_retrieve
      description: '대기화면용 모니터링 API.


        Celery beat가 30초마다 로그 수집/파싱 → execution.metadata["monitor_state"]에

        monitoring_log.json의 요약(active_stage/progress/elapsed_time/metrics)을

        execution.metadata["monitor_state"]에 캐싱. 현재 status/stage/progress는 Job 스냅샷이 기준이다.

        프론트는 5~10초 폴링으로 DB 캐싱된 값만 조회 (매 요청마다 SSH/CloudWatch 호출 없음).


        Response:

        - metrics: iter, residual, runtime, cd, cl

        - console_logs: [{seq, timestamp, tag, message}]'
      summary: Job 모니터링 (대기화면용)
      parameters:
      - in: path
        name: id
        schema:
          type: integer
        description: 작업을 식별하는 고유한 정수 값.
        required: true
      tags:
      - Jobs
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/JobMonitorResponse'
          description: ''
  /job/{id}/optimized-stl/:
    get:
      operationId: job_optimized_stl_retrieve
      description: 'GET /job/{id}/optimized-stl


        Presigned download URL(s) for this run''s optimized STL output(s)

        (JobOutputArtifact role OPTIMIZED_STL — e.g. *_morphed.stl). Used to seed

        a new project from an optimized shape. available=false when none exist.'
      summary: Optimized STL presigned URL(s) — seed a new project
      parameters:
      - in: path
        name: id
        schema:
          type: integer
        description: 작업을 식별하는 고유한 정수 값.
        required: true
      tags:
      - Jobs
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Job'
          description: ''
  /job/{id}/parameters/:
    get:
      operationId: job_parameters_retrieve
      description: Return one display-ready parameter shape for G1, G2, and G4.
      summary: Job view parameters
      parameters:
      - in: path
        name: id
        schema:
          type: integer
        description: 작업을 식별하는 고유한 정수 값.
        required: true
      tags:
      - Jobs
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/JobParametersResponse'
          description: ''
  /job/{id}/purge-now/:
    post:
      operationId: job_purge_now_create
      description: 'Job 상세, 취소, 모니터링, Result Viewer 엔드포인트.


        엔드포인트:

        GET /job// — Job 상세 조회

        GET /job/by-uid// — Job UID 상세 조회

        POST /job//cancel/ — Job 취소

        POST /job//delete/ — Job 소프트 삭제 (실행 중이면 취소 후 삭제)

        GET /job//monitor/ — 대기화면 모니터링 (프론트 5~10초 폴링)

        GET /job//valid-dsns/ — Result Viewer: 유효 DSN 목록

        GET /job//result-mesh/ — Result Viewer: DSN별 mesh presigned URL

        GET /job//streamlines/ — Result Viewer: DSN별 flow streamlines presigned URL

        GET /job//history/ — Result Viewer: 최적화 history CSV

        GET /job//execution-logs/ — Result Viewer: 실행 console 로그'
      summary: Job 즉시 영구 삭제 접수
      parameters:
      - in: path
        name: id
        schema:
          type: integer
        description: 작업을 식별하는 고유한 정수 값.
        required: true
      tags:
      - Jobs
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Job'
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/Job'
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/Job'
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Job'
          description: ''
  /job/{id}/rename/:
    post:
      operationId: job_rename_create
      description: 'POST /job/{id}/rename/ — body: {"name": "..."}.'
      summary: Run(Job) 이름 변경
      parameters:
      - in: path
        name: id
        schema:
          type: integer
        description: 작업을 식별하는 고유한 정수 값.
        required: true
      tags:
      - Jobs
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/JobRename'
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/JobRename'
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/JobRename'
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Job'
          description: ''
  /job/{id}/restart/:
    post:
      operationId: job_restart_create
      description: 'POST /job/{id}/restart/ — 원본 Job 의 mesh/CFD 체크포인트를 재사용해

        선택한 단계부터 재실행한다.


        body:

        - restart_stage: "scratch" | "mesh" | "cfd" | "opt"

        - run_config: (선택) override (예: {"opt_iter": 5})'
      summary: G2 Job 단계 재시작 (restart)
      parameters:
      - in: path
        name: id
        schema:
          type: integer
        description: 작업을 식별하는 고유한 정수 값.
        required: true
      tags:
      - Jobs
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/G2JobRestart'
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/G2JobRestart'
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/G2JobRestart'
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Job'
          description: ''
  /job/{id}/restart-options/:
    get:
      operationId: job_restart_options_retrieve
      description: 'GET /job/{id}/restart-options/ — 이 Job 에서 선택 가능한 restart 단계 목록.


        checkpoint 가 필요한 단계(cfd/opt)는 원본이 종료(성공/halt)된 경우에만 available.

        cost_ratio 는 프론트 비용 표시용(전체 실행 대비 비율).'
      summary: G2 Job restart 단계 옵션
      parameters:
      - in: path
        name: id
        schema:
          type: integer
        description: 작업을 식별하는 고유한 정수 값.
        required: true
      tags:
      - Jobs
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Job'
          description: ''
  /job/{id}/restore/:
    post:
      operationId: job_restore_create
      description: 'Job 상세, 취소, 모니터링, Result Viewer 엔드포인트.


        엔드포인트:

        GET /job// — Job 상세 조회

        GET /job/by-uid// — Job UID 상세 조회

        POST /job//cancel/ — Job 취소

        POST /job//delete/ — Job 소프트 삭제 (실행 중이면 취소 후 삭제)

        GET /job//monitor/ — 대기화면 모니터링 (프론트 5~10초 폴링)

        GET /job//valid-dsns/ — Result Viewer: 유효 DSN 목록

        GET /job//result-mesh/ — Result Viewer: DSN별 mesh presigned URL

        GET /job//streamlines/ — Result Viewer: DSN별 flow streamlines presigned URL

        GET /job//history/ — Result Viewer: 최적화 history CSV

        GET /job//execution-logs/ — Result Viewer: 실행 console 로그'
      summary: 삭제 예정 Job 복구
      parameters:
      - in: path
        name: id
        schema:
          type: integer
        description: 작업을 식별하는 고유한 정수 값.
        required: true
      tags:
      - Jobs
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Job'
          description: ''
  /job/{id}/result-mesh/:
    get:
      operationId: job_result_mesh_retrieve
      description: 'GET /job/{id}/result-mesh?dsn=N


        Stored RESULT_MESH artifact에 대한 presigned GET URL 반환 (3600초).'
      summary: Result Viewer — DSN별 mesh presigned URL
      parameters:
      - in: path
        name: id
        schema:
          type: integer
        description: 작업을 식별하는 고유한 정수 값.
        required: true
      tags:
      - Jobs
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Job'
          description: ''
  /job/{id}/streamlines/:
    get:
      operationId: job_streamlines_retrieve
      description: 'GET /job/{id}/streamlines


        Presigned GET URL (3600s) for the flow streamlines at the output root:

        {output}/streamlines.bin (STRM compact binary).


        Backend flow artifact tasks bake streamlines.bin and flowfield.bin after

        result proxy bounds are ready. This endpoint only serves the generated

        artifact, or submits the task when the artifact is missing.

        Returns available=false (200) when a job has neither, so the viewer just

        hides the layer.'
      summary: Result Viewer — DSN별 flow streamlines presigned URL
      parameters:
      - in: path
        name: id
        schema:
          type: integer
        description: 작업을 식별하는 고유한 정수 값.
        required: true
      tags:
      - Jobs
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Job'
          description: ''
  /job/{id}/usage/:
    get:
      operationId: job_usage_retrieve
      description: 'SQS usage-event 소비로 실시간 차감되는 Job 의 소모 크레딧.


        실시간 로그(monitor) 와 동일한 id 기반 detail 라우트·권한·팀 스코핑

        (get_object → get_queryset + check_object_permissions)을 거친다.

        진행 중 Job 도 현재까지 누적치를 반환한다.'
      summary: Job 실시간 소모 크레딧
      parameters:
      - in: path
        name: id
        schema:
          type: integer
        description: 작업을 식별하는 고유한 정수 값.
        required: true
      tags:
      - Jobs
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/JobUsageSummary'
          description: ''
  /job/{id}/valid-dsns/:
    get:
      operationId: job_valid_dsns_retrieve
      description: 'GET /job/{id}/valid-dsns


        Stored RESULT_MESH artifacts에서 존재하는 DSN 번호를 오름차순으로 반환.'
      summary: Result Viewer — 유효 DSN 목록
      parameters:
      - in: path
        name: id
        schema:
          type: integer
        description: 작업을 식별하는 고유한 정수 값.
        required: true
      tags:
      - Jobs
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Job'
          description: ''
  /jobs/{job_uid}/asset-publish-candidate/:
    get:
      operationId: jobs_asset_publish_candidate_retrieve
      parameters:
      - in: path
        name: job_uid
        schema:
          type: string
        required: true
      tags:
      - Jobs
      responses:
        '200':
          description: No response body
      summary: Jobs asset publish candidate retrieve
      x-summary-source: derived
  /jobs/{job_uid}/asset-submissions/:
    post:
      operationId: jobs_asset_submissions_create
      parameters:
      - in: path
        name: job_uid
        schema:
          type: string
        required: true
      tags:
      - Jobs
      responses:
        '200':
          description: No response body
      summary: Jobs asset submissions create
      x-summary-source: derived
  /stl/convert/:
    post:
      operationId: stl_convert_create
      description: 'Convert an uploaded STEP (.stp/.step) CAD file into a binary STL so the

        rest of the platform (precheck, repair, workbench, split-stl, meshing)

        keeps consuming plain STL. Units are preserved from the STEP file (mm for

        AP203/AP214 automotive exports).


        Input: multipart ''file'' (STEP files are compact B-rep — a full rear wing is

        a few MB, so the request body stays small).

        Returns JSON: { stlBase64, fileName, solids, faces, triangles, watertight,

        bboxMm, durationMs }. The caller swaps its local File for the converted STL

        and proceeds through the normal STL upload flow.'
      summary: STEP -> STL conversion — curvature-adaptive tessellation, returns STL + metrics
      tags:
      - Jobs
      responses:
        '200':
          description: No response body
  /stl/convert-async/:
    post:
      operationId: stl_convert_async_create
      description: 'Start an async conversion of an ALREADY-UPLOADED .stp/.step S3 object.


        Request: {projectId, objectKey} — the .stp uploaded via the normal presigned

        flow (project input prefix). Returns {taskId}; poll convert_step_async_status.

        The result STL is written next to the source with a presign-style name, so

        downstream treats it exactly like a browser-uploaded STL.'
      summary: 비동기 STEP -> STL 변환 시작 (S3 in → S3 out)
      tags:
      - Jobs
      responses:
        '200':
          description: No response body
  /stl/convert-async/{task_uid}/:
    get:
      operationId: stl_convert_async_retrieve
      description: 'Poll an async conversion. On success the payload includes the result''s

        S3 metadata + a presigned download URL so the client can pull the STL into

        its local cache (mesh stats / watertight precheck still run client-side).'
      summary: 비동기 STEP 변환 상태 조회
      parameters:
      - in: path
        name: task_uid
        schema:
          type: string
        required: true
      tags:
      - Jobs
      responses:
        '200':
          description: No response body
  /stl/repair/:
    post:
      operationId: stl_repair_create
      description: 'Repair an STL so the solver''s SDF treats it as a solid body. The watertight

        *detection* runs client-side (lib/stl-precheck); this performs the heavy repair

        (pymeshfix) that cannot run in the browser.


        Input (any one):

        * JSON {projectId, objectKey} — repair an already-uploaded S3 object. Preferred:

        the request stays tiny so large STLs don''t hit DATA_UPLOAD_MAX_MEMORY_SIZE.

        * multipart file= OR JSON {stlBase64} — small meshes only (request body).

        Returns JSON: { repaired, before, after, volumeRatio, notes } plus EITHER:

        * objectKey path: the repaired mesh is written straight back to S3 at the

        SAME key (no base64, no caller re-upload) and `objectKey` is echoed; or

        * fallback path: `stlBase64` of the repaired mesh (caller uploads it).'
      summary: STL watertight repair — weld/fill/pymeshfix, returns repaired STL + metrics
      tags:
      - Jobs
      responses:
        '200':
          description: No response body
components:
  schemas:
    ParameterizationSpec:
      type: object
      properties:
        mode:
          enum:
          - morph
          - ffd
          - rbf
          - sdf
          type: string
          description: '* `morph` - morph

            * `ffd` - ffd

            * `rbf` - rbf

            * `sdf` - sdf'
          x-spec-enum-id: ae3ce64c24db245b
        engine:
          enum:
          - G1
          - G2
          - G4
          type: string
          description: '* `G1` - G1

            * `G2` - G2

            * `G4` - G4'
          x-spec-enum-id: d5df67bc8a34864a
        params:
          type: object
          additionalProperties: {}
      required:
      - engine
      - mode
    PlaneConstraint:
      type: object
      properties:
        axis:
          enum:
          - x
          - y
          - z
          type: string
          description: '* `x` - x

            * `y` - y

            * `z` - z'
          x-spec-enum-id: 27a7e2bcc96b78e8
        min:
          type:
          - number
          - 'null'
          format: double
        max:
          type:
          - number
          - 'null'
          format: double
        minOffset:
          type:
          - number
          - 'null'
          format: double
        maxOffset:
          type:
          - number
          - 'null'
          format: double
      required:
      - axis
    JobMonitorValueLabel:
      type: object
      description: Monitor API value-label 페어.
      properties:
        value:
          type: number
          format: double
        label:
          type: string
      required:
      - label
      - value
    JobExecution:
      type: object
      description: Job 상세 응답의 executions[] 블록을 구성하는 실행 상세 정보.
      properties:
        id:
          type: integer
          readOnly: true
        uid:
          type: string
          readOnly: true
        backendType:
          enum:
          - SHARED_HPC
          - AWS_BATCH
          - LOCAL
          - K8S
          - SKETCH_GPU
          - SSH_REMOTE
          type: string
          description: '* `SHARED_HPC` - Shared HPC

            * `AWS_BATCH` - AWS Batch

            * `LOCAL` - Local

            * `K8S` - Kubernetes

            * `SKETCH_GPU` - Sketch GPU

            * `SSH_REMOTE` - Remote SSH'
          x-spec-enum-id: 2af077c591bf1be8
        attemptNo:
          type: integer
          maximum: 2147483647
          minimum: -2147483648
        batchJobId:
          type:
          - string
          - 'null'
          maxLength: 255
        batchQueueName:
          type:
          - string
          - 'null'
          maxLength: 255
        batchJobDefinition:
          type:
          - string
          - 'null'
          maxLength: 255
        computeRegion:
          type:
          - string
          - 'null'
          maxLength: 64
        status:
          enum:
          - submitted
          - pending
          - runnable
          - running
          - cancelling
          - cancellation_failed
          - succeeded
          - failed
          - cancelled
          - timeout
          type: string
          description: '* `submitted` - Submitted

            * `pending` - Pending

            * `runnable` - Runnable

            * `running` - Running

            * `cancelling` - Cancelling

            * `cancellation_failed` - Cancellation failed

            * `succeeded` - Succeeded

            * `failed` - Failed

            * `cancelled` - Cancelled

            * `timeout` - Timeout'
          x-spec-enum-id: 0ef3d8c1f80fe2d3
        statusReason:
          type:
          - string
          - 'null'
        progress:
          type: number
          format: double
        submittedAt:
          type: string
          format: date-time
        startedAt:
          type:
          - string
          - 'null'
          format: date-time
        finishedAt:
          type:
          - string
          - 'null'
          format: date-time
        duration:
          type: string
          readOnly: true
      required:
      - backendType
      - duration
      - id
      - status
      - uid
    Patch:
      type: object
      properties:
        id:
          type: integer
          readOnly: true
        uid:
          type: string
          readOnly: true
        patchType:
          enum:
          - source
          - ref
          type: string
          description: '* `source` - Source

            * `ref` - Ref'
          x-spec-enum-id: 946c46f06a235611
          readOnly: true
        label:
          type: string
          maxLength: 255
        category:
          enum:
          - optimization
          - constant
          - wing
          - wheel_front
          - wheel_rear
          - optimization_target
          - constant_target
          - front_wheel
          - rear_wheel
          type: string
          description: '* `optimization` - Optimization

            * `constant` - Constant

            * `wing` - Wing

            * `wheel_front` - Wheel Front

            * `wheel_rear` - Wheel Rear

            * `optimization_target` - Optimization Target

            * `constant_target` - Constant Target

            * `front_wheel` - Front Wheel

            * `rear_wheel` - Rear Wheel'
          x-spec-enum-id: 5dd1d70043ac53a5
        artifactId:
          type:
          - integer
          - 'null'
          description: Associated artifact for source patch
          readOnly: true
        triangleCount:
          type:
          - integer
          - 'null'
          maximum: 2147483647
          minimum: -2147483648
          description: source patch original STL triangle count
        surfaceArea:
          type:
          - number
          - 'null'
          format: double
          description: source/ref patch surface area
        selectedProxyTriangleCount:
          type:
          - integer
          - 'null'
          maximum: 2147483647
          minimum: -2147483648
          description: ref patch only
        boundingBox:
          description: source/ref 공용 bbox payload {min:[x,y,z], max:[x,y,z], ffd_degree?:[i,j,k]}
        ffdDegree:
          type:
          - array
          - 'null'
          items:
            type: integer
          writeOnly: true
        proxyMaskSizeBytes:
          type: integer
          minimum: 1
          writeOnly: true
        normalDisplacementInward:
          type:
          - number
          - 'null'
          format: double
          title: (constraint) normal displacement inward
        normalDisplacementOutward:
          type:
          - number
          - 'null'
          format: double
          title: (constraint) normal displacement outward
        planeLimitXMin:
          type:
          - number
          - 'null'
          format: double
          title: (constraint) plane limit x min
        planeLimitXMax:
          type:
          - number
          - 'null'
          format: double
          title: (constraint) plane limit x max
        planeLimitYMin:
          type:
          - number
          - 'null'
          format: double
          title: (constraint) plane limit y min
        planeLimitYMax:
          type:
          - number
          - 'null'
          format: double
          title: (constraint) plane limit y max
        planeLimitZMin:
          type:
          - number
          - 'null'
          format: double
          title: (constraint) plane limit z min
        planeLimitZMax:
          type:
          - number
          - 'null'
          format: double
          title: (constraint) plane limit z max
        inputPreviewPointsKey:
          type: string
          description: source patch point preview only
          maxLength: 1024
        inputPreviewPoints:
          description: source patch point preview metadata
        inputPreviewVoxelsKey:
          type: string
          description: source patch voxel preview only
          maxLength: 1024
        inputPreviewVoxels:
          description: source patch voxel preview metadata
        proxyCacheKey:
          type: string
          description: source patch only
          maxLength: 255
        proxyMeshKey:
          type: string
          description: source patch only
          maxLength: 1024
        proxyLayoutKey:
          type: string
          description: source patch only
          maxLength: 1024
        atlasKey:
          type: string
          description: source patch only
          maxLength: 1024
        proxyWorkerRevision:
          type: string
          description: source patch only
          maxLength: 64
        proxyArtifactSignature:
          type: string
          description: source patch only
          maxLength: 128
        proxyTriangleCount:
          type:
          - integer
          - 'null'
          maximum: 2147483647
          minimum: -2147483648
          description: source patch only
        hasRefs:
          type: boolean
          readOnly: true
        isMergeOutput:
          type: boolean
          readOnly: true
        isMergePending:
          type: boolean
          readOnly: true
        mergedSourcePatches:
          type: array
          items:
            $ref: '#/components/schemas/MergedSourcePatch'
          readOnly: true
        isInitialSourceUpload:
          type: boolean
          readOnly: true
          description: source patch only - uploaded while project was draft
        sourcePatchId:
          type:
          - integer
          - 'null'
          readOnly: true
        mergedIntoPatchId:
          type:
          - integer
          - 'null'
          readOnly: true
        proxyMeshMaskKey:
          type: string
          description: ref patch only
          maxLength: 1024
        sourceProxyArtifactSignature:
          type: string
          description: ref patch only — 부모 source patch proxy signature 스냅샷
          maxLength: 128
        proxyMaskSignature:
          type: string
          description: ref patch only
          maxLength: 128
        createdAt:
          type: string
          format: date-time
          readOnly: true
        updatedAt:
          type: string
          format: date-time
          readOnly: true
      required:
      - artifactId
      - createdAt
      - hasRefs
      - id
      - isInitialSourceUpload
      - isMergeOutput
      - isMergePending
      - mergedIntoPatchId
      - mergedSourcePatches
      - patchType
      - sourcePatchId
      - uid
      - updatedAt
    JobParameterItem:
      type: object
      properties:
        key:
          type: string
        label:
          type: string
        group:
          type: string
        value: {}
        displayValue:
          type: string
      required:
      - displayValue
      - key
      - label
      - value
    JobRename:
      type: object
      description: Run(Job) 이름 변경 요청 바디.
      properties:
        name:
          type: string
          maxLength: 128
      required:
      - name
    HpcCompute:
      type: object
      properties:
        nProcs:
          type: integer
          minimum: 1
        nProcsMesh:
          type:
          - integer
          - 'null'
        nodes:
          type:
          - integer
          - 'null'
        coresPerNode:
          type:
          - integer
          - 'null'
        walltimeMinutes:
          type:
          - integ

# --- truncated at 32 KB (56 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/adro1b33/refs/heads/main/openapi/adro1b33-jobs-api-openapi.yml