openapi: 3.1.0
info:
  title: Rescale REST API
  version: '2026.08'
  description: |-
    The Rescale REST API, consolidated. Covers the v2 surface (jobs, runs, files,
    storage devices, budgets, projects, workspace administration) alongside the v3
    surface (folders, pending queue, cluster tasks, billing CSV, force-shutdown, and
    workflows).

    Every operation carries a version badge — `v2` or `v3` — next to its name in the
    left panel. Endpoints from the two versions live side by side under one resource
    section, so you can find an endpoint by what it does rather than which version
    it belongs to.

    ## Authentication

    Requests carry an API token in the `Authorization` header. Create one under
    **Preferences > API**; the platform shows the value once, so copy
    it then. A token inherits the permissions of the user that created it.

    <!-- ReDoc-Inject: <security-definitions> -->

    ## Base URL

    Requests target one of the production hosts below on `/api/v2/` or `/api/v3/`:

    | Region | Host |
    | --- | --- |
    | United States (commercial) | `https://platform.rescale.com` |
    | Europe | `https://eu.rescale.com` |
    | Japan | `https://platform.rescale.jp` |
    | Korea | `https://kr.rescale.com` |
    | ITAR | `https://itar.rescale.com` |
    | FedRAMP | `https://itar.rescale-gov.com` |

    **Keep the trailing slash on v2 paths.** `/api/v2/jobs/` is correct,
    `/api/v2/jobs` is not.

    ## Versioning

    The API is versioned in the URL path. v2 and v3 run side by side; v1 is legacy.
    Breaking changes ship as a new major version. Additive changes (new fields, new
    endpoints) appear in the current version without notice, so parse defensively
    and ignore fields you do not recognize.

  contact:
    name: Rescale Support
    email: support@rescale.com
servers:
  - url: https://platform.rescale.com
    description: United States (commercial)
  - url: https://eu.rescale.com
    description: Europe
  - url: https://platform.rescale.jp
    description: Japan
  - url: https://kr.rescale.com
    description: Korea
  - url: https://itar.rescale.com
    description: ITAR
  - url: https://itar.rescale-gov.com
    description: FedRAMP
security:
  - TokenAuth: []
tags:
  - name: Resources
  - name: Jobs
  - name: Runs
  - name: Files
  - name: Tasks
  - name: Storage Devices
  - name: Prices
  - name: Projects
  - name: Data Access
  - name: Members
  - name: Groups
  - name: Hardware Filters
  - name: Software Restrictions
  - name: Billing
  - name: Folders
  - name: Budgets
  - name: Workflows
  - name: Workflow Sharing
  - name: Workflow Runs
paths:
  /api/v2/coretypes/:
    get:
      tags:
        - Resources
      summary: Coretypes
      operationId: coretypes
      description: |-
        This endpoint lists informations on all coretypes available in the
        Rescale API. The `code` property can be used in subsequent requests to
        submit jobs.
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  count:
                    type: integer
                  previous:
                    type: 'null'
                  results:
                    type: array
                    items:
                      type: object
                      properties:
                        hasSsd:
                          type: boolean
                        code:
                          type: string
                        compute:
                          type: string
                        name:
                          type: string
                        isDeprecated:
                          type: boolean
                        price:
                          type: number
                        remoteVizAllowed:
                          type: boolean
                        storage:
                          type: integer
                        lowPriorityPrice:
                          type: string
                        walltimeRequired:
                          type: boolean
                        displayOrder:
                          type: integer
                        io:
                          type: string
                        memory:
                          type: integer
                        cores:
                          type: array
                          items:
                            type: integer
                        isPrimary:
                          type: boolean
                        processorInfo:
                          type: string
                        storageIo:
                          type: string
                        description:
                          type: string
                  next:
                    type: string
                    format: uri
              example:
                count: 14
                previous: null
                results:
                  - hasSsd: true
                    code: standard-plus
                    compute: '3.00'
                    name: Marble
                    isDeprecated: false
                    price: 0.1
                    remoteVizAllowed: true
                    storage: 40
                    lowPriorityPrice: '0.050'
                    walltimeRequired: false
                    displayOrder: 1
                    io: Standard
                    memory: 3750
                    cores:
                      - 1
                      - 2
                      - 4
                      - 8
                    isPrimary: true
                    processorInfo: Intel Xeon E5-2670 v2 (Ivy Bridge) - single threaded
                    storageIo: 2 GB/s read, 1GB/s write
                    description: Standard
                  - hasSsd: false
                    code: test
                    compute: '1.00'
                    name: HPC Test
                    isDeprecated: false
                    price: 0.25
                    remoteVizAllowed: false
                    storage: 0
                    lowPriorityPrice: '0.100'
                    walltimeRequired: false
                    displayOrder: null
                    io: ''
                    memory: 1500
                    cores:
                      - 1
                    isPrimary: false
                    processorInfo: ''
                    storageIo: ''
                    description: ''
                next: https://platform.rescale.com/api/v2/coretypes?page=2
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Not Found
      x-codeSamples:
        - lang: curl
          label: cURL
          source: >-
            curl -H "Authorization: Token <api-token>"
            https://platform.rescale.com/api/v2/coretypes/
        - lang: python
          label: Python
          source: |-
            import requests

            requests.get(
              'https://platform.rescale.com/api/v2/coretypes/',
              headers={'Authorization': 'Token <api-token>'}
            )
      x-badges:
        - name: v2
          color: '#0b6fbf'
  /api/v2/analyses/:
    get:
      tags:
        - Resources
      summary: Analyses
      operationId: analyses
      description: This endpoint lists all the software available to your user on Rescale.
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  count:
                    type: integer
                  previous:
                    type: 'null'
                  results:
                    type: array
                    items:
                      type: object
                      properties:
                        industries:
                          type: array
                          items:
                            type: object
                            properties:
                              name:
                                type: string
                              icon:
                                type: 'null'
                        code:
                          type: string
                        description:
                          type: string
                        versions:
                          type: array
                          items:
                            type: object
                            properties:
                              eula:
                                type: 'null'
                              allowedCoreTypes:
                                type: array
                                items:
                                  type: string
                              stdCommand:
                                type: string
                              version:
                                type: string
                              mpiCommand:
                                type: string
                              versionCode:
                                type: string
                              smpCommand:
                                type: string
                        supportDesks:
                          type: array
                          items:
                            type: object
                            properties:
                              code:
                                type: string
                              displayName:
                                type: string
                              email:
                                type: string
                        hasRescaleLicense:
                          type: boolean
                        vendorName:
                          type: string
                        pricing:
                          type: string
                        hasShortTermLicense:
                          type: boolean
                        licenseSettings:
                          type: array
                          items:
                            type: object
                            properties:
                              isServer:
                                type: boolean
                              licenseType:
                                type: string
                              helpText:
                                type: string
                              name:
                                type: string
                              label:
                                type: string
                        optimizerType:
                          type: 'null'
                        thumbnail:
                          type: string
                        resources:
                          type: array
                          items:
                            type: object
                            properties:
                              url:
                                type: string
                                format: uri
                              name:
                                type: string
                        name:
                          type: string
                  next:
                    type: string
                    format: uri
              example:
                count: 88
                previous: null
                results:
                  - industries:
                      - name: Aerospace
                        icon: null
                      - name: Automotive
                        icon: null
                    code: abaqus
                    description: >-
                      <p><b>Abaqus FEA</b> is a software suite for finite element analysis and
                      computer-aided engineering.  The Abaqus product suite consists of four core
                      software products.  <i>Abaqus/CAE</i>, <i>Abaqus/CFD</i>,
                      <i>Abaqus/Standard</i>, and <i>Abaqus/Explicit</i>.</p><p><i>Abaqus CAE</i> is
                      a software application used for both pre-processing and visualizing finite
                      element analysis results.  <i>Abaqus/CFD</i> provides computational fluid
                      dynamics capabilities, while <i>Abaqus/Standard</i> and <i>Abaqus/Explicit</i>
                      are finite element analyzers that employ implicit and explicit integration
                      schemes, respectively.</p>
                    versions:
                      - eula: null
                        allowedCoreTypes:
                          - gpu-kepler
                          - gpu-tesla
                          - hi-io
                          - hi-mem
                          - hi-mem-hpc
                          - hpc
                          - hpc-3
                          - hpc-plus
                          - lo-mem
                          - standard
                          - standard-plus
                          - test
                        stdCommand: abaqus job=<job> interactive
                        version: 6.14-1
                        mpiCommand: abaqus job=<job> cpus=<mpi-ranks> mp_mode=mpi interactive
                        versionCode: 6.14.1-pcmpi
                        smpCommand: abaqus job=<job> cpus=<smp-ranks> interactive
                      - eula: null
                        allowedCoreTypes:
                          - gpu-kepler
                          - gpu-tesla
                          - hi-io
                          - hi-mem
                          - hi-mem-hpc
                          - hpc
                          - hpc-3
                          - hpc-plus
                          - lo-mem
                          - standard
                          - standard-plus
                          - test
                        stdCommand: abaqus job=<job> interactive
                        version: 6.13-5
                        mpiCommand: abaqus job=<job> cpus=<mpi-ranks> mp_mode=mpi interactive
                        versionCode: 6.13.5-ibm
                        smpCommand: abaqus job=<job> cpus=<smp-ranks> interactive
                      - eula: null
                        allowedCoreTypes:
                          - gpu-kepler
                          - gpu-tesla
                          - hi-io
                          - hi-mem
                          - hi-mem-hpc
                          - hpc
                          - hpc-3
                          - hpc-plus
                          - lo-mem
                          - standard
                          - standard-plus
                          - test
                        stdCommand: abaqus job=<job> interactive
                        version: 6.12-1
                        mpiCommand: abaqus job=<job> cpus=<mpi-ranks> mp_mode=mpi interactive
                        versionCode: 6.12.0-ibm
                        smpCommand: abaqus job=<job> cpus=<smp-ranks> interactive
                      - eula: null
                        allowedCoreTypes:
                          - gpu-kepler
                          - gpu-tesla
                          - hi-io
                          - hi-mem
                          - hi-mem-hpc
                          - hpc
                          - hpc-3
                          - hpc-plus
                          - lo-mem
                          - standard
                          - standard-plus
                          - test
                        stdCommand: abaqus job=<job> interactive
                        version: 6.12-1-asca
                        mpiCommand: abaqus job=<job> cpus=<mpi-ranks> mp_mode=mpi interactive
                        versionCode: 6.12.0-asca
                        smpCommand: abaqus job=<job> cpus=<smp-ranks> interactive
                    supportDesks:
                      - code: rescale
                        displayName: Rescale Support
                        email: support@example.com
                    hasRescaleLicense: true
                    vendorName: ''
                    pricing: ''
                    hasShortTermLicense: false
                    licenseSettings:
                      - isServer: true
                        licenseType: Flex
                        helpText: The address of the FlexNet license server to use. ([port]@hostname)
                        name: LM_LICENSE_FILE
                        label: License
                      - isServer: true
                        licenseType: Flex
                        helpText: >-
                          The address of the Autodesk Simulation Composite Analysis License Server
                          [port]@hostname
                        name: ADSKFLEX_LICENSE_FILE
                        label: ASCA License Server
                    optimizerType: null
                    thumbnail: /static/img/analyses_images/abaqus.png
                    resources:
                      - url: https://www.rescale.com/resources/software/abaqus/example/
                        name: Basic Example
                    name: Abaqus
                next: https://platform.rescale.com/api/v2/analyses/?page=2
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Not Found
      x-codeSamples:
        - lang: curl
          label: cURL
          source: 'curl -H "Authorization: Token <api-token>" https://platform.rescale.com/api/v2/analyses/'
        - lang: python
          label: Python
          source: |-
            import requests

            requests.get(
              'https://platform.rescale.com/api/v2/analyses/',
              headers={'Authorization': 'Token <api-token>'}
            )
      x-badges:
        - name: v2
          color: '#0b6fbf'
  /api/v2/jobs/:
    get:
      tags:
        - Jobs
      summary: List All Jobs
      operationId: list-all-jobs
      description: |-
        By default this endpoint retrieves all the jobs owned by the authenticated user
        (you). To see shared jobs, use the `f` query parameter (see below).
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  count:
                    type: integer
                  next:
                    type: 'null'
                  previous:
                    type: 'null'
                  results:
                    type: array
                    items:
                      type: object
                      properties:
                        analysisNames:
                          type: array
                          items:
                            type: string
                        clusterStatusDisplay:
                          type: object
                          properties:
                            content:
                              type: string
                            labelClass:
                              type: string
                            useLabel:
                              type: boolean
                        dateInserted:
                          type: string
                          format: date-time
                        id:
                          type: string
                        isVisible:
                          type: boolean
                        jobStatus:
                          type: object
                          properties:
                            content:
                              type: string
                            labelClass:
                              type: string
                            useLabel:
                              type: boolean
                        name:
                          type: string
                        owner:
                          type: string
                        sharedWith:
                          type: array
                          items: {}
                        storage:
                          type: integer
              example:
                count: 3
                next: null
                previous: null
                results:
                  - analysisNames:
                      - OpenFOAM
                    clusterStatusDisplay:
                      content: Stopped
                      labelClass: ''
                      useLabel: false
                    dateInserted: '2015-03-13T23:43:21.223052Z'
                    id: OsKBd
                    isVisible: true
                    jobStatus:
                      content: Completed
                      labelClass: ''
                      useLabel: false
                    name: the FOAM 2
                    owner: mark@rescale.com
                    sharedWith: []
                    storage: 8014908
                  - analysisNames:
                      - OpenFOAM
                    clusterStatusDisplay:
                      content: Stopped
                      labelClass: ''
                      useLabel: false
                    dateInserted: '2015-02-07T01:57:14.332984Z'
                    id: XZFQV
                    isVisible: true
                    jobStatus:
                      content: Completed
                      labelClass: ''
                      useLabel: false
                    name: the FOAM
                    owner: mark@rescale.com
                    sharedWith:
                      - someoneelse@example.com
                    storage: 8014906
                  - analysisNames:
                      - Custom User-Defined MPI Software
                    clusterStatusDisplay:
                      content: ''
                      labelClass: ''
                      useLabel: false
                    dateInserted: '2014-10-09T23:00:36.198759Z'
                    id: kikcT
                    isVisible: true
                    jobStatus:
                      content: ''
                      labelClass: ''
                      useLabel: false
                    name: MPI Hello
                    owner: mark@rescale.com
                    sharedWith: []
                    storage: 0
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Not Found
      parameters:
        - name: job_status
          in: query
          required: false
          schema:
            type: string
          description: Filter out the jobs based on the exact status.
        - name: state
          in: query
          required: false
          schema:
            type: string
          description: Filters out the jobs based on `complete` and other non-complete status.
        - name: f
          in: query
          required: false
          schema:
            type: string
          description: >-
            Filters out the jobs based on the visibility level (where `f=0` is all jobs, `f=1` is
            owned jobs [DEFAULT], and `f=2` is shared jobs).
      x-codeSamples:
        - lang: curl
          label: cURL
          source: |-
            curl -H "Authorization: Token <api-token>" https://platform.rescale.com/api/v2/jobs/

            # filtering
            curl -H "Authorization: token <api-token>" https://platform.rescale.com/api/v2/jobs/ \
            --get --data-urlencode "q=#tag or project:myproject"
        - lang: python
          label: Python
          source: |-
            import requests

            requests.get(
              'https://platform.rescale.com/api/v2/jobs/',
              headers={'Authorization': 'Token <api-token>'}
            )

            requests.get(
              'https://platform.rescale.com/api/v2/jobs/?state=not_completed',
              headers={'Authorization': 'Token <api-token>'}
            )

            # filtering
            from urllib.parse import quote

            requests.get(
              'https://platform.rescale.com/api/v2/jobs/?q=' + quote('#tag or project:myproject'),
              headers={'Authorization': 'Token <api-token>'}
            )
      x-badges:
        - name: v2
          color: '#0b6fbf'
    post:
      tags:
        - Jobs
      summary: Create a Job
      operationId: create-a-job
      description: Creates and saves a job, DOES NOT start job, see submit below.
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  archiveFilters:
                    type: array
                    items: {}
                  billingPriorityValue:
                    type: 'null'
                  caseFile:
                    type: 'null'
                  expectedRuns:
                    type: 'null'
                  id:
                    type: string
                  includeNominalRun:
                    type: boolean
                  isLowPriority:
                    type: boolean
                  isTemplateDryRun:
                    type: boolean
                  jobanalyses:
                    type: array
                    items:
                      type: object
                      properties:
                        analysis:
                          type: object
                          properties:
                            code:
                              type: string
                            name:
                              type: string
                            version:
                              type: string
                            versionName:
                              type: string
                        command:
                          type: string
                        envVars:
                          type: object
                        flags:
                          type: object
                        hardware:
                          type: object
                          properties:
                            coreSummary:
                              type: object
                              properties:
                                memoryPerNode:
                                  type: integer
                                numberOfNodes:
                                  type: number
                                storagePerNode:
                                  type: integer
                            coreClass:
                              type: object
                              properties:
                                acronym:
                                  type: string
                                code:
                                  type: string
                                coreTypeConfigs:
                                  type: array
                                  items:
                                    type: object
                                    properties:
                                      coreType:
                                        type: string
                                      name:
                                        type: string
                                      order:
                                        type: integer
                                      priority:
                                        type: string
                            coresPerSlot:
                              type: integer
                            slots:
                              type: integer
                            walltime:
                              type: 'null'
                        inputFiles:
                          type: array
                          items: {}
                        postProcessScript:
                          type: 'null'
                        postProcessScriptCommand:
                          type: string
                        preProcessScript:
                          type: 'null'
                        preProcessScriptCommand:
                          type: string
                        templateTasks:
                          type: array
                          items: {}
                        useRescaleLicense:
                          type: boolean
                  jobvariables:
                    type: array
                    items: {}
                  monteCarloIterations:
                    type: 'null'
                  name:
                    type: string
                  optimizer:
                    type: 'null'
                  owner:
                    type: string
                  paramFile:
                    type: 'null'
                  remoteVizConfig:
                    type: 'null'
                  resourceFilters:
                    type: array
                    items: {}
              example:
                archiveFilters: []
                billingPriorityValue: null
                caseFile: null
                expectedRuns: null
                id: LeeKa
                includeNominalRun: false
                isLowPriority: false
                isTemplateDryRun: false
                jobanalyses:
                  - analysis:
                      code: user_included
                      name: Custom User-Defined Software
                      version: '0'
                      versionName: ''
                    command: echo "Hello world"
                    envVars: {}
                    flags: {}
                    hardware:
                      coreSummary:
                        memoryPerNode: 3750
                        numberOfNodes: 1
                        storagePerNode: 4000
                      coreClass:
                        acronym: SP
                        code: coretype1-od-coretype2-od
                        coreTypeConfigs:
                          - coreType: coretype-1
                            name: Coretype 1
                            order: 0
                            priority: od
                          - coreType: coretype-2
                            name: Coretype 2
                            order: 1
                            priority: od
                      coresPerSlot: 1
                      slots: 1
                      walltime: null
                    inputFiles: []
                    postProcessScript: null
                    postProcessScriptCommand: ''
                    preProcessScript: null
                    preProcessScriptCommand: ''
                    templateTasks: []
                    useRescaleLicense: false
                jobvariables: []
                monteCarloIterations: null
                name: Jobbo
                optimizer: null
                owner: mark@rescale.com
                paramFile: null
                remoteVizConfig: null
                resourceFilters: []
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Not Found
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                archiveFilters:
                  type: array
                  items: {}
                billingPriorityValue:
                  type: 'null'
                caseFile:
                  type: 'null'
                expectedRuns:
                  type: 'null'
                id:
                  type: string
                includeNominalRun:
                  type: boolean
                isLowPriority:
                  type: boolean
                isTemplateDryRun:
                  type: boolean
                jobanalyses:
                  type: array
                  items:
                    type: object
                    properties:
                      analysis:
                        type: object
                        properties:
                          code:
                            type: string
                          name:
                            type: string
                          version:
                            type: string
                          versionName:
                            type: string
                      command:
                        type: string
                      envVars:
                        type: object
                      flags:
                        type: object
                      hardware:
                        type: object
                        properties:
                          coreSummary:
                            type: object
                            properties:
                              memoryPerNode:
                                type: integer
                              numberOfNodes:
                                type: number
                              storagePerNode:
                                type: integer
                          coreType:
                            type: string
                          coresPerSlot:
                            type: integer
                          slots:
                            type: integer
                          walltime:
                            type: 'null'
                      inputFiles:
                        type: array
                        items: {}
                      postProcessScript:
                        type: 'null'
                      postProcessScriptCommand:
                        type: string
                      preProcessScript:
                        type: 'null'
                      preProcessScriptCommand:
                        type: string
                      templateTasks:
                        type: array
                        items: {}
                      useRescaleLicense:
                        type: boolean
                jobvariables:
                  type: array
                  items: {}
                monteCarloIterations:
                  type: 'null'
                name:
                  type: string
                optimizer:
                  type: 'null'
                owner:
                  type: string
                paramFile:
                  type: 'null'
                remoteVizConfig:
                  type: 'null'
                resourceFilters:
                  type: array
                  items: {}
            example:
              archiveFilters: []
              billingPriorityValue: null
              caseFile: null
              expectedRuns: null
              id: LeeKa
              includeNominalRun: false
              isLowPriority: false
              isTemplateDryRun: false
              jobanalyses:
                - analysis:
                    code: user_included
                    name: Custom User-Defined Software
                    version: '0'
                    versionName: ''
                  command: echo "Hello world"
                  envVars: {}
                  flags: {}
                  hardware:
                    coreSummary:
                      memoryPerNode: 3750
                      numberOfNodes: 1
                      storagePerNode: 4000
                    coreType: standard-plus
                    coresPerSlot: 1
                    slots: 1
                    walltime: null
                  inputFiles: []
                  postProcessScript: null
                  postProcessScriptCommand: ''
                  preProcessScript: null
                  preProcessScriptCommand: ''
                  templateTasks: []
                  useRescaleLicense: false
              jobvariables: []
              monteCarloIterations: null
              name: Jobbo
              optimizer: null
              owner: mark@rescale.com
              paramFile: null
              remoteVizConfig: null
              resourceFilters: []
      x-codeSamples:
        - lang: curl
          label: cURL
          source: >-
            curl -H "Authorization: Token <api-token>" -H "Content-Type: application/json"
            "https://platform.rescale.com/api/v2/jobs/" -d '

            {
                "name": "Example Job",
                "jobanalyses": [
                    {
                        "analysis": {
                            "code": "user_included",
                            "version": "0"
                        },
                        "command": "echo \"Hello world\"",
                        "hardware": {
                            "coreType": "standard-plus",
                            "coresPerSlot": 1
                        }
                    }
                ]
            }

            '
        - lang: python
          label: Python
          source: |-
            import requests

            requests.post(
              'https://platform.rescale.com/api/v2/jobs/',
              headers={'Content-Type': 'application/json',
                       'Authorization': 'Token <api-token>'},
              json={
                  'name': 'Example Job',
                  'jobanalyses': [
                      {
                          'analysis': {
                              'code': 'user_included',
                              'version': '0'
                          },
                          'command': 'echo "Hello world"',
                          'hardware': {
                              'coreType': 'standard-plus',
                              'coresPerSlot': 1
                          }
                      }
                  ]
              }
            )
      x-badges:
        - name: v2
          color: '#0b6fbf'
    delete:
      tags:
        - Jobs
      summary: Delete Multiple Jobs
      operationId: delete-multiple-jobs
      description: >-
        You can delete multiple jobs at once by passing a list of job ids to the body of the HTTP
        request.
      responses:
        '204':
          description: No Content
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Not Found
      x-codeSamples:
        - lang: curl
          label: cURL
          source: >-
            curl -H 'Authorization: Token <api-token>' -H 'Content-Type: application/json'
            https://platform.rescale.com/api/v2/jobs/ -X DELETE
        - lang: python
          label: Python
          source: |-
            import requests

            requests.delete(
                'https://platform.rescale.com/api/v2/jobs/',
                headers={'Authorization': 'Token <api-token>'}
            )
      x-badges:
        - name: v2
          color: '#0b6fbf'
  /api/v2/jobs/{job_id}/:
    get:
      tags:
        - Jobs
      summary: Get a Specific Job
      operationId: get-a-specific-job
      description: Retrieve the details of a saved job.
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Not Found
      parameters:
        - name: job_id
          in: path
          required: true
          schema:
            type: string
      x-codeSamples:
        - lang: curl
          label: cURL
          source: >-
            curl -H "Authorization: Token <api-token>"
            https://platform.rescale.com/api/v2/jobs/aabbcc/
        - lang: python
          label: Python
          source: |-
            import requests

            req = requests.get(
              'https://platform.rescale.com/api/v2/jobs/aabbcc',
              headers={'Authorization': 'Token <api-token>'}
            )
      x-badges:
        - name: v2
          color: '#0b6fbf'
    delete:
      tags:
        - Jobs
      summary: Delete a Job
      operationId: delete-a-job
      description: >-
        _Note that jobs that are currently executing cannot be deleted. You will need to stop the
        job first._
      responses:
        '204':
          description: No Content
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Not Found
      parameters:
        - name: job_id
          in: path
          required: true
          schema:
            type: string
      x-codeSamples:
        - lang: curl
          label: cURL
          source: >-
            curl -H 'Authorization: Token <api-token>' -H 'Content-Type: application/json'
            https://platform.rescale.com/api/v2/jobs/gVWWdb/ -X DELETE
        - lang: python
          label: Python
          source: |-
            import requests

            requests.delete(
                'https://platform.rescale.com/api/v2/jobs/gVWWdb/',
                headers={'Authorization': 'Token <api-token>'}
            )
      x-badges:
        - name: v2
          color: '#0b6fbf'
  /api/v2/jobs/{job_id}/files/:
    get:
      tags:
        - Jobs
      summary: List Job Output Files
      operationId: list-job-output-files
      description: List output files for a given job
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  count:
                    type: integer
                  next:
                    type: 'null'
                  previous:
                    type: 'null'
                  results:
                    type: array
                    items:
                      type: object
                      properties:
                        dateUploaded:
                          type: string
                          format: date-time
                        decryptedSize:
                          type: integer
                        downloadUrl:
                          type: string
                          format: uri
                        encodedEncryptionKey:
                          type: string
                        id:
                          type: string
                        isDeleted:
                          type: boolean
                        isUploaded:
                          type: boolean
                        md5:
                          type: string
                        name:
                          type: string
                        owner:
                          type: string
                        path:
                          type: string
                        relativePath:
                          type: string
                        sharedWith:
                          type: array
                          items: {}
                        typeId:
                          type: integer
                        viewInBrowser:
                          type: boolean
              example:
                count: 1
                next: null
                previous: null
                results:
                  - dateUploaded: '2015-03-13T23:56:37.184619Z'
                    decryptedSize: 1680
                    downloadUrl: https://platform.rescale.com/api/v2/files/xTyjeg/contents/
                    encodedEncryptionKey: VkAWWRkKR9xJIDJTdkVK42O/7+Xo3M4LOaGvP6HjHMA=
                    id: xTyjeg
                    isDeleted: false
                    isUploaded: true
                    md5: 8632d6580e922bd9f8691cc2d6ea3443
                    name: fvSchemes
                    owner: mark@rescale.com
                    path: user/user_KBdkT/output/job_OsKBd/run1/airFoil2D/system/fvSchemes
                    relativePath: airFoil2D/system/fvSchemes
                    sharedWith: []
                    typeId: 5
                    viewInBrowser: true
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Not Found
      parameters:
        - name: job_id
          in: path
          required: true
          schema:
            type: string
      x-codeSamples:
        - lang: curl
          label: cURL
          source: >-
            curl -H "Authorization: Token <api-token>"
            https://platform.rescale.com/api/v2/jobs/aabbcc/files/
      x-badges:
        - name: v2
          color: '#0b6fbf'
  /api/v2/jobs/{job_id}/submit/:
    post:
      tags:
        - Jobs
      summary: Submit a Saved Job
      operationId: submit-a-saved-job
      description: Submits a saved job to run.  No data returned.
      responses:
        '200':
          description: OK
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Not Found
      parameters:
        - name: job_id
          in: path
          required: true
          schema:
            type: string
      x-codeSamples:
        - lang: curl
          label: cURL
          source: >-
            curl -H "Authorization: Token <api-token>"
            https://platform.rescale.com/api/v2/jobs/LeeKa/submit/ -X POST
      x-badges:
        - name: v2
          color: '#0b6fbf'
  /api/v2/jobs/{job_id}:
    put:
      tags:
        - Jobs
      summary: Update a Job
      operationId: update-a-job
      description: '`PATCH https://platform.rescale.com/api/v2/jobs/{job_id}`'
      responses:
        '200':
          description: OK
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Not Found
      parameters:
        - name: job_id
          in: path
          required: true
          schema:
            type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                id:
                  type: string
                isLowPriority:
                  type: boolean
                name:
                  type: string
            example:
              id: LeeKa
              isLowPriority: false
              name: Jobster
      x-codeSamples:
        - lang: curl
          label: cURL
          source: >-
            curl -H "Authorization: Token <api-token>"  -H "Content-Type:application/json"
            "https://platform.rescale.com/api/v2/jobs/LeeKa/" -X PATCH -d '

            {
                "name": "Jobster"
            }

            '
      x-badges:
        - name: v2
          color: '#0b6fbf'
  /api/v2/jobs/{job_id}/stop/:
    post:
      tags:
        - Jobs
      summary: Stop a Job
      operationId: stop-a-job
      description: >-
        Submits a request to stop a running job. Poll the job/cluster status endpoints to monitor
        the exact time when the job is stopped.
      responses:
        '200':
          description: OK
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Not Found
      parameters:
        - name: job_id
          in: path
          required: true
          schema:
            type: string
      x-codeSamples:
        - lang: curl
          label: cURL
          source: >-
            curl -H 'Authorization: Token <api-token>' -H 'Content-Type: application/json'
            https://platform.rescale.com/api/v2/jobs/SsdkT/stop/ -X POST
        - lang: python
          label: Python
          source: |-
            import requests
            requests.post(
              'https://platform.rescale.com/api/v2/jobs/SsdkT/stop/',
              headers={'Content-Type': 'application/json',
                       'Authorization': 'Token <api-token>'}
            )
      x-badges:
        - name: v2
          color: '#0b6fbf'
  /api/v2/jobs/{job_id}/share/:
    post:
      tags:
        - Jobs
      summary: Share a Job
      operationId: share-a-job
      description: >-
        Share a job with another user. If your user is associated with an organization, you will
        only be allowed to share your job with another

        user in your organization or an ISV support desk.
      responses:
        '200':
          description: OK
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Not Found
      parameters:
        - name: job_id
          in: path
          required: true
          schema:
            type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                recipient:
                  type: string
                supportDesk:
                  type: 'null'
            example:
              recipient: support@rescale.com
              supportDesk: null
      x-codeSamples:
        - lang: curl
          label: cURL
          source: >-
            curl -H "Authorization: Token <api-token>" -H "Content-Type: application/json"
            "https://platform.rescale.com/api/v2/jobs/LeeKa/share/" -X POST -d '

            {
                "email": "support@rescale.com",
                "message": "This job is not converging as quickly as I was expecting"
            }

            '
        - lang: python
          label: Python
          source: |-
            import requests

            requests.post(
              'https://platform.rescale.com/api/v2/jobs/LeeKa/share/',
              headers={'Content-Type': 'application/json',
                       'Authorization': 'Token <api-token>'},
              json={
                "email": "support@rescale.com",
                "message": "This job is not converging as quickly as I was expecting"
              }
            )
      x-badges:
        - name: v2
          color: '#0b6fbf'
  /api/v2/jobs/{job_id}/statuses/:
    get:
      tags:
        - Jobs
      summary: List Job status history
      operationId: list-job-status-history
      description: |-
        Property | Type  | Description
        -------- | ------|---------------
        | status | String | A job status code |
        | statusDate | Date | ISO8601 encoded date of when the job status changed |
        | statusReason | String | (Optional) Extra context for the status. Eg, a failure reason |
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  count:
                    type: integer
                  previous:
                    type: 'null'
                  results:
                    type: array
                    items:
                      type: object
                      properties:
                        status:
                          type: string
                        statusDate:
                          type: string
                          format: date-time
                        statusReason:
                          type: string
                  next:
                    type: 'null'
              example:
                count: 6
                previous: null
                results:
                  - status: Completed
                    statusDate: '2016-04-21T17:24:34.898495Z'
                    statusReason: Completed successfully
                  - status: Executing
                    statusDate: '2016-04-21T17:15:59.012000Z'
                    statusReason: null
                  - status: Validated
                    statusDate: '2016-04-21T17:07:18.088000Z'
                    statusReason: null
                  - status: Started
                    statusDate: '2016-04-21T17:07:15.153000Z'
                    statusReason: null
                  - status: Queued
                    statusDate: '2016-04-21T17:07:04.761050Z'
                    statusReason: null
                  - status: Pending
                    statusDate: '2016-04-21T17:06:32.086507Z'
                    statusReason: null
                next: null
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Not Found
      parameters:
        - name: job_id
          in: path
          required: true
          schema:
            type: string
      x-codeSamples:
        - lang: curl
          label: cURL
          source: >-
            curl -H 'Authorization: Token <api-token>' -H 'Content-Type: application/json'
            https://platform.rescale.com/api/v2/jobs/cHDtgb/statuses/
        - lang: python
          label: Python
          source: |-
            import requests

            requests.get(
              'https://platform.rescale.com/api/v2/jobs/cHDtgb/statuses/',
              headers={'Authorization': 'Token <api-token>'}
            )
      x-badges:
        - name: v2
          color: '#0b6fbf'
  /api/v2/jobs/{job_id}/cluster_statuses/:
    get:
      tags:
        - Jobs
      summary: List Cluster Status History for a Job
      operationId: list-cluster-status-history-for-a-job
      description: |-
        Property | Type  | Description
        -------- | ------|---------------
        | status | String | A cluster status code |
        | statusDate | Date | ISO8601 encoded date of when the cluster status changed |
        | statusReason | String | (Optional) Extra context for the status. Eg, a failure reason |
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  count:
                    type: integer
                  previous:
                    type: 'null'
                  results:
                    type: array
                    items:
                      type: object
                      properties:
                        status:
                          type: string
                        statusDate:
                          type: string
                          format: date-time
                        statusReason:
                          type: 'null'
              example:
                count: 6
                previous: null
                results:
                  - status: Stopped
                    statusDate: '2016-04-21T17:25:20.717000Z'
                    statusReason: null
                  - status: Stopping
                    statusDate: '2016-04-21T17:24:38.158000Z'
                    statusReason: null
                  - status: Stop Requested
                    statusDate: '2016-04-21T17:24:35.260585Z'
                    statusReason: null
                  - status: Started
                    statusDate: '2016-04-21T17:15:47.790000Z'
                    statusReason: null
                  - status: Starting
                    statusDate: '2016-04-21T17:07:25.127000Z'
                    statusReason: null
                  - status: Not Started
                    statusDate: '2016-04-21T17:07:04.719293Z'
                    statusReason: null
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Not Found
      parameters:
        - name: job_id
          in: path
          required: true
          schema:
            type: string
      x-codeSamples:
        - lang: curl
          label: cURL
          source: >-
            curl -H 'Authorization: Token <api-token>' -H 'Content-Type: application/json'
            https://platform.rescale.com/api/v2/jobs/cHDtgb/cluster_statuses/
        - lang: python
          label: Python
          source: |-
            import requests

            requests.get(
              'https://platform.rescale.com/api/v2/jobs/cHDtgb/cluster_statuses/',
              headers={'Authorization': 'Token <api-token>'}
            )
      x-badges:
        - name: v2
          color: '#0b6fbf'
  /api/v2/jobs/{job_id}/extendedlogs/:
    get:
      tags:
        - Jobs
      summary: List Job extended logs
      operationId: list-job-extended-logs
      description: >-
        Gets extended logs for a job. Extended logs are the combination of the user logs seen on a
        job and the statuses of a job.

        The job statuses are reformatted to match the log format and sorted by date along with the
        logs.
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  properties:
                    displayTimestamp:
                      type: string
                      format: date-time
                    id:
                      type: string
                    level:
                      type: string
                    message:
                      type: string
                    source:
                      type: string
                    timestamp:
                      type: integer
              example:
                - displayTimestamp: '2023-04-28T04:53:05.100317+00:00'
                  id: hxzXS
                  level: status
                  message: Pending
                  source: scheduler
                  timestamp: 1682657585100
                - displayTimestamp: '2023-04-28T04:53:25.618000Z'
                  id: bLCOdb
                  level: INFO
                  message: Verifying job submission preconditions.
                  source: scheduler
                  timestamp: 1682657605618
                - displayTimestamp: '2023-04-28T04:53:26.877000Z'
                  id: GXJbT
                  level: INFO
                  message: Preconditions have been satisfied.
                  source: scheduler
                  timestamp: 1682657606877
                - displayTimestamp: '2023-04-28T04:53:26.943829+00:00'
                  id: wZsKdb
                  level: status
                  message: Waiting for Queue
                  source: scheduler
                  timestamp: 1682657606943
                - displayTimestamp: '2023-04-28T04:53:27.105712+00:00'
                  id: yXJbT
                  level: status
                  message: Queued
                  source: scheduler
                  timestamp: 1682657607105
                - displayTimestamp: '2023-04-28T04:54:05.435000+00:00'
                  id: NzCOdb
                  level: status
                  message: Started
                  source: scheduler
                  timestamp: 1682657645435
                - displayTimestamp: '2023-04-28T04:54:08.188000+00:00'
                  id: LhKbT
                  level: status
                  message: Validated
                  source: scheduler
                  timestamp: 1682657648188
                - displayTimestamp: '2023-04-28T04:54:08.535000Z'
                  id: VzCOdb
                  level: INFO
                  message: Starting server(s)
                  source: Basalt, On Demand Priority
                  timestamp: 1682657648535
                - displayTimestamp: '2023-04-28T05:24:27.368000Z'
                  id: ThKbT
                  level: INFO
                  message: Server(s) Started
                  source: Basalt, On Demand Priority
                  timestamp: 1682659467368
                - displayTimestamp: '2023-04-28T05:24:32.034000+00:00'
                  id: ZKCOdb
                  level: status
                  message: Executing
                  source: scheduler
                  timestamp: 1682659472034
                - displayTimestamp: '2023-04-28T05:24:37.035000Z'
                  id: hLCOdb
                  level: DEBUG
                  message: Running workflow...
                  source: Basalt, On Demand Priority
                  timestamp: 1682659477035
                - displayTimestamp: '2023-04-28T05:25:58.851000Z'
                  id: JXJbT
                  level: INFO
                  message: Saving files...
                  source: Basalt, On Demand Priority
                  timestamp: 1682659558851
                - displayTimestamp: '2023-04-28T05:26:02.260000Z'
                  id: XzCOdb
                  level: INFO
                  message: Finished saving files.
                  source: Basalt, On Demand Priority
                  timestamp: 1682659562260
                - displayTimestamp: '2023-04-28T05:26:05.072000Z'
                  id: VhKbT
                  level: INFO
                  message: Job Finished
                  source: unknown
                  timestamp: 1682659565072
                - displayTimestamp: '2023-04-28T05:26:05.080218+00:00'
                  id: AXJbT
                  level: status
                  message: Completed
                  source: scheduler
                  timestamp: 1682659565080
                - displayTimestamp: '2023-04-28T05:26:06.422000Z'
                  id: fQTMk
                  level: INFO
                  message: Shutting down cluster ...
                  source: Basalt, On Demand Priority
                  timestamp: 1682659566422
                - displayTimestamp: '2023-04-28T05:27:08.513000Z'
                  id: Gcaaa
                  level: INFO
                  message: Cluster stopped
                  source: Basalt, On Demand Priority
                  timestamp: 1682659628513
                - displayTimestamp: '2023-06-26T19:03:40.163000Z'
                  id: zpdRk
                  level: INFO
                  message: CLUSTER UPTIME SUMMARY
                  source: platform
                  timestamp: 1687806220163
                - displayTimestamp: '2023-06-26T19:03:40.181000Z'
                  id: xXjea
                  level: INFO
                  message: (uptime metered by computing resource start/end time per node)
                  source: platform
                  timestamp: 1687806220181
                - displayTimestamp: '2023-06-26T19:03:40.243000Z'
                  id: MzdRk
                  level: INFO
                  message: 'Compute node 1 dev-wquinn-cluster0199-cs-compute0-0 uptime: 3.7667 core-hours'
                  source: platform
                  timestamp: 1687806220243
                - displayTimestamp: '2023-06-26T19:03:40.249000Z'
                  id: nNjea
                  level: INFO
                  message: '------------------------------------------------------------'
                  source: platform
                  timestamp: 1687806220249
                - displayTimestamp: '2023-06-26T19:03:40.254000Z'
                  id: BpdRk
                  level: INFO
                  message: 'Total Billable Uptime:                     3.7667 core-hours'
                  source: platform
                  timestamp: 1687806220254
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Not Found
      parameters:
        - name: job_id
          in: path
          required: true
          schema:
            type: string
      x-codeSamples:
        - lang: curl
          label: cURL
          source: >-
            curl -H 'Authorization: Token <api-token>' -H 'Content-Type: application/json'
            https://platform.rescale.com/api/v2/jobs/cHDtgb/extendedlogs/
        - lang: python
          label: Python
          source: |-
            import requests

            requests.get(
              'https://platform.rescale.com/api/v2/jobs/cHDtgb/extendedlogs/',
              headers={'Authorization': 'Token <api-token>'}
            )
      x-badges:
        - name: v2
          color: '#0b6fbf'
  /api/v2/organizations/{company_code}/workspaces/{workspace_id}/custom-fields/:
    get:
      tags:
        - Jobs
      summary: List Custom Fields in Your Workspace
      operationId: list-custom-fields-in-your-workspace
      description: >-
        Get the current list of custom fields that apply to compute and workstation jobs in your
        workspace:
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  fields:
                    type: object
                    properties:
                      compute:
                        type: object
                        properties:
                          Context:
                            type: array
                            items:
                              type: object
                              properties:
                                name:
                                  type: string
                                valueType:
                                  type: string
                                enumOptions:
                                  type: array
                                  items: {}
                                placeholder:
                                  type: string
                                helpText:
                                  type: string
                                isMultiple:
                                  type: boolean
                                isRequired:
                                  type: boolean
                                allowOther:
                                  type: boolean
                                section:
                                  type: string
                                originatingWorkspace:
                                  type: string
                          Findings:
                            type: array
                            items:
                              type: object
                              properties:
                                name:
                                  type: string
                                valueType:
                                  type: string
                                enumOptions:
                                  type: array
                                  items:
                                    type: string
                                placeholder:
                                  type: string
                                helpText:
                                  type: string
                                isMultiple:
                                  type: boolean
                                isRequired:
                                  type: boolean
                                allowOther:
                                  type: boolean
                                section:
                                  type: string
                                originatingWorkspace:
                                  type: string
                          Inputs:
                            type: array
                            items:
                              type: object
                              properties:
                                name:
                                  type: string
                                valueType:
                                  type: string
                                enumOptions:
                                  type: array
                                  items: {}
                                placeholder:
                                  type: string
                                helpText:
                                  type: string
                                isMultiple:
                                  type: boolean
                                isRequired:
                                  type: boolean
                                allowOther:
                                  type: boolean
                                section:
                                  type: string
                                originatingWorkspace:
                                  type: string
                      workstation:
                        type: object
                  isEnabled:
                    type: boolean
              example:
                fields:
                  compute:
                    Context:
                      - name: Study
                        valueType: text
                        enumOptions: []
                        placeholder: Study Name
                        helpText: ''
                        isMultiple: false
                        isRequired: true
                        allowOther: false
                        section: Context
                        originatingWorkspace: 00-066633676
                      - name: Study Requestor
                        valueType: user
                        enumOptions: []
                        placeholder: ''
                        helpText: ''
                        isMultiple: false
                        isRequired: true
                        allowOther: false
                        section: Context
                        originatingWorkspace: 00-066633676
                      - name: Study Expected Completion Date
                        valueType: date
                        enumOptions: []
                        placeholder: ''
                        helpText: ''
                        isMultiple: false
                        isRequired: true
                        allowOther: false
                        section: Context
                        originatingWorkspace: 00-066633676
                      - name: Development Status
                        valueType: select
                        enumOptions:
                          - Exploration
                          - Development
                          - Maintenance
                        placeholder: ''
                        helpText: ''
                        isMultiple: false
                        isRequired: true
                        allowOther: false
                        section: Context
                        originatingWorkspace: 00-066633676
                      - name: Objective
                        valueType: text
                        enumOptions: []
                        placeholder: ''
                        helpText: What is the purpose running this simulation?
                        isMultiple: false
                        isRequired: true
                        allowOther: false
                        section: Context
                        originatingWorkspace: 00-066633676
                    Findings:
                      - name: Simulation Outcome
                        valueType: select
                        enumOptions:
                          - Successful
                          - Failed
                        placeholder: Outcome
                        helpText: ''
                        isMultiple: false
                        isRequired: false
                        allowOther: false
                        section: Findings
                        originatingWorkspace: 00-066633676
                      - name: Coefficient of Drag
                        valueType: number
                        enumOptions: []
                        placeholder: ''
                        helpText: ''
                        isMultiple: false
                        isRequired: false
                        allowOther: false
                        section: Findings
                        originatingWorkspace: 00-066633676
                      - name: Report
                        valueType: file
                        enumOptions: []
                        placeholder: ''
                        helpText: Upload the study report as part of this simulation.
                        isMultiple: false
                        isRequired: false
                        allowOther: false
                        section: Findings
                        originatingWorkspace: 00-066633676
                      - name: Convergence Plot
                        valueType: file
                        enumOptions: []
                        placeholder: ''
                        helpText: Include a image of the convergence plot.
                        isMultiple: false
                        isRequired: false
                        allowOther: false
                        section: Findings
                        originatingWorkspace: 00-066633676
                    Inputs:
                      - name: Part Number
                        valueType: text
                        enumOptions: []
                        placeholder: SF-12-02415
                        helpText: Enter the CAD part number for this simulation.
                        isMultiple: false
                        isRequired: true
                        allowOther: false
                        section: Inputs
                        originatingWorkspace: 00-066633676
                      - name: Profile Variation
                        valueType: text
                        enumOptions: []
                        placeholder: ''
                        helpText: ''
                        isMultiple: false
                        isRequired: false
                        allowOther: false
                        section: Inputs
                        originatingWorkspace: 00-066633676
                      - name: Diameter (in)
                        valueType: number
                        enumOptions: []
                        placeholder: ''
                        helpText: ''
                        isMultiple: false
                        isRequired: false
                        allowOther: false
                        section: Inputs
                        originatingWorkspace: 00-066633676
                  workstation: {}
                isEnabled: true
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Not Found
      parameters:
        - name: company_code
          in: path
          required: true
          schema:
            type: string
        - name: workspace_id
          in: path
          required: true
          schema:
            type: string
      x-codeSamples:
        - lang: curl
          label: cURL
          source: >-
            curl -H 'Authorization: Token <api-token>'
            https://platform.rescale.com/api/v2/organizations/rescale/workspaces/03-066880176/custom-fields/
        - lang: python
          label: Python
          source: |-
            import requests

            requests.get(
              'https://platform.rescale.com/api/v2/organizations/rescale/workspaces/03-066880176/custom-fields/',
              headers={'Authorization': 'Token <api-token>'}
            )
      x-badges:
        - name: v2
          color: '#0b6fbf'
  /api/v2/jobs/{job_id}/custom-fields/assigned/:
    post:
      tags:
        - Jobs
      summary: Assign Custom Fields to a Job
      operationId: assign-custom-fields-to-a-job
      description: >-
        Custom fields can be assigned to a single job, allowing users to create additional custom
        fields specific to that job. The shape of the request is documented

        below in the request properties section
      responses:
        '200':
          description: OK
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Not Found
      parameters:
        - name: job_id
          in: path
          required: true
          schema:
            type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                fields:
                  type: object
                  properties:
                    Context:
                      type: array
                      items:
                        type: object
                        properties:
                          name:
                            type: string
                          valueType:
                            type: string
                          enumOptions:
                            type: array
                            items: {}
                          placeholder:
                            type: string
                          helpText:
                            type: string
                          isMultiple:
                            type: boolean
                          isRequired:
                            type: boolean
                          allowOther:
                            type: boolean
                          section:
                            type: string
                          originatingWorkspace:
                            type: string
                    Findings:
                      type: array
                      items:
                        type: object
                        properties:
                          name:
                            type: string
                          valueType:
                            type: string
                          enumOptions:
                            type: array
                            items:
                              type: string
                          placeholder:
                            type: string
                          helpText:
                            type: string
                          isMultiple:
                            type: boolean
                          isRequired:
                            type: boolean
                          allowOther:
                            type: boolean
                          section:
                            type: string
                          originatingWorkspace:
                            type: string
                    Inputs:
                      type: array
                      items:
                        type: object
                        properties:
                          name:
                            type: string
                          valueType:
                            type: string
                          enumOptions:
                            type: array
                            items: {}
                          placeholder:
                            type: string
                          helpText:
                            type: string
                          isMultiple:
                            type: boolean
                          isRequired:
                            type: boolean
                          allowOther:
                            type: boolean
                          section:
                            type: string
                          originatingWorkspace:
                            type: string
            example:
              fields:
                Context:
                  - name: Study
                    valueType: text
                    enumOptions: []
                    placeholder: Study Name
                    helpText: ''
                    isMultiple: false
                    isRequired: false
                    allowOther: false
                    section: Context
                    originatingWorkspace: 00-066633676
                  - name: Deadline
                    valueType: date
                    enumOptions: []
                    placeholder: Date
                    helpText: Enter the date you expect the study to be completed.
                    isMultiple: false
                    isRequired: false
                    allowOther: false
                    section: Context
                    originatingWorkspace: 00-066633676
                  - name: Development Status
                    valueType: select
                    enumOptions:
                      - Exploration
                      - Development
                      - Maintenance
                    placeholder: ''
                    helpText: ''
                    isMultiple: false
                    isRequired: false
                    allowOther: false
                    section: Context
                    originatingWorkspace: 00-066633676
                  - name: CAD Part Number
                    valueType: text
                    enumOptions: []
                    placeholder: ''
                    helpText: ''
                    isMultiple: false
                    isRequired: false
                    allowOther: false
                    section: Context
                    originatingWorkspace: 00-066633676
                  - name: Cost Center
                    valueType: text
                    enumOptions: []
                    placeholder: ''
                    helpText: ''
                    isMultiple: false
                    isRequired: false
                    allowOther: false
                    section: Context
                    originatingWorkspace: 00-066633676
                Findings:
                  - name: Simulation Outcome
                    valueType: select
                    enumOptions:
                      - Successful
                      - Failure
                    placeholder: ''
                    helpText: ''
                    isMultiple: false
                    isRequired: false
                    allowOther: false
                    section: Findings
                    originatingWorkspace: 00-066633676
                  - name: Recommendations
                    valueType: text
                    enumOptions: []
                    placeholder: ''
                    helpText: Learnings from this job.
                    isMultiple: false
                    isRequired: false
                    allowOther: false
                    section: Findings
                    originatingWorkspace: 00-066633676
                Inputs:
                  - name: Design Version
                    valueType: text
                    enumOptions: []
                    placeholder: ''
                    helpText: ''
                    isMultiple: false
                    isRequired: false
                    allowOther: false
                    section: Inputs
                    originatingWorkspace: 00-066633676
                  - name: Load Case
                    valueType: text
                    enumOptions: []
                    placeholder: ''
                    helpText: ''
                    isMultiple: false
                    isRequired: false
                    allowOther: false
                    section: Inputs
                    originatingWorkspace: 00-066633676
                  - name: Material Property
                    valueType: select
                    enumOptions:
                      - Aluminum
                      - Titanium
                      - Tungsten
                    placeholder: ''
                    helpText: ''
                    isMultiple: true
                    isRequired: false
                    allowOther: true
                    section: Inputs
                    originatingWorkspace: 00-066633676
                  - name: Material Validation
                    valueType: select
                    enumOptions:
                      - Plasticity Specified (check if yes)
                      - Johson-cook model used (check if yes)
                      - Yield criteria specified (check if yes)
                    placeholder: ''
                    helpText: ''
                    isMultiple: true
                    isRequired: false
                    allowOther: true
                    section: Inputs
                    originatingWorkspace: 00-066633676
                  - name: Crank Length
                    valueType: number
                    enumOptions: []
                    placeholder: ''
                    helpText: ''
                    isMultiple: false
                    isRequired: false
                    allowOther: false
                    section: Inputs
                    originatingWorkspace: 00-066633676
      x-codeSamples:
        - lang: curl
          label: cURL
          source: >-
            curl -H 'Authorization: Token <api-token>' -H 'Content-Type: application/json'
            https://platform.rescale.com/api/v2/jobs/cHDtgb/custom-fields/assigned/ -d '{
                "fields": { ... }
            }'
        - lang: python
          label: Python
          source: |-
            import requests

            requests.post(
              'https://platform.rescale.com/api/v2/jobs/cHDtgb/custom-fields/assigned/',
              headers={'Authorization': 'Token <api-token>'},
              json={
                  "fields": { ... },
              }
            )
      x-badges:
        - name: v2
          color: '#0b6fbf'
  /api/v2/jobs/{job_id}/custom-fields/:
    get:
      tags:
        - Jobs
      summary: List Custom Fields on a Job
      operationId: list-custom-fields-on-a-job
      description: >-
        Custom fields that are defined on a job are included as part of the response to the "Get a
        Specific Job" endpoint above.
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  job field (string, set):
                    type: object
                    properties:
                      meta:
                        type: object
                        properties:
                          name:
                            type: string
                          valueType:
                            type: string
                          enumOptions:
                            type: array
                            items: {}
                          placeholder:
                            type: string
                          helpText:
                            type: string
                          isMultiple:
                            type: boolean
                          isRequired:
                            type: boolean
                          allowOther:
                            type: boolean
                          section:
                            type: string
                          originatingWorkspace:
                            type: 'null'
                      user:
                        type: string
                      value:
                        type: string
                  workspace (numeric array, set):
                    type: object
                    properties:
                      meta:
                        type: object
                        properties:
                          name:
                            type: string
                          valueType:
                            type: string
                          enumOptions:
                            type: array
                            items: {}
                          placeholder:
                            type: string
                          helpText:
                            type: string
                          isMultiple:
                            type: boolean
                          isRequired:
                            type: boolean
                          allowOther:
                            type: boolean
                          section:
                            type: string
                          originatingWorkspace:
                            type: string
                      user:
                        type: string
                      value:
                        type: array
                        items:
                          type: integer
                  job field (string, unset):
                    type: object
                    properties:
                      meta:
                        type: object
                        properties:
                          name:
                            type: string
                          valueType:
                            type: string
                          enumOptions:
                            type: array
                            items: {}
                          placeholder:
                            type: string
                          helpText:
                            type: string
                          isMultiple:
                            type: boolean
                          isRequired:
                            type: boolean
                          allowOther:
                            type: boolean
                          section:
                            type: string
                          originatingWorkspace:
                            type: 'null'
                      user:
                        type: 'null'
                      value:
                        type: 'null'
                  workspace (numeric array, unset):
                    type: object
                    properties:
                      meta:
                        type: object
                        properties:
                          name:
                            type: string
                          valueType:
                            type: string
                          enumOptions:
                            type: array
                            items: {}
                          placeholder:
                            type: string
                          helpText:
                            type: string
                          isMultiple:
                            type: boolean
                          isRequired:
                            type: boolean
                          allowOther:
                            type: boolean
                          section:
                            type: string
                          originatingWorkspace:
                            type: string
                      user:
                        type: 'null'
                      value:
                        type: 'null'
              example:
                job field (string, set):
                  meta:
                    name: job field (set)
                    valueType: text
                    enumOptions: []
                    placeholder: ''
                    helpText: ''
                    isMultiple: false
                    isRequired: false
                    allowOther: false
                    section: Context
                    originatingWorkspace: null
                  user: example@rescale.com
                  value: job field value
                workspace (numeric array, set):
                  meta:
                    name: workspace
                    valueType: number
                    enumOptions: []
                    placeholder: ''
                    helpText: ''
                    isMultiple: true
                    isRequired: false
                    allowOther: false
                    section: Context
                    originatingWorkspace: 99-046880176
                  user: example@rescale.com
                  value:
                    - 42
                job field (string, unset):
                  meta:
                    name: job field (unset)
                    valueType: text
                    enumOptions: []
                    placeholder: ''
                    helpText: ''
                    isMultiple: false
                    isRequired: false
                    allowOther: false
                    section: Context
                    originatingWorkspace: null
                  user: null
                  value: null
                workspace (numeric array, unset):
                  meta:
                    name: workspace2
                    valueType: number
                    enumOptions: []
                    placeholder: ''
                    helpText: ''
                    isMultiple: true
                    isRequired: false
                    allowOther: false
                    section: Context
                    originatingWorkspace: 99-046880176
                  user: null
                  value: null
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Not Found
      parameters:
        - name: job_id
          in: path
          required: true
          schema:
            type: string
      x-codeSamples:
        - lang: curl
          label: cURL
          source: >-
            curl -H 'Authorization: Token <api-token>'
            https://platform.rescale.com/api/v2/jobs/cHDtgb/custom-fields/
        - lang: python
          label: Python
          source: |-
            import requests

            requests.get(
              'https://platform.rescale.com/api/v2/jobs/cHDtgb/custom-fields/',
              headers={'Authorization': 'Token <api-token>'}
            )
      x-badges:
        - name: v2
          color: '#0b6fbf'
    post:
      tags:
        - Jobs
      summary: Submit Custom Fields on a Job
      operationId: submit-custom-fields-on-a-job
      description: >-
        Attach values for custom fields on a saved job. Fields that are required must be submitted
        before the job is run and cannot be changed after. Optional fields may be added or amended
        at any time.
      responses:
        '200':
          description: OK
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Not Found
      parameters:
        - name: job_id
          in: path
          required: true
          schema:
            type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                Study:
                  type: object
                  properties:
                    meta:
                      type: object
                      properties:
                        name:
                          type: string
                        valueType:
                          type: string
                        enumOptions:
                          type: array
                          items: {}
                        placeholder:
                          type: string
                        helpText:
                          type: string
                        isMultiple:
                          type: boolean
                        isRequired:
                          type: boolean
                        allowOther:
                          type: boolean
                        section:
                          type: string
                        originatingWorkspace:
                          type: 'null'
                    user:
                      type: string
                    value:
                      type: string
            example:
              Study:
                meta:
                  name: Study
                  valueType: text
                  enumOptions: []
                  placeholder: ''
                  helpText: ''
                  isMultiple: false
                  isRequired: false
                  allowOther: false
                  section: Context
                  originatingWorkspace: null
                user: example@rescale.com
                value: my study
      x-codeSamples:
        - lang: curl
          label: cURL
          source: >-
            curl -H "Authorization: Token <api-token>" -H "Content-Type: application/json"
            "https://platform.rescale.com/api/v2/jobs/{job_id}/custom-fields/" -d '{
                "Study": "my study"
            }'
        - lang: python
          label: Python
          source: |-
            import requests

            requests.post(
              'https://platform.rescale.com/api/v2/jobs/{job_id}/custom-fields/',
              headers={'Content-Type': 'application/json', 'Authorization': 'Token <api-token>'},
              json={
                  'Study': 'my study',
              }
            )
      x-badges:
        - name: v2
          color: '#0b6fbf'
  /api/v2/jobs/{job_id}/tags/:
    post:
      tags:
        - Jobs
      summary: Add a Tag to a Job
      operationId: add-a-tag-to-a-job
      description: Add a new or existing tag to a job.
      responses:
        '200':
          description: OK
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Not Found
      parameters:
        - name: job_id
          in: path
          required: true
          schema:
            type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                name:
                  type: string
                normalizedName:
                  type: string
            example:
              name: new - tag _ 1
              normalizedName: newtag1
      x-codeSamples:
        - lang: curl
          label: cURL
          source: >-
            curl -H "Authorization: Token <api-token>" -H "Content-Type: application/json"
            "https://platform.rescale.com/api/v2/jobs/{job_id}/tags/" -X POST -d '

            {
                "name": "new - tag _ 1"
            }

            '
        - lang: python
          label: Python
          source: |-
            import requests

            requests.post(
              'https://platform.rescale.com/api/v2/jobs/{job_id}/tags/',
              headers={'Content-Type': 'application/json',
                       'Authorization': 'Token <api-token>'},
              json={
                "name": "new - tag _ 1"
              }
            )
      x-badges:
        - name: v2
          color: '#0b6fbf'
    get:
      tags:
        - Jobs
      summary: Get a list of Tags on a Job
      operationId: get-a-list-of-tags-on-a-job
      description: >-
        Property | Type  | Description

        -------- | ------|---------------

        | name | String | The displayed name of the tag |

        | normalizedName | String | The name of the tag with spaces, dashes, and underscores removed
        |
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  properties:
                    name:
                      type: string
                    normalizedName:
                      type: string
              example:
                - name: new - tag _ 1
                  normalizedName: newtag1
                - name: new - tag _ 2
                  normalizedName: newtag2
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Not Found
      parameters:
        - name: job_id
          in: path
          required: true
          schema:
            type: string
      x-codeSamples:
        - lang: curl
          label: cURL
          source: >-
            curl -H "Authorization: Token <api-token>" -H "Content-Type: application/json"
            "https://platform.rescale.com/api/v2/jobs/{job_id}/tags/" -X GET
        - lang: python
          label: Python
          source: |-
            import requests

            requests.get(
              'https://platform.rescale.com/api/v2/jobs/{job_id}/tags/',
              headers={'Content-Type': 'application/json',
                       'Authorization': 'Token <api-token>'}
            )
      x-badges:
        - name: v2
          color: '#0b6fbf'
    delete:
      tags:
        - Jobs
      summary: Remove a Tag from a Job
      operationId: remove-a-tag-from-a-job
      description: ''
      responses:
        '204':
          description: No Content
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Not Found
      parameters:
        - name: job_id
          in: path
          required: true
          schema:
            type: string
      x-codeSamples:
        - lang: curl
          label: cURL
          source: >-
            curl -H "Authorization: Token <api-token>" -H "Content-Type: application/json"
            "https://platform.rescale.com/api/v2/jobs/{job_id}/tags/" -X DELETE -d '

            {
                "name": "new - tag _ 1"
            }

            '
        - lang: python
          label: Python
          source: |-
            import requests

            requests.delete(
              'https://platform.rescale.com/api/v2/jobs/{job_id}/tags/',
              headers={'Content-Type': 'application/json',
                       'Authorization': 'Token <api-token>'},
              json={
                "name": "new - tag _ 1"
              }
            )
      x-badges:
        - name: v2
          color: '#0b6fbf'
  /api/v2/jobs/{job_id}/instances/:
    get:
      tags:
        - Jobs
      summary: List Job Instances
      operationId: list-job-instances
      description: >-
        List VM instances for a given job. Note that some of the fields are for internal use, and
        thus undocumented.
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  count:
                    type: integer
                  next:
                    type: 'null'
                  previous:
                    type: 'null'
                  results:
                    type: array
                    items:
                      type: object
                      properties:
                        id:
                          type: string
                        clusterId:
                          type: string
                        instanceGroup:
                          type: string
                        role:
                          type: string
                        publicIp:
                          type: string
                        privateIp:
                          type: string
                        privateHostname:
                          type: string
                        publicHostname:
                          type: string
                        dateStarted:
                          type: string
                          format: date-time
                        supportedServices:
                          type: array
                          items:
                            type: string
                        username:
                          type: string
                        isBehindNat:
                          type: boolean
                        sshPort:
                          type: integer
                        tenancy:
                          type: string
              example:
                count: 1
                next: null
                previous: null
                results:
                  - id: PbKoeg
                    clusterId: bUMOb
                    instanceGroup: compute0
                    role: CUSTOM
                    publicIp: 34.227.67.116
                    privateIp: 10.25.14.159
                    privateHostname: ip-10-25-14-159
                    publicHostname: ec2-34-227-67-116.compute-1.amazonaws.com
                    dateStarted: '2023-12-07T17:47:25Z'
                    supportedServices:
                      - ssh
                    username: uprod_OvTpU
                    isBehindNat: false
                    sshPort: 22
                    tenancy: default
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Not Found
      parameters:
        - name: job_id
          in: path
          required: true
          schema:
            type: string
      x-codeSamples:
        - lang: curl
          label: cURL
          source: >-
            curl -H "Authorization: Token <api-token>" -H "Content-Type: application/json"
            "https://platform.rescale.com/api/v2/jobs/{job_id}/instances/"
        - lang: python
          label: Python
          source: |-
            import requests

            requests.get(
              'https://platform.rescale.com/api/v2/jobs/{job_id}/instances/',
              headers={'Content-Type': 'application/json', 'Authorization': 'Token <api-token>'}
            )
      x-badges:
        - name: v2
          color: '#0b6fbf'
  /api/v2/organizations/{organization}/projects/{projectId}/jobs/:
    get:
      tags:
        - Jobs
      summary: List All Jobs in a Project
      operationId: list-all-jobs-in-a-project
      description: >-
        This endpoint retrieves all the jobs visible to the authenticated user associated with the
        specified projectId
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  count:
                    type: integer
                  next:
                    type: 'null'
                  previous:
                    type: 'null'
                  results:
                    type: array
                    items:
                      type: object
                      properties:
                        dateInserted:
                          type: string
                          format: date-time
                        dateSubmitted:
                          type: string
                          format: date-time
                        id:
                          type: string
                        name:
                          type: string
                        owner:
                          type: string
                        workspace:
                          type: object
                          properties:
                            id:
                              type: string
                            name:
                              type: string
                            configuredName:
                              type: string
                            description:
                              type: string
                            isDefault:
                              type: boolean
                            jobProjectRequired:
                              type: boolean
                            showBillingItems:
                              type: boolean
                            preventUsersCreatingTemplates:
                              type: boolean
                            preventUsersCreatingUntemplatedJobs:
                              type: boolean
                            rescaleAuthEnabled:
                              type: boolean
                            hardwarePriority:
                              type: string
                            isPartner:
                              type: boolean
                            priceSchema:
                              type: string
                            autoshareJobsWithWorkspaceAdministrators:
                              type: boolean
                        project:
                          type: object
                          properties:
                            projectId:
                              type: string
                            projectName:
                              type: string
                            posixUid:
                              type: 'null'
                            posixGid:
                              type: 'null'
                        status:
                          type: string
                        statusReason:
                          type: string
                        visibility:
                          type: string
                        isTemplate:
                          type: boolean
                        clonedFrom:
                          type: 'null'
                        templatedFrom:
                          type: 'null'
                        queuePriority:
                          type: 'null'
                        userHasAccess:
                          type: boolean
                        billingPriorityValue:
                          type: string
                        hardwareSettings:
                          type: array
                          items:
                            type: object
                            properties:
                              coresPerSlot:
                                type: integer
                              slots:
                                type: integer
                              walltime:
                                type: integer
                              coreType:
                                type: string
                              coreTypeProperties:
                                type: object
                                properties:
                                  acronym:
                                    type: string
                                  color:
                                    type: string
                              hardwareType:
                                type: string
                        dateStarted:
                          type: string
                          format: date-time
                        remoteViz:
                          type: 'null'
                        jobAnalyses:
                          type: array
                          items:
                            type: object
                            properties:
                              isOptimizer:
                                type: boolean
                              analysisName:
                                type: string
                              analysisType:
                                type: string
                              analysisVersion:
                                type: string
                        isSuspended:
                          type: 'null'
                        hoursSuspended:
                          type: 'null'
                        isOnPersistentCluster:
                          type: boolean
              example:
                count: 1
                next: null
                previous: null
                results:
                  - dateInserted: '2023-11-16T17:32:40.943867Z'
                    dateSubmitted: '2023-11-16T17:32:59.411076Z'
                    id: coCnZb
                    name: Untitled Job
                    owner: wquinn@rescale.com
                    workspace:
                      id: 04-875358043
                      name: Eng Team 🦄🚀🤯
                      configuredName: Eng Team 🦄🚀🤯
                      description: Workspace for the Unicorn... Engineering Team
                      isDefault: false
                      jobProjectRequired: false
                      showBillingItems: true
                      preventUsersCreatingTemplates: false
                      preventUsersCreatingUntemplatedJobs: false
                      rescaleAuthEnabled: true
                      hardwarePriority: odp
                      isPartner: false
                      priceSchema: 2021r1
                      autoshareJobsWithWorkspaceAdministrators: false
                    project:
                      projectId: duOxgb
                      projectName: ProjectZ
                      posixUid: null
                      posixGid: null
                    status: Completed
                    statusReason: Completed successfully
                    visibility: Active
                    isTemplate: false
                    clonedFrom: null
                    templatedFrom: null
                    queuePriority: null
                    userHasAccess: true
                    billingPriorityValue: ON_DEMAND
                    hardwareSettings:
                      - coresPerSlot: 36
                        slots: 1
                        walltime: 8
                        coreType: Emerald Max
                        coreTypeProperties:
                          acronym: E
                          color: '#50c878'
                        hardwareType: compute
                    dateStarted: '2023-11-16T17:37:24.309135Z'
                    remoteViz: null
                    jobAnalyses:
                      - isOptimizer: false
                        analysisName: Bring Your Own Software
                        analysisType: compute
                        analysisVersion: CPU
                    isSuspended: null
                    hoursSuspended: null
                    isOnPersistentCluster: false
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Not Found
      parameters:
        - name: organization
          in: path
          required: true
          schema:
            type: string
        - name: projectId
          in: path
          required: true
          schema:
            type: string
      x-codeSamples:
        - lang: curl
          label: cURL
          source: >-
            curl -H "Authorization: Token <api-token>"
            https://platform.rescale.com/api/v2/organizations/{organization}/projects/{projectId}/jobs/
        - lang: python
          label: Python
          source: |-
            import requests

            requests.get(
              'https://platform.rescale.com/api/v2/organizations/{organization}/projects/{projectId}/jobs/',
              headers={'Authorization': 'Token <api-token>'}
            )
      x-badges:
        - name: v2
          color: '#0b6fbf'
  /api/v2/organizations/{organization}/jobs/{job_id}/project-assignment/:
    get:
      tags:
        - Jobs
      summary: List Project Job is Assigned To
      operationId: list-project-job-is-assigned-to
      description: List the project ID of the project that a job is assigned to.
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  projectId:
                    type: string
              example:
                projectId: duOxgb
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Not Found
      parameters:
        - name: organization
          in: path
          required: true
          schema:
            type: string
        - name: job_id
          in: path
          required: true
          schema:
            type: string
      x-codeSamples:
        - lang: curl
          label: cURL
          source: >-
            curl -H "Authorization: Token <api-token>" -H "Content-Type: application/json"
            "https://platform.rescale.com/api/v2/organizations/{organization}/jobs/{job_id}/project-assignment/"
        - lang: python
          label: Python
          source: |-
            import requests

            requests.get(
              'https://platform.rescale.com/api/v2/organizations/{organization}/jobs/{job_id}/project-assignment/',
              headers={'Content-Type': 'application/json', 'Authorization': 'Token <api-token>'}
            )
      x-badges:
        - name: v2
          color: '#0b6fbf'
    post:
      tags:
        - Jobs
      summary: Update Project Job is Assigned To
      operationId: update-project-job-is-assigned-to
      description: Update the project ID of the project that a job is assigned to.
      responses:
        '200':
          description: OK
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Not Found
      parameters:
        - name: organization
          in: path
          required: true
          schema:
            type: string
        - name: job_id
          in: path
          required: true
          schema:
            type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                projectId:
                  type: string
            example:
              projectId: duOxgb
      x-codeSamples:
        - lang: curl
          label: cURL
          source: >-
            curl -H "Authorization: Token <api-token>" -H "Content-Type: application/json"
            "https://platform.rescale.com/api/v2/organizations/{organization}/jobs/{job_id}/project-assignment/"
            -X POST -d '

            {
              "projectId": "duOxgb"
            }

            '
        - lang: python
          label: Python
          source: |-
            import requests

            requests.post(
              'https://platform.rescale.com/api/v2/organizations/{organization}/jobs/{job_id}/project-assignment/',
              headers={'Content-Type': 'application/json', 'Authorization': 'Token <api-token>'},
              json={'projectId': 'duOxgb'}
            )
      x-badges:
        - name: v2
          color: '#0b6fbf'
  /api/v2/organizations/{organization}/project-assignment/:
    post:
      tags:
        - Jobs
      summary: Update Job Position in Priority Queue
      operationId: update-job-position-in-priority-queue
      description: >-
        Update the position of a job in the priority queue. The number passed in will be the new
        priority value for the job in the priority queue. The lowest value (highest priority) is 0.
      responses:
        '200':
          description: OK
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Not Found
      parameters:
        - name: organization
          in: path
          required: true
          schema:
            type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                externalId:
                  type: string
                job:
                  type: object
                  properties:
                    dateInserted:
                      type: string
                      format: date-time
                    id:
                      type: string
                    name:
                      type: string
                    owner:
                      type: integer
                    status:
                      type: string
                    visibility:
                      type: string
                    isTemplate:
                      type: boolean
                    clonedFrom:
                      type: integer
                    templatedFrom:
                      type: 'null'
                isBarrier:
                  type: boolean
                datePrioritized:
                  type: string
                  format: date-time
                priority:
                  type: integer
            example:
              externalId: SngSn
              job:
                dateInserted: '2025-02-24T21:46:45.390190Z'
                id: eLtoDe
                name: Sample Job
                owner: 24169
                status: Pending
                visibility: Active
                isTemplate: false
                clonedFrom: 4596968
                templatedFrom: null
              isBarrier: false
              datePrioritized: '2025-02-24T21:46:54.611890Z'
              priority: 0
      x-codeSamples:
        - lang: curl
          label: cURL
          source: >-
            curl -H "Authorization: Token <api-token>" -H "Content-Type: application/json"
            "https://platform.rescale.com/api/v2/organizations/{organization}/jobs/{job_id}/project-assignment/"
            -X POST -d '

            {
              "projectId": "duOxgb"
            }

            '
        - lang: python
          label: Python
          source: |-
            import requests

            requests.post(
              'https://platform.rescale.com/api/v2/organizations/{organization}/job-prioritization/',
              headers={'Content-Type': 'application/json', 'Authorization': 'Token <api-token>'},
              json={'job': 'eLtoDe', 'priority': 0}
            )
      x-badges:
        - name: v2
          color: '#0b6fbf'
  /api/v2/jobs/{job_id}/runs/:
    get:
      tags:
        - Runs
      summary: List Runs for a Job
      operationId: list-runs-for-a-job
      description: |-
        This call allows you to retrieve the first page of runs associated with
        _job-id_.
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  count:
                    type: integer
                  next:
                    type: string
                    format: uri
                  previous:
                    type: 'null'
                  results:
                    type: array
                    items:
                      type: object
                      properties:
                        dateCompleted:
                          type: string
                          format: date-time
                        dateStarted:
                          type: string
                          format: date-time
                        displayOrder:
                          type: integer
                        id:
                          type: string
                        isOptimal:
                          type: boolean
                        outputFileCount:
                          type: integer
                        outputFileSize:
                          type: integer
                        parent:
                          type: 'null'
                        type:
                          type: integer
                        variables:
                          type: array
                          items:
                            type: object
                            properties:
                              displayValue:
                                type: string
                              isRelative:
                                type: boolean
                              name:
                                type: string
                              value:
                                type: number
              example:
                count: 121
                next: https://platform.rescale.com/api/v2/jobs/XXXXXX/runs/?page=2
                previous: null
                results:
                  - dateCompleted: '2015-02-18T03:09:14.667000Z'
                    dateStarted: '2015-02-18T03:08:49.117000Z'
                    displayOrder: 1
                    id: '1'
                    isOptimal: false
                    outputFileCount: 66
                    outputFileSize: 8018226
                    parent: null
                    type: 3
                    variables:
                      - displayValue: '20'
                        isRelative: false
                        name: x_velocity
                        value: 20
                      - displayValue: '3'
                        isRelative: false
                        name: y_velocity
                        value: 3
                      - displayValue: '-0.0187556'
                        isRelative: false
                        name: Cd
                        value: -0.0187556
                      - displayValue: '0.140742'
                        isRelative: false
                        name: Cl
                        value: 0.140742
                  - dateCompleted: '2015-02-18T03:07:13.049000Z'
                    dateStarted: '2015-02-18T03:06:46.477000Z'
                    displayOrder: 2
                    id: '2'
                    isOptimal: false
                    outputFileCount: 72
                    outputFileSize: 8805863
                    parent: null
                    type: 3
                    variables:
                      - displayValue: '20'
                        isRelative: false
                        name: x_velocity
                        value: 20
                      - displayValue: '3.5'
                        isRelative: false
                        name: y_velocity
                        value: 3.5
                      - displayValue: '-0.0248332'
                        isRelative: false
                        name: Cd
                        value: -0.0248332
                      - displayValue: '0.157982'
                        isRelative: false
                        name: Cl
                        value: 0.157982
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Not Found
      parameters:
        - name: job_id
          in: path
          required: true
          schema:
            type: string
      x-codeSamples:
        - lang: curl
          label: cURL
          source: |-
            curl -X GET -H 'Authorization: Token \<token\>'
            https://platform.rescale.com/api/v2/jobs/XXXXXX/runs/
        - lang: python
          label: Python
          source: |-
            import requests

            requests.get(
              'https://platform.rescale.com/api/v2/jobs/XXXXXX/runs/',
              headers={'Authorization': 'Token <api-token>'}
            )
      x-badges:
        - name: v2
          color: '#0b6fbf'
  /api/v2/jobs/{job_id}/runs/{run_id}/:
    get:
      tags:
        - Runs
      summary: Get a Run
      operationId: get-a-run
      description: >-
        Property | Type  | Description

        -------- | ------|---------------

        dateCompleted | String | The ISO8601 encoded date of when the run finished.

        dateInserted | String | The ISO8601 encoded date of when the run started.

        displayOrder | Integer | Used for sorting a collection of runs into their canonical order.

        id | String | The unique identifier of the run within a job.

        isOptimal | Boolean | True if the optimizer or analysis code has designated this as a run of
        interest.

        outputFileCount | Integer | The number of output files associated with this run

        outputFileSize | Integer | The total size in bytes of all output files associated with this
        run

        parent | String | The identifier of the parent run.

        type | Integer | 1 = Optimization, 2 = Iteration, 3 = Case

        variables | List&lt;Variable&gt; | See below
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  dateCompleted:
                    type: string
                    format: date-time
                  dateStarted:
                    type: string
                    format: date-time
                  displayOrder:
                    type: integer
                  id:
                    type: string
                  isOptimal:
                    type: boolean
                  outputFileCount:
                    type: integer
                  outputFileSize:
                    type: integer
                  parent:
                    type: 'null'
                  type:
                    type: integer
                  variables:
                    type: array
                    items:
                      type: object
                      properties:
                        displayValue:
                          type: string
                        isRelative:
                          type: boolean
                        name:
                          type: string
                        value:
                          type: number
              example:
                dateCompleted: '2015-02-18T03:09:14.667000Z'
                dateStarted: '2015-02-18T03:08:49.117000Z'
                displayOrder: 1
                id: '1'
                isOptimal: false
                outputFileCount: 66
                outputFileSize: 8018226
                parent: null
                type: 3
                variables:
                  - displayValue: '20'
                    isRelative: false
                    name: x_velocity
                    value: 20
                  - displayValue: '3'
                    isRelative: false
                    name: y_velocity
                    value: 3
                  - displayValue: '-0.0187556'
                    isRelative: false
                    name: Cd
                    value: -0.0187556
                  - displayValue: '0.140742'
                    isRelative: false
                    name: Cl
                    value: 0.140742
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Not Found
      parameters:
        - name: job_id
          in: path
          required: true
          schema:
            type: string
        - name: run_id
          in: path
          required: true
          schema:
            type: string
      x-codeSamples:
        - lang: curl
          label: cURL
          source: |-
            curl -X GET -H 'Authorization: Token \<token\>'
            https://platform.rescale.com/api/v2/jobs/XXXXXX/runs/1/
        - lang: python
          label: Python
          source: |-
            import requests

            requests.get(
              'https://platform.rescale.com/api/v2/jobs/XXXXXX/runs/1/',
              headers={'Authorization': 'Token <api-token>'}
            )
      x-badges:
        - name: v2
          color: '#0b6fbf'
  /api/v2/jobs/{job_id}/runs/{run_id}/stop/:
    post:
      tags:
        - Runs
      summary: Stop a Run
      operationId: stop-a-run
      description: |-
        Stops an in-progress run. The workflow processes will be killed and any
        available output files will be uploaded to Rescale Cloud Storage.
      responses:
        '200':
          description: OK
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Not Found
      parameters:
        - name: job_id
          in: path
          required: true
          schema:
            type: string
        - name: run_id
          in: path
          required: true
          schema:
            type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
            example: {}
      x-codeSamples:
        - lang: curl
          label: cURL
          source: |-
            curl -X POST -H 'Authorization: Token \<token\>'
            https://platform.rescale.com/api/v2/jobs/XXXXX/runs/1/stop/
        - lang: python
          label: Python
          source: |-
            import requests

            requests.post(
              'https://platform.rescale.com/api/v2/jobs/XXXXX/runs/1/stop/',
              headers={'Content-Type': 'application/json',
                       'Authorization': 'Token <api-token>'}
            )
      x-badges:
        - name: v2
          color: '#0b6fbf'
  /api/v2/jobs/{job_id}/runs/{run_id}/files/:
    get:
      tags:
        - Runs
      summary: List Output Files
      operationId: list-output-files
      description: |-
        This call allows you to fetch the metadata regarding all the files
        associated with _run-id_. You can then use the _file-id_ to download
        each individual file.
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  count:
                    type: integer
                  previous:
                    type: 'null'
                  results:
                    type: array
                    items:
                      type: object
                      properties:
                        typeId:
                          type: integer
                        name:
                          type: string
                        dateUploaded:
                          type: string
                          format: date-time
                        relativePath:
                          type: string
                        encodedEncryptionKey:
                          type: string
                        sharedWith:
                          type: array
                          items: {}
                        decryptedSize:
                          type: integer
                        owner:
                          type: string
                        path:
                          type: string
                        isUploaded:
                          type: boolean
                        viewInBrowser:
                          type: boolean
                        id:
                          type: string
                        md5:
                          type: string
                  next:
                    type: string
                    format: uri
              example:
                count: 63
                previous: null
                results:
                  - typeId: 5
                    name: nut
                    dateUploaded: '2014-11-12T22:56:50.641761Z'
                    relativePath: airFoil2D/0/nut
                    encodedEncryptionKey: 5BBRrtu98/BwNNTkPnJtgaHS2VZ0IzUwgQ+fFqc5rhk=
                    sharedWith: []
                    decryptedSize: 1278
                    owner: demouser@rescale.com
                    path: user/user_OvdRk/output/job_XXXXX/run1/airFoil2D/0/nut
                    isUploaded: true
                    viewInBrowser: true
                    id: dmpTse
                    md5: c2e31d85a3af9272841a8b00f3c07498
                  - typeId: 5
                    name: nuTilda
                    dateUploaded: '2014-11-12T22:56:50.550979Z'
                    relativePath: airFoil2D/0/nuTilda
                    encodedEncryptionKey: dQ3xMn6zAZkUx84ClH3ATmKumeaNJfWGna2k/89/V/s=
                    sharedWith: []
                    decryptedSize: 1268
                    owner: demouser@rescale.com
                    path: user/user_OvdRk/output/job_XXXXX/run1/airFoil2D/0/nuTilda
                    isUploaded: true
                    viewInBrowser: true
                    id: fDhFDe
                    md5: 24af84107af3a306e117b866b27b9c55
                  - typeId: 5
                    name: p
                    dateUploaded: '2014-11-12T22:56:50.714078Z'
                    relativePath: airFoil2D/0/p
                    encodedEncryptionKey: ZHE2IT4ADwAJjfJYnYL4oBwp7YJ9cQr02nS3djnCHGA=
                    sharedWith: []
                    decryptedSize: 1166
                    owner: demouser@rescale.com
                    path: user/user_OvdRk/output/job_XXXXX/run1/airFoil2D/0/p
                    isUploaded: true
                    viewInBrowser: true
                    id: sOhFDe
                    md5: dfff0408d9e75c8f81dadeec9b248a46
                  - typeId: 5
                    name: U
                    dateUploaded: '2014-11-12T22:56:50.465184Z'
                    relativePath: airFoil2D/0/U
                    encodedEncryptionKey: NxEzQf+pChx9716FY4cdSb+UIw9ow64BimupkxaExYA=
                    sharedWith: []
                    decryptedSize: 1298
                    owner: demouser@rescale.com
                    path: user/user_OvdRk/output/job_XXXXX/run1/airFoil2D/0/U
                    isUploaded: true
                    viewInBrowser: true
                    id: RapTse
                    md5: 66aa52fa89123a8f6c3751d935b919d5
                  - typeId: 5
                    name: nut
                    dateUploaded: '2014-11-12T22:56:50.931594Z'
                    relativePath: airFoil2D/100/nut
                    encodedEncryptionKey: M+X0Sxys9icqpXmdUreDnqg2TmLVL7B7vs68JiJDEU4=
                    sharedWith: []
                    decryptedSize: 100195
                    owner: demouser@rescale.com
                    path: user/user_OvdRk/output/job_XXXXX/run1/airFoil2D/100/nut
                    isUploaded: true
                    viewInBrowser: true
                    id: fmpTse
                    md5: 84597f0bc96aaefd338109e6ddbe3493
                  - typeId: 5
                    name: nuTilda
                    dateUploaded: '2014-11-12T22:56:50.862457Z'
                    relativePath: airFoil2D/100/nuTilda
                    encodedEncryptionKey: yg6l0x1NkYkXOPT3TRoxTnXVC3x9C/SaB+tLSX+6M+U=
                    sharedWith: []
                    decryptedSize: 99221
                    owner: demouser@rescale.com
                    path: user/user_OvdRk/output/job_XXXXX/run1/airFoil2D/100/nuTilda
                    isUploaded: true
                    viewInBrowser: true
                    id: hDhFDe
                    md5: 489cb134eb1c14f6f5df760d9a421825
                  - typeId: 5
                    name: p
                    dateUploaded: '2014-11-12T22:56:51.005975Z'
                    relativePath: airFoil2D/100/p
                    encodedEncryptionKey: cwQWYQLRl7+IIU462hGELzwz9iVxpf/CfgYUEQVndB4=
                    sharedWith: []
                    decryptedSize: 86615
                    owner: demouser@rescale.com
                    path: user/user_OvdRk/output/job_XXXXX/run1/airFoil2D/100/p
                    isUploaded: true
                    viewInBrowser: true
                    id: uOhFDe
                    md5: fb5df9fdf2fd6de74a0f38998831b252
                  - typeId: 5
                    name: phi
                    dateUploaded: '2014-11-12T22:56:51.079312Z'
                    relativePath: airFoil2D/100/phi
                    encodedEncryptionKey: 5fWxJl5KR7G3oVUYJjjYMzbSveYLAYF6AW8xFDahZtk=
                    sharedWith: []
                    decryptedSize: 190707
                    owner: demouser@rescale.com
                    path: user/user_OvdRk/output/job_XXXXX/run1/airFoil2D/100/phi
                    isUploaded: true
                    viewInBrowser: true
                    id: wMyXse
                    md5: 2fb30c6d0e3ea1125a361ce069c46a80
                  - typeId: 5
                    name: U
                    dateUploaded: '2014-11-12T22:56:50.787838Z'
                    relativePath: airFoil2D/100/U
                    encodedEncryptionKey: gHfNzchETji3v69TfeeyhBe0+owGJhNcX7PAzgmJha8=
                    sharedWith: []
                    decryptedSize: 298228
                    owner: demouser@rescale.com
                    path: user/user_OvdRk/output/job_XXXXX/run1/airFoil2D/100/U
                    isUploaded: true
                    viewInBrowser: true
                    id: TapTse
                    md5: 0cc541d092ceda7e299ecb736c7905ee
                  - typeId: 5
                    name: time
                    dateUploaded: '2014-11-12T22:56:51.222466Z'
                    relativePath: airFoil2D/100/uniform/time
                    encodedEncryptionKey: F3HkdyuOCnxO6NwIJbv6Zg+xzKTFZKxrc6NvuneB2QE=
                    sharedWith: []
                    decryptedSize: 968
                    owner: demouser@rescale.com
                    path: user/user_OvdRk/output/job_XXXXX/run1/airFoil2D/100/uniform/time
                    isUploaded: true
                    viewInBrowser: true
                    id: LosKDe
                    md5: 62ac76eb8aae234370613d7350ac8685
                next: https://platform.rescale.com/api/v2/jobs/XXXXX/runs/1/files/?page=2
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Not Found
      parameters:
        - name: job_id
          in: path
          required: true
          schema:
            type: string
        - name: run_id
          in: path
          required: true
          schema:
            type: string
      x-codeSamples:
        - lang: curl
          label: cURL
          source: |-
            curl -X GET -H 'Authorization: Token \<token\>'
            https://platform.rescale.com/api/v2/jobs/XXXXX/runs/1/files/
        - lang: python
          label: Python
          source: |-
            import requests

            requests.get(
              'https://platform.rescale.com/api/v2/jobs/XXXXX/runs/1/files/',
              headers={'Authorization': 'Token <api-token>'}
            )
      x-badges:
        - name: v2
          color: '#0b6fbf'
  /api/v2/jobs/{job_id}/runs/{run_id}/directory-contents/:
    get:
      tags:
        - Runs
      summary: List Directory Contents
      operationId: list-directory-contents
      description: |-
        Property | Type  | Description
        -------- | ----- |---------------
        path | String | The relative path to a file in the run's working directory
        resource | String | The API url that can be used to retrieve the file's contents
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  properties:
                    path:
                      type: string
                    resource:
                      type: string
              example:
                - path: airFoil2D/0/U
                  resource: /api/jobs/XXXXX/runs/1/tail/airFoil2D/0/U
                - path: airFoil2D/0/nuTilda
                  resource: /api/jobs/XXXXX/runs/1/tail/airFoil2D/0/nuTilda
                - path: airFoil2D/0/nut
                  resource: /api/jobs/XXXXX/runs/1/tail/airFoil2D/0/nut
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Not Found
      parameters:
        - name: job_id
          in: path
          required: true
          schema:
            type: string
        - name: run_id
          in: path
          required: true
          schema:
            type: string
      x-codeSamples:
        - lang: curl
          label: cURL
          source: |-
            curl -X GET -H 'Authorization: Token \<token\>'
            https://platform.rescale.com/api/v2/jobs/XXXXX/runs/1/directory-contents/
        - lang: python
          label: Python
          source: |-
            import requests

            requests.get(
              'https://platform.rescale.com/api/v2/jobs/XXXXX/runs/1/directory-contents/',
              headers={'Authorization': 'Token <api-token>'}
            )
      x-badges:
        - name: v2
          color: '#0b6fbf'
  /api/v2/jobs/{job_id}/runs/{run_id}/tail/{path}/:
    get:
      tags:
        - Runs
      summary: Tail File Content
      operationId: tail-file-content
      description: >-
        | Field        | Default | Required | Description  |

        | ------------ | --------| -------- | ------------ |

        | lines | None | No | The number of lines to retrieve from the specified file. If omitted,
        the raw binary contents of the file will be returned in the response.
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  fileType:
                    type: string
                  lines:
                    type: array
                    items:
                      type: string
              example:
                fileType: '/home/job_fNjea/work/airFoil2D/0/U: ASCII English text'
                lines:
                  - /*--------------------------------*- C++ -*----------------------------------*\
                  - '| =========                 |                                                 |'
                  - '| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |'
                  - '|  \\    /   O peration     | Version:  2.0.1                                 |'
                  - '|   \\  /    A nd           | Web:      www.OpenFOAM.com                      |'
                  - '|    \\/     M anipulation  |                                                 |'
                  - \*---------------------------------------------------------------------------*/
                  - FoamFile
                  - '{'
                  - '    version     2.0;'
                  - '    format      ascii;'
                  - '    class       volVectorField;'
                  - '    object      U;'
                  - '}'
                  - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
                  - ''
                  - dimensions      [0 1 -1 0 0 0 0];
                  - ''
                  - internalField   uniform (25.75 3.62 0);
                  - ''
                  - boundaryField
                  - '{'
                  - '    inlet'
                  - '    {'
                  - '        type            freestream;'
                  - '        freestreamValue uniform (25.75 3.62 0);'
                  - '    }'
                  - ''
                  - '    outlet'
                  - '    {'
                  - '        type            freestream;'
                  - '        freestreamValue uniform (25.75 3.62 0);'
                  - '    }'
                  - ''
                  - '    wall'
                  - '    {'
                  - '        type            fixedValue;'
                  - '        value           uniform (0 0 0);'
                  - '    }'
                  - ''
                  - '    frontAndBack'
                  - '    {'
                  - '        type            empty;'
                  - '    }'
                  - '}'
                  - ''
                  - // ************************************************************************* //
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Not Found
      parameters:
        - name: job_id
          in: path
          required: true
          schema:
            type: string
        - name: run_id
          in: path
          required: true
          schema:
            type: string
        - name: path
          in: path
          required: true
          schema:
            type: string
      x-codeSamples:
        - lang: curl
          label: cURL
          source: |-
            curl -v -X GET -H 'Authorization: Token \<token\>'
            https://platform.rescale.com/api/v2/jobs/XXXXX/runs/1/tail/airFoil2D/0/U?lines=100
        - lang: python
          label: Python
          source: |-
            import requests

            requests.get(
              'https://platform.rescale.com/api/v2/jobs/XXXXX/runs/1/tail/airFoil2D/0/U',
              headers={'Authorization': 'Token <api-token>'},
              params={'lines': 100}
            )
      x-badges:
        - name: v2
          color: '#0b6fbf'
  /api/v2/files/:
    get:
      tags:
        - Files
      summary: List all Files
      operationId: list-all-files
      description: |-
        This call allows you to retrieve the first page of files owned by the
        current user.
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  count:
                    type: integer
                  previous:
                    type: 'null'
                  results:
                    type: array
                    items:
                      type: object
                      properties:
                        typeId:
                          type: integer
                        name:
                          type: string
                        dateUploaded:
                          type: string
                          format: date-time
                        relativePath:
                          type: string
                        encodedEncryptionKey:
                          type: string
                        downloadUrl:
                          type: string
                          format: uri
                        sharedWith:
                          type: array
                          items: {}
                        decryptedSize:
                          type: integer
                        owner:
                          type: string
                        path:
                          type: string
                        isUploaded:
                          type: boolean
                        viewInBrowser:
                          type: boolean
                        id:
                          type: string
                        isDeleted:
                          type: boolean
                        md5:
                          type: string
                  next:
                    type: string
                    format: uri
              example:
                count: 365
                previous: null
                results:
                  - typeId: 1
                    name: Crash_input.pc.gz
                    dateUploaded: '2015-03-12T17:56:20.925043-07:00'
                    relativePath: Crash_input.pc.gz
                    encodedEncryptionKey: LkkPk2L2mwuc4OibUs3kJe2RIQrzXbfdWXp9xJhoX0s=
                    downloadUrl: https://platform.rescale.com/api/v2/files/WvNKdb/contents/
                    sharedWith: []
                    decryptedSize: 56425931
                    owner: demouser@rescale.com
                    path: user/user_OvdRk/Crash_input.pc.gz-0a87694a180172023d8a37f0c8aac965
                    isUploaded: true
                    viewInBrowser: false
                    id: WvNKdb
                    isDeleted: false
                    md5: a3bc423552cf5457b2fcf4fad87e451d
                  - typeId: 5
                    name: fsi.in
                    dateUploaded: '2015-01-27T11:06:57.418023-08:00'
                    relativePath: fsi.in
                    encodedEncryptionKey: MQfYDI0UttkgN+N2K71N0/nodyTZi/GjNY1z/Jnmh88=
                    downloadUrl: https://platform.rescale.com/api/v2/files/oHyEm/contents/
                    sharedWith:
                      - shareduser@rescale.com
                    decryptedSize: 2744
                    owner: demouser@rescale.com
                    path: user/user_OvdRk/output/job_RJFSc/run1/fsi.in
                    isUploaded: true
                    viewInBrowser: true
                    id: oHyEm
                    isDeleted: false
                    md5: 2deba2076c80c89e96749e58a26c0d99
                  - typeId: 5
                    name: post.echo
                    dateUploaded: '2015-01-27T11:06:57.310163-08:00'
                    relativePath: post.echo
                    encodedEncryptionKey: wmB+YNh2IDdZURd79NJjOiAnAGxl8mzPVlwS8kLPGnc=
                    downloadUrl: https://platform.rescale.com/api/v2/files/ZeFSa/contents/
                    sharedWith:
                      - shareduser@rescale.com
                    decryptedSize: 248
                    owner: demouser@rescale.com
                    path: user/user_OvdRk/output/job_RJFSc/run1/post.echo
                    isUploaded: true
                    viewInBrowser: true
                    id: ZeFSa
                    isDeleted: false
                    md5: 6796616b942ff5eaa5b68041871b4a0b
                  - typeId: 5
                    name: therm.dat
                    dateUploaded: '2015-01-27T11:06:57.205175-08:00'
                    relativePath: therm.dat
                    encodedEncryptionKey: eQ2twVf8T8J+/lwK7FQNa2Q2PROzlTj2DIyeUPTnuW8=
                    downloadUrl: https://platform.rescale.com/api/v2/files/XgpAm/contents/
                    sharedWith:
                      - shareduser@rescale.com
                    decryptedSize: 201624
                    owner: demouser@rescale.com
                    path: user/user_OvdRk/output/job_RJFSc/run1/therm.dat
                    isUploaded: true
                    viewInBrowser: true
                    id: XgpAm
                    isDeleted: false
                    md5: d133bafb80e2ebd460efd6cf13f0c42b
                  - typeId: 5
                    name: inputs.in
                    dateUploaded: '2015-01-27T11:06:57.103260-08:00'
                    relativePath: inputs.in
                    encodedEncryptionKey: 4FY1kB/Ejq9r3n+Jz1um7yS+F/rXskAzlnDWFABr1HM=
                    downloadUrl: https://platform.rescale.com/api/v2/files/JEvOa/contents/
                    sharedWith:
                      - shareduser@rescale.com
                    decryptedSize: 13959
                    owner: demouser@rescale.com
                    path: user/user_OvdRk/output/job_RJFSc/run1/inputs.in
                    isUploaded: true
                    viewInBrowser: true
                    id: JEvOa
                    isDeleted: false
                    md5: a5d397df07e6b435d5d1f26eb9ebd4b2
                  - typeId: 5
                    name: process_output.log
                    dateUploaded: '2015-01-27T11:06:57.006959-08:00'
                    relativePath: process_output.log
                    encodedEncryptionKey: haLrcqy/ePGyy7mJjr1J2ApBRQlEaH1UKvB49tNaflE=
                    downloadUrl: https://platform.rescale.com/api/v2/files/LWoAm/contents/
                    sharedWith:
                      - shareduser@rescale.com
                    decryptedSize: 1262
                    owner: demouser@rescale.com
                    path: user/user_OvdRk/output/job_RJFSc/run1/process_output.log
                    isUploaded: true
                    viewInBrowser: true
                    id: LWoAm
                    isDeleted: false
                    md5: 7f2b5ba96aa67cb067193b2e44cbd91d
                  - typeId: 5
                    name: post.in
                    dateUploaded: '2015-01-27T11:06:56.901907-08:00'
                    relativePath: post.in
                    encodedEncryptionKey: TRHGVF0LrDgJ+x6x/hzwYKG34ITfGWTvlhs2a/n1FP0=
                    downloadUrl: https://platform.rescale.com/api/v2/files/wuvOa/contents/
                    sharedWith:
                      - shareduser@rescale.com
                    decryptedSize: 593
                    owner: demouser@rescale.com
                    path: user/user_OvdRk/output/job_RJFSc/run1/post.in
                    isUploaded: true
                    viewInBrowser: true
                    id: wuvOa
                    isDeleted: false
                    md5: 4fdf0c787bd84d4b4b6bf7bf35df1690
                  - typeId: 5
                    name: restart0001.rst
                    dateUploaded: '2015-01-27T11:06:56.801151-08:00'
                    relativePath: restart0001.rst
                    encodedEncryptionKey: iHom7vaSMIVItK0RX1s+gLb6z+vxMn3MwKMLSjvkeCY=
                    downloadUrl: https://platform.rescale.com/api/v2/files/VgpAm/contents/
                    sharedWith:
                      - shareduser@rescale.com
                    decryptedSize: 625449464
                    owner: demouser@rescale.com
                    path: user/user_OvdRk/output/job_RJFSc/run1/restart0001.rst
                    isUploaded: true
                    viewInBrowser: false
                    id: VgpAm
                    isDeleted: false
                    md5: 61a8a7e517ee579d329f7ce56b865e97
                  - typeId: 5
                    name: dynamic.out
                    dateUploaded: '2015-01-27T11:06:56.703897-08:00'
                    relativePath: dynamic.out
                    encodedEncryptionKey: 213UMp+Rp2+d6wPzDCxge4X9pV9sIAYft+6WgdAq29M=
                    downloadUrl: https://platform.rescale.com/api/v2/files/GEvOa/contents/
                    sharedWith:
                      - shareduser@rescale.com
                    decryptedSize: 14226
                    owner: demouser@rescale.com
                    path: user/user_OvdRk/output/job_RJFSc/run1/dynamic.out
                    isUploaded: true
                    viewInBrowser: true
                    id: GEvOa
                    isDeleted: false
                    md5: 82116340362aba67bb0c3b58d4ced65f
                  - typeId: 5
                    name: equiv_ratio_bin.out
                    dateUploaded: '2015-01-27T11:06:56.602278-08:00'
                    relativePath: equiv_ratio_bin.out
                    encodedEncryptionKey: hJ2qEY9k5PiVXyAlxHZt4/Qwv3xXWygKefer9Kn23wE=
                    downloadUrl: https://platform.rescale.com/api/v2/files/JWoAm/contents/
                    sharedWith:
                      - shareduser@rescale.com
                    decryptedSize: 37210
                    owner: demouser@rescale.com
                    path: user/user_OvdRk/output/job_RJFSc/run1/equiv_ratio_bin.out
                    isUploaded: true
                    viewInBrowser: true
                    id: JWoAm
                    isDeleted: false
                    md5: 1a2a0b8b3879726b9035cdd1b9308fd9
                next: https://platform.rescale.com/api/v2/files/?page=2
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Not Found
      x-codeSamples:
        - lang: curl
          label: cURL
          source: |-
            curl -X GET -H 'Authorization: Token \<token\>'
            https://platform.rescale.com/api/v2/files/
        - lang: python
          label: Python
          source: |-
            import requests

            requests.get(
              'https://platform.rescale.com/api/v2/files/',
              headers={'Authorization': 'Token <api-token>'}
            )
      x-badges:
        - name: v2
          color: '#0b6fbf'
  /api/v2/files/{file_id}/:
    delete:
      tags:
        - Files
      summary: Delete a File
      operationId: delete-a-file
      description: This call allows you to delete a file from Rescale.
      responses:
        '204':
          description: No Content
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Not Found
      parameters:
        - name: file_id
          in: path
          required: true
          schema:
            type: string
      x-codeSamples:
        - lang: curl
          label: cURL
          source: |-
            curl -X DELETE -H 'Authorization: Token \<token\>'
            https://platform.rescale.com/api/v2/files/{file_id}/
        - lang: python
          label: Python
          source: |-
            import requests

            requests.delete(
              'https://platform.rescale.com/api/v2/files/{file_id}/',
              headers={'Authorization': 'Token \<token\>'}
            )
      x-badges:
        - name: v2
          color: '#0b6fbf'
    get:
      tags:
        - Files
      summary: Get Metadata of a File
      operationId: get-metadata-of-a-file
      description: >-
        Property | Type  | Description

        -------- | ------|---------------

        typeId | Integer | 1 = inpute file, 2 = template file, 3 = parameter file, 4 = script file,
        5 = output file, 7 = design variable file, 8 = case file, 9 = optimizer file, 10 = temporary
        file

        name | String | The name of the file.

        dateUploaded | String | The ISO8601 encoded date of when the file is uploaded.

        relativePath | String | For output files (typeId = 5), the relative path is the path
        relative to the root output folder(user/{user_id}/output/{job_id}/{run_id}/{relative_path}).

        encodedEncryptionKey | String | The key used to encrypt the files.

        downloadUrl | String | The download URL of the file.

        sharedWith | List&lt;String&gt; | A list of users of the file shared with.

        decryptedSize | Integer | The decrypted file size in byte.

        owner | String | The owner of the file.

        path | String | The absolute path of the file being stored.

        isUploaded | Boolean | If the file is already uploaded.

        viewInBrowser | Boolean | If the file can be viewed in browser.

        id | String | The unique identifier of the file.

        isDelelted | Boolean | If the file is already deleted.

        md5 | String | The md5 hash of the file.
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  typeId:
                    type: integer
                  name:
                    type: string
                  dateUploaded:
                    type: string
                    format: date-time
                  relativePath:
                    type: string
                  encodedEncryptionKey:
                    type: string
                  downloadUrl:
                    type: string
                    format: uri
                  sharedWith:
                    type: array
                    items: {}
                  decryptedSize:
                    type: integer
                  owner:
                    type: string
                  path:
                    type: string
                  isUploaded:
                    type: boolean
                  viewInBrowser:
                    type: boolean
                  id:
                    type: string
                  isDeleted:
                    type: boolean
                  md5:
                    type: string
                  userTags:
                    type: array
                    items:
                      type: object
                      properties:
                        name:
                          type: string
                        normalizedName:
                          type: string
              example:
                typeId: 1
                name: Crash_input.pc.gz
                dateUploaded: '2015-03-12T17:56:20.925043-07:00'
                relativePath: Crash_input.pc.gz
                encodedEncryptionKey: LkkPk2L2mwuc4OibUs3kJe2RIQrzXbfdWXp9xJhoX0s=
                downloadUrl: https://platform.rescale.com/api/v2/files/WvNKdb/contents/
                sharedWith: []
                decryptedSize: 56425931
                owner: demouser@rescale.com
                path: user/user_OvdRk/Crash_input.pc.gz-0a87694a180172023d8a37f0c8aac965
                isUploaded: true
                viewInBrowser: false
                id: WvNKdb
                isDeleted: false
                md5: a3bc423552cf5457b2fcf4fad87e451d
                userTags:
                  - name: example tag
                    normalizedName: exampletag
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Not Found
      parameters:
        - name: file_id
          in: path
          required: true
          schema:
            type: string
      x-codeSamples:
        - lang: curl
          label: cURL
          source: |-
            curl -X GET -H 'Authorization: Token \<token\>'
            https://platform.rescale.com/api/v2/files/{file_id}/
        - lang: python
          label: Python
          source: |-
            import requests

            requests.get(
              'https://platform.rescale.com/api/v2/files/{file_id}/',
              headers={'Authorization': 'Token <api-token>'}
            )
      x-badges:
        - name: v2
          color: '#0b6fbf'
    patch:
      tags:
        - Files
      summary: Update Metadata of a File
      operationId: update-metadata-of-a-file
      description: Same as Get Metadata of a File
      responses:
        '200':
          description: OK
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Not Found
      parameters:
        - name: file_id
          in: path
          required: true
          schema:
            type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                typeId:
                  type: integer
                name:
                  type: string
                dateUploaded:
                  type: string
                  format: date-time
                relativePath:
                  type: string
                encodedEncryptionKey:
                  type: string
                downloadUrl:
                  type: string
                  format: uri
                sharedWith:
                  type: array
                  items: {}
                decryptedSize:
                  type: integer
                owner:
                  type: string
                path:
                  type: string
                isUploaded:
                  type: boolean
                viewInBrowser:
                  type: boolean
                id:
                  type: string
                isDeleted:
                  type: boolean
                md5:
                  type: string
            example:
              typeId: 4
              name: new_script.txt
              dateUploaded: '2015-03-17T00:24:39.531384Z'
              relativePath: new_script.txt
              encodedEncryptionKey: 83TFwNf5QxFaCOmluBQBnJ/L0yAC/2Z9MPs2pKZuUi4=
              downloadUrl: https://platform.rescale.com/api/files/dNEXtf/contents/
              sharedWith: []
              decryptedSize: 112
              owner: demouser@rescale.com
              path: user/user_OvdRk/testLines-9425c8a5-08a6-4249-939a-2f060a4d0f25.txt
              isUploaded: true
              viewInBrowser: true
              id: dNEXtf
              isDeleted: false
              md5: 4d479b49d26318068d3e23aa9d81e9ee
      x-codeSamples:
        - lang: curl
          label: cURL
          source: |-
            curl -X PATCH -H 'Content-Type: application/json'
            -H 'Authorization: Token \<token\>' --data
            '{
                "typeId": 4,
                "name": "new_script.txt",
                "dateUploaded": "2015-03-17T00:24:39.531384Z",
                "relativePath": "new_script.txt",
                "encodedEncryptionKey": "83TFwNf5QxFaCOmluBQBnJ/L0yAC/2Z9MPs2pKZuUi4=",
                "downloadUrl": "https://platform.rescale.com/api/v2/files/dNEXtf/contents/",
                "sharedWith": [],
                "decryptedSize": 112,
                "owner": "demouser@rescale.com",
                "path": "user/user_OvdRk/testLines-9425c8a5-08a6-4249-939a-2f060a4d0f25.txt",
                "isUploaded": true,
                "viewInBrowser": true,
                "id": "dNEXtf",
                "isDeleted": false,
                "md5": "4d479b49d26318068d3e23aa9d81e9ee",
                "userTags": [{ "name": "example tag", "normalizedName": "exampletag" }]
            }'
            https://platform.rescale.com/api/v2/files/{file_id}/
        - lang: python
          label: Python
          source: |-
            import requests

            requests.patch(
              'https://platform.rescale.com/api/files/{file_id}/',
              {
                "typeId": 4,
                "name": "new_script.txt",
                "dateUploaded": "2015-03-17T00:24:39.531384Z",
                "relativePath": "new_script.txt",
                "encodedEncryptionKey": "83TFwNf5QxFaCOmluBQBnJ/L0yAC/2Z9MPs2pKZuUi4=",
                "downloadUrl": "https://platform.rescale.com/api/files/dNEXtf/contents/",
                "sharedWith": [],
                "decryptedSize": 112,
                "owner": "demouser@rescale.com",
                "path": "user/user_OvdRk/testLines-9425c8a5-08a6-4249-939a-2f060a4d0f25.txt",
                "isUploaded": true,
                "viewInBrowser": true,
                "id": "dNEXtf",
                "isDeleted": false,
                "md5": "4d479b49d26318068d3e23aa9d81e9ee"
              },
              headers={'Content-Type': 'application/json',
                       'Authorization': 'Token <api-token>'}
            )
      x-badges:
        - name: v2
          color: '#0b6fbf'
  /api/v2/files/{file_id}/contents/:
    get:
      tags:
        - Files
      summary: Download a File
      operationId: download-a-file
      description: >-
        **Important:** Rescale Files API is designed to upload and download files no larger than 5
        GB. For any file larger than

        that, we offer the [Rescale
        CLI](https://rescale.com/documentation/main-2/rescale-advanced-features/rescale-cli-1-1-x/rescale-cli-commands-110/),

        Rescale Transfer Manager and Enhanced Uploads via our Platform Web. These tools also benefit
        from parallel downloads and could make transfers

        faster.
      responses:
        '200':
          description: OK
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Not Found
      parameters:
        - name: file_id
          in: path
          required: true
          schema:
            type: string
      x-codeSamples:
        - lang: curl
          label: cURL
          source: |-
            curl -X GET -H 'Authorization: Token \<token\>'
            -o 'download_file.txt' https://platform.rescale.com/api/v2/files/{file_id}/contents/
        - lang: python
          label: Python
          source: |-
            import requests

            response = requests.get(
              'https://platform.rescale.com/api/v2/files/{file_id}/',
              headers={'Authorization': 'Token \<token\>'}
            )

            with open('file_to_download', 'wb') as fd:
                for chunk in response.iter_content(chunk_size):
                    fd.write(chunk)
      x-badges:
        - name: v2
          color: '#0b6fbf'
  /api/v2/files/{file_id}/lines/:
    get:
      tags:
        - Files
      summary: Get Plaintext Content of a File
      operationId: get-plaintext-content-of-a-file
      description: >-
        **Important:** Rescale Files API is designed to upload and download files no larger than 5
        GB. For any file larger than

        that, we offer the [Rescale
        CLI](https://rescale.com/documentation/main-2/rescale-advanced-features/rescale-cli-1-1-x/rescale-cli-commands-110/),

        Rescale Transfer Manager and Enhanced Uploads via our Platform Web. These tools also benefit
        from parallel downloads and could make transfers

        faster.
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  lines:
                    type: array
                    items:
                      type: string
              example:
                lines:
                  - |
                    This is line 1.
                  - |
                    This is line 2.
                  - |
                    This is line 3.
                  - |
                    This is line 4.
                  - |
                    This is line 5.
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Not Found
      parameters:
        - name: file_id
          in: path
          required: true
          schema:
            type: string
      x-codeSamples:
        - lang: curl
          label: cURL
          source: |-
            curl -X GET -H 'Authorization: Token \<token\>'
            https://platform.rescale.com/api/v2/files/{file_id}/lines/
        - lang: python
          label: Python
          source: |-
            import requests

            requests.get(
              'https://platform.rescale.com/api/v2/files/{file_id}/lines',
              headers={'Authorization': 'Token <api-token>'}
            )
      x-badges:
        - name: v2
          color: '#0b6fbf'
  /api/v2/files/{file_id}/tags/:
    post:
      tags:
        - Files
      summary: Add a Tag to a File
      operationId: add-a-tag-to-a-file
      description: Add a new or existing tag to a file.
      responses:
        '200':
          description: OK
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Not Found
      parameters:
        - name: file_id
          in: path
          required: true
          schema:
            type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                name:
                  type: string
                normalizedName:
                  type: string
            example:
              name: new - tag _ 1
              normalizedName: newtag1
      x-codeSamples:
        - lang: curl
          label: cURL
          source: >-
            curl -H "Authorization: Token <api-token>" -H "Content-Type: application/json"
            "https://platform.rescale.com/api/v2/files/{file_id}/tags/" -X POST -d '

            {
                "name": "new - tag _ 1"
            }

            '
        - lang: python
          label: Python
          source: |-
            import requests

            requests.post(
              'https://platform.rescale.com/api/v2/files/{file_id}/tags/',
              headers={'Content-Type': 'application/json',
                       'Authorization': 'Token <api-token>'},
              json={
                "name": "new - tag _ 1"
              }
            )
      x-badges:
        - name: v2
          color: '#0b6fbf'
    get:
      tags:
        - Files
      summary: Get a list of Tags on a File
      operationId: get-a-list-of-tags-on-a-file
      description: >-
        Property | Type  | Description

        -------- | ------|---------------

        | name | String | The displayed name of the tag |

        | normalizedName | String | The name of the tag with spaces, dashes, and underscores removed
        |
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  properties:
                    name:
                      type: string
                    normalizedName:
                      type: string
              example:
                - name: new - tag _ 1
                  normalizedName: newtag1
                - name: new - tag _ 2
                  normalizedName: newtag2
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Not Found
      parameters:
        - name: file_id
          in: path
          required: true
          schema:
            type: string
      x-codeSamples:
        - lang: curl
          label: cURL
          source: >-
            curl -H "Authorization: Token <api-token>" -H "Content-Type: application/json"
            "https://platform.rescale.com/api/v2/files/{file_id}/tags/" -X GET
        - lang: python
          label: Python
          source: |-
            import requests

            requests.get(
              'https://platform.rescale.com/api/v2/files/{file_id}/tags/',
              headers={'Content-Type': 'application/json',
                       'Authorization': 'Token <api-token>'}
            )
      x-badges:
        - name: v2
          color: '#0b6fbf'
  /api/v2/files/{job_id}/tags/:
    delete:
      tags:
        - Files
      summary: Remove a Tag from a File
      operationId: remove-a-tag-from-a-file
      description: ''
      responses:
        '204':
          description: No Content
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Not Found
      parameters:
        - name: job_id
          in: path
          required: true
          schema:
            type: string
      x-codeSamples:
        - lang: curl
          label: cURL
          source: >-
            curl -H "Authorization: Token <api-token>" -H "Content-Type: application/json"
            "https://platform.rescale.com/api/v2/files/{file_id}/tags/" -X DELETE -d '

            {
                "name": "new - tag _ 1"
            }

            '
        - lang: python
          label: Python
          source: |-
            import requests

            requests.delete(
              'https://platform.rescale.com/api/v2/files/{file_id}/tags/',
              headers={'Content-Type': 'application/json',
                       'Authorization': 'Token <api-token>'},
              json={
                "name": "new - tag _ 1"
              }
            )
      x-badges:
        - name: v2
          color: '#0b6fbf'
  /api/v2/tasks/{token}/:
    get:
      tags:
        - Tasks
      summary: Poll a Running Task
      operationId: poll-a-running-task
      description: ''
      responses:
        '200':
          description: OK
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Not Found
      parameters:
        - name: token
          in: path
          required: true
          schema:
            type: string
      x-badges:
        - name: v2
          color: '#0b6fbf'
  /api/v2/storage-devices/:
    get:
      tags:
        - Storage Devices
      summary: List All Storage Devices
      operationId: list-all-storage-devices
      description: |-
        This endpoint retrieves all the storage devices visible to the authenticated user,
        whether they are owned by, or shared with, that user.
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  count:
                    type: integer
                  previous:
                    type: 'null'
                  results:
                    type: array
                    items:
                      type: object
                      properties:
                        dateInserted:
                          type: string
                          format: date-time
                        name:
                          type: string
                        autoextend:
                          type: boolean
                        region:
                          type: object
                          properties:
                            id:
                              type: string
                            name:
                              type: string
                        hardware:
                          type: object
                          properties:
                            coresPerSlot:
                              type: integer
                            coreType:
                              type: object
                              properties:
                                code:
                                  type: string
                                features:
                                  type: array
                                  items:
                                    type: string
                                color:
                                  type: string
                                requiresTempSshAuth:
                                  type: boolean
                                io:
                                  type: string
                                isPrimary:
                                  type: boolean
                                processorInfo:
                                  type: string
                                displayOrder:
                                  type: integer
                                hasSsd:
                                  type: boolean
                                storage:
                                  type: integer
                                lowPriorityPrice:
                                  type: string
                                memory:
                                  type: integer
                                isDefault:
                                  type: boolean
                                defaultWalltime:
                                  type: 'null'
                                description:
                                  type: string
                                acronym:
                                  type: string
                                price:
                                  type: string
                                gpuCounts:
                                  type: array
                                  items:
                                    type: integer
                                mustBeRequested:
                                  type: boolean
                                isLowPriorityBeta:
                                  type: boolean
                                compute:
                                  type: string
                                name:
                                  type: string
                                baseClockSpeed:
                                  type: string
                                walltimeRequired:
                                  type: boolean
                                remoteVizAllowed:
                                  type: boolean
                                cores:
                                  type: array
                                  items:
                                    type: integer
                                storageIo:
                                  type: string
                            coreSummary:
                              type: object
                              properties:
                                storagePerNode:
                                  type: integer
                                gpusPerNode:
                                  type: integer
                                numberOfNodes:
                                  type: integer
                                memoryPerNode:
                                  type: integer
                            slots:
                              type: integer
                            type:
                              type: string
                            walltime:
                              type: integer
                        owner:
                          type: string
                        secondAlert:
                          type: integer
                        urls:
                          type: object
                          properties:
                            start:
                              type: string
                              format: uri
                            fileDownload:
                              type: string
                              format: uri
                            statuses:
                              type: string
                              format: uri
                        storageSize:
                          type: integer
                        absoluteMountPoint:
                          type: string
                        availableSpace:
                          type: integer
                        id:
                          type: string
                        firstAlert:
                          type: integer
                        sshConnection:
                          type: string
                  next:
                    type: 'null'
              example:
                count: 3
                previous: null
                results:
                  - dateInserted: '2018-12-10T13:16:30.764554-08:00'
                    name: Sample Storage One
                    autoextend: true
                    region:
                      id: pCTMk
                      name: us-east-1
                    hardware:
                      coresPerSlot: 18
                      coreType:
                        code: hpc-3
                        features:
                          - low_priority
                          - cluster_status
                        color: '#ff4242'
                        requiresTempSshAuth: false
                        io: 10 Gb/s
                        isPrimary: true
                        processorInfo: Intel Xeon E5-2666 v3 (Haswell)
                        displayOrder: 1
                        hasSsd: true
                        storage: 36
                        lowPriorityPrice: '0.1200'
                        memory: 3750
                        isDefault: true
                        defaultWalltime: null
                        description: HPC++
                        acronym: O
                        price: '0.1700'
                        gpuCounts:
                          - 0
                          - 0
                          - 0
                          - 0
                          - 0
                        mustBeRequested: false
                        isLowPriorityBeta: false
                        compute: '7.33'
                        name: Onyx
                        baseClockSpeed: '2.9'
                        walltimeRequired: false
                        remoteVizAllowed: true
                        cores:
                          - 1
                          - 2
                          - 4
                          - 8
                          - 18
                        storageIo: 2 GB/s read, 1GB/s write
                      coreSummary:
                        storagePerNode: 648
                        gpusPerNode: 0
                        numberOfNodes: 1
                        memoryPerNode: 60000
                      slots: 1
                      type: mountable_storage
                      walltime: 5
                    owner: support@rescale.com
                    secondAlert: 90
                    urls:
                      start: https://platform.rescale.com/api/v2/storage-devices/BNTMk/submit/
                      fileDownload: https://platform.rescale.com/api/v2/storage-devices/BNTMk/file-downloads/
                      statuses: https://platform.rescale.com/api/v2/storage-devices/BNTMk/statuses/
                    storageSize: 120
                    absoluteMountPoint: ~/storage_BNTMk
                    availableSpace: 0
                    id: BNTMk
                    firstAlert: 60
                    sshConnection: uprod.xnXAo@35.153.144.221
                  - dateInserted: '2018-12-10T18:38:06.096877-08:00'
                    name: Sample Storage Two
                    autoextend: false
                    region:
                      id: pCTMk
                      name: us-east-1
                    hardware:
                      coresPerSlot: 18
                      coreType:
                        code: hpc-3
                        features:
                          - low_priority
                          - cluster_status
                        color: '#ff4242'
                        requiresTempSshAuth: false
                        io: 10 Gb/s
                        isPrimary: true
                        processorInfo: Intel Xeon E5-2666 v3 (Haswell)
                        displayOrder: 1
                        hasSsd: true
                        storage: 36
                        lowPriorityPrice: '0.1200'
                        memory: 3750
                        isDefault: true
                        defaultWalltime: null
                        description: HPC++
                        acronym: O
                        price: '0.1700'
                        gpuCounts:
                          - 0
                          - 0
                          - 0
                          - 0
                          - 0
                        mustBeRequested: false
                        isLowPriorityBeta: false
                        compute: '7.33'
                        name: Onyx
                        baseClockSpeed: '2.9'
                        walltimeRequired: false
                        remoteVizAllowed: true
                        cores:
                          - 1
                          - 2
                          - 4
                          - 8
                          - 18
                        storageIo: 2 GB/s read, 1GB/s write
                      coreSummary:
                        storagePerNode: 648
                        gpusPerNode: 0
                        numberOfNodes: 1
                        memoryPerNode: 60000
                      slots: 1
                      type: mountable_storage
                      walltime: 20
                    owner: support@rescale.com
                    secondAlert: 90
                    urls:
                      start: https://platform.rescale.com/api/v2/storage-devices/caaaa/submit/
                      fileDownload: https://platform.rescale.com/api/v2/storage-devices/caaaa/file-downloads/
                      statuses: https://platform.rescale.com/api/v2/storage-devices/caaaa/statuses/
                    storageSize: 200
                    absoluteMountPoint: ~/storage_caaaa
                    availableSpace: 0
                    id: caaaa
                    firstAlert: 60
                    sshConnection: uprod.GPfam@34.227.30.123
                  - dateInserted: '2018-12-11T15:12:11.154340-08:00'
                    name: Sample Storage Three
                    autoextend: false
                    region:
                      id: pCTMk
                      name: us-east-1
                    hardware:
                      coresPerSlot: 18
                      coreType:
                        code: hpc-3
                        features:
                          - low_priority
                          - cluster_status
                        color: '#ff4242'
                        requiresTempSshAuth: false
                        io: 10 Gb/s
                        isPrimary: true
                        processorInfo: Intel Xeon E5-2666 v3 (Haswell)
                        displayOrder: 1
                        hasSsd: true
                        storage: 36
                        lowPriorityPrice: '0.1200'
                        memory: 3750
                        isDefault: true
                        defaultWalltime: null
                        description: HPC++
                        acronym: O
                        price: '0.1700'
                        gpuCounts:
                          - 0
                          - 0
                          - 0
                          - 0
                          - 0
                        mustBeRequested: false
                        isLowPriorityBeta: false
                        compute: '7.33'
                        name: Onyx
                        baseClockSpeed: '2.9'
                        walltimeRequired: false
                        remoteVizAllowed: true
                        cores:
                          - 1
                          - 2
                          - 4
                          - 8
                          - 18
                        storageIo: 2 GB/s read, 1GB/s write
                      coreSummary:
                        storagePerNode: 648
                        gpusPerNode: 0
                        numberOfNodes: 1
                        memoryPerNode: 60000
                      slots: 1
                      type: mountable_storage
                      walltime: 48
                    owner: support@rescale.com
                    secondAlert: 90
                    urls:
                      start: https://platform.rescale.com/api/v2/storage-devices/rCTMk/submit/
                      fileDownload: https://platform.rescale.com/api/v2/storage-devices/rCTMk/file-downloads/
                      statuses: https://platform.rescale.com/api/v2/storage-devices/rCTMk/statuses/
                    storageSize: 1024
                    absoluteMountPoint: ~/storage_rCTMk
                    availableSpace: 0
                    id: rCTMk
                    firstAlert: 60
                    sshConnection: null
                next: null
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Not Found
      x-codeSamples:
        - lang: curl
          label: cURL
          source: >-
            curl -H "Authorization: Token <api-token>"
            https://platform.rescale.com/api/v2/storage-devices/
        - lang: python
          label: Python
          source: |-
            import requests

            requests.get(
              'https://platform.rescale.com/api/v2/storage-devices/',
              headers={'Authorization': 'Token <api-token>'}
            )
      x-badges:
        - name: v2
          color: '#0b6fbf'
  /api/v2/storage-devices/{storage_device_id}/:
    get:
      tags:
        - Storage Devices
      summary: Get a Specific Storage Device
      operationId: get-a-specific-storage-device
      description: Retrieve the details of a saved storage device.
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  dateInserted:
                    type: string
                    format: date-time
                  name:
                    type: string
                  autoextend:
                    type: boolean
                  region:
                    type: object
                    properties:
                      id:
                        type: string
                      name:
                        type: string
                  hardware:
                    type: object
                    properties:
                      coresPerSlot:
                        type: integer
                      coreType:
                        type: object
                        properties:
                          code:
                            type: string
                          features:
                            type: array
                            items:
                              type: string
                          color:
                            type: string
                          requiresTempSshAuth:
                            type: boolean
                          io:
                            type: string
                          isPrimary:
                            type: boolean
                          processorInfo:
                            type: string
                          displayOrder:
                            type: integer
                          hasSsd:
                            type: boolean
                          storage:
                            type: integer
                          lowPriorityPrice:
                            type: string
                          memory:
                            type: integer
                          isDefault:
                            type: boolean
                          defaultWalltime:
                            type: 'null'
                          description:
                            type: string
                          acronym:
                            type: string
                          price:
                            type: string
                          gpuCounts:
                            type: array
                            items:
                              type: integer
                          mustBeRequested:
                            type: boolean
                          isLowPriorityBeta:
                            type: boolean
                          compute:
                            type: string
                          name:
                            type: string
                          baseClockSpeed:
                            type: string
                          walltimeRequired:
                            type: boolean
                          remoteVizAllowed:
                            type: boolean
                          cores:
                            type: array
                            items:
                              type: integer
                          storageIo:
                            type: string
                      coreSummary:
                        type: object
                        properties:
                          storagePerNode:
                            type: integer
                          gpusPerNode:
                            type: integer
                          numberOfNodes:
                            type: integer
                          memoryPerNode:
                            type: integer
                      slots:
                        type: integer
                      type:
                        type: string
                      walltime:
                        type: integer
                  owner:
                    type: string
                  secondAlert:
                    type: integer
                  urls:
                    type: object
                    properties:
                      start:
                        type: string
                        format: uri
                      fileDownload:
                        type: string
                        format: uri
                      statuses:
                        type: string
                        format: uri
                  storageSize:
                    type: integer
                  absoluteMountPoint:
                    type: string
                  availableSpace:
                    type: integer
                  id:
                    type: string
                  firstAlert:
                    type: integer
                  sshConnection:
                    type: 'null'
              example:
                dateInserted: '2018-12-11T15:12:11.154340-08:00'
                name: Sample Storage Three
                autoextend: false
                region:
                  id: pCTMk
                  name: us-east-1
                hardware:
                  coresPerSlot: 18
                  coreType:
                    code: hpc-3
                    features:
                      - low_priority
                      - cluster_status
                    color: '#ff4242'
                    requiresTempSshAuth: false
                    io: 10 Gb/s
                    isPrimary: true
                    processorInfo: Intel Xeon E5-2666 v3 (Haswell)
                    displayOrder: 1
                    hasSsd: true
                    storage: 36
                    lowPriorityPrice: '0.1200'
                    memory: 3750
                    isDefault: true
                    defaultWalltime: null
                    description: HPC++
                    acronym: O
                    price: '0.1700'
                    gpuCounts:
                      - 0
                      - 0
                      - 0
                      - 0
                      - 0
                    mustBeRequested: false
                    isLowPriorityBeta: false
                    compute: '7.33'
                    name: Onyx
                    baseClockSpeed: '2.9'
                    walltimeRequired: false
                    remoteVizAllowed: true
                    cores:
                      - 1
                      - 2
                      - 4
                      - 8
                      - 18
                    storageIo: 2 GB/s read, 1GB/s write
                  coreSummary:
                    storagePerNode: 648
                    gpusPerNode: 0
                    numberOfNodes: 1
                    memoryPerNode: 60000
                  slots: 1
                  type: mountable_storage
                  walltime: 48
                owner: support@rescale.com
                secondAlert: 90
                urls:
                  start: https://platform.rescale.com/api/v2/storage-devices/rCTMk/submit/
                  fileDownload: https://platform.rescale.com/api/v2/storage-devices/rCTMk/file-downloads/
                  statuses: https://platform.rescale.com/api/v2/storage-devices/rCTMk/statuses/
                storageSize: 1024
                absoluteMountPoint: ~/storage_rCTMk
                availableSpace: 0
                id: rCTMk
                firstAlert: 60
                sshConnection: null
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Not Found
      parameters:
        - name: storage_device_id
          in: path
          required: true
          schema:
            type: string
      x-codeSamples:
        - lang: curl
          label: cURL
          source: >-
            curl -H "Authorization: Token <api-token>"
            https://platform.rescale.com/api/v2/storage-devices/rCTMk/
        - lang: python
          label: Python
          source: |-
            import requests

            req = requests.get(
              'https://platform.rescale.com/api/v2/storage-devices/rCTMk',
              headers={'Authorization': 'Token <api-token>'}
            )
      x-badges:
        - name: v2
          color: '#0b6fbf'
    patch:
      tags:
        - Storage Devices
      summary: Update a Storage Device
      operationId: update-a-storage-device
      description: Updates editable details for a saved storage device.
      responses:
        '200':
          description: OK
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Not Found
      parameters:
        - name: storage_device_id
          in: path
          required: true
          schema:
            type: string
      x-codeSamples:
        - lang: curl
          label: cURL
          source: >-
            curl -H "Authorization: Token <api-token>"  -H "Content-Type:application/json"
            "https://platform.rescale.com/api/v2/storage-devices/GnHtk/" -X PATCH -d '

            {
                "name": "Storagey McStorageFace"
            }

            '
      x-badges:
        - name: v2
          color: '#0b6fbf'
  /api/v2/storage-devices/{storage_device_id}/statuses/:
    get:
      tags:
        - Storage Devices
      summary: List Storage Device Statuses
      operationId: list-storage-device-statuses
      description: >-
        This endpoint returns an ordered list of available storage device statuses. The first
        returned status is always the storage device's latest (current) status.
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  count:
                    type: integer
                  previous:
                    type: 'null'
                  results:
                    type: array
                    items:
                      type: object
                      properties:
                        status:
                          type: string
                        statusDate:
                          type: string
                          format: date-time
                        id:
                          type: string
                        statusReason:
                          type: 'null'
                  next:
                    type: 'null'
              example:
                count: 3
                previous: null
                results:
                  - status: Started
                    statusDate: '2018-12-11T15:15:22.527000-08:00'
                    id: kbbaac
                    statusReason: null
                  - status: Starting
                    statusDate: '2018-12-11T15:12:12.631000-08:00'
                    id: WyhoPb
                    statusReason: null
                  - status: Not Started
                    statusDate: '2018-12-11T15:12:10.610686-08:00'
                    id: FzuDXb
                    statusReason: null
                next: null
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Not Found
      parameters:
        - name: storage_device_id
          in: path
          required: true
          schema:
            type: string
      x-codeSamples:
        - lang: curl
          label: cURL
          source: >-
            curl -H "Authorization: Token <api-token>"
            https://platform.rescale.com/api/v2/storage-devices/rCTMk/statuses/
      x-badges:
        - name: v2
          color: '#0b6fbf'
  /api/v2/storage-devices/{storage_device_id}/files/{path}:
    get:
      tags:
        - Storage Devices
      summary: List Storage Device Files
      operationId: list-storage-device-files
      description: List files and directories for a given storage device.
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  count:
                    type: integer
                  nextUrl:
                    type: 'null'
                  results:
                    type: array
                    items:
                      type: object
                      properties:
                        name:
                          type: string
                        path:
                          type: string
                        fileType:
                          type: string
                        label:
                          type: 'null'
                        createdTime:
                          type: string
                          format: date-time
                        fileSize:
                          type: integer
                        owner:
                          type: string
                        lastModifiedTime:
                          type: string
                          format: date-time
              example:
                count: 4
                nextUrl: null
                results:
                  - name: blue
                    path: blue
                    fileType: DIRECTORY
                    label: null
                    createdTime: '2018-12-12T21:05:47Z'
                    fileSize: 4096
                    owner: uprod.jWVVk
                    lastModifiedTime: '2018-12-12T21:05:47Z'
                  - name: green.txt
                    path: green.txt
                    fileType: REGULAR_FILE
                    label: null
                    createdTime: '2018-12-12T21:05:52Z'
                    fileSize: 125375
                    owner: uprod.jWVVk
                    lastModifiedTime: '2018-12-12T21:05:52Z'
                  - name: shared
                    path: shared
                    fileType: DIRECTORY
                    label: null
                    createdTime: '2018-12-11T23:15:09Z'
                    fileSize: 4096
                    owner: uprod.jWVVk
                    lastModifiedTime: '2018-12-11T23:15:09Z'
                  - name: tmp
                    path: tmp
                    fileType: DIRECTORY
                    label: null
                    createdTime: '2018-12-11T23:15:20Z'
                    fileSize: 4096
                    owner: root
                    lastModifiedTime: '2018-12-11T23:15:20Z'
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Not Found
      parameters:
        - name: storage_device_id
          in: path
          required: true
          schema:
            type: string
        - name: path
          in: path
          required: true
          schema:
            type: string
      x-codeSamples:
        - lang: curl
          label: cURL
          source: >-
            curl -H "Authorization: Token <api-token>"
            https://platform.rescale.com/api/v2/storage-devices/rCTMk/files/
      x-badges:
        - name: v2
          color: '#0b6fbf'
  /api/v2/storage-devices/available-regions/:
    get:
      tags:
        - Storage Devices
      summary: List Available Regions
      operationId: list-available-regions
      description: This endpoint returns a list of regions available to create a storage device.
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  properties:
                    id:
                      type: string
                    name:
                      type: string
              example:
                - id: pCTMk
                  name: us-east-1
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Not Found
      x-codeSamples:
        - lang: curl
          label: cURL
          source: >-
            curl -H "Authorization: Token <api-token>"
            https://platform.rescale.com/api/v2/storage-devices/available-regions/
      x-badges:
        - name: v2
          color: '#0b6fbf'
  /api/v2/storage-devices/{storage_device_id}/submit/:
    post:
      tags:
        - Storage Devices
      summary: Submit a Storage Device
      operationId: submit-a-storage-device
      description: Submits and starts a saved storage device.
      responses:
        '200':
          description: OK
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Not Found
      parameters:
        - name: storage_device_id
          in: path
          required: true
          schema:
            type: string
      x-codeSamples:
        - lang: curl
          label: cURL
          source: >-
            curl -H "Authorization: Token <api-token>"
            https://platform.rescale.com/api/v2/storage-devices/GnHtk/submit/ -X POST
      x-badges:
        - name: v2
          color: '#0b6fbf'
  /api/v2/storage-devices/{storage_device_id}/shutdown/:
    post:
      tags:
        - Storage Devices
      summary: Terminate a Storage Device
      operationId: terminate-a-storage-device
      description: Sends a request to backup files and terminate a started storage device.
      responses:
        '200':
          description: OK
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Not Found
      parameters:
        - name: storage_device_id
          in: path
          required: true
          schema:
            type: string
      x-codeSamples:
        - lang: curl
          label: cURL
          source: >-
            curl -H "Authorization: Token <api-token>"
            https://platform.rescale.com/api/v2/storage-devices/GnHtk/shutdown/ -X POST
      x-badges:
        - name: v2
          color: '#0b6fbf'
  /api/v2/jobs/{job_id}/storage-devices/:
    post:
      tags:
        - Storage Devices
      summary: Attach a Storage Device to a Job
      operationId: attach-a-storage-device-to-a-job
      description: >-
        Attaches a started storage device to a saved job. Optionally, stages files/directories from
        the storage device to the job's work directory.
      responses:
        '200':
          description: OK
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Not Found
      parameters:
        - name: job_id
          in: path
          required: true
          schema:
            type: string
      x-codeSamples:
        - lang: curl
          label: cURL
          source: >-
            curl -H "Authorization: Token <api-token>"  -H "Content-Type:application/json"
            "https://platform.rescale.com/api/v2/jobs/LeeKa/storage-devices/" -X POST -d '

            {
                "storageDevice": { "id": "GnHtk" }
            }

            '
        - lang: python
          label: Python
          source: |-
            import requests

            requests.post(
              'https://platform.rescale.com/api/v2/jobs/LeeKa/storage-devices/',
              headers={'Content-Type': 'application/json',
                       'Authorization': 'Token <api-token>'},
              json={
                "storageDevice": { "id": "GnHtk" }
              }
            )
      x-badges:
        - name: v2
          color: '#0b6fbf'
  /api/v2/organizations/{organization}/projects/{projectId}/storage-devices/:
    get:
      tags:
        - Storage Devices
      summary: List All Storage Devices in a Project
      operationId: list-all-storage-devices-in-a-project
      description: >-
        This endpoint retrieves all the storage-devices visible to the authenticated user associated
        with the specified projectId
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  count:
                    type: integer
                  next:
                    type: 'null'
                  previous:
                    type: 'null'
                  results:
                    type: array
                    items:
                      type: object
                      properties:
                        id:
                          type: string
                        clusterId:
                          type: string
                        storageSize:
                          type: integer
                        dateInserted:
                          type: string
                          format: date-time
                        owner:
                          type: string
                        urls:
                          type: object
                          properties:
                            statuses:
                              type: string
                            start:
                              type: string
                            fileDownload:
                              type: string
                        sshConnection:
                          type: 'null'
                        name:
                          type: string
                        firstAlert:
                          type: 'null'
                        secondAlert:
                          type: 'null'
                        walltimeAlert:
                          type: 'null'
                        walltimeAlertHours:
                          type: 'null'
                        periodicAlertHours:
                          type: 'null'
                        toSharedUsers:
                          type: 'null'
                        toWorkspaceAdmins:
                          type: 'null'
                        autoextend:
                          type: boolean
                        autoextendPercent:
                          type: integer
                        region:
                          type: object
                          properties:
                            id:
                              type: string
                            name:
                              type: string
                        availableSpace:
                          type: integer
                        mountPoint:
                          type: string
                        absoluteMountPoint:
                          type: string
                        runLowPriority:
                          type: boolean
                        hardware:
                          type: object
                          properties:
                            slots:
                              type: integer
                            coresPerSlot:
                              type: integer
                            coreType:
                              type: object
                              properties:
                                code:
                                  type: string
                                compute:
                                  type: 'null'
                                io:
                                  type: integer
                                memory:
                                  type: integer
                                name:
                                  type: string
                                storage:
                                  type: integer
                                storageIo:
                                  type: string
                                cores:
                                  type: array
                                  items:
                                    type: integer
                                storagePerNodeGib:
                                  type: integer
                                description:
                                  type: string
                                displayOrder:
                                  type: integer
                                isPrimary:
                                  type: boolean
                                hasSsd:
                                  type: boolean
                                processorInfo:
                                  type: string
                                remoteVizAllowed:
                                  type: boolean
                                features:
                                  type: array
                                  items:
                                    type: string
                                mustBeRequested:
                                  type: boolean
                                acronym:
                                  type: string
                                color:
                                  type: string
                                isLowPriorityBeta:
                                  type: boolean
                                isDefault:
                                  type: boolean
                                baseClockSpeed:
                                  type: string
                                boostClockSpeed:
                                  type: 'null'
                                gpuCounts:
                                  type: array
                                  items:
                                    type: integer
                                gpuInfo:
                                  type: string
                                requiresTempSshAuth:
                                  type: boolean
                                permitPriorityCompute:
                                  type: boolean
                                permitLowPriorityCompute:
                                  type: boolean
                                permitReservedCompute:
                                  type: boolean
                                categoryCodes:
                                  type: array
                                  items: {}
                                networkInformation:
                                  type: 'null'
                                networkBandwidthGbps:
                                  type: string
                                networkLatencyUs:
                                  type: 'null'
                                memoryPerCoreGb:
                                  type: string
                                instructionSet:
                                  type: 'null'
                                storageInformation:
                                  type: string
                                isEbsBacked:
                                  type: boolean
                                supportsSuspension:
                                  type: boolean
                            coreSummary:
                              type: object
                              properties:
                                numberOfNodes:
                                  type: integer
                                memoryPerNode:
                                  type: integer
                                storagePerNode:
                                  type: integer
                                gpusPerNode:
                                  type: integer
                            walltime:
                              type: integer
                            coreClass:
                              type: 'null'
                            type:
                              type: string
                            scheduler:
                              type: object
                            rceConnector:
                              type: object
                            autosuspend:
                              type: boolean
                            instanceType:
                              type: object
                              properties:
                                apiName:
                                  type: string
                        analyses:
                          type: array
                          items:
                            type: object
                            properties:
                              code:
                                type: string
                              name:
                                type: string
                              version:
                                type: string
                              versionName:
                                type: string
                              thumbnail:
                                type: string
                              type:
                                type: string
                              osFamily:
                                type: string
                        projectId:
                          type: string
                        workspace:
                          type: object
                          properties:
                            id:
                              type: string
                            name:
                              type: string
                            configuredName:
                              type: string
                            description:
                              type: string
                            isDefault:
                              type: boolean
                            jobProjectRequired:
                              type: boolean
                            showBillingItems:
                              type: boolean
                            preventUsersCreatingTemplates:
                              type: boolean
                            preventUsersCreatingUntemplatedJobs:
                              type: boolean
                            rescaleAuthEnabled:
                              type: boolean
                            hardwarePriority:
                              type: string
                            isPartner:
                              type: boolean
                            priceSchema:
                              type: string
                            autoshareJobsWithWorkspaceAdministrators:
                              type: boolean
                        sharedWith:
                          type: array
                          items: {}
              example:
                count: 1
                next: null
                previous: null
                results:
                  - id: nkaaa
                    clusterId: fFvOc
                    storageSize: 1024
                    dateInserted: '2024-02-17T05:45:45.398153Z'
                    owner: wquinn@rescale.com
                    urls:
                      statuses: ''
                      start: ''
                      fileDownload: ''
                    sshConnection: null
                    name: Sample Storage Four
                    firstAlert: null
                    secondAlert: null
                    walltimeAlert: null
                    walltimeAlertHours: null
                    periodicAlertHours: null
                    toSharedUsers: null
                    toWorkspaceAdmins: null
                    autoextend: false
                    autoextendPercent: 80
                    region:
                      id: caaaa
                      name: N. Virginia
                    availableSpace: 0
                    mountPoint: storage_nkaaa
                    absoluteMountPoint: ~/storage_nkaaa
                    runLowPriority: false
                    hardware:
                      slots: 1
                      coresPerSlot: 18
                      coreType:
                        code: hpc-3
                        compute: null
                        io: 10
                        memory: 3750
                        name: Onyx
                        storage: 36
                        storageIo: 2 GB/s read, 1GB/s write
                        cores:
                          - 1
                          - 2
                          - 4
                          - 8
                          - 18
                        storagePerNodeGib: 648
                        description: HPC++
                        displayOrder: 50
                        isPrimary: true
                        hasSsd: true
                        processorInfo: Intel Xeon E5-2666 v3 (Haswell)
                        remoteVizAllowed: true
                        features:
                          - ssh
                          - cluster_status
                        mustBeRequested: false
                        acronym: O
                        color: '#ff4242'
                        isLowPriorityBeta: false
                        isDefault: true
                        baseClockSpeed: '2.9'
                        boostClockSpeed: null
                        gpuCounts:
                          - 0
                          - 0
                          - 0
                          - 0
                          - 0
                        gpuInfo: ''
                        requiresTempSshAuth: false
                        permitPriorityCompute: true
                        permitLowPriorityCompute: true
                        permitReservedCompute: true
                        categoryCodes: []
                        networkInformation: null
                        networkBandwidthGbps: '10.00'
                        networkLatencyUs: null
                        memoryPerCoreGb: '3.75'
                        instructionSet: null
                        storageInformation: 2 GB/s read, 1GB/s write
                        isEbsBacked: true
                        supportsSuspension: true
                      coreSummary:
                        numberOfNodes: 1
                        memoryPerNode: 60000
                        storagePerNode: 648
                        gpusPerNode: 0
                      walltime: 48
                      coreClass: null
                      type: mountable_storage
                      scheduler: {}
                      rceConnector: {}
                      autosuspend: true
                      instanceType:
                        apiName: c4.8xlarge
                    analyses:
                      - code: user_included
                        name: Bring Your Own Software
                        version: '0'
                        versionName: CPU
                        thumbnail: /static/img/icon-tools.png
                        type: compute
                        osFamily: linux
                    projectId: nkaaa
                    workspace:
                      id: 00-046880176
                      name: Rescale
                      configuredName: ''
                      description: ''
                      isDefault: true
                      jobProjectRequired: false
                      showBillingItems: true
                      preventUsersCreatingTemplates: false
                      preventUsersCreatingUntemplatedJobs: false
                      rescaleAuthEnabled: true
                      hardwarePriority: odp
                      isPartner: false
                      priceSchema: 2019r1
                      autoshareJobsWithWorkspaceAdministrators: false
                    sharedWith: []
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Not Found
      parameters:
        - name: organization
          in: path
          required: true
          schema:
            type: string
        - name: projectId
          in: path
          required: true
          schema:
            type: string
      x-codeSamples:
        - lang: curl
          label: cURL
          source: >-
            curl -H "Authorization: Token <api-token>" -H "Content-Type: application/json"
            "https://platform.rescale.com/api/v2/organizations/{organization}/projects/{projectId}/storage-devices/"
        - lang: python
          label: Python
          source: |-
            import requests

            requests.get(
              'https://platform.rescale.com/api/v2/organizations/{organization}/projects/{projectId}/storage-devices/',
              headers={'Authorization': 'Token <api-token>'}
            )
      x-badges:
        - name: v2
          color: '#0b6fbf'
  /api/v2/organizations/{organization}/storage-devices/{storage_device_id}/project-assignment/:
    get:
      tags:
        - Storage Devices
      summary: List Project Storage Device is Assigned To
      operationId: list-project-storage-device-is-assigned-to
      description: List the project ID of the project that a storage device is assigned to.
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  projectId:
                    type: string
              example:
                projectId: duOxgb
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Not Found
      parameters:
        - name: organization
          in: path
          required: true
          schema:
            type: string
        - name: storage_device_id
          in: path
          required: true
          schema:
            type: string
      x-codeSamples:
        - lang: curl
          label: cURL
          source: >-
            curl -H "Authorization: Token <api-token>" -H "Content-Type: application/json"
            "https://platform.rescale.com/api/v2/organizations/{organization}/storage-devices/{storage_device_id}/project-assignment/"
        - lang: python
          label: Python
          source: |-
            import requests

            requests.get(
              'https://platform.rescale.com/api/v2/organizations/{organization}/storage-devices/{storage_device_id}/project-assignment/',
              headers={'Content-Type': 'application/json', 'Authorization': 'Token <api-token>'}
            )
      x-badges:
        - name: v2
          color: '#0b6fbf'
  /api/v2/organizations/{organization}/storage-devices/{job_id}/project-assignment/:
    post:
      tags:
        - Storage Devices
      summary: Update Project Storage Device is Assigned To
      operationId: update-project-storage-device-is-assigned-to
      description: Update the project ID of the project that a storage device is assigned to.
      responses:
        '200':
          description: OK
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Not Found
      parameters:
        - name: organization
          in: path
          required: true
          schema:
            type: string
        - name: job_id
          in: path
          required: true
          schema:
            type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                projectId:
                  type: string
            example:
              projectId: duOxgb
      x-codeSamples:
        - lang: curl
          label: cURL
          source: >-
            curl -H "Authorization: Token <api-token>" -H "Content-Type: application/json"
            "https://platform.rescale.com/api/v2/organizations/{organization}/storage-devices/{storage_device_id}/project-assignment/"
            -X POST -d '

            {
              "projectId": "duOxgb"
            }

            '
        - lang: python
          label: Python
          source: |-
            import requests

            requests.post(
              'https://platform.rescale.com/api/v2/organizations/{organization}/storage-devices/{storage_device_id}/project-assignment/',
              headers={'Content-Type': 'application/json', 'Authorization': 'Token <api-token>'},
              json={'projectId': 'duOxgb'}
            )
      x-badges:
        - name: v2
          color: '#0b6fbf'
  /api/v2/billing/computeprices/:
    get:
      tags:
        - Prices
      summary: List All Compute Prices
      operationId: list-all-compute-prices
      description: >-
        This endpoint retrieves all the compute prices available to the user. A valid API token is
        required to make a successful request.
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  properties:
                    coreType:
                      type: string
                    os:
                      type: string
                    planType:
                      type: string
                    planName:
                      type: string
                    value:
                      type: object
                      properties:
                        currency:
                          type: string
                        amount:
                          type: string
                        symbol:
                          type: string
                    isActive:
                      type: boolean
              example:
                - coreType: sapphire
                  os: windows
                  planType: 2021-on-demand-pro
                  planName: 2021-on-demand-pro
                  value:
                    currency: USD
                    amount: '0.3231'
                    symbol: $
                  isActive: true
                - coreType: sapphire
                  os: windows
                  planType: 2021-on-demand
                  planName: 2021-on-demand
                  value:
                    currency: USD
                    amount: '0.3231'
                    symbol: $
                  isActive: true
                - coreType: sapphire
                  os: linux
                  planType: 2021-on-demand-pro
                  planName: 2021-on-demand-pro
                  value:
                    currency: USD
                    amount: '0.1789'
                    symbol: $
                  isActive: true
                - coreType: sapphire
                  os: linux
                  planType: 2021-on-demand
                  planName: 2021-on-demand
                  value:
                    currency: USD
                    amount: '0.0806'
                    symbol: $
                  isActive: true
                - coreType: emerald_max
                  os: linux
                  planType: 2021-on-demand
                  planName: 2021-on-demand
                  value:
                    currency: USD
                    amount: '0.0543'
                    symbol: $
                  isActive: true
                - coreType: emerald_max
                  os: linux
                  planType: 2021-on-demand-pro
                  planName: 2021-on-demand-pro
                  value:
                    currency: USD
                    amount: '0.0673'
                    symbol: $
                  isActive: true
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Not Found
      x-codeSamples:
        - lang: python
          label: Python
          source: |-
            import requests

            requests.get(
              'https://platform.rescale.com/api/v2/billing/computeprices/',
              headers={'Authorization': 'Token <api-token>'}
            )
      x-badges:
        - name: v2
          color: '#0b6fbf'
  /api/v2/users/me/projects/:
    get:
      tags:
        - Projects
      summary: List projects available to your user
      operationId: list-projects-available-to-your-user
      description: |-
        This endpoint lists all projects available to the current user. The available
        projects are those associated with the groups you are a member of, which in
        turn is configured by your organization or workspace administrator. A valid API
        token is required to make a successful request.
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  count:
                    type: integer
                  next:
                    type: 'null'
                  previous:
                    type: 'null'
                  results:
                    type: array
                    items:
                      type: object
                      properties:
                        id:
                          type: string
                        isDefault:
                          type: boolean
                        name:
                          type: string
                        remainingAmounts:
                          type: array
                          items:
                            type: string
              example:
                count: 2
                next: null
                previous: null
                results:
                  - id: pCTMk
                    isDefault: true
                    name: Project without a budget
                    remainingAmounts:
                      - (no budget)
                  - id: BNTMk
                    isDefault: false
                    name: Project with a budget
                    remainingAmounts:
                      - 'All: My budget ($100.00 available)'
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Not Found
      x-codeSamples:
        - lang: curl
          label: cURL
          source: >-
            curl -H "Authorization: Token <api-token>"
            https://platform.rescale.com/api/v2/users/me/projects/
        - lang: python
          label: Python
          source: |-
            import requests

            requests.get(
              'https://platform.rescale.com/api/v2/users/me/projects/',
              headers={'Authorization': 'Token <api-token>'}
            )
      x-badges:
        - name: v2
          color: '#0b6fbf'
  /api/v2/data/jobs:
    get:
      tags:
        - Data Access
      summary: List All Jobs Metadata
      operationId: list-all-jobs-metadata
      description: >-
        ***Beta API endpoints may change without notice, and this document may not reflect their
        current behavior.***
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  count:
                    type: integer
                  next:
                    type: string
                    format: uri
                  previous:
                    type: 'null'
                  results:
                    type: array
                    items:
                      type: object
                      properties:
                        dateCreated:
                          type: string
                        name:
                          type: string
                        status:
                          type: object
                          properties:
                            status:
                              type: string
                            statusDate:
                              type: string
                              format: date-time
                            statusReason:
                              type: string
                        owner:
                          type: string
                        workspace:
                          type: object
                          properties:
                            id:
                              type: string
                            name:
                              type: string
                        project:
                          type: object
                          properties:
                            id:
                              type: string
                            name:
                              type: string
                        hardware:
                          type: object
                          properties:
                            slots:
                              type: integer
                            coretype:
                              type: object
                              properties:
                                name:
                                  type: string
                                acronym:
                                  type: string
                            walltime:
                              type: integer
                            autosuspend:
                              type: boolean
                            coresPerSlot:
                              type: integer
                            clusterStartTime:
                              type: string
                              format: date-time
                        jobAnalyses:
                          type: array
                          items:
                            type: object
                            properties:
                              analysisName:
                                type: string
                              analysisType:
                                type: string
                              analysisVersion:
                                type: string
                        priority:
                          type: string
                        tags:
                          type: array
                          items:
                            type: string
                        customValues:
                          type: object
                        jobId:
                          type: string
                        study:
                          type: object
                          properties:
                            id:
                              type: string
                            name:
                              type: string
                            description:
                              type: string
              example:
                count: 9
                next: >-
                  https://platform.rescale.com/api/v2/data/jobs/?createdAfter=2024-11-13&createdBefore=2024-11-15&limit=2&offset=2
                previous: null
                results:
                  - dateCreated: '2024-11-14 21:34:36'
                    name: Rescale AI Workstation – Heat Exchanger Thermal Efficiency
                    status:
                      status: Completed
                      statusDate: '2024-11-16T21:45:24.409338+00:00'
                      statusReason: Exceeds job walltime
                    owner: chris@rescale.com
                    workspace:
                      id: 04-000265286
                      name: Automotive Division
                    project:
                      id: wMTMk
                      name: Project EV-Battery-4079
                    hardware:
                      slots: 1
                      coretype:
                        name: Grossular-1
                        acronym: Gr1
                      walltime: 48
                      autosuspend: false
                      coresPerSlot: 4
                      clusterStartTime: '2024-11-14T21:35:12+00:00'
                    jobAnalyses:
                      - analysisName: Rescale AI Physics Interactive Workflow
                        analysisType: compute
                        analysisVersion: '100324'
                    priority: odp
                    tags:
                      - aimodelhardware
                    customValues: {}
                    jobId: uXgTse
                    study:
                      id: P79-1
                      name: Heat Exchanger Thermal Efficiency
                      description: >-
                        **Objective**: Evaluate the heat dissipation efficiency of the new heat
                        exchanger design


                        **Approach**: Run multiple simulations with parameter sweeps


                        **Parameters**: Peak Temperature, Pressure Drop


                        **Simulation Tools**: Comsol


                        **Design Constraints**


                        Peak Temperature \< 400K


                        Pressure Drop \< 625 Pa


                        ![](/api/v3/study-attachments/b374e51551585c822ed1919b940493c06edb88f3498eb6821115e1af37fb5d9fe8fe05144d84f940b1bb7f0189f5b07ce04be9f6fa1f8cec87c2eeb1d27d1934/)
                  - dateCreated: '2024-11-14 20:12:54'
                    name: cfx_training_run_0
                    status:
                      status: Completed
                      statusDate: '2024-11-14T20:23:33.526723+00:00'
                      statusReason: Completed successfully
                    owner: chris@rescale.com
                    workspace:
                      id: 04-000265286
                      name: Automotive Division
                    project: {}
                    hardware:
                      slots: 1
                      coretype:
                        name: Grossular-1
                        acronym: Gr1
                      walltime: 48
                      autosuspend: false
                      coresPerSlot: 4
                      clusterStartTime: '2024-11-14T20:13:34+00:00'
                    jobAnalyses:
                      - analysisName: Rescale AI Physics
                        analysisType: compute
                        analysisVersion: '062024.1'
                    priority: odp
                    tags: []
                    customValues: {}
                    jobId: DKgTse
                    study: {}
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Not Found
      parameters:
        - name: fields
          in: query
          required: false
          schema:
            type: string
          description: Comma-separated list of fields to include in response.
        - name: createdBefore
          in: query
          required: false
          schema:
            type: string
          description: Filter for resources created before this timestamp.
        - name: createdAfter
          in: query
          required: false
          schema:
            type: string
          description: Filter for resources created after this timestamp.
        - name: limit
          in: query
          required: false
          schema:
            type: integer
          description: Limits the number of records returned.
      x-codeSamples:
        - lang: curl
          label: cURL
          source: >-
            curl -H "Authorization: Token <api-token>"
            https://platform.rescale.com/api/v2/data/jobs/
        - lang: python
          label: Python
          source: |-
            import requests

            requests.get(
              'https://platform.rescale.com/api/v2/jobs/',
              headers={'Authorization': 'Token <api-token>'}
            )

            # All parameters example
            requests.get(
              'https://platform.rescale.com/api/v2/data/jobs/?limit=5&offset=2&fields=job_internal_id,name,owner,job_id&createdBefore=2023-11-15',
              headers={'Authorization': 'Token <api-token>'}
            )
      x-badges:
        - name: v2
          color: '#0b6fbf'
  /api/v2/data/jobs/fields:
    get:
      tags:
        - Data Access
      summary: List Jobs metadata Fields
      operationId: list-jobs-metadata-fields
      description: >-
        ***Beta API endpoints may change without notice, and this document may not reflect their
        current behavior.***
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  fields:
                    type: array
                    items:
                      type: string
              example:
                fields:
                  - date_created
                  - name
                  - status
                  - owner
                  - workspace
                  - project
                  - hardware
                  - job_analyses
                  - priority
                  - tags
                  - custom_values
                  - job_id
                  - study
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Not Found
      x-codeSamples:
        - lang: curl
          label: cURL
          source: >-
            curl -H "Authorization: Token <api-token>"
            https://platform.rescale.com/api/v2/data/jobs/fields
        - lang: python
          label: Python
          source: |-
            import requests

            requests.get(
              'https://platform.rescale.com/api/v2/data/jobs/fields',
              headers={'Authorization': 'Token <api-token>'}
            )
      x-badges:
        - name: v2
          color: '#0b6fbf'
  /api/v2/organizations/{organization-code}/workspaces/{workspace-id}/members/:
    get:
      tags:
        - Members
      summary: List All Workspace Members
      operationId: list-all-workspace-members
      description: This endpoint retrieves all users in the specified workspace.
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  properties:
                    userId:
                      type: string
                    email:
                      type: string
                    fullName:
                      type: string
                    status:
                      type: string
                    groups:
                      type: array
                      items: {}
                    hasApiKey:
                      type: boolean
                    isOrganizationAdmin:
                      type: boolean
                    isWorkspaceAdmin:
                      type: boolean
                    dateJoined:
                      type: string
                      format: date-time
                    lastLogin:
                      type: string
                      format: date-time
              example:
                - userId: yCXPT
                  email: ada@example.com
                  fullName: Ada Lovelace
                  status: active
                  groups: []
                  hasApiKey: false
                  isOrganizationAdmin: true
                  isWorkspaceAdmin: false
                  dateJoined: '2020-09-21T15:45:55.861897Z'
                  lastLogin: '2020-09-08T16:09:37.729164Z'
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Not Found
      parameters:
        - name: organization-code
          in: path
          required: true
          schema:
            type: string
        - name: workspace-id
          in: path
          required: true
          schema:
            type: string
      x-codeSamples:
        - lang: curl
          label: cURL
          source: >-
            curl -H "Authorization: Token <api-token>"
            https://platform.rescale.com/api/v2/organizations/<organization-code>/workspaces/<workspace-id>/members/
        - lang: python
          label: Python
          source: |-
            import requests

            requests.get(
              'https://platform.rescale.com/api/v2/organizations/<organization-code>/workspaces/<workspace-id>/members/',
              headers={'Authorization': 'Token <api-token>'}
            )
      x-badges:
        - name: v2
          color: '#0b6fbf'
  /api/v2/organizations/{organization-code}/workspaces/{workspace-id}/invites/:
    post:
      tags:
        - Members
      summary: Invite Members to a Workspace
      operationId: invite-members-to-a-workspace
      description: >-
        Creates a record and sends an invite to the specified member emails to join the
        organization.
      responses:
        '200':
          description: OK
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Not Found
      parameters:
        - name: organization-code
          in: path
          required: true
          schema:
            type: string
        - name: workspace-id
          in: path
          required: true
          schema:
            type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: array
              items:
                type: object
                properties:
                  email:
                    type: string
                  fullName:
                    type: string
                  dateInvited:
                    type: string
                    format: date-time
                  status:
                    type: string
            example:
              - email: ada@example.com
                fullName: Ada Lovelace
                dateInvited: '2020-09-21T15:45:55.861897-07:00'
                status: invited
      x-codeSamples:
        - lang: curl
          label: cURL
          source: >-
            curl -H "Authorization: Token <api-token>" -H "Content-Type: application/json"
            "https://platform.rescale.com/api/v2/organizations/<organization-code>/workspaces/<workspace-id>/invites/"
            -X POST -d '

            [{"email":"ada@example.com", "fullName": "Ada Lovelace","groupId":""},...]

            '
        - lang: python
          label: Python
          source: |-
            import requests

            requests.post(
              'https://platform.rescale.com/api/v2/organizations/<organization-code>/workspaces/<workspace-id>/invites/',
              headers={'Content-Type': 'application/json',
                       'Authorization': 'Token <api-token>'},
              json=[{"email": "ada@example.com", "fullName": "Ada Lovelace", "groupId": ""}, ...]
            )
      x-badges:
        - name: v2
          color: '#0b6fbf'
  /api/v2/organizations/{organization-code}/workspaces/{workspace-id}/groups/:
    get:
      tags:
        - Groups
      summary: List Groups
      operationId: list-groups
      description: This endpoint retrieves all groups in the specified workspace.
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  properties:
                    id:
                      type: string
                    name:
                      type: string
                    memberCount:
                      type: integer
                    hardwareFilter:
                      type: 'null'
              example:
                - id: yCXPT
                  name: Aero Team
                  memberCount: 3
                  hardwareFilter: null
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Not Found
      parameters:
        - name: organization-code
          in: path
          required: true
          schema:
            type: string
        - name: workspace-id
          in: path
          required: true
          schema:
            type: string
      x-codeSamples:
        - lang: curl
          label: cURL
          source: >-
            curl -H "Authorization: Token <api-token>"
            https://platform.rescale.com/api/v2/organizations/<organization-code>/workspaces/<workspace-id>/groups/
        - lang: python
          label: Python
          source: |-
            import requests

            requests.get(
              'https://platform.rescale.com/api/v2/organizations/<organization-code>/workspaces/<workspace-id>/groups/',
              headers={'Authorization': 'Token <api-token>'}
            )
      x-badges:
        - name: v2
          color: '#0b6fbf'
    post:
      tags:
        - Groups
      summary: Create Group
      operationId: create-group
      description: Creates a group with the specified name.
      responses:
        '200':
          description: OK
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Not Found
      parameters:
        - name: organization-code
          in: path
          required: true
          schema:
            type: string
        - name: workspace-id
          in: path
          required: true
          schema:
            type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                id:
                  type: string
                name:
                  type: string
                memberCount:
                  type: integer
                hardwareFilter:
                  type: 'null'
            example:
              id: iaKbt
              name: Structural Team
              memberCount: 0
              hardwareFilter: null
      x-codeSamples:
        - lang: curl
          label: cURL
          source: >-
            curl -H "Authorization: Token <api-token>" -H "Content-Type: application/json"
            "https://platform.rescale.com/api/v2/organizations/<organization-code>/workspaces/<workspace-id>/groups/"
            -X POST -d '

            {"name": "Structural Team"}

            '
        - lang: python
          label: Python
          source: |-
            import requests

            requests.post(
              'https://platform.rescale.com/api/v2/organizations/<organization-code>/workspaces/<workspace-id>/groups/',
              headers={'Content-Type': 'application/json',
                       'Authorization': 'Token <api-token>'},
              json={"name": "Structural Team"}
            )
      x-badges:
        - name: v2
          color: '#0b6fbf'
  /api/v2/organizations/{organization-code}/workspaces/{workspace-id}/groups/{group-id}/members/:
    post:
      tags:
        - Groups
      summary: Add Members
      operationId: add-members
      description: Adds a member to the specified group.
      responses:
        '200':
          description: OK
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Not Found
      parameters:
        - name: organization-code
          in: path
          required: true
          schema:
            type: string
        - name: workspace-id
          in: path
          required: true
          schema:
            type: string
        - name: group-id
          in: path
          required: true
          schema:
            type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                email:
                  type: string
                groupId:
                  type: string
                groupName:
                  type: string
                isGroupAdmin:
                  type: boolean
            example:
              email: ada@example.com
              groupId: iaKbt
              groupName: Structural Team
              isGroupAdmin: false
      x-codeSamples:
        - lang: curl
          label: cURL
          source: >-
            curl -H "Authorization: Token <api-token>" -H "Content-Type: application/json"
            "https://platform.rescale.com/api/v2/organizations/<organization-code>/workspaces/<workspace-id>/groups/<group-id>/members/"
            -X POST -d '

            {"email": "ada@example.com"}

            '
        - lang: python
          label: Python
          source: |-
            import requests

            requests.post(
              'https://platform.rescale.com/api/v2/organizations/<organization-code>/workspaces/<workspace-id>/groups/<group-id>/members/',
              headers={'Content-Type': 'application/json',
                       'Authorization': 'Token <api-token>'},
              json={"email": "ada@example.com"}
            )
      x-badges:
        - name: v2
          color: '#0b6fbf'
  /api/v2/organizations/{organization-code}/workspaces/{workspace-id}/groups/{group-id}/members/{member-email}/:
    delete:
      tags:
        - Groups
      summary: Remove Members
      operationId: remove-members
      description: Removes the member with the specified email from the specified group.
      responses:
        '204':
          description: No Content
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Not Found
      parameters:
        - name: organization-code
          in: path
          required: true
          schema:
            type: string
        - name: workspace-id
          in: path
          required: true
          schema:
            type: string
        - name: group-id
          in: path
          required: true
          schema:
            type: string
        - name: member-email
          in: path
          required: true
          schema:
            type: string
      x-badges:
        - name: v2
          color: '#0b6fbf'
  /api/v2/organizations/{organization-code}/workspaces/{workspace-id}/groups/{group-id}/:
    patch:
      tags:
        - Groups
      summary: Assign Hardware Filter
      operationId: assign-hardware-filter
      description: Assigns a hardware filter to the specified group.
      responses:
        '200':
          description: OK
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Not Found
      parameters:
        - name: organization-code
          in: path
          required: true
          schema:
            type: string
        - name: workspace-id
          in: path
          required: true
          schema:
            type: string
        - name: group-id
          in: path
          required: true
          schema:
            type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                id:
                  type: string
                name:
                  type: string
                memberCount:
                  type: integer
                hardwareFilter:
                  type: object
                  properties:
                    id:
                      type: string
                    name:
                      type: string
                    filteredCoreTypes:
                      type: array
                      items:
                        type: object
                        properties:
                          code:
                            type: string
                          name:
                            type: string
                          processorInfo:
                            type: string
                          allowLowPriority:
                            type: boolean
                          allowPriority:
                            type: boolean
                    filteredCoreTypeSets:
                      type: array
                      items: {}
            example:
              id: iaKbt
              name: Structural Team
              memberCount: 3
              hardwareFilter:
                id: GbQWc
                name: High Clock-speed Only
                filteredCoreTypes:
                  - code: luna
                    name: Luna
                    processorInfo: Intel Xeon Platinum P-8124 @ 3.00GHz (Skylake)
                    allowLowPriority: true
                    allowPriority: false
                filteredCoreTypeSets: []
      x-codeSamples:
        - lang: curl
          label: cURL
          source: >-
            curl -H "Authorization: Token <api-token>" -H "Content-Type: application/json"
            "https://platform.rescale.com/api/v2/organizations/<organization-code>/workspaces/<workspace-id>/groups/<group-id>/"
            -X PATCH -d '

            {"hardwareFilter": {"id": "GbQWc"}}

            '
        - lang: python
          label: Python
          source: |-
            import requests

            requests.patch(
              'https://platform.rescale.com/api/v2/organizations/<organization-code>/workspaces/<workspace-id>/groups/<group-id>/',
              headers={'Content-Type': 'application/json',
                       'Authorization': 'Token <api-token>'},
              json={"hardwareFilter": {"id": "GbQWc"}}
            )
      x-badges:
        - name: v2
          color: '#0b6fbf'
  /api/v2/organizations/{organization-code}/workspaces/{workspace-id}/hardware-filters/:
    get:
      tags:
        - Hardware Filters
      summary: List Hardware Filters
      operationId: list-hardware-filters
      description: ''
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Not Found
      parameters:
        - name: organization-code
          in: path
          required: true
          schema:
            type: string
        - name: workspace-id
          in: path
          required: true
          schema:
            type: string
      x-badges:
        - name: v2
          color: '#0b6fbf'
    post:
      tags:
        - Hardware Filters
      summary: Create Hardware Filter
      operationId: create-hardware-filter
      description: Creates a hardware filter that can be applied to any group in the workspace.
      responses:
        '200':
          description: OK
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Not Found
      parameters:
        - name: organization-code
          in: path
          required: true
          schema:
            type: string
        - name: workspace-id
          in: path
          required: true
          schema:
            type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
      x-codeSamples:
        - lang: curl
          label: cURL
          source: >-
            curl -H "Authorization: Token <api-token>" -H "Content-Type: application/json"
            "https://platform.rescale.com/api/v2/organizations/<organization-code>/workspaces/<workspace-id>/hardware-filters/"
            -X POST -d '

            {
                "name": "High Clock-speed Only",
                "filteredCoreTypes": [
                  {
                      "code": "luna",
                      "name": "Luna",
                      "processorInfo": "Intel Xeon Platinum CPU",
                      "allowLowPriority": true,
                      "allowPriority": true
                  },
                  {
                      "code": "carbon",
                      "name": "Carbon",
                      "processorInfo": "Intel Xeon Platinum CPU",
                      "allowLowPriority": true,
                      "allowPriority": false
                  }
                ],
                "filteredCoreTypeSets": []
            }

            '
        - lang: python
          label: Python
          source: |-
            import requests

            requests.post(
              'https://platform.rescale.com/api/v2/organizations/<organization-code>/workspaces/<workspace-id>/hardware-filters/',
              headers={'Content-Type': 'application/json',
                       'Authorization': 'Token <api-token>'},
              json={
                "name": "High Clock-speed Only",
                "filteredCoreTypes": [
                  {
                      "code": "luna",
                      "name": "Luna",
                      "processorInfo": "Intel Xeon Platinum CPU",
                      "allowLowPriority": true,
                      "allowPriority": true
                  },
                  {
                      "code": "carbon",
                      "name": "Carbon",
                      "processorInfo": "Intel Xeon Platinum CPU",
                      "allowLowPriority": true,
                      "allowPriority": false
                  }
                ],
                "filteredCoreTypeSets": []  
              }
            )
      x-badges:
        - name: v2
          color: '#0b6fbf'
  /api/v2/organizations/{organization-code}/workspaces/{workspace-id}/available-analyses/:
    get:
      tags:
        - Software Restrictions
      summary: View All Available Software
      operationId: view-all-available-software
      description: Returns a list of all available software analyses and their versions.
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  properties:
                    name:
                      type: string
                    code:
                      type: string
                    versions:
                      type: array
                      items:
                        type: object
                        properties:
                          version:
                            type: string
                          versionCode:
                            type: string
              example:
                - name: Abaqus
                  code: abaqus
                  versions:
                    - version: 2020 (FlexNet Licensing)
                      versionCode: '2020'
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Not Found
      parameters:
        - name: organization-code
          in: path
          required: true
          schema:
            type: string
        - name: workspace-id
          in: path
          required: true
          schema:
            type: string
      x-badges:
        - name: v2
          color: '#0b6fbf'
  /api/v2/organizations/{organization-code}/workspaces/{workspace-id}/analysis-versions/:
    get:
      tags:
        - Software Restrictions
      summary: View Software Restrictions
      operationId: view-software-restrictions
      description: Returns a list of all analysis versions allowed for this workspace.
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  hasRestrictions:
                    type: boolean
                  analysisVersions:
                    type: array
                    items:
                      type: object
                      properties:
                        code:
                          type: string
                        name:
                          type: string
                        version:
                          type: string
                        versionName:
                          type: string
              example:
                hasRestrictions: true
                analysisVersions:
                  - code: abaqus
                    name: Abaqus
                    version: '2020'
                    versionName: 2020 (FlexNet Licensing)
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Not Found
      parameters:
        - name: organization-code
          in: path
          required: true
          schema:
            type: string
        - name: workspace-id
          in: path
          required: true
          schema:
            type: string
      x-badges:
        - name: v2
          color: '#0b6fbf'
    patch:
      tags:
        - Software Restrictions
      summary: Update Software Restrictions
      operationId: update-software-restrictions
      description: Update the set of software analyses and versions available to the workspace.
      responses:
        '200':
          description: OK
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Not Found
      parameters:
        - name: organization-code
          in: path
          required: true
          schema:
            type: string
        - name: workspace-id
          in: path
          required: true
          schema:
            type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                hasRestrictions:
                  type: boolean
                analysisVersions:
                  type: array
                  items:
                    type: object
                    properties:
                      code:
                        type: string
                      name:
                        type: string
                      version:
                        type: string
                      versionName:
                        type: string
            example:
              hasRestrictions: true
              analysisVersions:
                - code: abaqus
                  name: Abaqus
                  version: '2020'
                  versionName: 2020 (FlexNet Licensing)
      x-codeSamples:
        - lang: curl
          label: cURL
          source: >-
            curl -H "Authorization: Token <api-token>" -H "Content-Type: application/json"
            "https://platform.rescale.com/api/v2/organizations/<organization-code>/workspaces/<workspace-id>/analysis-versions/"
            -X PATCH -d '

            {
                "analysisVersions":[
                        {
                            "code": "abaqus",
                            "version": "2020",
                        },...
                    ]
            }

            '
        - lang: python
          label: Python
          source: |-
            import requests

            requests.patch(
              'https://platform.rescale.com/api/v2/organizations/<organization-code>/workspaces/<workspace-id>/analysis-versions/',
              headers={'Content-Type': 'application/json',
                       'Authorization': 'Token <api-token>'},
              json={
                      "analysisVersions":[
                              {
                                  "code": "abaqus",
                                  "version": "2020"
                              },...
                          ]
                  }
            )
      x-badges:
        - name: v2
          color: '#0b6fbf'
  /api/v2/organizations/{organization-code}/workspaces/{workspace-id}/billing/:
    get:
      tags:
        - Billing
      summary: View Workspace Billing Summary
      operationId: view-workspace-billing-summary
      description: Returns a summary of workspace charges for the specified period.
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  jobs:
                    type: integer
                  hardwareCharge:
                    type: number
                  softwareCharge:
                    type: integer
                  storageCharge:
                    type: number
                  transferCharge:
                    type: integer
                  connectionsCharge:
                    type: integer
                  deposits:
                    type: integer
                  appliedCredit:
                    type: integer
                  appliedDeposit:
                    type: number
                  totalCharge:
                    type: number
                  hardwareUsage:
                    type: integer
                  storageUsage:
                    type: integer
                  transferUsage:
                    type: integer
                  id:
                    type: string
                  label:
                    type: string
                  activeUsers:
                    type: integer
                  csvUrl:
                    type: string
              example:
                jobs: 12900
                hardwareCharge: 23573.02
                softwareCharge: 0
                storageCharge: 500.25
                transferCharge: 0
                connectionsCharge: 0
                deposits: 0
                appliedCredit: 0
                appliedDeposit: -24070.78
                totalCharge: 2.49
                hardwareUsage: 540882
                storageUsage: 0
                transferUsage: 0
                id: 04-0468913198
                label: Acme Co.
                activeUsers: 3
                csvUrl: >-
                  /organizations/acme/workspaces/04-0468913198/billing/csv/?startYear=2020&startMonth=9&endYear=2020&endMonth=9
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Not Found
      parameters:
        - name: organization-code
          in: path
          required: true
          schema:
            type: string
        - name: workspace-id
          in: path
          required: true
          schema:
            type: string
      x-badges:
        - name: v2
          color: '#0b6fbf'
  /api/v2/organizations/{organization_code}/workspaces/{workspace_id}/projects/:
    get:
      tags:
        - Projects
      summary: List projects available to a workspace
      operationId: list-projects-available-to-a-workspace
      description: |-
        This endpoint lists all projects available to the designated workspace. The
        response includes which groups are assigned to the project (if any), whether
        the project is the default in the workspace, the number of jobs and storage
        devices related to the project, and whether auto-share behavior is enabled for
        users in the project.
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  properties:
                    autoShareJobs:
                      type: boolean
                    groups:
                      type: array
                      items:
                        type: object
                        properties:
                          groupId:
                            type: string
                          groupName:
                            type: string
                          projectId:
                            type: string
                          priorityQueueManagement:
                            type: boolean
                    id:
                      type: string
                    jobCount:
                      type: integer
                    storageDeviceCount:
                      type: integer
                    name:
                      type: string
                    maxConcurrentCores:
                      type: integer
                    isDefault:
                      type: boolean
                    workspaceId:
                      type: string
              example:
                - autoShareJobs: false
                  groups:
                    - groupId: nkaaa
                      groupName: Test group
                      projectId: pCTMk
                      priorityQueueManagement: false
                  id: pCTMk
                  jobCount: 1
                  storageDeviceCount: 0
                  name: Test project
                  maxConcurrentCores: 42
                  isDefault: true
                  workspaceId: 00-046880176
                - autoShareJobs: true
                  groups: []
                  id: BNTMk
                  jobCount: 0
                  storageDeviceCount: 0
                  name: Real project
                  maxConcurrentCores: null
                  isDefault: false
                  workspaceId: 00-046880176
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Not Found
      parameters:
        - name: organization_code
          in: path
          required: true
          schema:
            type: string
        - name: workspace_id
          in: path
          required: true
          schema:
            type: string
      x-codeSamples:
        - lang: curl
          label: cURL
          source: >-
            curl -H 'Authorization: Token <api-token>'
            https://platform.rescale.com/api/v2/organizations/rescale/workspaces/00-046880176/projects/
        - lang: python
          label: Python
          source: |-
            import requests

            requests.get(
                'https://platform.rescale.com/api/v2/organizations/rescale/workspaces/00-046880176/projects/',
                headers={'Authorization': 'Token <api-token>'}
            )
      x-badges:
        - name: v2
          color: '#0b6fbf'
    post:
      tags:
        - Projects
      summary: Create a project
      operationId: create-a-project
      description: |-
        Add a new project in the given workspace, and return a description of the new
        project.
      responses:
        '200':
          description: OK
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Not Found
      parameters:
        - name: organization_code
          in: path
          required: true
          schema:
            type: string
        - name: workspace_id
          in: path
          required: true
          schema:
            type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                autoShareJobs:
                  type: boolean
                groups:
                  type: array
                  items: {}
                id:
                  type: string
                jobCount:
                  type: integer
                storageDeviceCount:
                  type: integer
                name:
                  type: string
                maxConcurrentCores:
                  type: integer
                isDefault:
                  type: boolean
                workspaceId:
                  type: string
            example:
              autoShareJobs: false
              groups: []
              id: pkaaa
              jobCount: 0
              storageDeviceCount: 0
              name: New project
              maxConcurrentCores: 42
              isDefault: false
              workspaceId: 00-046880176
      x-codeSamples:
        - lang: curl
          label: cURL
          source: >-
            curl -H 'Authorization: Token <api-token>' -H 'Content-Type: application/json' 
            https://platform.rescale.com/api/v2/organizations/rescale/workspaces/00-046880176/projects/
            -d '

            {
                "name": "New project",
                "isDefault": false,
                "autoShareJobs": false,
                "maxConcurrentCores": 42
            }

            '
        - lang: python
          label: Python
          source: |-
            import requests

            requests.post(
                'https://platform.rescale.com/api/v2/organizations/rescale/workspaces/00-046880176/projects/',
                headers={'Content-Type': 'application/json',
                         'Authorization': 'Token <api-token>'},
                json={
                    'name': 'New project',
                    'isDefault': False,
                    'autoShareJobs': False,
                    'maxConcurrentCores': 42
                }
            )
      x-badges:
        - name: v2
          color: '#0b6fbf'
  /api/v2/organizations/{organization_code}/workspaces/{workspace_id}/projects/{project_id}/:
    get:
      tags:
        - Projects
      summary: Get a specific project
      operationId: get-a-specific-project
      description: |-
        Retrieve information about the given project, including which groups are
        assigned to the project, if any, whether the project is the default in the
        workspace, the number of jobs and storage devices related to the project,
        and whether auto-share behavior is enabled for users in the project.
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  autoShareJobs:
                    type: boolean
                  groups:
                    type: array
                    items:
                      type: object
                      properties:
                        groupId:
                          type: string
                        groupName:
                          type: string
                        projectId:
                          type: string
                        priorityQueueManagement:
                          type: boolean
                  id:
                    type: string
                  jobCount:
                    type: integer
                  storageDeviceCount:
                    type: integer
                  name:
                    type: string
                  maxConcurrentCores:
                    type: integer
                  isDefault:
                    type: boolean
                  workspaceId:
                    type: string
              example:
                autoShareJobs: false
                groups:
                  - groupId: nkaaa
                    groupName: Test group
                    projectId: pCTMk
                    priorityQueueManagement: false
                id: pCTMk
                jobCount: 1
                storageDeviceCount: 0
                name: Test project
                maxConcurrentCores: 42
                isDefault: true
                workspaceId: 00-046880176
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Not Found
      parameters:
        - name: organization_code
          in: path
          required: true
          schema:
            type: string
        - name: workspace_id
          in: path
          required: true
          schema:
            type: string
        - name: project_id
          in: path
          required: true
          schema:
            type: string
      x-codeSamples:
        - lang: curl
          label: cURL
          source: >-
            curl -H 'Authorization: Token <api-token>'
            https://platform.rescale.com/api/v2/organizations/rescale/workspaces/00-046880176/projects/pCTMk/
        - lang: python
          label: Python
          source: |-
            import requests

            requests.get(
                'https://platform.rescale.com/api/v2/organizations/rescale/workspaces/00-046880176/projects/pCTMk/',
                headers={'Authorization': 'Token <api-token>'}
            )
      x-badges:
        - name: v2
          color: '#0b6fbf'
    patch:
      tags:
        - Projects
      summary: Update a project
      operationId: update-a-project
      description: |-
        Change the settings for a given project, and return a description of the updated
        project.
      responses:
        '200':
          description: OK
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Not Found
      parameters:
        - name: organization_code
          in: path
          required: true
          schema:
            type: string
        - name: workspace_id
          in: path
          required: true
          schema:
            type: string
        - name: project_id
          in: path
          required: true
          schema:
            type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                autoShareJobs:
                  type: boolean
                groups:
                  type: array
                  items: {}
                id:
                  type: string
                jobCount:
                  type: integer
                storageDeviceCount:
                  type: integer
                name:
                  type: string
                maxConcurrentCores:
                  type: 'null'
                isDefault:
                  type: boolean
                workspaceId:
                  type: string
            example:
              autoShareJobs: false
              groups: []
              id: pkaaa
              jobCount: 0
              storageDeviceCount: 0
              name: Updated project name
              maxConcurrentCores: null
              isDefault: false
              workspaceId: 00-046880176
      x-codeSamples:
        - lang: curl
          label: cURL
          source: >-
            curl -H 'Authorization: Token <api-token>' -H 'Content-Type: application/json' 
            https://platform.rescale.com/api/v2/organizations/rescale/workspaces/00-046880176/projects/pCTMk/
            -X PATCH -d '

            {
                "name": "Updated project name",
                "isDefault": false,
                "autoShareJobs": false,
                "maxConcurrentCores": null
            }

            '
        - lang: python
          label: Python
          source: |-
            import requests

            requests.patch(
                'https://platform.rescale.com/api/v2/organizations/rescale/workspaces/00-046880176/projects/pCTMk/',
                headers={'Content-Type': 'application/json',
                         'Authorization': 'Token <api-token>'},
                json={
                    'name': 'Updated project name',
                    'isDefault': False,
                    'autoShareJobs': False,
                    'maxConcurrentCores': None
                }
            )
      x-badges:
        - name: v2
          color: '#0b6fbf'
    delete:
      tags:
        - Projects
      summary: Delete a project
      operationId: delete-a-project
      description: Remove a project in the workspace.
      responses:
        '204':
          description: No Content
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Not Found
      parameters:
        - name: organization_code
          in: path
          required: true
          schema:
            type: string
        - name: workspace_id
          in: path
          required: true
          schema:
            type: string
        - name: project_id
          in: path
          required: true
          schema:
            type: string
      x-codeSamples:
        - lang: curl
          label: cURL
          source: >-
            curl -H 'Authorization: Token <api-token>'
            https://platform.rescale.com/api/v2/organizations/rescale/workspaces/00-046880176/projects/pCTMk/
            -X DELETE
        - lang: python
          label: Python
          source: |-
            import requests

            requests.delete(
                'https://platform.rescale.com/api/v2/organizations/rescale/workspaces/00-046880176/projects/pCTMk/',
                headers={'Authorization': 'Token <api-token>'}
            )
      x-badges:
        - name: v2
          color: '#0b6fbf'
  /api/v2/organizations/{organization_code}/workspaces/{workspace_id}/projects/{project_id}/groups/:
    post:
      tags:
        - Projects
      summary: Assign a group to a project
      operationId: assign-a-group-to-a-project
      description: |-
        Associate the given group and project, allowing group members to create jobs
        under the project.
      responses:
        '200':
          description: OK
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Not Found
      parameters:
        - name: organization_code
          in: path
          required: true
          schema:
            type: string
        - name: workspace_id
          in: path
          required: true
          schema:
            type: string
        - name: project_id
          in: path
          required: true
          schema:
            type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                groupId:
                  type: string
                groupName:
                  type: string
                projectId:
                  type: string
                priorityQueueManagement:
                  type: boolean
            example:
              groupId: pkaaa
              groupName: A group
              projectId: pCTMk
              priorityQueueManagement: false
      x-codeSamples:
        - lang: curl
          label: cURL
          source: >-
            curl -H 'Authorization: Token <api-token>' -H 'Content-Type: application/json' 
            https://platform.rescale.com/api/v2/organizations/rescale/workspaces/00-046880176/projects/pCTMk/groups/
            -d '

            {
                "groupId": "pkaaa"
            }

            '
        - lang: python
          label: Python
          source: |-
            import requests

            requests.post(
                'https://platform.rescale.com/api/v2/organizations/rescale/workspaces/00-046880176/projects/pCTMk/groups/',
                headers={'Content-Type': 'application/json',
                         'Authorization': 'Token <api-token>'},
                json={
                    'groupId': 'pkaaa'
                }
            )
      x-badges:
        - name: v2
          color: '#0b6fbf'
  /api/v2/organizations/{organization_code}/workspaces/{workspace_id}/projects/{project_id}/groups/{group_id}/:
    delete:
      tags:
        - Projects
      summary: Remove a group from a project
      operationId: remove-a-group-from-a-project
      description: |-
        Remove the association between a group and a project. Users in the group will
        no longer be able to submit jobs to the project, unless they are members of
        another group that still has an association.
      responses:
        '204':
          description: No Content
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Not Found
      parameters:
        - name: organization_code
          in: path
          required: true
          schema:
            type: string
        - name: workspace_id
          in: path
          required: true
          schema:
            type: string
        - name: project_id
          in: path
          required: true
          schema:
            type: string
        - name: group_id
          in: path
          required: true
          schema:
            type: string
      x-codeSamples:
        - lang: curl
          label: cURL
          source: >-
            curl -H 'Authorization: Token <api-token>'
            https://platform.rescale.com/api/v2/organizations/rescale/workspaces/00-046880176/projects/pCTMk/groups/pkaaa/
            -X DELETE
        - lang: python
          label: Python
          source: |-
            import requests

            requests.delete(
                'https://platform.rescale.com/api/v2/organizations/rescale/workspaces/00-046880176/projects/pCTMk/groups/pkaaa/',
                headers={'Authorization': 'Token <api-token>'}
            )
      x-badges:
        - name: v2
          color: '#0b6fbf'
  /api/v3/organizations/{organization}/projects/{projectId}/pending-queue/:
    get:
      tags:
        - Jobs
      summary: Get Pending Job Priority Queue (Project)
      operationId: get-pending-job-priority-queue-project
      description: >-
        View the Pending Job Priority Queue. This Queue is specific to a project. The lowest value
        (highest priority) is 0 and as the priority number increases, the lower in the priority
        queue the job is sitting (will be run later). This queue can be modified from the UI or by
        using the PATCH endpoint detailed below. The externalId of the project and job must be used
        for these endpoints.
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  count:
                    type: integer
                  next:
                    type: 'null'
                  previous:
                    type: 'null'
                  results:
                    type: array
                    items:
                      type: object
                      properties:
                        externalId:
                          type: string
                        job:
                          type: object
                          properties:
                            dateInserted:
                              type: string
                              format: date-time
                            id:
                              type: string
                            name:
                              type: string
                            owner:
                              type: integer
                            status:
                              type: string
                            visibility:
                              type: string
                            isTemplate:
                              type: boolean
                            clonedFrom:
                              type: 'null'
                            templatedFrom:
                              type: 'null'
                        isBarrier:
                          type: boolean
                        datePrioritized:
                          type: string
                          format: date-time
                        priority:
                          type: integer
              example:
                count: 2
                next: null
                previous: null
                results:
                  - externalId: PiyrZb
                    job:
                      dateInserted: '2025-03-05T19:40:27.550535Z'
                      id: LaQzac
                      name: Untitled Job
                      owner: 2247
                      status: Pending
                      visibility: Active
                      isTemplate: false
                      clonedFrom: null
                      templatedFrom: null
                    isBarrier: false
                    datePrioritized: '2025-03-05T19:40:34.052577Z'
                    priority: 0
                  - externalId: uwEEOb
                    job:
                      dateInserted: '2025-03-05T19:40:42.252769Z'
                      id: qoWNPb
                      name: Untitled Job (Duplicated)
                      owner: 2247
                      status: Pending
                      visibility: Active
                      isTemplate: false
                      clonedFrom: 859111
                      templatedFrom: null
                    isBarrier: false
                    datePrioritized: '2025-03-05T19:40:49.261510Z'
                    priority: 1
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Not Found
      parameters:
        - name: organization
          in: path
          required: true
          schema:
            type: string
        - name: projectId
          in: path
          required: true
          schema:
            type: string
      x-codeSamples:
        - lang: curl
          label: cURL
          source: >-
            curl -H "Authorization: Token <api-token>" -H "Content-Type: application/json"
            "https://platform.rescale.com/api/v3/organizations/{organization}/projects/{projectId}/pending-queue/"
            -X GET
        - lang: python
          label: Python
          source: |-
            import requests

            requests.get(
              'https://platform.rescale.com/api/v3/organizations/{organization}/projects/{projectId}/pending-queue/',
              headers={'Content-Type': 'application/json', 'Authorization': 'Token <api-token>'}
            )
      x-badges:
        - name: v3
          color: '#47ACEA'
  /api/v3/organizations/{organization}/projects/{projectId}/pending-queue/{jobId}/:
    patch:
      tags:
        - Jobs
      summary: Update Job Position in Pending Job Priority Queue (Project)
      operationId: update-job-position-in-pending-job-priority-queue-project
      description: >-
        Update the position of a job in the Pending Job Priority Queue. This Queue is specific to a
        project. The entire project Queue can be seen in the UI or using the GET endpoint descirbed
        above. The externalId of the project and job must be used for this endpoint. The number
        passed in will be the new priority value for the job in the priority queue. The lowest value
        (highest priority) is 0.
      responses:
        '200':
          description: OK
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Not Found
      parameters:
        - name: organization
          in: path
          required: true
          schema:
            type: string
        - name: projectId
          in: path
          required: true
          schema:
            type: string
        - name: jobId
          in: path
          required: true
          schema:
            type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                externalId:
                  type: string
                job:
                  type: object
                  properties:
                    dateInserted:
                      type: string
                      format: date-time
                    id:
                      type: string
                    name:
                      type: string
                    owner:
                      type: integer
                    status:
                      type: string
                    visibility:
                      type: string
                    isTemplate:
                      type: boolean
                    clonedFrom:
                      type: integer
                    templatedFrom:
                      type: 'null'
                isBarrier:
                  type: boolean
                datePrioritized:
                  type: string
                  format: date-time
                priority:
                  type: integer
            example:
              externalId: SngSn
              job:
                dateInserted: '2025-02-24T21:46:45.390190Z'
                id: eLtoDe
                name: Sample Job
                owner: 24169
                status: Pending
                visibility: Active
                isTemplate: false
                clonedFrom: 4596968
                templatedFrom: null
              isBarrier: false
              datePrioritized: '2025-02-24T21:46:54.611890Z'
              priority: 0
      x-codeSamples:
        - lang: curl
          label: cURL
          source: >-
            curl -H "Authorization: Token <api-token>" -H "Content-Type: application/json"
            "https://platform.rescale.com/api/v3/organizations/{organization}/projects/{projectId}/pending-queue/{jobId}/"
            -X PATCH -d '

            {
              "priority": 0
            }

            '
        - lang: python
          label: Python
          source: |-
            import requests

            requests.patch(
              'https://platform.rescale.com/api/v3/organizations/{organization}/projects/{projectId}/pending-queue/{jobId}/',
              headers={'Content-Type': 'application/json', 'Authorization': 'Token <api-token>'},
              json={'priority': 0}
            )
      x-badges:
        - name: v3
          color: '#47ACEA'
  /api/v3/users/me/folders/:
    get:
      tags:
        - Folders
      summary: List root folders
      operationId: list-root-folders
      description: >-
        This call allows you to retrieve the root folders for your user. The folder `MyJobs`
        contains all of your job folders, one for each of your active jobs. The folder `MyLibrary`
        is the root folder of your library files and folders.
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  MyJobs:
                    type: string
                  MyLibrary:
                    type: string
              example:
                MyJobs: pCTMz
                MyLibrary: BdTMk
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Not Found
      x-codeSamples:
        - lang: curl
          label: cURL
          source: |-
            curl -X GET -H 'Authorization: Token \<token\>'
            https://platform.rescale.com/api/v3/users/me/folders/
        - lang: python
          label: Python
          source: |-
            import requests

            requests.get(
              'https://platform.rescale.com/api/v3/users/me/folders/',
              headers={'Authorization': 'Token <api-token>'}
            )
      x-badges:
        - name: v3
          color: '#47ACEA'
  /api/v3/folders/{parent_folder_id}/:
    post:
      tags:
        - Folders
      summary: Create a folder
      operationId: create-a-folder
      description: >-
        This call allows you to create a new folder using the id of the parent folder to denote
        where you want to the folder created.

        Note that this operation is only possible within your `MyLibrary` directory. Job folders
        within your `MyJobs` directory are immutable.
      responses:
        '200':
          description: OK
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Not Found
      parameters:
        - name: parent_folder_id
          in: path
          required: true
          schema:
            type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
      x-codeSamples:
        - lang: curl
          label: cURL
          source: |-
            curl -X POST -H 'Authorization: Token \<token\>' -H "Content-Type: application/json"
            https://platform.rescale.com/api/v3/folders/{folder_id}/
            --data '{
                "name": "Brand new folder"
            }'
        - lang: python
          label: Python
          source: |-
            import requests

            requests.post(
              'https://platform.rescale.com/api/v3/folders/{folder_id}/',
              headers={'Content-Type': 'application/json',
                       'Authorization': 'Token <api-token>'},
              json={
                "name": "Brand new folder",
              }
            )
      x-badges:
        - name: v3
          color: '#47ACEA'
  /api/v3/folders/{folder_id}/:
    delete:
      tags:
        - Folders
      summary: Delete a folder
      operationId: delete-a-folder
      description: >-
        This call allows you to delete a folder and all of its contents: its files, its child
        folders and their descendants.
      responses:
        '204':
          description: No Content
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Not Found
      parameters:
        - name: folder_id
          in: path
          required: true
          schema:
            type: string
      x-codeSamples:
        - lang: curl
          label: cURL
          source: |-
            curl -X DELETE -H 'Authorization: Token \<token\>'
            https://platform.rescale.com/api/v3/folders/{folder_id}/
        - lang: python
          label: Python
          source: |-
            import requests

            requests.delete(
              'https://platform.rescale.com/api/v3/folders/{folder_id}/',
              headers={'Authorization': 'Token <api-token>'},
            )
      x-badges:
        - name: v3
          color: '#47ACEA'
  /api/v3/folders/{folder_id}:
    get:
      tags:
        - Folders
      summary: Get folder ancestry
      operationId: get-folder-ancestry
      description: >-
        This call allows you to view the ancestry of a folder: its parent folder(s) all the way up
        to the root folder.
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                  name:
                    type: string
                  dateInserted:
                    type: string
                    format: date-time
                  type:
                    type: string
                  ancestry:
                    type: array
                    items:
                      type: object
                      properties:
                        id:
                          type: string
                        name:
                          type: string
                  job:
                    type: 'null'
              example:
                id: thpAo
                name: level_3_folder
                dateInserted: '2023-08-07T18:47:39.946002Z'
                type: LibraryFolder
                ancestry:
                  - id: BNTMk
                    name: my_library
                  - id: cHewo
                    name: level_1_folder
                  - id: eFvOc
                    name: level_2_folder
                job: null
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Not Found
      parameters:
        - name: folder_id
          in: path
          required: true
          schema:
            type: string
      x-codeSamples:
        - lang: curl
          label: cURL
          source: |-
            curl -X GET -H 'Authorization: Token \<token\>'
            https://platform.rescale.com/api/v3/folders/{folder_id}/
        - lang: python
          label: Python
          source: |-
            import requests

            requests.get(
              'https://platform.rescale.com/api/v3/folders/{folder_id}/',
              headers={'Authorization': 'Token <api-token>'}
            )
      x-badges:
        - name: v3
          color: '#47ACEA'
  /api/v3/folders/{folder_id}/contents/:
    get:
      tags:
        - Folders
      summary: Get folder contents
      operationId: get-folder-contents
      description: >-
        This call allows you to view the metadata and contents of a folder, including child folders
        and files.

        However, to view the contents of its child folders, a separate request must be made.
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Not Found
      parameters:
        - name: folder_id
          in: path
          required: true
          schema:
            type: string
      x-codeSamples:
        - lang: curl
          label: cURL
          source: |-
            curl -X GET -H 'Authorization: Token \<token\>'
            https://platform.rescale.com/api/v3/folders/{folder_id}/contents/
        - lang: python
          label: Python
          source: |-
            import requests

            requests.get(
              'https://platform.rescale.com/api/v3/folders/{folder_id}/contents/',
              headers={'Authorization': 'Token <api-token>'}
            )
      x-badges:
        - name: v3
          color: '#47ACEA'
  /api/v3/folders/copy-to-device/:
    post:
      tags:
        - Folders
      summary: Download a file to Cloud Filesystem
      operationId: download-a-file-to-cloud-filesystem
      description: >-
        ***Beta API endpoints may change without notice, and this document may not reflect their
        current behavior.***
      responses:
        '200':
          description: OK
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Not Found
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: array
              items:
                type: object
                properties:
                  fileId:
                    type: string
                  success:
                    type: boolean
                  operationId:
                    type: string
                  error:
                    type: 'null'
                  status:
                    type: integer
            example:
              - fileId: fileId1
                success: true
                operationId: op-uuid-12345
                error: null
                status: 200
              - fileId: fileId2
                success: false
                operationId: null
                error: An error occurred
                status: 500
      x-codeSamples:
        - lang: curl
          label: cURL
          source: |-
            curl -X POST -H 'Authorization: Token \<token\>' -H "Content-Type: application/json"
            https://platform.rescale.com/api/v3/folders/copy-to-device/
            --data '{
                "fileIds": ["fileId1", "fileId2"]
            }'
        - lang: python
          label: Python
          source: |-
            import requests

            requests.post(
              'https://platform.rescale.com/api/v3/folders/copy-to-device/',
              headers={'Content-Type': 'application/json',
                       'Authorization': 'Token <api-token>'},
              json={
                'fileIds': ['fileId1', 'fileId2'],
              }
            )
      x-badges:
        - name: v3
          color: '#47ACEA'
  /api/v3/folders/copy-to-device/status/:
    get:
      tags:
        - Folders
      summary: Check the status of a file download to Cloud Filesystem
      operationId: check-the-status-of-a-file-download-to-cloud-filesystem
      description: >-
        ***Beta API endpoints may change without notice, and this document may not reflect their
        current behavior.***
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  properties:
                    id:
                      type: string
                    action:
                      type: string
                    inserted-at:
                      type: string
                    status:
                      type: string
                    status-changed-at:
                      type: string
                    status-reason:
                      type: string
                    updated-at:
                      type: string
              example:
                - id: op-uuid-12345
                  action: copy-file
                  inserted-at: Wed, 15 Jan 2025 21:58:55 GMT
                  status: SCHEDULED
                  status-changed-at: Wed, 15 Jan 2025 21:58:55 GMT
                  status-reason: New
                  updated-at: Wed, 15 Jan 2025 21:58:55 GMT
                - id: op-uuid-67890
                  action: copy-file
                  inserted-at: Wed, 15 Jan 2025 21:58:55 GMT
                  status: COMPLETED
                  status-changed-at: Wed, 15 Jan 2025 22:22:42 GMT
                  status-reason: Completed
                  updated-at: Wed, 15 Jan 2025 22:22:42 GMT
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Not Found
      x-codeSamples:
        - lang: curl
          label: cURL
          source: >-
            curl -H 'Authorization: Token \<token\>' -H "Content-Type: application/json"

            https://platform.rescale.com/api/v3/folders/copy-to-device/status/?operation_ids=<opId1>&operation_ids=<opId2>
        - lang: python
          label: Python
          source: |-
            import requests

            requests.get(
              'https://platform.rescale.com/api/v3/folders/copy-to-device/status/?operation_ids=<opId1>&operation_ids=<opId2>',
              headers={'Authorization': 'Token <api-token>'}
            )
      x-badges:
        - name: v3
          color: '#47ACEA'
  /api/v3/storage-devices/:
    post:
      tags:
        - Storage Devices
      summary: Create a Storage Device
      operationId: create-a-storage-device
      description: Creates and saves the storage device and its details.
      responses:
        '200':
          description: OK
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Not Found
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
      x-codeSamples:
        - lang: curl
          label: cURL
          source: >-
            curl -H "Authorization: Token <api-token>" -H "Content-Type: application/json"
            "https://platform.rescale.com/api/v2/storage-devices/" -d '

            {
               "name": "Sample Storage Four",
               "storageSize": 1024,
               "hardware": {
                  "walltime": 48,
               },
               "firstAlert": 60,
               "secondAlert": 90,
               "autoextend": true,
               "autoextendPercent": 80,
               "region": {
                  "id": "pCTMk"
               },
            }

            '
        - lang: python
          label: Python
          source: |-
            import requests

            requests.post(
              'https://platform.rescale.com/api/v2/storage-devices/',
              headers={'Content-Type': 'application/json',
                       'Authorization': 'Token <api-token>'},
              json={
                "name": "Sample Storage Four",
                "storageSize": 1024,
                "hardware": {
                    "walltime": 48,
                },
                "firstAlert": 60,
                "secondAlert": 90,
                "autoextend": true,
                "autoextendPercent": 80,
                "region": {
                  "id": "pCTMk"
                },
              }
            )
      x-badges:
        - name: v3
          color: '#47ACEA'
  /api/v3/storage-devices/{storage_device_id}/force-shutdown/:
    post:
      tags:
        - Storage Devices
      summary: Forcefully Terminate a Storage Device
      operationId: forcefully-terminate-a-storage-device
      description: >-
        Sends a request to forcefully shutdown a started storage device: files will NOT be backed up
        and any jobs attached to the storage device may not complete successfully.

        _Any data on the storage device will be lost and unrecoverable._ Use with caution.
      responses:
        '200':
          description: OK
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Not Found
      parameters:
        - name: storage_device_id
          in: path
          required: true
          schema:
            type: string
      x-codeSamples:
        - lang: curl
          label: cURL
          source: >-
            curl -H "Authorization: Token <api-token>"
            https://platform.rescale.com/api/v3/storage-devices/GnHtk/force-shutdown/ -X POST
      x-badges:
        - name: v3
          color: '#47ACEA'
  /api/v3/budgets/:
    get:
      tags:
        - Budgets
      summary: List All Budgets
      operationId: list-all-budgets
      description: >-
        This endpoint retrieves all the budgets available to the user. A valid API token is required
        to make a successful request.
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  properties:
                    count:
                      type: integer
                    next:
                      type: 'null'
                    previous:
                      type: 'null'
                    results:
                      type: array
                      items:
                        type: object
                        properties:
                          id:
                            type: string
                          user:
                            type: string
                          budgetOwner:
                            type: string
                          createDate:
                            type: string
                            format: date
                          budgetLevel:
                            type: string
                          budgetTarget:
                            type: string
                          budgetingUnit:
                            type: string
                          budgetedAmount:
                            type: string
                          name:
                            type: string
                          chargeType:
                            type: string
                          budgetType:
                            type: string
                          startDate:
                            type: string
                            format: date
                          endDate:
                            type: string
                            format: date
                          strictBudget:
                            type: boolean
              example:
                - count: 2
                  next: null
                  previous: null
                  results:
                    - id: ibSip
                      user: testing@rescale.com
                      budgetOwner: testing@rescale.com
                      createDate: '2025-05-12'
                      budgetLevel: Member
                      budgetTarget: EwEXc
                      budgetingUnit: cost
                      budgetedAmount: $20.00
                      name: Budget Test
                      chargeType: Compute-License
                      budgetType: One-time
                      startDate: '2024-04-01'
                      endDate: '2024-05-01'
                      strictBudget: false
                    - id: HEaJm
                      user: testing@rescale.com
                      budgetOwner: testing@rescale.com
                      createDate: '2025-05-12'
                      budgetLevel: Organization
                      budgetTarget:
                        - 04-003908786
                      budgetingUnit: core-hour
                      budgetedAmount: '1000000000.0000'
                      name: Multi WS Budget Test
                      budgetType: One-time
                      startDate: '2025-05-01'
                      endDate: '2025-06-01'
                      strictBudget: false
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Not Found
      x-codeSamples:
        - lang: python
          label: Python
          source: |-
            import requests

            requests.get(
              'https://platform.rescale.com/api/v3/budgets/',
              headers={'Authorization': 'Token <api-token>'}
            )
      x-badges:
        - name: v3
          color: '#47ACEA'
    post:
      tags:
        - Budgets
      summary: Create A New Budget
      operationId: create-a-new-budget
      description: >-
        This endpoint creates a new budget for the user. A valid API token is required to make a
        successful request.
      responses:
        '200':
          description: OK
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Not Found
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: string
            example: 'Successfully created Budget qOewo: API test'
      x-codeSamples:
        - lang: python
          label: Python
          source: |-
            import requests

            requests.post(
              'https://platform.rescale.com/api/v3/budgets/',
              headers={'Authorization': 'Token <api-token>'},
              body={
                "budget_level": "Member",
                "budget_target": "tdzEo",
                "budgeting_unit": "cost",
                "name": "API test",
                "budgeted_amount": "$9.00",
                "charge_type": "All",
                "budget_type": "One-time"
              }
            )
      x-badges:
        - name: v3
          color: '#47ACEA'
    patch:
      tags:
        - Budgets
      summary: Update A Budget
      operationId: update-a-budget
      description: >-
        This endpoint updates an existing budget for the user. A valid API token is required to make
        a successful request.
      responses:
        '200':
          description: OK
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Not Found
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: string
            example: 'Successfully updated Budget kaaaa: new fun name'
      x-codeSamples:
        - lang: python
          label: Python
          source: |-
            import requests

            requests.patch(
              'https://platform.rescale.com/api/v3/budgets/',
              headers={'Authorization': 'Token <api-token>'},
              body={"id": "kaaaa","name": "new fun name"}
            )
      x-badges:
        - name: v3
          color: '#47ACEA'
    delete:
      tags:
        - Budgets
      summary: Delete A Budget
      operationId: delete-a-budget
      description: >-
        This endpoint deletes an existing budget for the user. A valid API token is required to make
        a successful request.
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: string
              example: 'Successfully deleted Budget kaaaa: new fun name'
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Not Found
      x-codeSamples:
        - lang: python
          label: Python
          source: |-
            import requests

            requests.delete(
              'https://platform.rescale.com/api/v3/budgets/',
              headers={'Authorization': 'Token <api-token>'},
              body={"id": "kaaaa","name": "new fun name"}
            )
      x-badges:
        - name: v3
          color: '#47ACEA'
  /api/v3/organizations/{organization-code}/billing/csv/:
    get:
      tags:
        - Billing
      summary: View Organization Billing CSV Summary
      operationId: view-organization-billing-csv-summary
      description: This endpoint returns a csv summary of an organization charges for the specified period.
      responses:
        '200':
          description: OK
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Not Found
      parameters:
        - name: organization-code
          in: path
          required: true
          schema:
            type: string
      x-codeSamples:
        - lang: curl
          label: cURL
          source: >-
            curl -H "Authorization: Token <api-token>" -H "Content-Type: application/json"
            "https://platform.rescale.com/api/v3/organizations/<organization-code>/billing/csv/"
        - lang: python
          label: Python
          source: |-
            import requests

            requests.get(
            'https://platform.rescale.com/api/v3/organizations/{organization}/billing/csv/',
                headers={'Authorization': 'Token <api-token>'}
            )
      x-badges:
        - name: v3
          color: '#47ACEA'
  /api/v3/organizations/{organization-code}/workspaces/{workspace-id}/billing/csv/:
    get:
      tags:
        - Billing
      summary: View Workspace Billing CSV Summary
      operationId: view-workspace-billing-csv-summary
      description: >-
        This endpoint returns a csv summary of an member charges in an organization for the
        specified period.
      responses:
        '200':
          description: OK
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Not Found
      parameters:
        - name: organization-code
          in: path
          required: true
          schema:
            type: string
        - name: workspace-id
          in: path
          required: true
          schema:
            type: string
      x-codeSamples:
        - lang: curl
          label: cURL
          source: >-
            curl -H "Authorization: Token <api-token>" -H "Content-Type: application/json"
            "https://platform.rescale.com/api/v3/organizations/<organization-code>/workspaces/<workspace-id>/billing/csv/"
        - lang: python
          label: Python
          source: >-
            import requests


            requests.get(

            'https://platform.rescale.com/api/v3/organizations/{organization}/workspaces/{workspace}/billing/csv/',
                headers={'Authorization': 'Token <api-token>'}
            )
      x-badges:
        - name: v3
          color: '#47ACEA'
  /api/v3/organizations/{organization-code}/billing/members/{email}/csv/:
    get:
      tags:
        - Billing
      summary: View Members Billing CSV Summary
      operationId: view-members-billing-csv-summary
      description: >-
        `GET
        https://platform.rescale.com/api/v3/organizations/<organization-code>/workspaces/<workspace-id>/billing/members/<email>/csv/`
      responses:
        '200':
          description: OK
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Not Found
      parameters:
        - name: organization-code
          in: path
          required: true
          schema:
            type: string
        - name: email
          in: path
          required: true
          schema:
            type: string
      x-codeSamples:
        - lang: curl
          label: cURL
          source: >-
            curl -H "Authorization: Token <api-token>" -H "Content-Type: application/json"
            "https://platform.rescale.com/api/v3/organizations/<organization-code>/billing/members/<email>/csv/"
        - lang: python
          label: Python
          source: >-
            import requests


            requests.get(

            'https://platform.rescale.com/api/v3/organizations/{organization}/billing/members/{email}/csv/',
                headers={'Authorization': 'Token <api-token>'}
            )
      x-badges:
        - name: v3
          color: '#47ACEA'
  /api/v3/organizations/{organization}/billing/projects/{projectId}/csv/:
    get:
      tags:
        - Billing
      summary: View Project Billing CSV Summary
      operationId: view-project-billing-csv-summary
      description: >-
        `GET
        https://platform.rescale.com/api/v3/organizations/{organization}/workspaces/{workspace}/billing/projects/{projectId}/csv/`
      responses:
        '200':
          description: OK
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Not Found
      parameters:
        - name: organization
          in: path
          required: true
          schema:
            type: string
        - name: projectId
          in: path
          required: true
          schema:
            type: string
      x-codeSamples:
        - lang: curl
          label: cURL
          source: >-
            curl -H "Authorization: Token <api-token>" -H "Content-Type: application/json"
            "https://platform.rescale.com/api/v3/organizations/{organization}/workspaces/{workspace}/billing/projects/{projectId}/csv/"
        - lang: python
          label: Python
          source: |-
            import requests

            requests.get(
                'https://platform.rescale.com/api/v3/organizations/{organization}/workspaces/{workspace}/billing/projects/{projectId}/csv/',
                headers={'Authorization': 'Token <api-token>'}
            )
      x-badges:
        - name: v3
          color: '#47ACEA'
  /api/v3/workflows/:
    get:
      operationId: listWorkflows
      summary: List workflows
      tags:
        - Workflows
      parameters:
        - name: search
          in: query
          schema:
            type: string
          description: Search workflows by name
        - name: user
          in: query
          schema:
            type: string
            enum:
              - owned
              - shared
              - user_all
          description: Filter by ownership
        - name: ordering
          in: query
          schema:
            type: string
            enum:
              - name
              - '-name'
              - date_inserted
              - '-date_inserted'
          description: >-
            Sort order for results. Prefix with `-` for descending. Values are snake_case (query
            parameters are not camelCase-converted).
        - $ref: '#/components/parameters/Page'
        - $ref: '#/components/parameters/PageSize'
      responses:
        '200':
          description: Paginated list of workflows
          content:
            application/json:
              schema:
                type: object
                required:
                  - count
                  - results
                properties:
                  count:
                    type: integer
                    description: Total number of results
                  next:
                    type:
                      - string
                      - 'null'
                    format: uri
                    description: URL to the next page of results, or null if no more pages
                  previous:
                    type:
                      - string
                      - 'null'
                    format: uri
                    description: URL to the previous page of results, or null if on first page
                  results:
                    type: array
                    items:
                      $ref: '#/components/schemas/WorkflowListItem'
          links:
            GetWorkflow:
              operationId: getWorkflow
              description: >-
                Retrieve a specific workflow from the list. Use the `id` field from any item in
                `results` as the `workflowId` path parameter.
        '401':
          description: Authentication credentials were not provided or are invalid
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '403':
          description: Permission denied
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      x-badges:
        - name: v3
          color: '#47ACEA'
    post:
      operationId: createWorkflow
      summary: Create a workflow
      tags:
        - Workflows
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/WorkflowCreateRequest'
      responses:
        '201':
          description: Workflow created
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Workflow'
          links:
            GetWorkflow:
              operationId: getWorkflow
              parameters:
                workflowId: $response.body#/id
              description: Retrieve the newly created workflow by its ID
            SubmitWorkflow:
              operationId: submitWorkflow
              parameters:
                workflowId: $response.body#/id
              description: Submit the newly created workflow for execution
        '400':
          description: Validation error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ValidationErrorResponse'
        '401':
          description: Authentication credentials were not provided or are invalid
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '403':
          description: Permission denied
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      x-badges:
        - name: v3
          color: '#47ACEA'
  /api/v3/workflows/{workflowId}/:
    get:
      operationId: getWorkflow
      summary: Retrieve a workflow
      tags:
        - Workflows
      parameters:
        - $ref: '#/components/parameters/WorkflowId'
      responses:
        '200':
          description: Workflow details
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Workflow'
          links:
            UpdateWorkflow:
              operationId: updateWorkflow
              parameters:
                workflowId: $response.body#/id
              description: Update this workflow's metadata or blob
            DeleteWorkflow:
              operationId: deleteWorkflow
              parameters:
                workflowId: $response.body#/id
              description: Delete this workflow
            SubmitWorkflow:
              operationId: submitWorkflow
              parameters:
                workflowId: $response.body#/id
              description: Submit this workflow for execution
            ListWorkflowAllowedUsers:
              operationId: listWorkflowAllowedUsers
              parameters:
                workflowId: $response.body#/id
              description: List users with access to this workflow
        '401':
          description: Authentication credentials were not provided or are invalid
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '403':
          description: Permission denied
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '404':
          description: Workflow not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      x-badges:
        - name: v3
          color: '#47ACEA'
    patch:
      operationId: updateWorkflow
      summary: Update a workflow
      tags:
        - Workflows
      parameters:
        - $ref: '#/components/parameters/WorkflowId'
      description: |
        Update workflow metadata and/or workflow blob. If a `workflow` blob is
        included, a new version is created with an incremented version number.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/WorkflowUpdateRequest'
      responses:
        '200':
          description: Workflow updated
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Workflow'
        '400':
          description: Validation error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ValidationErrorResponse'
        '401':
          description: Authentication credentials were not provided or are invalid
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '403':
          description: Permission denied
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '404':
          description: Workflow not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      x-badges:
        - name: v3
          color: '#47ACEA'
    delete:
      operationId: deleteWorkflow
      summary: Delete a workflow
      tags:
        - Workflows
      parameters:
        - $ref: '#/components/parameters/WorkflowId'
      description: Deletes the workflow. Fails if the workflow is currently running.
      responses:
        '204':
          description: Workflow deleted
        '400':
          description: Workflow is running and cannot be deleted
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '401':
          description: Authentication credentials were not provided or are invalid
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '403':
          description: Permission denied
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '404':
          description: Workflow not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      x-badges:
        - name: v3
          color: '#47ACEA'
  /api/v3/workflows/{workflowId}/submit/:
    post:
      operationId: submitWorkflow
      summary: Submit a workflow for execution
      tags:
        - Workflows
      parameters:
        - $ref: '#/components/parameters/WorkflowId'
      description: |
        Submit the workflow's latest version for execution. Validates provided
        parameters against the workflow's parameter definitions.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/WorkflowSubmitRequest'
      responses:
        '201':
          description: Workflow run created
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WorkflowRun'
          links:
            GetWorkflowRun:
              operationId: getWorkflowRun
              parameters:
                workflowRunId: $response.body#/id
              description: Retrieve the newly created workflow run by its ID
            StopWorkflowRun:
              operationId: stopWorkflowRun
              parameters:
                workflowRunId: $response.body#/id
              description: Stop the newly created workflow run
        '400':
          description: Validation error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ValidationErrorResponse'
        '401':
          description: Authentication credentials were not provided or are invalid
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '403':
          description: Permission denied
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '429':
          description: Rate limit exceeded (250 submissions per hour)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      x-badges:
        - name: v3
          color: '#47ACEA'
  /api/v3/workflows/{workflowId}/allowed-users/:
    get:
      operationId: listWorkflowAllowedUsers
      summary: List users with access to a workflow
      tags:
        - Workflow Sharing
      parameters:
        - $ref: '#/components/parameters/WorkflowId'
        - $ref: '#/components/parameters/Page'
        - $ref: '#/components/parameters/PageSize'
      responses:
        '200':
          description: Paginated list of permissions
          content:
            application/json:
              schema:
                type: object
                required:
                  - count
                  - results
                properties:
                  count:
                    type: integer
                    description: Total number of results
                  next:
                    type:
                      - string
                      - 'null'
                    format: uri
                    description: URL to the next page of results, or null if no more pages
                  previous:
                    type:
                      - string
                      - 'null'
                    format: uri
                    description: URL to the previous page of results, or null if on first page
                  results:
                    type: array
                    items:
                      $ref: '#/components/schemas/WorkflowPermission'
        '401':
          description: Authentication credentials were not provided or are invalid
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '403':
          description: Permission denied
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '404':
          description: Workflow not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      x-badges:
        - name: v3
          color: '#47ACEA'
    post:
      operationId: shareWorkflow
      summary: Share a workflow with a user
      tags:
        - Workflow Sharing
      parameters:
        - $ref: '#/components/parameters/WorkflowId'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ShareRequest'
      responses:
        '201':
          description: Permission created
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WorkflowPermission'
          links:
            ListWorkflowAllowedUsers:
              operationId: listWorkflowAllowedUsers
              description: List all users with access to this workflow after sharing
        '400':
          description: Validation error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ValidationErrorResponse'
        '401':
          description: Authentication credentials were not provided or are invalid
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '403':
          description: Permission denied
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '404':
          description: Workflow not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      x-badges:
        - name: v3
          color: '#47ACEA'
    delete:
      operationId: revokeWorkflowAccess
      summary: Revoke a user's access to a workflow
      tags:
        - Workflow Sharing
      parameters:
        - $ref: '#/components/parameters/WorkflowId'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ShareRequest'
      responses:
        '204':
          description: Access revoked
        '401':
          description: Authentication credentials were not provided or are invalid
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '403':
          description: Permission denied
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '404':
          description: Workflow not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      x-badges:
        - name: v3
          color: '#47ACEA'
  /api/v3/workflow-runs/:
    get:
      operationId: listWorkflowRuns
      summary: List workflow runs
      tags:
        - Workflow Runs
      parameters:
        - name: workflow_id
          in: query
          schema:
            type: string
          description: Filter by workflow ID (obfuscated)
        - name: ordering
          in: query
          schema:
            type: string
            enum:
              - workflow_run_name
              - '-workflow_run_name'
              - date_inserted
              - '-date_inserted'
              - latest_status
              - '-latest_status'
          description: >-
            Sort order for results. Prefix with `-` for descending. Values are snake_case (query
            parameters are not camelCase-converted).
        - $ref: '#/components/parameters/Page'
        - $ref: '#/components/parameters/PageSize'
      responses:
        '200':
          description: Paginated list of workflow runs
          content:
            application/json:
              schema:
                type: object
                required:
                  - count
                  - results
                properties:
                  count:
                    type: integer
                    description: Total number of results
                  next:
                    type:
                      - string
                      - 'null'
                    format: uri
                    description: URL to the next page of results, or null if no more pages
                  previous:
                    type:
                      - string
                      - 'null'
                    format: uri
                    description: URL to the previous page of results, or null if on first page
                  results:
                    type: array
                    items:
                      $ref: '#/components/schemas/WorkflowRunListItem'
          links:
            GetWorkflowRun:
              operationId: getWorkflowRun
              description: >-
                Retrieve a specific workflow run from the list. Use the `id` field from any item in
                `results` as the `workflowRunId` path parameter.
        '401':
          description: Authentication credentials were not provided or are invalid
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '403':
          description: Permission denied
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      x-badges:
        - name: v3
          color: '#47ACEA'
  /api/v3/workflow-runs/{workflowRunId}/:
    get:
      operationId: getWorkflowRun
      summary: Retrieve a workflow run
      tags:
        - Workflow Runs
      parameters:
        - $ref: '#/components/parameters/WorkflowRunId'
      responses:
        '200':
          description: Workflow run details
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WorkflowRun'
          links:
            StopWorkflowRun:
              operationId: stopWorkflowRun
              parameters:
                workflowRunId: $response.body#/id
              description: Stop this workflow run
        '401':
          description: Authentication credentials were not provided or are invalid
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '403':
          description: Permission denied
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '404':
          description: Workflow run not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      x-badges:
        - name: v3
          color: '#47ACEA'
    patch:
      operationId: updateWorkflowRun
      summary: Update a workflow run name
      tags:
        - Workflow Runs
      parameters:
        - $ref: '#/components/parameters/WorkflowRunId'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
                - workflowRunName
              properties:
                workflowRunName:
                  type: string
                  maxLength: 200
                  description: New name for the workflow run
      responses:
        '200':
          description: Workflow run updated
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WorkflowRun'
        '400':
          description: Validation error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ValidationErrorResponse'
        '401':
          description: Authentication credentials were not provided or are invalid
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '403':
          description: Permission denied
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      x-badges:
        - name: v3
          color: '#47ACEA'
  /api/v3/workflow-runs/{workflowRunId}/stop/:
    post:
      operationId: stopWorkflowRun
      summary: Stop a running workflow
      tags:
        - Workflow Runs
      parameters:
        - $ref: '#/components/parameters/WorkflowRunId'
      description: |
        Stop a workflow run that is in `queued` or `running` state.
        Stops all running nodes (jobs, workstations, storage devices).
      responses:
        '200':
          description: Stop initiated
          content:
            application/json:
              schema:
                type: object
                properties:
                  detail:
                    type: string
                    description: Confirmation message that the stop was initiated
        '400':
          description: Workflow run is not in a stoppable state
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '401':
          description: Authentication credentials were not provided or are invalid
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '403':
          description: Permission denied
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '404':
          description: Workflow run not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      x-badges:
        - name: v3
          color: '#47ACEA'
components:
  securitySchemes:
    TokenAuth:
      type: apiKey
      in: header
      name: Authorization
      description: Use the format `Token <api-token>`.
    apiKeyAuth:
      type: apiKey
      in: header
      name: Authorization
      description: |
        API key authentication. Enter the full value including the prefix:
        `Token <api-key>` (e.g., `Token abc123def456`)
    bearerAuth:
      type: http
      scheme: bearer
      bearerFormat: JWT
      description: JWT access token (PS256, 30-minute lifetime)
    sessionAuth:
      type: apiKey
      in: cookie
      name: sessionid
      description: Session cookie authentication. Requires CSRF token in X-CSRFToken header.
  parameters:
    WorkflowId:
      name: workflowId
      in: path
      required: true
      schema:
        type: string
      description: Obfuscated workflow ID
    WorkflowRunId:
      name: workflowRunId
      in: path
      required: true
      schema:
        type: string
      description: Obfuscated workflow run ID
    Page:
      name: page
      in: query
      schema:
        type: integer
        minimum: 1
        default: 1
      description: Page number for pagination
    PageSize:
      name: page_size
      in: query
      schema:
        type: integer
        minimum: 1
        maximum: 1000
        default: 10
      description: Number of results per page (default 10, max 1000)
  schemas:
    Owner:
      description: The owner of a workflow or workflow run.
      type: object
      required:
        - email
        - userId
      properties:
        email:
          type: string
          format: email
          description: Email address of the owner
        userId:
          type: string
          description: Obfuscated user ID of the owner
    WorkflowListItem:
      description: Summary representation of a workflow, returned in list responses.
      type: object
      required:
        - id
        - name
        - description
        - owner
        - dateInserted
        - sharedWith
      properties:
        id:
          type: string
          readOnly: true
          description: Obfuscated workflow ID
        name:
          type: string
          description: Workflow name
        description:
          type: string
          description: Workflow description
        owner:
          $ref: '#/components/schemas/Owner'
          readOnly: true
          description: User who created this workflow
        dateInserted:
          type: string
          format: date-time
          readOnly: true
          description: Timestamp when the workflow was created
        sharedWith:
          type: array
          items:
            $ref: '#/components/schemas/WorkflowPermission'
          readOnly: true
          description: List of permission entries for users/groups with access
    Workflow:
      description: Full representation of a workflow, including its markup blob.
      type: object
      required:
        - id
        - name
        - description
        - owner
        - dateInserted
        - sharedWith
        - workflow
        - latestVersion
      properties:
        id:
          type: string
          readOnly: true
          description: Obfuscated workflow ID
        name:
          type: string
          description: Workflow name
        description:
          type: string
          description: Workflow description
        owner:
          $ref: '#/components/schemas/Owner'
          readOnly: true
          description: User who created this workflow
        dateInserted:
          type: string
          format: date-time
          readOnly: true
          description: Timestamp when the workflow was created
        sharedWith:
          type: array
          items:
            $ref: '#/components/schemas/WorkflowPermission'
          readOnly: true
          description: List of permission entries for users/groups with access
        workflow:
          $ref: '#/components/schemas/WorkflowMarkup'
          description: The workflow definition blob
        latestVersion:
          type:
            - integer
            - 'null'
          readOnly: true
          description: Latest version number, or null if no versions exist
    WorkflowCreateRequest:
      description: Request body for creating a new workflow.
      type: object
      required:
        - name
        - workflow
      properties:
        name:
          type: string
          maxLength: 200
          description: Workflow name
        description:
          type: string
          default: ''
          description: Workflow description
        workflow:
          $ref: '#/components/schemas/WorkflowMarkup'
          description: The workflow definition blob
    WorkflowUpdateRequest:
      description: >-
        Request body for updating a workflow. All fields are optional. Including a `workflow` blob
        creates a new version.
      type: object
      properties:
        name:
          type: string
          maxLength: 200
          description: Workflow name
        description:
          type: string
          description: Workflow description
        workflow:
          $ref: '#/components/schemas/WorkflowMarkup'
          description: Updated workflow definition blob. Creates a new version.
    WorkflowSubmitRequest:
      description: Request body for submitting a workflow for execution.
      type: object
      required:
        - workflowRunName
      properties:
        workflowRunName:
          type: string
          maxLength: 200
          description: Name for this workflow run
        parameters:
          type: object
          additionalProperties:
            $ref: '#/components/schemas/ParameterValue'
          default: {}
          description: |
            Key-value map of parameter values. Keys must match parameter names
            defined in the workflow. All required parameters must be provided.
            Each value is validated against the parameter's `type` and `multiple`
            fields in the workflow definition:
            - `string` or `shared_storage`: a plain string
            - `file`: a FileReference object (`{ id, name }`)
            - `multiple: true`: an array of the corresponding type
      example:
        workflowRunName: Simulation Run 2026-02-18
        parameters:
          shared_storage: stg_AbC123
          input_file:
            id: file_XyZ789
            name: mesh.dat
          job_name: CFD Analysis
    FileReference:
      description: A reference to a file on the platform.
      type: object
      required:
        - id
        - name
      properties:
        id:
          type: string
          description: File ID
        name:
          type: string
          description: File name
      additionalProperties: false
    ScalarParameterValue:
      description: A single parameter value (string, shared_storage ID, or file reference).
      oneOf:
        - type: string
        - $ref: '#/components/schemas/FileReference'
    ParameterValue:
      description: |
        A workflow parameter value. Single-valued parameters use a scalar;
        parameters with `multiple: true` use an array of scalars.
      oneOf:
        - $ref: '#/components/schemas/ScalarParameterValue'
        - type: array
          items:
            $ref: '#/components/schemas/ScalarParameterValue'
    WorkflowMarkup:
      description: >-
        The workflow definition blob. Contains the DAG graph structure, parameter definitions, and
        execution settings.
      type: object
      required:
        - graph
      properties:
        parameters:
          type: array
          items:
            $ref: '#/components/schemas/WorkflowParameter'
          default: []
          description: Parameter definitions for the workflow
        graph:
          $ref: '#/components/schemas/WorkflowGraph'
          description: The DAG graph structure
        continueOnNodeFailure:
          type: boolean
          default: false
          description: >-
            If true, the workflow continues executing other branches when a node fails. If false
            (default), the workflow stops on first node failure.
      example:
        parameters:
          - name: shared_storage
            type: shared_storage
            required: true
            description: Shared storage device for the workflow
          - name: job_name
            type: string
            required: false
            description: Name for the simulation job
        graph:
          nodes:
            - id: storage
              type: storage_device
              position:
                x: 100
                'y': 0
              data:
                startCondition: always
                storageData:
                  name: Workflow Storage
                  storageSize: 100
                  hardware:
                    coreType:
                      code: hpc-3
                    coresPerSlot: 18
                    walltime: 24
            - id: simulate
              type: job
              position:
                x: 100
                'y': 200
              data:
                jobData:
                  version: 1
                  name: CFD Simulation
                  hardware:
                    coreType:
                      code: emerald
                    coresPerSlot: 4
                    walltime: 8
                  software:
                    - code: openfoam
                      version: '2312'
                      command: simpleFoam -parallel
                  inputFiles:
                    - id: file_abc123
                      name: mesh.stl
          edges:
            - id: edge-1
              source: storage
              target: simulate
        continueOnNodeFailure: false
    WorkflowParameter:
      description: >-
        A parameter definition for a workflow. Parameters are resolved at submission time and
        injected into node data via `$wref` or json-e expressions.
      type: object
      required:
        - name
        - type
        - required
      properties:
        name:
          type: string
          description: >-
            Parameter name. Referenced in node data via `$wref` expressions (e.g.,
            `parameters.my_param`).
        type:
          type: string
          enum:
            - shared_storage
            - string
            - file
          description: >-
            Parameter type. `shared_storage` resolves to a storage device ID, `string` to a text
            value, `file` to a file reference object.
        required:
          type: boolean
          description: Whether this parameter must be provided at submission time
        description:
          type: string
          description: Human-readable description of the parameter
        multiple:
          type: boolean
          default: false
          description: >
            If true, the parameter accepts an array of values of the given type. If false (default),
            the parameter accepts a single value.
      examples:
        - name: shared_storage
          type: shared_storage
          required: true
          description: Shared storage device for inter-node file transfer
        - name: job_name
          type: string
          required: true
          description: Name to assign to the simulation job
        - name: input_file
          type: file
          required: true
          description: Primary input file for the simulation
        - name: extra_files
          type: file
          required: false
          multiple: true
          description: Additional input files
    WorkflowGraph:
      description: The directed acyclic graph (DAG) structure of a workflow.
      type: object
      required:
        - nodes
        - edges
      properties:
        nodes:
          type: array
          items:
            $ref: '#/components/schemas/WorkflowNode'
          description: Must form a DAG. No duplicate IDs.
        edges:
          type: array
          items:
            $ref: '#/components/schemas/WorkflowEdge'
          description: All source/target must reference existing node IDs. No duplicate IDs.
    WorkflowNode:
      type: object
      required:
        - id
        - type
        - position
        - data
      properties:
        id:
          type: string
          pattern: ^[a-zA-Z0-9_-]+$
          description: >-
            Unique node identifier within the workflow. Used in edge source/target references and
            `$wref` expressions (e.g., `nodes.my_node`).
        type:
          type: string
          enum:
            - job
            - workstation
            - storage_device
            - job_input_validator_agent
            - job_input_deck_validator_agent
            - job_troubleshooter_agent
            - decision
          description: >-
            Node type. Determines the expected shape of the `data` field and what resource is
            created at execution time.
        position:
          $ref: '#/components/schemas/Position'
          description: Position coordinates for rendering in the workflow graph UI
        data:
          $ref: '#/components/schemas/NodeData'
          description: Node-type-specific configuration data. Shape depends on the `type` field.
      description: >
        A node in the workflow DAG. The `data` shape depends on `type`:

        - `job`: `{ startCondition, jobData: { version: 1, hardware: {...}, software: [...], ... }
        }`

        - `workstation`: same shape as `job`

        - `storage_device`: `{ startCondition, storageData: { storageSize: 100, hardware: {...}, ...
        } }`

        - `job_input_validator_agent`: `{ startCondition, agentData: { version: 1, file: {...} } }`

        - `job_input_deck_validator_agent`: `{ startCondition, agentData: { version: 1, files: [...]
        } }`

        - `job_troubleshooter_agent`: `{ startCondition, agentData: { version: 1, jobId: "..." } }`

        - `decision`: `{ startCondition, conditions: [...], branches: { default: [...], ... } }`


        All node data objects include a common `startCondition` field (see NodeData).

        See individual NodeData schemas for full examples.
    Position:
      description: XY coordinates for node placement in the workflow graph UI.
      type: object
      required:
        - x
        - 'y'
      properties:
        x:
          type: number
          description: Horizontal position
        'y':
          type: number
          description: Vertical position
    WorkflowEdge:
      description: A directed edge connecting two nodes in the workflow DAG.
      type: object
      required:
        - id
        - source
        - target
      properties:
        id:
          type: string
          description: Unique edge identifier within the workflow
        source:
          type: string
          description: Source node ID
        target:
          type: string
          description: Target node ID
    NodeData:
      description: |
        Node data shape depends on the parent node's `type` field:
        - `job` → JobNodeData
        - `workstation` → WorkstationNodeData (same shape as JobNodeData)
        - `storage_device` → StorageDeviceNodeData
        - `job_input_validator_agent` → JobInputValidatorAgentNodeData
        - `job_input_deck_validator_agent` → JobInputDeckValidatorAgentNodeData
        - `job_troubleshooter_agent` → JobTroubleshooterAgentNodeData
        - `decision` → DecisionNodeData

        All variants include a common `startCondition` field (see below).
      allOf:
        - type: object
          properties:
            startCondition:
              type: string
              description: |
                When this node starts, evaluated after all parents reach a terminal
                state. "Executed" means completed or failed (not skipped).

                - `any_executed` (default): run if any parent executed; skip if all skipped.
                - `all_executed`: run if all parents executed; skip if any skipped.
                - `always`: run regardless of parent outcomes.
              enum:
                - any_executed
                - all_executed
                - always
              default: any_executed
            execution:
              $ref: '#/components/schemas/NodeExecutionData'
              description: >-
                Runtime execution state. Present only in workflow run responses, and only for nodes
                that have been scheduled. Absent (not null) for nodes in workflow definitions and
                for run nodes that were never reached.
        - oneOf:
            - $ref: ./schemas/enki/jobs.yaml#/JobNodeData
            - $ref: ./schemas/marigold/workstations.yaml#/WorkstationNodeData
            - $ref: ./schemas/megalodon/storage.yaml#/StorageDeviceNodeData
            - $ref: ./schemas/megalodon/agents.yaml#/JobInputValidatorAgentNodeData
            - $ref: ./schemas/megalodon/agents.yaml#/JobInputDeckValidatorAgentNodeData
            - $ref: ./schemas/megalodon/agents.yaml#/JobTroubleshooterAgentNodeData
            - $ref: ./schemas/marigold/decisions.yaml#/DecisionNodeData
    WrefObject:
      type: object
      description: >
        A workflow reference to a parameter or upstream node output. At execution time, `$wref` is
        converted to a json-e `$eval` expression and resolved against the workflow context.
      required:
        - $wref
      properties:
        $wref:
          type: string
          pattern: ^(parameters|nodes)(\.[a-zA-Z0-9_\-]+|\["[a-zA-Z0-9_\- ]+"\])+$
      additionalProperties: false
    JsonEExpression:
      type: object
      description: >-
        A json-e template expression. Must be an object with at least one $-prefixed key. See
        https://json-e.js.org/ for the json-e specification.
      minProperties: 1
      patternProperties:
        ^\$:
          description: json-e operator key and its value
      additionalProperties: true
    NodeExecutionData:
      description: Runtime execution state. Present only in workflow run responses.
      type: object
      readOnly: true
      properties:
        resourceType:
          type:
            - string
            - 'null'
          enum:
            - job
            - workstation
            - storagedevice
            - null
          description: Type of the platform resource created for this node, or null if not yet created
        resourceId:
          type:
            - string
            - 'null'
          description: >-
            Obfuscated ID of the platform resource (job, workstation, or storage device), or null if
            not yet created
        status:
          $ref: '#/components/schemas/WorkflowNodeStatus'
          description: Current execution status of this node
        statusReason:
          type:
            - string
            - 'null'
          description: Human-readable reason for the current status, or null
        statusDate:
          type: string
          format: date-time
          description: Timestamp of the most recent status change
    WorkflowNodeStatus:
      description: Execution status of an individual node within a workflow run.
      type: string
      enum:
        - not_started
        - pending
        - running
        - awaiting_token
        - stopping
        - completed
        - failed
        - skipped
    WorkflowRunListItem:
      description: Summary representation of a workflow run, returned in list responses.
      type: object
      required:
        - id
        - workflowId
        - workflowName
        - owner
        - versionNumber
        - dateInserted
        - dateVersionInserted
      properties:
        id:
          type: string
          readOnly: true
          description: Obfuscated workflow run ID
        workflowId:
          type: string
          readOnly: true
          description: Obfuscated ID of the parent workflow
        workflowName:
          type: string
          readOnly: true
          description: Name of the parent workflow at time of submission
        workflowRunName:
          type: string
          description: User-assigned name for this workflow run
        owner:
          allOf:
            - $ref: '#/components/schemas/Owner'
          readOnly: true
          description: User who submitted this workflow run
        versionNumber:
          type: integer
          readOnly: true
          description: Workflow version number used for this run
        dateInserted:
          type: string
          format: date-time
          readOnly: true
          description: Timestamp when the workflow run was created
        dateVersionInserted:
          type: string
          format: date-time
          readOnly: true
          description: Timestamp when the workflow version used in this run was created
        latestStatus:
          readOnly: true
          description: Most recent status entry, or null if no status yet
          oneOf:
            - $ref: '#/components/schemas/WorkflowStatusEntry'
            - type: 'null'
    WorkflowRun:
      description: >-
        Full representation of a workflow run, including its resolved workflow graph and status
        history.
      type: object
      required:
        - id
        - workflowId
        - workflowName
        - owner
        - versionNumber
        - dateInserted
        - dateVersionInserted
        - statuses
        - workflow
      properties:
        id:
          type: string
          readOnly: true
          description: Obfuscated workflow run ID
        workflowId:
          type: string
          readOnly: true
          description: Obfuscated ID of the parent workflow
        workflowName:
          type: string
          readOnly: true
          description: Name of the parent workflow at time of submission
        workflowRunName:
          type: string
          description: User-assigned name for this workflow run
        owner:
          allOf:
            - $ref: '#/components/schemas/Owner'
          readOnly: true
          description: User who submitted this workflow run
        versionNumber:
          type: integer
          readOnly: true
          description: Workflow version number used for this run
        dateInserted:
          type: string
          format: date-time
          readOnly: true
          description: Timestamp when the workflow run was created
        dateVersionInserted:
          type: string
          format: date-time
          readOnly: true
          description: Timestamp when the workflow version used in this run was created
        latestStatus:
          readOnly: true
          description: Most recent status entry, or null if no status yet
          oneOf:
            - $ref: '#/components/schemas/WorkflowStatusEntry'
            - type: 'null'
        statuses:
          type: array
          items:
            $ref: '#/components/schemas/WorkflowStatusEntry'
          readOnly: true
          description: Full status history, ordered chronologically
        workflow:
          $ref: '#/components/schemas/WorkflowRunGraph'
          description: The resolved workflow graph for this run
    WorkflowRunGraph:
      description: >-
        The resolved workflow graph for a specific run, with parameter values substituted and
        execution data populated.
      type: object
      required:
        - graph
      properties:
        graph:
          $ref: '#/components/schemas/WorkflowGraph'
          description: The workflow DAG with resolved node data and execution state
        parameters:
          type:
            - object
            - 'null'
          additionalProperties: true
          description: Resolved parameter values for this run
        continueOnNodeFailure:
          type: boolean
          description: Whether the workflow continues executing other branches when a node fails
    WorkflowStatusEntry:
      description: A single status transition in a workflow run's history.
      type: object
      required:
        - status
        - statusDate
      properties:
        status:
          type: string
          enum:
            - Queued
            - Running
            - Stopping
            - Completed
          description: Workflow run status
        statusReason:
          type:
            - string
            - 'null'
          description: >-
            Human-readable reason for the status transition. Null for intermediate statuses (Queued,
            Running, Stopping); populated for terminal Completed status.
        statusDate:
          type: string
          format: date-time
          description: Timestamp when this status transition occurred
    WorkflowPermission:
      description: >-
        A permission entry on a workflow. The `type` field indicates the recipient kind and
        determines which additional fields are present. Type-specific fields are included at the top
        level alongside the common `recipient` and `supportDesk` fields.
      oneOf:
        - $ref: '#/components/schemas/WorkflowPermission_user'
        - $ref: '#/components/schemas/WorkflowPermission_pendingUser'
        - $ref: '#/components/schemas/WorkflowPermission_supportDesk'
        - $ref: '#/components/schemas/WorkflowPermission_workspace'
        - $ref: '#/components/schemas/WorkflowPermission_group'
      discriminator:
        propertyName: type
        mapping:
          user: '#/components/schemas/WorkflowPermission_user'
          pending_user: '#/components/schemas/WorkflowPermission_pendingUser'
          support_desk: '#/components/schemas/WorkflowPermission_supportDesk'
          workspace: '#/components/schemas/WorkflowPermission_workspace'
          group: '#/components/schemas/WorkflowPermission_group'
    _WorkflowPermission_common:
      description: Common fields shared by all WorkflowPermission variants.
      type: object
      properties:
        recipient:
          type: object
          description: Legacy recipient info
          properties:
            email:
              type: string
              format: email
              description: Email address of the recipient
            account:
              type: string
              description: Workspace external ID
            accountName:
              type: string
              description: Display name of the recipient's workspace
        supportDesk:
          type:
            - object
            - 'null'
          description: Support desk info, or null if not a support desk permission
          properties:
            code:
              type: string
              description: Support desk code
            displayName:
              type: string
              description: Display name of the support desk
            email:
              type: string
              format: email
              description: Contact email for the support desk
            id:
              type: string
              description: Support desk ID
        type:
          type: string
          enum:
            - user
            - pending_user
            - support_desk
            - workspace
            - group
          description: Recipient type. Determines which additional fields are present on this permission entry.
      required:
        - recipient
        - supportDesk
        - type
    _WorkflowPermission_userFields:
      type: object
      description: Fields present for user and pending_user recipient types
      required:
        - fullName
        - email
        - workspace
      properties:
        fullName:
          type: string
          description: Full name of the user
        email:
          type: string
          format: email
          description: Email address of the user
        workspace:
          type: object
          description: Workspace the user belongs to
          required:
            - id
            - name
          properties:
            id:
              type: string
              description: Workspace external ID
            name:
              type: string
              description: Workspace name
    WorkflowPermission_user:
      description: Permission entry for a registered user.
      allOf:
        - $ref: '#/components/schemas/_WorkflowPermission_common'
        - $ref: '#/components/schemas/_WorkflowPermission_userFields'
        - type: object
          properties:
            type:
              type: string
              enum:
                - user
    WorkflowPermission_pendingUser:
      description: Permission entry for a user who has not yet accepted the share invitation.
      allOf:
        - $ref: '#/components/schemas/_WorkflowPermission_common'
        - $ref: '#/components/schemas/_WorkflowPermission_userFields'
        - type: object
          properties:
            type:
              type: string
              enum:
                - pending_user
    WorkflowPermission_supportDesk:
      allOf:
        - $ref: '#/components/schemas/_WorkflowPermission_common'
        - type: object
          description: >-
            Support desk recipient. The top-level code, displayName, email, and id fields describe
            the support desk.
          required:
            - type
            - code
            - displayName
            - email
            - id
          properties:
            type:
              type: string
              enum:
                - support_desk
            code:
              type: string
              description: Support desk code
            displayName:
              type: string
              description: Display name of the support desk
            email:
              type: string
              format: email
              description: Contact email for the support desk
            id:
              type: string
              description: Support desk ID
    WorkflowPermission_workspace:
      description: Permission entry for an entire workspace.
      allOf:
        - $ref: '#/components/schemas/_WorkflowPermission_common'
        - type: object
          required:
            - type
            - id
            - name
            - memberCount
          properties:
            type:
              type: string
              enum:
                - workspace
            id:
              type: string
              description: Workspace external ID
            name:
              type: string
              description: Workspace name
            memberCount:
              type: integer
              description: Number of members in the workspace
    WorkflowPermission_group:
      description: Permission entry for a user group within a workspace.
      allOf:
        - $ref: '#/components/schemas/_WorkflowPermission_common'
        - type: object
          required:
            - type
            - id
            - name
            - memberCount
            - workspace
          properties:
            type:
              type: string
              enum:
                - group
            id:
              type: string
              description: Group external ID
            name:
              type: string
              description: Group name
            memberCount:
              type: integer
              description: Number of members in the group
            workspace:
              type: object
              description: Workspace the group belongs to
              required:
                - id
                - name
              properties:
                id:
                  type: string
                  description: Workspace external ID
                name:
                  type: string
                  description: Workspace name
    ShareRequest:
      type: object
      description: >-
        Share a workflow with a recipient. At least one of `email`, `account`, `group`, or
        `supportDesk` must be provided. The only valid combination of multiple identifiers is
        `email` + `account` together; all other multi-identifier combinations are rejected.
      properties:
        email:
          type: string
          format: email
          description: Email address of the user to share with
        account:
          type: string
          description: Workspace external ID
        group:
          type: string
          description: Group external ID
        supportDesk:
          type: string
          description: Support desk code
        message:
          type: string
          maxLength: 1000
          description: Optional message included in the share notification
    ErrorResponse:
      description: Standard error response with a human-readable detail message.
      type: object
      required:
        - detail
      properties:
        detail:
          type: string
          description: Human-readable error message
    ValidationErrorResponse:
      type: object
      description: >-
        Validation error. Top-level keys are field names (or "nonFieldErrors" for cross-field
        errors), values are arrays of error message strings.
      additionalProperties:
        type: array
        items:
          type: string
