components:
  schemas:
    AccessCapability:
      type: string
      enum:
      - list
      - read
      - write
      - transfer
      - streaming
      title: AccessCapability
      description: Data operations supported by an access endpoint.
    AccessEndpoint:
      properties:
        id:
          type: string
          title: Id
          description: Unique identifier for this access endpoint
          example: globus-cfs-demo
        resource_id:
          type: string
          title: Resource Id
          description: ID of the storage resource this endpoint belongs to
        protocol:
          $ref: '#/components/schemas/AccessProtocol'
          description: Data access protocol
        display_name:
          anyOf:
          - type: string
          - type: 'null'
          title: Display Name
          description: Human-readable name for this endpoint
          example: Demo CFS Globus
        auth_type:
          type: string
          title: Auth Type
          description: Authentication mechanism required to use this endpoint
          example: globus
        capabilities:
          items:
            $ref: '#/components/schemas/AccessCapability'
          type: array
          title: Capabilities
          description: Supported data operations
        endpoint_id:
          anyOf:
          - type: string
          - type: 'null'
          title: Endpoint Id
          description: Globus endpoint UUID (Globus only)
          example: 5e0cdbd2-3f1a-4e57-beed-b95scbb83b7c
        uri:
          anyOf:
          - type: string
          - type: 'null'
          title: Uri
          description: Full Globus URI (Globus only)
          example: globus://5e0cdbd2-3f1a-4e57-beed-b95scbb83b7c/
        root_path:
          anyOf:
          - type: string
          - type: 'null'
          title: Root Path
          description: Root path within the endpoint (Globus only)
          example: /
        endpoint:
          anyOf:
          - type: string
          - type: 'null'
          title: Endpoint
          description: XRootD server address (XRootD only)
          example: root://cfs.demo.example/
        bucket:
          anyOf:
          - type: string
          - type: 'null'
          title: Bucket
          description: S3 bucket name (S3 only)
          example: demo-cfs
        region:
          anyOf:
          - type: string
          - type: 'null'
          title: Region
          description: AWS region (S3 only)
          example: us-east-1
        endpoint_url:
          anyOf:
          - type: string
          - type: 'null'
          title: Endpoint Url
          description: S3-compatible endpoint URL for non-AWS providers (S3 only)
          example: https://s3.demo.example
      type: object
      required:
      - id
      - resource_id
      - protocol
      - auth_type
      - capabilities
      title: AccessEndpoint
      description: 'A single data access endpoint for a storage resource.

        Protocol-specific connection fields are present only for the relevant protocol.'
    AccessPermissions:
      properties:
        read:
          type: boolean
          title: Read
          description: Read permission
          example: true
        write:
          type: boolean
          title: Write
          description: Write permission
          example: true
        execute:
          type: boolean
          title: Execute
          description: Execute/traverse permission
          example: true
      type: object
      required:
      - read
      - write
      - execute
      title: AccessPermissions
      description: POSIX-style access permissions for a storage location.
    AccessProtocol:
      type: string
      enum:
      - globus
      - xrootd
      - s3
      title: AccessProtocol
      description: Supported data access protocols.
    AllocationEntry:
      properties:
        attributes:
          anyOf:
          - additionalProperties: true
            type: object
          - type: 'null'
          title: Attributes
          description: Optional, type-specific metadata for this object. The meaning,
            permitted property names, and validation rules are determined by the object's
            own type (e.g. a Resource's resource_type URN selects its attribute profile).
            Omitted when there is no attribute data to report.
        allocation:
          type: number
          title: Allocation
          description: Total allocation amount granted.
          example: 100000.0
        usage:
          type: number
          title: Usage
          description: Amount of allocation consumed.
          example: 52342.5
        unit:
          type: string
          minLength: 24
          pattern: ^urn:doe-iri:allocation:(?:[A-Za-z0-9._~-]|%[0-9A-Fa-f]{2}|[!$&'()*+,;=@]|/)+(?::(?:[A-Za-z0-9._~-]|%[0-9A-Fa-f]{2}|[!$&'()*+,;=@]|/)+)*$
          title: Unit
          description: DOE IRI URN for the allocation unit.
          examples:
          - urn:doe-iri:allocation:compute:node-hours
          - urn:doe-iri:allocation:storage:bytes
          example: urn:doe-iri:allocation:compute:node-hours
      additionalProperties: true
      type: object
      required:
      - allocation
      - usage
      - unit
      title: AllocationEntry
      description: Base class for allocations.
    Body_upload:
      properties:
        file:
          type: string
          format: binary
          title: File
          description: File to be uploaded as `multipart/form-data`
      type: object
      required:
      - file
      title: Body_upload
    Capability:
      properties:
        attributes:
          anyOf:
          - additionalProperties: true
            type: object
          - type: 'null'
          title: Attributes
          description: Optional, type-specific metadata for this object. The meaning,
            permitted property names, and validation rules are determined by the object's
            own type (e.g. a Resource's resource_type URN selects its attribute profile).
            Omitted when there is no attribute data to report.
        id:
          type: string
          title: Id
          description: The unique identifier for the object. Typically a UUID or URN.
          example: urn:iri:object:1234
        name:
          anyOf:
          - type: string
          - type: 'null'
          title: Name
          description: The long name of the object.
          example: Perlmutter GPU
        description:
          anyOf:
          - type: string
          - type: 'null'
          title: Description
          description: Human-readable description of the object.
          example: High-performance GPU compute resource
        last_modified:
          anyOf:
          - type: string
            format: date-time
            description: Strict ISO8601 datetime. Only valid ISO8601 datetime strings
              are accepted.
            example: '2026-02-21T12:00:00Z'
          - type: 'null'
          title: Last Modified
          description: ISO 8601 timestamp when this object was last modified.
          example: '2026-02-21T12:00:00Z'
        units:
          items:
            type: string
            minLength: 24
            pattern: ^urn:doe-iri:allocation:(?:[A-Za-z0-9._~-]|%[0-9A-Fa-f]{2}|[!$&'()*+,;=@]|/)+(?::(?:[A-Za-z0-9._~-]|%[0-9A-Fa-f]{2}|[!$&'()*+,;=@]|/)+)*$
            description: DOE IRI allocation-unit URN.
            examples:
            - urn:doe-iri:allocation:compute:node-hours
            - urn:doe-iri:allocation:storage:bytes
          type: array
          title: Units
          description: Allocation units supported by this capability
          example:
          - urn:doe-iri:allocation:compute:node-hours
        self_uri:
          type: string
          title: Self Uri
          description: The canonical URL of this object
          readOnly: true
      additionalProperties: true
      type: object
      required:
      - id
      - units
      - self_uri
      title: Capability
      description: 'An aspect of a resource that can have an allocation.

        For example, Perlmutter nodes with GPUs

        For some resources at a facility, this will be 1 to 1 with the resource.

        It is a way to further subdivide a resource into allocatable sub-resources.

        The word "capability" is also known to users as something they need for a
        job to run. (eg. gpu)'
    Container:
      properties:
        attributes:
          anyOf:
          - additionalProperties: true
            type: object
          - type: 'null'
          title: Attributes
          description: Optional, type-specific metadata for this object. The meaning,
            permitted property names, and validation rules are determined by the object's
            own type (e.g. a Resource's resource_type URN selects its attribute profile).
            Omitted when there is no attribute data to report.
        image:
          type: string
          minLength: 1
          title: Image
          description: The container image to use (e.g., 'docker.io/library/ubuntu:latest')
          example: docker.io/library/ubuntu:latest
        volume_mounts:
          items:
            $ref: '#/components/schemas/VolumeMount'
          type: array
          title: Volume Mounts
          description: List of volume mounts for the container
      additionalProperties: true
      type: object
      required:
      - image
      title: Container
      description: 'Represents a container specification for job execution.


        Implementation notes: The value of gpu_cores_per_process in ResourceSpec should
        be used to determine

        if the container should be run with GPU support. Likewise, the value of launcher
        in JobSpec should be used

        to determine if the container should be run with MPI support. The container
        should by default. be run with

        host networking.'
    Endpoint:
      type: string
      enum:
      - compute
      - filesystem
      title: Endpoint
      description: Router endpoint a resource supports (used internally to route compute/filesystem
        requests).
    Event:
      properties:
        attributes:
          anyOf:
          - additionalProperties: true
            type: object
          - type: 'null'
          title: Attributes
          description: Optional, type-specific metadata for this object. The meaning,
            permitted property names, and validation rules are determined by the object's
            own type (e.g. a Resource's resource_type URN selects its attribute profile).
            Omitted when there is no attribute data to report.
        id:
          type: string
          title: Id
          description: The unique identifier for the object. Typically a UUID or URN.
          example: urn:iri:object:1234
        name:
          anyOf:
          - type: string
          - type: 'null'
          title: Name
          description: The long name of the object.
          example: Perlmutter GPU
        description:
          anyOf:
          - type: string
          - type: 'null'
          title: Description
          description: Human-readable description of the object.
          example: High-performance GPU compute resource
        last_modified:
          type: string
          format: date-time
          title: Last Modified
          description: ISO 8601 timestamp when this object was last modified.
          example: '2026-02-21T12:00:00Z'
        occurred_at:
          type: string
          format: date-time
          title: Occurred At
          description: Timestamp when the event occurred
          example: '2026-02-21T12:00:00Z'
        status:
          $ref: '#/components/schemas/Status'
          description: Status of the resource at the time of the event
          example: down
        self_uri:
          type: string
          title: Self Uri
          description: The canonical URL of this object
          readOnly: true
        resource_uri:
          type: string
          title: Resource Uri
          description: The resource belonging to this event
          readOnly: true
        incident_uri:
          anyOf:
          - type: string
          - type: 'null'
          title: Incident Uri
          description: The event's incident
          readOnly: true
      additionalProperties: true
      type: object
      required:
      - id
      - last_modified
      - occurred_at
      - status
      - self_uri
      - resource_uri
      - incident_uri
      title: Event
      description: Represents an event that occurred to a resource, which may be part
        of an incident.
    Facility:
      properties:
        attributes:
          anyOf:
          - additionalProperties: true
            type: object
          - type: 'null'
          title: Attributes
          description: Optional, type-specific metadata for this object. The meaning,
            permitted property names, and validation rules are determined by the object's
            own type (e.g. a Resource's resource_type URN selects its attribute profile).
            Omitted when there is no attribute data to report.
        id:
          type: string
          title: Id
          description: The unique identifier for the object. Typically a UUID or URN.
          example: urn:iri:object:1234
        name:
          anyOf:
          - type: string
          - type: 'null'
          title: Name
          description: The long name of the object.
          example: Perlmutter GPU
        description:
          anyOf:
          - type: string
          - type: 'null'
          title: Description
          description: Human-readable description of the object.
          example: High-performance GPU compute resource
        last_modified:
          type: string
          format: date-time
          title: Last Modified
          description: ISO 8601 timestamp when this object was last modified.
          example: '2026-02-21T12:00:00Z'
        short_name:
          anyOf:
          - type: string
          - type: 'null'
          title: Short Name
          description: Common or short name of the Facility.
          example: ESnet
        organization_name:
          anyOf:
          - type: string
          - type: 'null'
          title: Organization Name
          description: Operating organization's name.
          example: Energy Sciences Network
        support_uri:
          anyOf:
          - type: string
            maxLength: 2083
            minLength: 1
            format: uri
          - type: 'null'
          title: Support Uri
          description: Link to facility support portal.
          example: https://support.es.net
        self_uri:
          type: string
          title: Self Uri
          description: The canonical URL of this object
          readOnly: true
        site_uris:
          items:
            type: string
          type: array
          title: Site Uris
          description: URIs of associated Sites.
          readOnly: true
      additionalProperties: true
      type: object
      required:
      - id
      - last_modified
      - self_uri
      - site_uris
      title: Facility
      description: Facility representation, including associated Sites.
    HalLink:
      type: object
      required:
      - href
      properties:
        href:
          type: string
          description: A plain URI-reference, or an RFC 6570 URI Template when templated
            is true. Templated hrefs contain literal { and } characters and are not
            valid under the uri-reference format, so no format constraint is declared
            here.
        templated:
          type: boolean
          default: false
        type:
          type: string
          description: Media-type hint for the target representation.
        deprecation:
          type: string
          format: uri
        name:
          type: string
        profile:
          type: string
          format: uri
          description: URI that identifies or hints at the profile of the target representation.
        title:
          type: string
          description: Human-readable label for the link.
        hreflang:
          type: string
      additionalProperties: true
    HalLinkValue:
      oneOf:
      - $ref: '#/components/schemas/HalLink'
      - type: array
        items:
          $ref: '#/components/schemas/HalLink'
    HalLinks:
      type: object
      additionalProperties:
        $ref: '#/components/schemas/HalLinkValue'
    Incident:
      properties:
        attributes:
          anyOf:
          - additionalProperties: true
            type: object
          - type: 'null'
          title: Attributes
          description: Optional, type-specific metadata for this object. The meaning,
            permitted property names, and validation rules are determined by the object's
            own type (e.g. a Resource's resource_type URN selects its attribute profile).
            Omitted when there is no attribute data to report.
        id:
          type: string
          title: Id
          description: The unique identifier for the object. Typically a UUID or URN.
          example: urn:iri:object:1234
        name:
          anyOf:
          - type: string
          - type: 'null'
          title: Name
          description: The long name of the object.
          example: Perlmutter GPU
        description:
          anyOf:
          - type: string
          - type: 'null'
          title: Description
          description: Human-readable description of the object.
          example: High-performance GPU compute resource
        last_modified:
          type: string
          format: date-time
          title: Last Modified
          description: ISO 8601 timestamp when this object was last modified.
          example: '2026-02-21T12:00:00Z'
        status:
          $ref: '#/components/schemas/Status'
          description: Current status of the incident
          example: degraded
        start:
          type: string
          format: date-time
          title: Start
          description: Incident start time
          example: '2026-02-21T12:00:00Z'
        end:
          anyOf:
          - type: string
            format: date-time
          - type: 'null'
          title: End
          description: Incident end time
          example: '2026-02-21T14:00:00Z'
        type:
          $ref: '#/components/schemas/IncidentType'
          description: Type of incident
          example: planned
        resolution:
          $ref: '#/components/schemas/Resolution'
          description: Resolution status of the incident
          example: pending
        self_uri:
          type: string
          title: Self Uri
          description: The canonical URL of this object
          readOnly: true
        event_uris:
          items:
            type: string
          type: array
          title: Event Uris
          description: The list of past events in this incident
          readOnly: true
        resource_uris:
          items:
            type: string
          type: array
          title: Resource Uris
          description: The list of resources that may be impacted by this incident
          readOnly: true
      additionalProperties: true
      type: object
      required:
      - id
      - last_modified
      - status
      - start
      - type
      - resolution
      - self_uri
      - event_uris
      - resource_uris
      title: Incident
      description: Represents an incident that may impact one or more resources.
    IncidentType:
      type: string
      enum:
      - planned
      - unplanned
      - reservation
      title: IncidentType
      description: Represents the type of an incident.
    Job:
      properties:
        attributes:
          anyOf:
          - additionalProperties: true
            type: object
          - type: 'null'
          title: Attributes
          description: Optional, type-specific metadata for this object. The meaning,
            permitted property names, and validation rules are determined by the object's
            own type (e.g. a Resource's resource_type URN selects its attribute profile).
            Omitted when there is no attribute data to report.
        id:
          type: string
          title: Id
          description: Unique identifier of the job
          example: job-12345
        status:
          anyOf:
          - $ref: '#/components/schemas/JobStatus'
          - type: 'null'
          description: Current status of the job
        job_spec:
          anyOf:
          - $ref: '#/components/schemas/JobSpec'
          - type: 'null'
          description: Specification used to create the job
        _links:
          $ref: '#/components/schemas/HalLinks'
          readOnly: true
      additionalProperties: true
      type: object
      required:
      - id
      title: Job
      description: Represents a job in the system.
    JobAttributes:
      properties:
        attributes:
          anyOf:
          - additionalProperties: true
            type: object
          - type: 'null'
          title: Attributes
          description: Optional, type-specific metadata for this object. The meaning,
            permitted property names, and validation rules are determined by the object's
            own type (e.g. a Resource's resource_type URN selects its attribute profile).
            Omitted when there is no attribute data to report.
        duration:
          anyOf:
          - type: integer
            minimum: 1.0
          - type: 'null'
          title: Duration
          description: Duration in seconds
          examples:
          - 30
          - 60
          - 120
        queue_name:
          anyOf:
          - type: string
            minLength: 1
          - type: 'null'
          title: Queue Name
          description: Name of the queue or partition to submit the job to
          example: debug
        account:
          anyOf:
          - type: string
            minLength: 1
          - type: 'null'
          title: Account
          description: Account or project to charge for resource usage. For compute
            submission/update requests, specify this here only when the caller is
            not relying on a trusted forwarded `X-IRI-Facility-Project` header. If
            that header is present and valid, this field must be omitted.
          example: proj123
        reservation_id:
          anyOf:
          - type: string
            minLength: 1
          - type: 'null'
          title: Reservation Id
          description: ID of a reservation to use for the job
          example: resv-42
        custom_attributes:
          additionalProperties:
            type: string
          type: object
          title: Custom Attributes
          description: Custom scheduler-specific attributes as key-value pairs
          example:
            constraint: gpu
      additionalProperties: true
      type: object
      title: JobAttributes
      description: Additional attributes and scheduling parameters for a job.
    JobSpec:
      properties:
        attributes:
          anyOf:
          - $ref: '#/components/schemas/JobAttributes'
          - type: 'null'
          description: 'Additional job attributes such as duration, queue, and account.
            For compute submission/update, the effective project/account must be supplied
            in exactly one place: `attributes.account` or the trusted `X-IRI-Facility-Project`
            request header.'
        executable:
          anyOf:
          - type: string
            minLength: 1
          - type: 'null'
          title: Executable
          description: Path to the executable to run. If container is specified, this
            will be used as the entrypoint to the container.
          example: /usr/bin/python
        container:
          anyOf:
          - $ref: '#/components/schemas/Container'
          - type: 'null'
          description: Container specification for containerized execution
        arguments:
          items:
            type: string
          type: array
          title: Arguments
          description: Command-line arguments to pass to the executable or container
          example:
          - -n
          - '100'
        directory:
          anyOf:
          - type: string
            minLength: 1
          - type: 'null'
          title: Directory
          description: Working directory for the job
          example: /home/user/work
        name:
          anyOf:
          - type: string
            minLength: 1
          - type: 'null'
          title: Name
          description: Name of the job
          example: my-job
        inherit_environment:
          type: boolean
          title: Inherit Environment
          description: Whether to inherit the environment variables from the submission
            environment
          default: true
          example: true
        environment:
          additionalProperties:
            type: string
          type: object
          title: Environment
          description: Environment variables to set for the job. If container is specified,
            these will be set inside the container.
          example:
            OMP_NUM_THREADS: '4'
        stdin_path:
          anyOf:
          - type: string
            minLength: 1
          - type: 'null'
          title: Stdin Path
          description: Path to file to use as standard input
          example: /home/user/input.txt
        stdout_path:
          anyOf:
          - type: string
            minLength: 1
          - type: 'null'
          title: Stdout Path
          description: Path to file to write standard output
          example: /home/user/output.txt
        stderr_path:
          anyOf:
          - type: string
            minLength: 1
          - type: 'null'
          title: Stderr Path
          description: Path to file to write standard error
          example: /home/user/error.txt
        resources:
          anyOf:
          - $ref: '#/components/schemas/ResourceSpec'
          - type: 'null'
          description: Resource requirements for the job
        pre_launch:
          anyOf:
          - type: string
            minLength: 1
          - type: 'null'
          title: Pre Launch
          description: Script or commands to run before launching the job
          example: module load cuda
        post_launch:
          anyOf:
          - type: string
            minLength: 1
          - type: 'null'
          title: Post Launch
          description: Script or commands to run after the job completes
          example: echo done
        launcher:
          anyOf:
          - type: string
            minLength: 1
          - type: 'null'
          title: Launcher
          description: Job launcher to use (e.g., 'mpirun', 'srun')
          example: srun
      additionalProperties: false
      type: object
      title: JobSpec
      description: Specification for a job.
    JobState:
      type: string
      enum:
      - new
      - queued
      - held
      - active
      - completed
      - failed
      - canceled
      title: JobState
      description: 'from: https://exaworks.org/psij-python/docs/v/0.9.11/_modules/psij/job_state.html#JobState


        An enumeration holding the possible job states.


        The possible states are: `NEW`, `QUEUED`, `ACTIVE`, `COMPLETED`, `FAILED`,
        and `CANCELED`.'
    JobStatus:
      properties:
        attributes:
          anyOf:
          - additionalProperties: true
            type: object
          - type: 'null'
          title: Attributes
          description: Optional, type-specific metadata for this object. The meaning,
            permitted property names, and validation rules are determined by the object's
            own type (e.g. a Resource's resource_type URN selects its attribute profile).
            Omitted when there is no attribute data to report.
        state:
          $ref: '#/components/schemas/JobState'
          description: Current state of the job
          example: queued
        time:
          anyOf:
          - type: number
          - type: 'null'
          title: Time
          description: Timestamp associated with the status (seconds since epoch)
          example: 1708531200.0
        message:
          anyOf:
          - type: string
          - type: 'null'
          title: Message
          description: Human-readable status message
          example: Job is waiting in queue
        exit_code:
          anyOf:
          - type: integer
          - type: 'null'
          title: Exit Code
          description: Process exit code if the job has finished
          example: 0
        meta_data:
          anyOf:
          - additionalProperties: true
            type: object
          - type: 'null'
          title: Meta Data
          description: Backend-specific metadata associated with the job status
      additionalProperties: true
      type: object
      required:
      - state
      title: JobStatus
      description: Represents the status of a job.
    LogicalName:
      type: string
      enum:
      - home
      - scratch
      - project
      - campaign
      - archive
      - shared
      - temporary
      title: LogicalName
      description: Well-known logical filesystem tier names across HPC facilities.
    PostChecksumRequest:
      properties:
        path:
          type: string
          title: Path
          description: Path to the file to checksum
          example: /home/user/file.txt
      type: object
      required:
      - path
      title: PostChecksumRequest
      description: Request body for the checksum endpoint.
      examples:
      - path: /home/user/file.txt
    PostCompressRequest:
      properties:
        path:
          anyOf:
          - type: string
          - type: 'null'
          title: Path
          description: Source file or directory path
          example: /home/user/dir
        target_path:
          type: string
          title: Target Path
          description: Path to the compressed file
          example: /home/user/file.tar.gz
        match_pattern:
          anyOf:
          - type: string
          - type: 'null'
          title: Match Pattern
          description: Regex pattern to filter files to compress
          example: .*\.txt$
        dereference:
          type: boolean
          title: Dereference
          description: If set to `true`, it follows symbolic links and archive the
            files they point to instead of the links themselves.
          default: false
          example: true
        compression:
          type: string
          minLength: 25
          pattern: ^urn:doe-iri:compression:(?:[A-Za-z0-9._~-]|%[0-9A-Fa-f]{2}|[!$&'()*+,;=@]|/)+(?::(?:[A-Za-z0-9._~-]|%[0-9A-Fa-f]{2}|[!$&'()*+,;=@]|/)+)*$
          title: Compression
          description: DOE IRI URN for the compression type (urn:doe-iri:compression:<type>).
          default: urn:doe-iri:compression:gzip
          examples:
          - urn:doe-iri:compression:gzip
          - urn:doe-iri:compression:none
          example: urn:doe-iri:compression:gzip
      type: object
      required:
      - target_path
      title: PostCompressRequest
      description: Represents a request to compress a file.
      examples:
      - compression: urn:doe-iri:compression:none
        dereference: 'true'
        match_pattern: '*./[ab].*\.txt'
        source_path: /home/user/dir
        target_path: /home/user/file.tar.gz
    PostCopyRequest:
      properties:
        path:
          anyOf:
          - type: string
          - type: 'null'
          title: Path
          description: Source file or directory path
          example: /home/user/dir
        target_path:
          type: string
          title: Target Path
          description: Target path of the copy operation
          example: /home/user/dir/file.new
        dereference:
          type: boolean
          title: Dereference
          description: If set to `true`, it follows symbolic links and copies the
            files they point to instead of the links themselves.
          default: false
          example: true
      type: object
      required:
      - target_path
      title: PostCopyRequest
      description: Represents a request to copy a file.
      examples:
      - dereference: 'true'
        source_path: /home/user/dir/file.orig
        target_path: /home/user/dir/file.new
    PostDownloadRequest:
      properties:
        path:
          type: string
          title: Path
          description: A file to download
          example: /home/user/file.txt
      type: object
      required:
      - path
      title: PostDownloadRequest
      description: Request body for the download endpoint.
      examples:
      - path: /home/user/file.txt
    PostExtractRequest:
      properties:
        path:
          anyOf:
          - type: string
          - type: 'null'
          title: Path
          description: Source file or directory path
          example: /home/user/dir
        target_path:
          type: string
          title: Target Path
          description: Path to the directory where to extract the compressed file
          example: /home/user/dir
        compression:
          type: string
          minLength: 25
          pattern: ^urn:doe-iri:compression:(?:[A-Za-z0-9._~-]|%[0-9A-Fa-f]{2}|[!$&'()*+,;=@]|/)+(?::(?:[A-Za-z0-9._~-]|%[0-9A-Fa-f]{2}|[!$&'()*+,;=@]|/)+)*$
          title: Compression
          description: DOE IRI URN for the compression type (urn:doe-iri:compression:<type>).
          default: urn:doe-iri:compression:gzip
          examples:
          - urn:doe-iri:compression:gzip
          - urn:doe-iri:compression:none
          example: urn:doe-iri:compression:gzip
      type: object
      required:
      - target_path
      title: PostExtractRequest
      description: Represents a request to extract a compressed file.
      examples:
      - compression: urn:doe-iri:compression:none
        source_path: /home/user/dir/file.tar.gz
        target_path: /home/user/dir
    PostFileRequest:
      properties:
        path:
          type: string
          title: Path
          description: A file or folder path
          example: /home/user/file.txt
      type: object
      required:
      - path
      title: PostFileRequest
      description: Request body for the file-type endpoint.
      examples:
      - path: /home/user/file.txt
    PostFileSymlinkRequest:
      properties:
        path:
          anyOf:
          - type: string
          - type: 'null'
          title: Path
          description: Source file or directory path
          example: /home/user/dir
        link_path:
          type: string
          title: Link Path
          description: Path to the new symlink
          example: /home/user/newlink
      type: object
      required:
      - link_path
      title: PostFileSymlinkRequest
      description: Represents a request to create a symbolic link.
      examples:
      - link_path: /home/user/newlink
        path: /home/user/dir
    PostHeadRequest:
      properties:
        path:
          type: string
          title: Path
          description: File path
          example: /home/user/file.txt
        bytes:
          anyOf:
          - type: integer
          - type: 'null'
          title: Bytes
          description: Return the first NUM bytes of the file
          example: 1024
        lines:
          anyOf:
          - type: integer
          - type: 'null'
          title: Lines
          description: Return the first NUM lines of the file
          example: 10
        skipTrailing:
          type: boolean
          title: Skiptrailing
          description: Return the whole file without the last NUM bytes/lines
          default: false
          example: false
      type: object
      required:
      - path
      title: PostHeadRequest
      description: Request body for the head endpoint.
      examples:
      - lines: 10
        path: /home/user/file.txt
    PostLsRequest:
      properties:
        path:
          type: string
          title: Path
          description: The path to list
          example: /home/user
        showHidden:
          type: boolean
          title: Showhidden
          description: Show hidden files
          default: false
          example: false
        numericUid:
          type: boolean
          title: Numericuid
          description: List numeric user and group IDs
          default: false
          example: false
        recursive:
          type: boolean
          title: Recursive
          description: Recursively list files and folders
          default: false
          example: false
        dereference:
          type: boolean
          title: Dereference
          description: Show information for the file the link references
          default: false
          example: false
      type: object
      required:
      - path
      title: PostLsRequest
      description: Request body for the ls endpoint.
      examples:
      - dereference: false
        numericUid: false
        path: /home/user
        recursive: false
        showHidden: false
    PostMakeDirRequest:
      properties:
        path:
          anyOf:
          - type: string
          - type: 'null'
          title: Path
          description: Source file or directory path
          example: /home/user/dir
        parent:
          type: boolean
          title: Parent
          description: If set to `true` creates all its parent directories if they
            do not already exist
          default: false
          example: true
      type: object
      title: PostMakeDirRequest
      description: Represents a request to create a directory.
      examples:
      - parent: 'true'
        path: /home/user/dir/newdir
    PostMoveRequest:
      properties:
        path:
          anyOf:
          - type: string
          - type: 'null'
          title: Path
          description: Source file or directory path
          example: /home/user/dir
        target_path:
          type: string
          title: Target Path
          description: Target path of the move operation
          example: /home/user/dir/file.new
      type: object
      required:
      - target_path
      title: PostMoveRequest
      description: Represents a request to move a file.
      examples:
      - source_path: /home/user/dir/file.orig
        target_path: /home/user/dir/file.new
    PostRmRequest:
      properties:
        path:
          type: string
          title: Path
          description: The path to delete
          example: /home/user/old-file.txt
      type: object
      required:
      - path
      title: PostRmRequest
      description: Request body for the rm endpoint.
      examples:
      - path: /home/user/old-file.txt
    PostStatRequest:
      properties:
        path:
          type: string
          title: Path
          description: A file or folder path
          example: /home/user/file.txt
        dereference:
          type: boolean
          title: Dereference
          description: Follow symbolic links
          default: false
          example: false
      type: object
      required:
      - path
      title: PostStatRequest
      description: Request body for the stat endpoint.
      examples:
      - dereference: false
        path: /home/user/file.txt
    PostTailRequest:
      properties:
        path:
          type: string
          minLength: 1
          title: Path
          description: File path
          example: /home/user/file.txt
        bytes:
          anyOf:
          - type: integer
            minimum: 1.0
          - type: 'null'
          title: Bytes
          description: Return the last NUM bytes of the file
          example: 1024
        lines:
          anyOf:
          - type: integer
            minimum: 1.0
          - type: 'null'
          title: Lines
          description: Return the last NUM lines of the file
          example: 10
        skipHeading:
          type: boolean
          title: Skipheading
          description: Return the whole file without the first NUM bytes/lines
          default: false
          example: false
      type: object
      required:
      - path
      title: PostTailRequest
      description: Request body for the tail endpoint.
      examples:
      - lines: 10
        path: /home/user/file.txt
    PostViewRequest:
      properties:
        path:
          type: string
          title: Path
          description: File path
          example: /home/user/file.txt
        size:
          type: integer
          minimum: 1.0
          title: Size
          description: Number of bytes to retrieve from the file
          default: 0
          example: 4096
        offset:
          type: integer
          minimum: 0.0
          title: Offset
          description: Byte offset to start reading from
          default: 0
          example: 0
      type: object
      required:
      - path
      title: PostViewRequest
      description: Request body for the view endpoint.
      examples:
      - offset: 0
        path: /home/user/file.txt
        size: 4096
    Problem:
      properties:
        type:
          type: string
          format: uri
          title: Type
          description: A URI reference that identifies the problem type.
          default: about:blank
        status:
          type: integer
          maximum: 599.0
          minimum: 100.0
          title: Status
          description: The HTTP status code for this occurrence.
          example: 404
        title:
          anyOf:
          - type: string
          - type: 'null'
          title: Title
          description: Short human-readable summary.
          example: Not Found
        detail:
          anyOf:
          - type: string
          - type: 'null'
          title: Detail
          description: Human-readable explanation.
          example: Descriptive text.
        instance:
          type: string
          title: Instance
          description: A URI reference identifying this occurrence.
          example: http://localhost/api/v2/resource/123
      additionalProperties: true
      type: object
      required:
      - type
      - status
      - instance
      title: Problem
      description: Error structure for REST interface based on RFC 9457, "Problem
        Details for HTTP APIs."
    Project:
      properties:
        attributes:
          anyOf:
          - additionalProperties: true
            type: object
          - type: 'null'
          title: Attributes
          description: Optional, type-specific metadata for this object. The meaning,
            permitted property names, and validation rules are determined by the object's
            own type (e.g. a Resource's resource_type URN selects its attribute profile).
            Omitted when there is no attribute data to report.
        id:
          type: string
          title: Id
          description: Unique identifier of the project.
          example: proj-abc123
        name:
          type: string
          title: Name
          description: Human-readable name of the project.
          example: Climate Simulation
        description:
          type: string
          title: Description
          description: Detailed description of the project.
          example: Research project studying atmospheric dynamics.
        user_ids:
          items:
            type: string
          type: array
          title: User Ids
          description: List of user identifiers participating in the project.
          example:
          - user-123
          - user-456
        last_modified:
          type: string
          format: date-time
          title: Last Modified
          description: Timestamp of the last modification of the project.
          example: '2026-02-21T14:30:00Z'
        self_uri:
          type: string
          title: Self Uri
          description: URI to this project resource
          readOnly: true
      additionalProperties: true
      type: object
      required:
      - id
      - name
      - description
      - user_ids
      - last_modified
      - self_uri
      title: Project
      description: A project and its users at a facility
    ProjectAllocation:
      properties:
        attributes:
          anyOf:
          - additionalProperties: true
            type: object
          - type: 'null'
          title: Attributes
          description: Optional, type-specific metadata for this object. The meaning,
            permitted property names, and validation rules are determined by the object's
            own type (e.g. a Resource's resource_type URN selects its attribute profile).
            Omitted when there is no attribute data to report.
        id:
          type: string
          title: Id
          description: Unique identifier of the project allocation.
          example: alloc-001
        entries:
          items:
            $ref: '#/components/schemas/AllocationEntry'
          type: array
          title: Entries
          description: Allocation entries describing usage and limits.
        project_uri:
          type: string
          title: Project Uri
          description: URI of the associated project resource
          readOnly: true
        capability_uri:
          type: string
          title: Capability Uri
          description: URI of the associated capability resource
          readOnly: true
      additionalProperties: true
      type: object
      required:
      - id
      - entries
      - project_uri
      - capability_uri
      title: ProjectAllocation
      description: 'A project''s allocation for a capability. (aka. repo)

        This allocation is a piece of the total allocation for the capability. (eg.
        5% of the total node hours of Perlmutter GPU nodes)

        A project would at least have a storage and job repos, maybe more than 1 of
        each.'
    PutFileChmodRequest:
      properties:
        path:
          anyOf:
          - type: string
          - type: 'null'
          title: Path
          description: Source file or directory path
          example: /home/user/dir
        mode:
          type: string
          title: Mode
          description: Mode in octal permission format
          example: '777'
      type: object
      required:
      - mode
      title: PutFileChmodRequest
      description: Represents a request to change file permissions.
      examples:
      - mode: '777'
        path: /home/user/dir/file.out
    PutFileChownRequest:
      properties:
        path:
          anyOf:
          - type: string
          - type: 'null'
          title: Path
          description: Source file or directory path
          example: /home/user/dir
        owner:
          type: string
          title: Owner
          description: User name of the new user owner of the file
          default: ''
          example: user
        group:
          type: string
          title: Group
          description: Group name of the new group owner of the file
          default: ''
          example: my-group
      type: object
      title: PutFileChownRequest
      description: Represents a request to change file ownership.
      examples:
      - group: my-group
        owner: user
        path: /home/user/dir/file.out
    Resolution:
      type: string
      enum:
      - unresolved
      - cancelled
      - completed
      - extended
      - pending
      title: Resolution
      description: Represents the resolution status of an incident.
    Resource:
      properties:
        attributes:
          anyOf:
          - additionalProperties: true
            type: object
          - type: 'null'
          title: Attributes
          description: Optional, type-specific metadata for this object. The meaning,
            permitted property names, and validation rules are determined by the object's
            own type (e.g. a Resource's resource_type URN selects its attribute profile).
            Omitted when there is no attribute data to report.
        id:
          type: string
          title: Id
          description: The unique identifier for the object. Typically a UUID or URN.
          example: urn:iri:object:1234
        name:
          anyOf:
          - type: string
          - type: 'null'
          title: Name
          description: The long name of the object.
          example: Perlmutter GPU
        description:
          anyOf:
          - type: string
          - type: 'null'
          title: Description
          description: Human-readable description of the object.
          example: High-performance GPU compute resource
        last_modified:
          type: string
          format: date-time
          title: Last Modified
          description: ISO 8601 timestamp when this object was last modified.
          example: '2026-02-21T12:00:00Z'
        group:
          anyOf:
          - type: string
          - type: 'null'
          title: Group
          description: Logical grouping of the resource
          example: frontend
        current_status:
          anyOf:
          - $ref: '#/components/schemas/Status'
          - type: 'null'
          description: The current status comes from the status of the last event
            for this resource
          example: up
        resource_type:
          type: string
          title: Resource Type
          description: DOE IRI URN for the resource type
          examples:
          - urn:doe-iri:resource:compute
          - urn:doe-iri:resource:storage
          - urn:doe-iri:service:generic
          example: urn:doe-iri:service:generic
        supported_endpoints:
          items:
            $ref: '#/components/schemas/Endpoint'
          type: array
          title: Supported Endpoints
          description: a list of endpoints where this resource can be used
        self_uri:
          type: string
          title: Self Uri
          description: The canonical URL of this object
          readOnly: true
        site_uri:
          type: string
          title: Site Uri
          description: Required authoritative URI of the site where this resource
            is located. When `_links.iri:located-at` is present, its `href` MUST exactly
            equal this value.
          readOnly: true
        capability_uris:
          items:
            type: string
          type: array
          title: Capability Uris
          description: The list of capabilities in this resource
          readOnly: true
        _links:
          $ref: '#/components/schemas/HalLinks'
          readOnly: true
      additionalProperties: true
      type: object
      required:
      - id
      - last_modified
      - resource_type
      - self_uri
      - site_uri
      - capability_uris
      title: Resource
      description: Represents a resource in the system.
    ResourceSpec:
      properties:
        attributes:
          anyOf:
          - additionalProperties: true
            type: object
          - type: 'null'
          title: Attributes
          description: Optional, type-specific metadata for this object. The meaning,
            permitted property names, and validation rules are determined by the object's
            own type (e.g. a Resource's resource_type URN selects its attribute profile).
            Omitted when there is no attribute data to report.
        node_count:
          anyOf:
          - type: integer
            minimum: 1.0
          - type: 'null'
          title: Node Count
          description: Number of compute nodes to allocate
          example: 2
        process_count:
          anyOf:
          - type: integer
            minimum: 1.0
          - type: 'null'
          title: Process Count
          description: Total number of processes to launch
          example: 64
        processes_per_node:
          anyOf:
          - type: integer
            minimum: 1.0
          - type: 'null'
          title: Processes Per Node
          description: Number of processes to launch per node
          example: 32
        cpu_cores_per_process:
          anyOf:
          - type: integer
            minimum: 1.0
          - type: 'null'
          title: Cpu Cores Per Process
          description: Number of CPU cores to allocate per process
          example: 2
        gpu_cores_per_process:
          anyOf:
          - type: integer
            minimum: 1.0
          - type: 'null'
          title: Gpu Cores Per Process
          description: Number of GPU cores to allocate per process
          example: 1
        exclusive_node_use:
          type: boolean
          title: Exclusive Node Use
          description: Whether to request exclusive use of allocated nodes
          default: true
          example: true
        memory:
          anyOf:
          - type: integer
            minimum: 1.0
          - type: 'null'
          title: Memory
          description: Amount of memory to allocate in bytes
          example: 17179869184
      additionalProperties: true
      type: object
      title: ResourceSpec
      description: Specification of computational resources required for a job.
    Site:
      properties:
        attributes:
          anyOf:
          - additionalProperties: true
            type: object
          - type: 'null'
          title: Attributes
          description: Optional, type-specific metadata for this object. The meaning,
            permitted property names, and validation rules are determined by the object's
            own type (e.g. a Resource's resource_type URN selects its attribute profile).
            Omitted when there is no attribute data to report.
        id:
          type: string
          title: Id
          description: The unique identifier for the object. Typically a UUID or URN.
          example: urn:iri:object:1234
        name:
          anyOf:
          - type: string
          - type: 'null'
          title: Name
          description: The long name of the object.
          example: Perlmutter GPU
        description:
          anyOf:
          - type: string
          - type: 'null'
          title: Description
          description: Human-readable description of the object.
          example: High-performance GPU compute resource
        last_modified:
          type: string
          format: date-time
          title: Last Modified
          description: ISO 8601 timestamp when this object was last modified.
          example: '2026-02-21T12:00:00Z'
        short_name:
          anyOf:
          - type: string
          - type: 'null'
          title: Short Name
          description: Common or short name of the Site.
          example: NERSC
        operating_organization:
          anyOf:
          - type: string
          - type: 'null'
          title: Operating Organization
          description: Organization operating the Site.
          example: Lawrence Berkeley National Laboratory
        country_name:
          anyOf:
          - type: string
          - type: 'null'
          title: Country Name
          description: Country name of the Location.
          example: United States
        locality_name:
          anyOf:
          - type: string
          - type: 'null'
          title: Locality Name
          description: City or locality name of the Location.
          example: Berkeley
        state_or_province_name:
          anyOf:
          - type: string
          - type: 'null'
          title: State Or Province Name
          description: State or province name of the Location.
          example: California
        street_address:
          anyOf:
          - type: string
          - type: 'null'
          title: Street Address
          description: Street address of the Location.
          example: 1 Cyclotron Rd
        unlocode:
          anyOf:
          - type: string
          - type: 'null'
          title: Unlocode
          description: United Nations trade and transport location code.
          example: USOAK
        altitude:
          anyOf:
          - type: number
          - type: 'null'
          title: Altitude
          description: Altitude of the Location.
          example: 52.0
        latitude:
          anyOf:
          - type: number
          - type: 'null'
          title: Latitude
          description: Latitude of the Location.
          example: 37.8762
        longitude:
          anyOf:
          - type: number
          - type: 'null'
          title: Longitude
          description: Longitude of the Location.
          example: -122.2506
        self_uri:
          type: string
          title: Self Uri
          description: The canonical URL of this object
          readOnly: true
        resource_uris:
          items:
            type: string
          type: array
          title: Resource Uris
          description: URIs of Resources hosted at this Site.
          readOnly: true
      additionalProperties: true
      type: object
      required:
      - id
      - last_modified
      - operating_organization
      - self_uri
      - resource_uris
      title: Site
      description: A physical site that hosts resources and is part of a facility.
    Status:
      type: string
      enum:
      - up
      - down
      - degraded
      - unknown
      title: Status
      description: Represents the status of a resource.
    StorageInstance:
      properties:
        logical_name:
          $ref: '#/components/schemas/LogicalName'
          description: Logical filesystem tier name
          example: scratch
        path:
          type: string
          title: Path
          description: Absolute resolved path for this user at the resource
          example: /pscratch/sd/j/jbalcas
        filesystem:
          anyOf:
          - type: string
          - type: 'null'
          title: Filesystem
          description: Underlying filesystem type or label
          example: lustre-scratch
        performance_tier:
          anyOf:
          - type: string
          - type: 'null'
          title: Performance Tier
          description: Performance tier classification (high / medium / low / tape)
          example: high
        purge_policy_days:
          anyOf:
          - type: integer
          - type: 'null'
          title: Purge Policy Days
          description: Days of inactivity before automatic purge; None means no purge
            policy
          example: 30
        shared:
          type: boolean
          title: Shared
          description: True if the path is shared across multiple users or projects
          default: false
          example: false
        access:
          $ref: '#/components/schemas/AccessPermissions'
          description: Access permissions through the queried resource context
      type: object
      required:
      - logical_name
      - path
      - access
      title: StorageInstance
      description: A concrete storage instance visible through a resource for a given
        logical filesystem tier.
    StorageIntent:
      type: string
      enum:
      - read
      - write
      - staging
      - long-term-storage
      title: StorageIntent
      description: Intended use hint to filter returned storage locations.
    Task:
      properties:
        id:
          type: string
          title: Id
          description: Unique identifier of the task
          example: task-123
        status:
          $ref: '#/components/schemas/TaskStatus'
          description: Current status of the task
          default: pending
          example: pending
        result:
          anyOf:
          - additionalProperties: true
            type: object
          - type: 'null'
          title: Result
          description: Result of the task execution, if available
        command:
          anyOf:
          - $ref: '#/components/schemas/TaskCommand'
          - type: 'null'
          description: Command associated with this task
        _links:
          $ref: '#/components/schemas/HalLinks'
          readOnly: true
      type: object
      required:
      - id
      title: Task
      description: Represents a task in the system.
    TaskCommand:
      properties:
        router:
          type: string
          title: Router
          description: Router name the task comes from
          example: filesystem
        command:
          type: string
          title: Command
          description: Command to execute
          example: chmod
        args:
          additionalProperties: true
          type: object
          title: Args
          description: Command arguments as key-value pairs
          example:
            mode: '755'
            path: /home/user/file
      type: object
      required:
      - router
      - command
      - args
      title: TaskCommand
      description: Represents a command to be executed as part of a task.
    TaskStatus:
      type: string
      enum:
      - pending
      - active
      - completed
      - failed
      - canceled
      title: TaskStatus
      description: Represents the status of a task.
    TaskSubmitResponse:
      properties:
        task_id:
          type: string
          title: Task Id
          description: Identifier of the submitted task
          example: task-123
        task_uri:
          type: string
          title: Task Uri
          description: The list of past events in this incident
          readOnly: true
        _links:
          $ref: '#/components/schemas/HalLinks'
          readOnly: true
      type: object
      required:
      - task_id
      - task_uri
      title: TaskSubmitResponse
      description: Response model for submitting a task
    UserAllocation:
      properties:
        attributes:
          anyOf:
          - additionalProperties: true
            type: object
          - type: 'null'
          title: Attributes
          description: Optional, type-specific metadata for this object. The meaning,
            permitted property names, and validation rules are determined by the object's
            own type (e.g. a Resource's resource_type URN selects its attribute profile).
            Omitted when there is no attribute data to report.
        id:
          type: string
          title: Id
          description: Unique identifier of the user allocation.
          example: user-alloc-42
        user_id:
          type: string
          title: User Id
          description: Identifier of the user receiving this allocation.
          example: user-123
        entries:
          items:
            $ref: '#/components/schemas/AllocationEntry'
          type: array
          title: Entries
          description: Allocation entries describing usage and limits.
        project_allocation_uri:
          type: string
          title: Project Allocation Uri
          description: URI of the associated project allocation
          readOnly: true
      additionalProperties: true
      type: object
      required:
      - id
      - user_id
      - entries
      - project_allocation_uri
      title: UserAllocation
      description: 'A user''s allcation in a project.

        This allocation is a piece of the project''s allocation.'
    VolumeMount:
      properties:
        attributes:
          anyOf:
          - additionalProperties: true
            type: object
          - type: 'null'
          title: Attributes
          description: Optional, type-specific metadata for this object. The meaning,
            permitted property names, and validation rules are determined by the object's
            own type (e.g. a Resource's resource_type URN selects its attribute profile).
            Omitted when there is no attribute data to report.
        source:
          type: string
          minLength: 1
          title: Source
          description: The source path on the host system to mount
          example: /data/project
        target:
          type: string
          minLength: 1
          title: Target
          description: The target path inside the container where the volume will
            be mounted
          example: /mnt/data
        read_only:
          type: boolean
          title: Read Only
          description: Whether the mount should be read-only
          default: true
          example: true
      additionalProperties: true
      type: object
      required:
      - source
      - target
      title: VolumeMount
      description: Represents a volume mount for a container.
  securitySchemes:
    HTTPBearer:
      type: http
      scheme: bearer
openapi: 3.1.0
info:
  title: IRI Facility API reference implementation
  description: '

    A simple implementation of the IRI facility API using python and the fastApi library.


    For more information, see: [https://iri.science/](https://iri.science/)


    <img src="https://iri.science/images/doe-icon-old.png" height=50 />

    '
  termsOfService: https://www.somefacility.gov/terms-of-service
  contact:
    name: Facility API contact
    url: https://www.somefacility.gov/about/contact-us/
  version: 2.0.0
servers:
- url: https://api.iri.nersc.gov
paths:
  /api/v2/account/capabilities:
    get:
      tags:
      - account
      summary: Get the list of capabilities
      description: Get a list of capabilities at this facility.
      operationId: getCapabilities
      parameters:
      - name: name
        in: query
        required: false
        schema:
          anyOf:
          - type: string
            minLength: 1
          - type: 'null'
          title: Name
      - name: modified_since
        in: query
        required: false
        schema:
          type: string
          format: date-time
          description: Strict ISO8601 datetime. Only valid ISO8601 datetime strings
            are accepted.
          example: '2026-02-21T12:00:00Z'
          title: Modified Since
      - name: offset
        in: query
        required: false
        schema:
          type: integer
          maximum: 1000
          minimum: 0
          default: 0
          title: Offset
      - name: limit
        in: query
        required: false
        schema:
          type: integer
          maximum: 1000
          minimum: 0
          default: 100
          title: Limit
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Capability'
                title: Response Getcapabilities
        '400':
          description: Invalid request parameters
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '401':
          description: Unauthorized
          headers:
            WWW-Authenticate:
              description: Bearer authentication challenge
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '405':
          description: Method Not Allowed
          headers:
            Allow:
              description: Allowed HTTP methods
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '409':
          description: Conflict
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '422':
          description: Unprocessable Entity
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '501':
          description: Not Implemented
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '503':
          description: Service Unavailable
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '504':
          description: Gateway Timeout
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '304':
          description: Not Modified
      x-iri:
        maturity: production
        implementation:
          level: required
  /api/v2/account/capabilities/{capability_id}:
    get:
      tags:
      - account
      summary: Get a single capability
      description: Get a single capability at this facility.
      operationId: getCapability
      parameters:
      - name: capability_id
        in: path
        required: true
        schema:
          type: string
          title: Capability Id
      - name: modified_since
        in: query
        required: false
        schema:
          type: string
          format: date-time
          description: Strict ISO8601 datetime. Only valid ISO8601 datetime strings
            are accepted.
          example: '2026-02-21T12:00:00Z'
          title: Modified Since
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Capability'
        '400':
          description: Invalid request parameters
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '401':
          description: Unauthorized
          headers:
            WWW-Authenticate:
              description: Bearer authentication challenge
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '405':
          description: Method Not Allowed
          headers:
            Allow:
              description: Allowed HTTP methods
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '409':
          description: Conflict
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '422':
          description: Unprocessable Entity
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '501':
          description: Not Implemented
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '503':
          description: Service Unavailable
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '504':
          description: Gateway Timeout
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '304':
          description: Not Modified
      x-iri:
        maturity: production
        implementation:
          level: required
  /api/v2/account/projects:
    get:
      tags:
      - account
      summary: Get the projects of the current user
      description: Get a list of projects for the currently authenticated user at
        this facility.
      operationId: getProjects
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                items:
                  $ref: '#/components/schemas/Project'
                type: array
                title: Response Getprojects
        '400':
          description: Invalid request parameters
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '401':
          description: Unauthorized
          headers:
            WWW-Authenticate:
              description: Bearer authentication challenge
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '405':
          description: Method Not Allowed
          headers:
            Allow:
              description: Allowed HTTP methods
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '409':
          description: Conflict
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '422':
          description: Unprocessable Entity
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '501':
          description: Not Implemented
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '503':
          description: Service Unavailable
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '504':
          description: Gateway Timeout
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '304':
          description: Not Modified
      security:
      - HTTPBearer: []
      x-iri:
        maturity: production
        implementation:
          level: required
  /api/v2/account/projects/{project_id}:
    get:
      tags:
      - account
      summary: Get a single project
      description: Get a single project at this facility.
      operationId: getProject
      security:
      - HTTPBearer: []
      parameters:
      - name: project_id
        in: path
        required: true
        schema:
          type: string
          title: Project Id
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Project'
        '400':
          description: Invalid request parameters
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '401':
          description: Unauthorized
          headers:
            WWW-Authenticate:
              description: Bearer authentication challenge
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '405':
          description: Method Not Allowed
          headers:
            Allow:
              description: Allowed HTTP methods
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '409':
          description: Conflict
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '422':
          description: Unprocessable Entity
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '501':
          description: Not Implemented
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '503':
          description: Service Unavailable
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '504':
          description: Gateway Timeout
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '304':
          description: Not Modified
      x-iri:
        maturity: production
        implementation:
          level: required
  /api/v2/account/projects/{project_id}/project_allocations:
    get:
      tags:
      - account
      summary: Get the allocations of the current user's projects
      description: Get a list of allocations for the currently authenticated user's
        projects at this facility.
      operationId: getProjectAllocationsByProject
      security:
      - HTTPBearer: []
      parameters:
      - name: project_id
        in: path
        required: true
        schema:
          type: string
          title: Project Id
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/ProjectAllocation'
                title: Response Getprojectallocationsbyproject
        '400':
          description: Invalid request parameters
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '401':
          description: Unauthorized
          headers:
            WWW-Authenticate:
              description: Bearer authentication challenge
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '405':
          description: Method Not Allowed
          headers:
            Allow:
              description: Allowed HTTP methods
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '409':
          description: Conflict
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '422':
          description: Unprocessable Entity
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '501':
          description: Not Implemented
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '503':
          description: Service Unavailable
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '504':
          description: Gateway Timeout
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '304':
          description: Not Modified
      x-iri:
        maturity: production
        implementation:
          level: required
  /api/v2/account/projects/{project_id}/project_allocations/{project_allocation_id}:
    get:
      tags:
      - account
      summary: Get a single project allocation
      description: Get a single project allocation at this facility for this user.
      operationId: getProjectAllocationByProject
      security:
      - HTTPBearer: []
      parameters:
      - name: project_id
        in: path
        required: true
        schema:
          type: string
          title: Project Id
      - name: project_allocation_id
        in: path
        required: true
        schema:
          type: string
          title: Project Allocation Id
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProjectAllocation'
        '400':
          description: Invalid request parameters
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '401':
          description: Unauthorized
          headers:
            WWW-Authenticate:
              description: Bearer authentication challenge
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '405':
          description: Method Not Allowed
          headers:
            Allow:
              description: Allowed HTTP methods
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '409':
          description: Conflict
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '422':
          description: Unprocessable Entity
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '501':
          description: Not Implemented
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '503':
          description: Service Unavailable
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '504':
          description: Gateway Timeout
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '304':
          description: Not Modified
      x-iri:
        maturity: production
        implementation:
          level: required
  /api/v2/account/projects/{project_id}/project_allocations/{project_allocation_id}/user_allocations:
    get:
      tags:
      - account
      summary: Get the user allocations of the current user's projects
      description: Get a list of user allocations for the currently authenticated
        user's projects at this facility.
      operationId: getUserAllocationsByProjectAllocation
      security:
      - HTTPBearer: []
      parameters:
      - name: project_id
        in: path
        required: true
        schema:
          type: string
          title: Project Id
      - name: project_allocation_id
        in: path
        required: true
        schema:
          type: string
          title: Project Allocation Id
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/UserAllocation'
                title: Response Getuserallocationsbyprojectallocation
        '400':
          description: Invalid request parameters
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '401':
          description: Unauthorized
          headers:
            WWW-Authenticate:
              description: Bearer authentication challenge
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '405':
          description: Method Not Allowed
          headers:
            Allow:
              description: Allowed HTTP methods
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '409':
          description: Conflict
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '422':
          description: Unprocessable Entity
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '501':
          description: Not Implemented
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '503':
          description: Service Unavailable
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '504':
          description: Gateway Timeout
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '304':
          description: Not Modified
      x-iri:
        maturity: production
        implementation:
          level: required
  /api/v2/account/projects/{project_id}/project_allocations/{project_allocation_id}/user_allocations/{user_allocation_id}:
    get:
      tags:
      - account
      summary: Get a user allocation of the current user's projects
      description: Get a user allocation for the currently authenticated user's projects
        at this facility.
      operationId: getUserAllocationByProjectAllocation
      security:
      - HTTPBearer: []
      parameters:
      - name: project_id
        in: path
        required: true
        schema:
          type: string
          title: Project Id
      - name: project_allocation_id
        in: path
        required: true
        schema:
          type: string
          title: Project Allocation Id
      - name: user_allocation_id
        in: path
        required: true
        schema:
          type: string
          title: User Allocation Id
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UserAllocation'
        '400':
          description: Invalid request parameters
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '401':
          description: Unauthorized
          headers:
            WWW-Authenticate:
              description: Bearer authentication challenge
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '405':
          description: Method Not Allowed
          headers:
            Allow:
              description: Allowed HTTP methods
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '409':
          description: Conflict
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '422':
          description: Unprocessable Entity
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '501':
          description: Not Implemented
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '503':
          description: Service Unavailable
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '504':
          description: Gateway Timeout
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '304':
          description: Not Modified
      x-iri:
        maturity: production
        implementation:
          level: required
  /api/v2/compute/resources:
    get:
      tags:
      - compute
      summary: Get Resources
      description: Get a list of resources that can be used in this endpoint
      operationId: getComputeResources
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                items:
                  $ref: '#/components/schemas/Resource'
                type: array
                title: Response Getcomputeresources
        '400':
          description: Invalid request parameters
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '401':
          description: Unauthorized
          headers:
            WWW-Authenticate:
              description: Bearer authentication challenge
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '405':
          description: Method Not Allowed
          headers:
            Allow:
              description: Allowed HTTP methods
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '409':
          description: Conflict
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '422':
          description: Unprocessable Entity
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '501':
          description: Not Implemented
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '503':
          description: Service Unavailable
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '504':
          description: Gateway Timeout
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '304':
          description: Not Modified
      x-iri:
        maturity: planned
  /api/v2/compute/job/{resource_id}:
    post:
      tags:
      - compute
      summary: Submit Job
      description: 'Submit a job on a compute resource


        - **resource**: the name of the compute resource to use

        - **job_request**: a PSIJ job spec as defined <a href="https://exaworks.org/psij-python/docs/v/0.9.11/.generated/tree.html#jobspec">here</a>


        This command will attempt to submit a job and return its id.'
      operationId: launchJob
      x-iri-relation:
      - https://iri.science/rels/submit-job
      security:
      - HTTPBearer: []
      parameters:
      - name: resource_id
        in: path
        required: true
        schema:
          type: string
          title: Resource Id
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/JobSpec'
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Job'
        '400':
          description: Invalid request parameters
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '401':
          description: Unauthorized
          headers:
            WWW-Authenticate:
              description: Bearer authentication challenge
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '405':
          description: Method Not Allowed
          headers:
            Allow:
              description: Allowed HTTP methods
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '409':
          description: Conflict
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '422':
          description: Unprocessable Entity
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '501':
          description: Not Implemented
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '503':
          description: Service Unavailable
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '504':
          description: Gateway Timeout
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '304':
          description: Not Modified
      x-iri:
        maturity: production
        implementation:
          level: required
  /api/v2/compute/job/{resource_id}/{job_id}:
    put:
      tags:
      - compute
      summary: Update Job
      description: 'Update a previously submitted job for a resource.

        Note that only some attributes of a scheduled job can be updated. Check the
        facility documentation for details.


        - **resource**: the name of the compute resource to use

        - **job_request**: a PSIJ job spec as defined <a href="https://exaworks.org/psij-python/docs/v/0.9.11/.generated/tree.html#jobspec">here</a>'
      operationId: updateJob
      x-iri-relation:
      - https://iri.science/rels/update-job
      security:
      - HTTPBearer: []
      parameters:
      - name: resource_id
        in: path
        required: true
        schema:
          type: string
          title: Resource Id
      - name: job_id
        in: path
        required: true
        schema:
          type: string
          title: Job Id
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/JobSpec'
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Job'
        '400':
          description: Invalid request parameters
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '401':
          description: Unauthorized
          headers:
            WWW-Authenticate:
              description: Bearer authentication challenge
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '405':
          description: Method Not Allowed
          headers:
            Allow:
              description: Allowed HTTP methods
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '409':
          description: Conflict
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '422':
          description: Unprocessable Entity
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '501':
          description: Not Implemented
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '503':
          description: Service Unavailable
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '504':
          description: Gateway Timeout
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '304':
          description: Not Modified
      x-iri:
        maturity: production
        implementation:
          level: required
  /api/v2/compute/status/{resource_id}/{job_id}:
    get:
      tags:
      - compute
      summary: Get Job Status
      description: Get a job's status
      operationId: getJob
      x-iri-relation:
      - https://iri.science/rels/get-job
      security:
      - HTTPBearer: []
      parameters:
      - name: resource_id
        in: path
        required: true
        schema:
          type: string
          title: Resource Id
      - name: job_id
        in: path
        required: true
        schema:
          type: string
          title: Job Id
      - name: historical
        in: query
        required: false
        schema:
          anyOf:
          - type: boolean
            description: Strict boolean. Only true/false allowed (bool or string).
            example: true
          - type: 'null'
          description: Whether to include historical jobs. Defaults to true
          default: true
          title: Historical
        description: Whether to include historical jobs. Defaults to true
      - name: include_spec
        in: query
        required: false
        schema:
          anyOf:
          - type: boolean
            description: Strict boolean. Only true/false allowed (bool or string).
            example: true
          - type: 'null'
          description: Whether to include the job specification. Defaults to false
          default: false
          title: Include Spec
        description: Whether to include the job specification. Defaults to false
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Job'
        '400':
          description: Invalid request parameters
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '401':
          description: Unauthorized
          headers:
            WWW-Authenticate:
              description: Bearer authentication challenge
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '405':
          description: Method Not Allowed
          headers:
            Allow:
              description: Allowed HTTP methods
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '409':
          description: Conflict
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '422':
          description: Unprocessable Entity
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '501':
          description: Not Implemented
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '503':
          description: Service Unavailable
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '504':
          description: Gateway Timeout
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '304':
          description: Not Modified
      x-iri:
        maturity: production
        implementation:
          level: required
  /api/v2/compute/status/{resource_id}:
    post:
      tags:
      - compute
      summary: Get Job Statuses
      description: Get multiple jobs' statuses
      operationId: getJobs
      x-iri-relation:
      - https://iri.science/rels/query-jobs
      security:
      - HTTPBearer: []
      parameters:
      - name: resource_id
        in: path
        required: true
        schema:
          type: string
          title: Resource Id
      - name: offset
        in: query
        required: false
        schema:
          type: integer
          minimum: 0
          default: 0
          title: Offset
      - name: limit
        in: query
        required: false
        schema:
          type: integer
          maximum: 1000
          minimum: 0
          default: 100
          title: Limit
      - name: historical
        in: query
        required: false
        schema:
          anyOf:
          - type: boolean
            description: Strict boolean. Only true/false allowed (bool or string).
            example: true
          - type: 'null'
          description: Whether to include historical jobs. Defaults to false
          default: false
          title: Historical
        description: Whether to include historical jobs. Defaults to false
      - name: include_spec
        in: query
        required: false
        schema:
          anyOf:
          - type: boolean
            description: Strict boolean. Only true/false allowed (bool or string).
            example: true
          - type: 'null'
          description: Whether to include the job specification. Defaults to false
          default: false
          title: Include Spec
        description: Whether to include the job specification. Defaults to false
      requestBody:
        content:
          application/json:
            schema:
              anyOf:
              - type: object
                additionalProperties: true
              - type: 'null'
              title: Filters
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Job'
                title: Response Getjobs
        '400':
          description: Invalid request parameters
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '401':
          description: Unauthorized
          headers:
            WWW-Authenticate:
              description: Bearer authentication challenge
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '405':
          description: Method Not Allowed
          headers:
            Allow:
              description: Allowed HTTP methods
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '409':
          description: Conflict
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '422':
          description: Unprocessable Entity
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '501':
          description: Not Implemented
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '503':
          description: Service Unavailable
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '504':
          description: Gateway Timeout
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '304':
          description: Not Modified
      x-iri:
        maturity: production
        implementation:
          level: required
  /api/v2/compute/cancel/{resource_id}/{job_id}:
    delete:
      tags:
      - compute
      summary: Cancel Job
      description: Cancel a job
      operationId: cancelJob
      x-iri-relation:
      - https://iri.science/rels/cancel-job
      security:
      - HTTPBearer: []
      parameters:
      - name: resource_id
        in: path
        required: true
        schema:
          type: string
          title: Resource Id
      - name: job_id
        in: path
        required: true
        schema:
          type: string
          title: Job Id
      responses:
        '204':
          description: Successful Response
        '400':
          description: Invalid request parameters
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '401':
          description: Unauthorized
          headers:
            WWW-Authenticate:
              description: Bearer authentication challenge
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '405':
          description: Method Not Allowed
          headers:
            Allow:
              description: Allowed HTTP methods
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '409':
          description: Conflict
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '422':
          description: Unprocessable Entity
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '501':
          description: Not Implemented
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '503':
          description: Service Unavailable
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '504':
          description: Gateway Timeout
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '304':
          description: Not Modified
      x-iri:
        maturity: production
        implementation:
          level: required
  /api/v2/facility:
    get:
      tags:
      - facility
      summary: Get Facility
      description: Get facility information
      operationId: getFacility
      parameters:
      - name: modified_since
        in: query
        required: false
        schema:
          type: string
          format: date-time
          description: Strict ISO8601 datetime. Only valid ISO8601 datetime strings
            are accepted.
          example: '2026-02-21T12:00:00Z'
          title: Modified Since
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Facility'
        '400':
          description: Invalid request parameters
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '401':
          description: Unauthorized
          headers:
            WWW-Authenticate:
              description: Bearer authentication challenge
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '405':
          description: Method Not Allowed
          headers:
            Allow:
              description: Allowed HTTP methods
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '409':
          description: Conflict
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '422':
          description: Unprocessable Entity
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '501':
          description: Not Implemented
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '503':
          description: Service Unavailable
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '504':
          description: Gateway Timeout
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '304':
          description: Not Modified
      x-iri:
        maturity: production
        implementation:
          level: required
  /api/v2/facility/sites:
    get:
      tags:
      - facility
      summary: List Sites
      description: List sites
      operationId: getSites
      parameters:
      - name: modified_since
        in: query
        required: false
        schema:
          type: string
          format: date-time
          description: Strict ISO8601 datetime. Only valid ISO8601 datetime strings
            are accepted.
          example: '2026-02-21T12:00:00Z'
          title: Modified Since
      - name: name
        in: query
        required: false
        schema:
          anyOf:
          - type: string
            minLength: 1
          - type: 'null'
          title: Name
      - name: offset
        in: query
        required: false
        schema:
          type: integer
          minimum: 0
          default: 0
          title: Offset
      - name: limit
        in: query
        required: false
        schema:
          type: integer
          maximum: 1000
          minimum: 0
          default: 100
          title: Limit
      - name: short_name
        in: query
        required: false
        schema:
          anyOf:
          - type: string
            minLength: 1
          - type: 'null'
          title: Short Name
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Site'
                title: Response Getsites
        '400':
          description: Invalid request parameters
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '401':
          description: Unauthorized
          headers:
            WWW-Authenticate:
              description: Bearer authentication challenge
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '405':
          description: Method Not Allowed
          headers:
            Allow:
              description: Allowed HTTP methods
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '409':
          description: Conflict
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '422':
          description: Unprocessable Entity
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '501':
          description: Not Implemented
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '503':
          description: Service Unavailable
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '504':
          description: Gateway Timeout
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '304':
          description: Not Modified
      x-iri:
        maturity: production
        implementation:
          level: required
  /api/v2/facility/sites/{site_id}:
    get:
      tags:
      - facility
      summary: Get Site
      description: Get site by ID
      operationId: getSite
      parameters:
      - name: site_id
        in: path
        required: true
        schema:
          type: string
          title: Site Id
      - name: modified_since
        in: query
        required: false
        schema:
          type: string
          format: date-time
          description: Strict ISO8601 datetime. Only valid ISO8601 datetime strings
            are accepted.
          example: '2026-02-21T12:00:00Z'
          title: Modified Since
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Site'
        '400':
          description: Invalid request parameters
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '401':
          description: Unauthorized
          headers:
            WWW-Authenticate:
              description: Bearer authentication challenge
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '405':
          description: Method Not Allowed
          headers:
            Allow:
              description: Allowed HTTP methods
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '409':
          description: Conflict
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '422':
          description: Unprocessable Entity
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '501':
          description: Not Implemented
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '503':
          description: Service Unavailable
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '504':
          description: Gateway Timeout
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '304':
          description: Not Modified
      x-iri:
        maturity: production
        implementation:
          level: required
  /api/v2/filesystem/resources:
    post:
      tags:
      - filesystem
      summary: Post Resources
      description: Get a list of resources that can be used in this endpoint
      operationId: getFilesystemResources
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                items:
                  $ref: '#/components/schemas/Resource'
                type: array
                title: Response Getfilesystemresources
        '400':
          description: Invalid request parameters
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '401':
          description: Unauthorized
          headers:
            WWW-Authenticate:
              description: Bearer authentication challenge
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '405':
          description: Method Not Allowed
          headers:
            Allow:
              description: Allowed HTTP methods
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '409':
          description: Conflict
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '422':
          description: Unprocessable Entity
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '501':
          description: Not Implemented
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '503':
          description: Service Unavailable
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '504':
          description: Gateway Timeout
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '304':
          description: Not Modified
      x-iri:
        maturity: planned
  /api/v2/filesystem/chmod/{resource_id}:
    post:
      tags:
      - filesystem
      summary: Post Chmod
      description: Change the permission mode of a file(`chmod`)
      operationId: chmod
      x-iri-relation:
      - https://iri.science/rels/change-file-mode
      security:
      - HTTPBearer: []
      parameters:
      - name: resource_id
        in: path
        required: true
        schema:
          type: string
          title: Resource Id
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PutFileChmodRequest'
      responses:
        '200':
          description: File permissions changed successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TaskSubmitResponse'
        '400':
          description: Invalid request parameters
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '401':
          description: Unauthorized
          headers:
            WWW-Authenticate:
              description: Bearer authentication challenge
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '405':
          description: Method Not Allowed
          headers:
            Allow:
              description: Allowed HTTP methods
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '409':
          description: Conflict
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '422':
          description: Unprocessable Entity
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '501':
          description: Not Implemented
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '503':
          description: Service Unavailable
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '504':
          description: Gateway Timeout
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '304':
          description: Not Modified
      x-iri:
        maturity: production
        implementation:
          level: required
  /api/v2/filesystem/chown/{resource_id}:
    post:
      tags:
      - filesystem
      summary: Post Chown
      description: Change the ownership of a given file (`chown`)
      operationId: chown
      x-iri-relation:
      - https://iri.science/rels/change-file-owner
      security:
      - HTTPBearer: []
      parameters:
      - name: resource_id
        in: path
        required: true
        schema:
          type: string
          title: Resource Id
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PutFileChownRequest'
      responses:
        '200':
          description: File ownership changed successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TaskSubmitResponse'
        '400':
          description: Invalid request parameters
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '401':
          description: Unauthorized
          headers:
            WWW-Authenticate:
              description: Bearer authentication challenge
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '405':
          description: Method Not Allowed
          headers:
            Allow:
              description: Allowed HTTP methods
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '409':
          description: Conflict
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '422':
          description: Unprocessable Entity
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '501':
          description: Not Implemented
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '503':
          description: Service Unavailable
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '504':
          description: Gateway Timeout
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '304':
          description: Not Modified
      x-iri:
        maturity: production
        implementation:
          level: required
  /api/v2/filesystem/file/{resource_id}:
    post:
      tags:
      - filesystem
      summary: Post File
      description: Output the type of a file or directory
      operationId: file
      x-iri-relation:
      - https://iri.science/rels/identify-file
      security:
      - HTTPBearer: []
      parameters:
      - name: resource_id
        in: path
        required: true
        schema:
          type: string
          title: Resource Id
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PostFileRequest'
      responses:
        '200':
          description: Type returned successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TaskSubmitResponse'
        '400':
          description: Invalid request parameters
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '401':
          description: Unauthorized
          headers:
            WWW-Authenticate:
              description: Bearer authentication challenge
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '405':
          description: Method Not Allowed
          headers:
            Allow:
              description: Allowed HTTP methods
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '409':
          description: Conflict
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '422':
          description: Unprocessable Entity
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '501':
          description: Not Implemented
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '503':
          description: Service Unavailable
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '504':
          description: Gateway Timeout
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '304':
          description: Not Modified
      x-iri:
        maturity: production
        implementation:
          level: required
  /api/v2/filesystem/stat/{resource_id}:
    post:
      tags:
      - filesystem
      summary: Post Stat
      description: Output the `stat` of a file
      operationId: stat
      x-iri-relation:
      - https://iri.science/rels/stat-file
      security:
      - HTTPBearer: []
      parameters:
      - name: resource_id
        in: path
        required: true
        schema:
          type: string
          title: Resource Id
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PostStatRequest'
      responses:
        '200':
          description: Stat returned successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TaskSubmitResponse'
        '400':
          description: Invalid request parameters
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '401':
          description: Unauthorized
          headers:
            WWW-Authenticate:
              description: Bearer authentication challenge
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '405':
          description: Method Not Allowed
          headers:
            Allow:
              description: Allowed HTTP methods
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '409':
          description: Conflict
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '422':
          description: Unprocessable Entity
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '501':
          description: Not Implemented
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '503':
          description: Service Unavailable
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '504':
          description: Gateway Timeout
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '304':
          description: Not Modified
      x-iri:
        maturity: production
        implementation:
          level: required
  /api/v2/filesystem/mkdir/{resource_id}:
    post:
      tags:
      - filesystem
      summary: Post Mkdir
      description: Create directory operation (`mkdir`)
      operationId: mkdir
      x-iri-relation:
      - https://iri.science/rels/create-directory
      security:
      - HTTPBearer: []
      parameters:
      - name: resource_id
        in: path
        required: true
        schema:
          type: string
          title: Resource Id
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PostMakeDirRequest'
      responses:
        '201':
          description: Directory created successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TaskSubmitResponse'
        '400':
          description: Invalid request parameters
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '401':
          description: Unauthorized
          headers:
            WWW-Authenticate:
              description: Bearer authentication challenge
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '405':
          description: Method Not Allowed
          headers:
            Allow:
              description: Allowed HTTP methods
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '409':
          description: Conflict
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '422':
          description: Unprocessable Entity
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '501':
          description: Not Implemented
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '503':
          description: Service Unavailable
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '504':
          description: Gateway Timeout
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '304':
          description: Not Modified
      x-iri:
        maturity: production
        implementation:
          level: required
  /api/v2/filesystem/symlink/{resource_id}:
    post:
      tags:
      - filesystem
      summary: Post Symlink
      description: Create symlink operation (`ln`)
      operationId: symlink
      x-iri-relation:
      - https://iri.science/rels/create-symlink
      security:
      - HTTPBearer: []
      parameters:
      - name: resource_id
        in: path
        required: true
        schema:
          type: string
          title: Resource Id
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PostFileSymlinkRequest'
      responses:
        '201':
          description: Symlink created successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TaskSubmitResponse'
        '400':
          description: Invalid request parameters
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '401':
          description: Unauthorized
          headers:
            WWW-Authenticate:
              description: Bearer authentication challenge
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '405':
          description: Method Not Allowed
          headers:
            Allow:
              description: Allowed HTTP methods
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '409':
          description: Conflict
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '422':
          description: Unprocessable Entity
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '501':
          description: Not Implemented
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '503':
          description: Service Unavailable
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '504':
          description: Gateway Timeout
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '304':
          description: Not Modified
      x-iri:
        maturity: production
        implementation:
          level: required
  /api/v2/filesystem/ls/{resource_id}:
    post:
      tags:
      - filesystem
      summary: Post Ls
      description: List the contents of the given directory (`ls`) asynchronously
      operationId: ls
      x-iri-relation:
      - https://iri.science/rels/list-directory
      security:
      - HTTPBearer: []
      parameters:
      - name: resource_id
        in: path
        required: true
        schema:
          type: string
          title: Resource Id
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PostLsRequest'
      responses:
        '200':
          description: Directory listed successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TaskSubmitResponse'
        '400':
          description: Invalid request parameters
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '401':
          description: Unauthorized
          headers:
            WWW-Authenticate:
              description: Bearer authentication challenge
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '405':
          description: Method Not Allowed
          headers:
            Allow:
              description: Allowed HTTP methods
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '409':
          description: Conflict
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '422':
          description: Unprocessable Entity
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '501':
          description: Not Implemented
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '503':
          description: Service Unavailable
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '504':
          description: Gateway Timeout
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '304':
          description: Not Modified
      x-iri:
        maturity: production
        implementation:
          level: required
  /api/v2/filesystem/head/{resource_id}:
    post:
      tags:
      - filesystem
      summary: Post Head
      description: Output the first part of file/s (`head`)
      operationId: head
      x-iri-relation:
      - https://iri.science/rels/read-file-head
      security:
      - HTTPBearer: []
      parameters:
      - name: resource_id
        in: path
        required: true
        schema:
          type: string
          title: Resource Id
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PostHeadRequest'
      responses:
        '200':
          description: Head operation finished successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TaskSubmitResponse'
        '400':
          description: Invalid request parameters
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '401':
          description: Unauthorized
          headers:
            WWW-Authenticate:
              description: Bearer authentication challenge
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '405':
          description: Method Not Allowed
          headers:
            Allow:
              description: Allowed HTTP methods
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '409':
          description: Conflict
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '422':
          description: Unprocessable Entity
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '501':
          description: Not Implemented
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '503':
          description: Service Unavailable
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '504':
          description: Gateway Timeout
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '304':
          description: Not Modified
      x-iri:
        maturity: production
        implementation:
          level: required
  /api/v2/filesystem/view/{resource_id}:
    post:
      tags:
      - filesystem
      summary: Post View
      description: View file content (up to max 5242880 bytes)
      operationId: view
      x-iri-relation:
      - https://iri.science/rels/view-file
      security:
      - HTTPBearer: []
      parameters:
      - name: resource_id
        in: path
        required: true
        schema:
          type: string
          title: Resource Id
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PostViewRequest'
      responses:
        '200':
          description: View operation finished successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TaskSubmitResponse'
        '400':
          description: Invalid request parameters
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '401':
          description: Unauthorized
          headers:
            WWW-Authenticate:
              description: Bearer authentication challenge
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '405':
          description: Method Not Allowed
          headers:
            Allow:
              description: Allowed HTTP methods
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '409':
          description: Conflict
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '422':
          description: Unprocessable Entity
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '501':
          description: Not Implemented
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '503':
          description: Service Unavailable
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '504':
          description: Gateway Timeout
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '304':
          description: Not Modified
      x-iri:
        maturity: production
        implementation:
          level: required
  /api/v2/filesystem/tail/{resource_id}:
    post:
      tags:
      - filesystem
      summary: Post Tail
      description: Output the last part of a file (`tail`)
      operationId: tail
      x-iri-relation:
      - https://iri.science/rels/read-file-tail
      security:
      - HTTPBearer: []
      parameters:
      - name: resource_id
        in: path
        required: true
        schema:
          type: string
          title: Resource Id
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PostTailRequest'
      responses:
        '200':
          description: '`tail` operation finished successfully'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TaskSubmitResponse'
        '400':
          description: Invalid request parameters
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '401':
          description: Unauthorized
          headers:
            WWW-Authenticate:
              description: Bearer authentication challenge
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '405':
          description: Method Not Allowed
          headers:
            Allow:
              description: Allowed HTTP methods
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '409':
          description: Conflict
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '422':
          description: Unprocessable Entity
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '501':
          description: Not Implemented
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '503':
          description: Service Unavailable
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '504':
          description: Gateway Timeout
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '304':
          description: Not Modified
      x-iri:
        maturity: production
        implementation:
          level: required
  /api/v2/filesystem/checksum/{resource_id}:
    post:
      tags:
      - filesystem
      summary: Post Checksum
      description: Output the checksum of a file (using SHA-256 algorithm)
      operationId: checksum
      x-iri-relation:
      - https://iri.science/rels/checksum-file
      security:
      - HTTPBearer: []
      parameters:
      - name: resource_id
        in: path
        required: true
        schema:
          type: string
          title: Resource Id
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PostChecksumRequest'
      responses:
        '200':
          description: Checksum returned successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TaskSubmitResponse'
        '400':
          description: Invalid request parameters
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '401':
          description: Unauthorized
          headers:
            WWW-Authenticate:
              description: Bearer authentication challenge
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '405':
          description: Method Not Allowed
          headers:
            Allow:
              description: Allowed HTTP methods
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '409':
          description: Conflict
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '422':
          description: Unprocessable Entity
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '501':
          description: Not Implemented
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '503':
          description: Service Unavailable
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '504':
          description: Gateway Timeout
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '304':
          description: Not Modified
      x-iri:
        maturity: production
        implementation:
          level: required
  /api/v2/filesystem/rm/{resource_id}:
    post:
      tags:
      - filesystem
      summary: Post Rm
      description: Delete file or directory operation (`rm`)
      operationId: rm
      x-iri-relation:
      - https://iri.science/rels/remove-path
      security:
      - HTTPBearer: []
      parameters:
      - name: resource_id
        in: path
        required: true
        schema:
          type: string
          title: Resource Id
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PostRmRequest'
      responses:
        '200':
          description: File or directory deleted successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TaskSubmitResponse'
        '400':
          description: Invalid request parameters
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '401':
          description: Unauthorized
          headers:
            WWW-Authenticate:
              description: Bearer authentication challenge
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '405':
          description: Method Not Allowed
          headers:
            Allow:
              description: Allowed HTTP methods
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '409':
          description: Conflict
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '422':
          description: Unprocessable Entity
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '501':
          description: Not Implemented
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '503':
          description: Service Unavailable
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '504':
          description: Gateway Timeout
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '304':
          description: Not Modified
      x-iri:
        maturity: production
        implementation:
          level: required
  /api/v2/filesystem/compress/{resource_id}:
    post:
      tags:
      - filesystem
      summary: Post Compress
      description: Compress files and directories using `tar` command
      operationId: compress
      x-iri-relation:
      - https://iri.science/rels/compress-paths
      security:
      - HTTPBearer: []
      parameters:
      - name: resource_id
        in: path
        required: true
        schema:
          type: string
          title: Resource Id
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PostCompressRequest'
      responses:
        '201':
          description: File and/or directories compressed successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TaskSubmitResponse'
        '400':
          description: Invalid request parameters
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '401':
          description: Unauthorized
          headers:
            WWW-Authenticate:
              description: Bearer authentication challenge
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '405':
          description: Method Not Allowed
          headers:
            Allow:
              description: Allowed HTTP methods
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '409':
          description: Conflict
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '422':
          description: Unprocessable Entity
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '501':
          description: Not Implemented
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '503':
          description: Service Unavailable
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '504':
          description: Gateway Timeout
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '304':
          description: Not Modified
      x-iri:
        maturity: production
        implementation:
          level: required
  /api/v2/filesystem/extract/{resource_id}:
    post:
      tags:
      - filesystem
      summary: Post Extract
      description: Extract `tar` `gzip` archives
      operationId: extract
      x-iri-relation:
      - https://iri.science/rels/extract-archive
      security:
      - HTTPBearer: []
      parameters:
      - name: resource_id
        in: path
        required: true
        schema:
          type: string
          title: Resource Id
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PostExtractRequest'
      responses:
        '201':
          description: File extracted successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TaskSubmitResponse'
        '400':
          description: Invalid request parameters
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '401':
          description: Unauthorized
          headers:
            WWW-Authenticate:
              description: Bearer authentication challenge
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '405':
          description: Method Not Allowed
          headers:
            Allow:
              description: Allowed HTTP methods
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '409':
          description: Conflict
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '422':
          description: Unprocessable Entity
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '501':
          description: Not Implemented
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '503':
          description: Service Unavailable
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '504':
          description: Gateway Timeout
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '304':
          description: Not Modified
      x-iri:
        maturity: production
        implementation:
          level: required
  /api/v2/filesystem/mv/{resource_id}:
    post:
      tags:
      - filesystem
      summary: Move Mv
      description: Create move file or directory operation (`mv`)
      operationId: mv
      x-iri-relation:
      - https://iri.science/rels/move-path
      security:
      - HTTPBearer: []
      parameters:
      - name: resource_id
        in: path
        required: true
        schema:
          type: string
          title: Resource Id
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PostMoveRequest'
      responses:
        '201':
          description: Move file or directory operation created successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TaskSubmitResponse'
        '400':
          description: Invalid request parameters
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '401':
          description: Unauthorized
          headers:
            WWW-Authenticate:
              description: Bearer authentication challenge
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '405':
          description: Method Not Allowed
          headers:
            Allow:
              description: Allowed HTTP methods
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '409':
          description: Conflict
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '422':
          description: Unprocessable Entity
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '501':
          description: Not Implemented
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '503':
          description: Service Unavailable
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '504':
          description: Gateway Timeout
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '304':
          description: Not Modified
      x-iri:
        maturity: production
        implementation:
          level: required
  /api/v2/filesystem/cp/{resource_id}:
    post:
      tags:
      - filesystem
      summary: Post Cp
      description: Create copy file or directory operation (`cp`)
      operationId: cp
      x-iri-relation:
      - https://iri.science/rels/copy-path
      security:
      - HTTPBearer: []
      parameters:
      - name: resource_id
        in: path
        required: true
        schema:
          type: string
          title: Resource Id
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PostCopyRequest'
      responses:
        '201':
          description: Copy file or directory operation created successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TaskSubmitResponse'
        '400':
          description: Invalid request parameters
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '401':
          description: Unauthorized
          headers:
            WWW-Authenticate:
              description: Bearer authentication challenge
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '405':
          description: Method Not Allowed
          headers:
            Allow:
              description: Allowed HTTP methods
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '409':
          description: Conflict
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '422':
          description: Unprocessable Entity
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '501':
          description: Not Implemented
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '503':
          description: Service Unavailable
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '504':
          description: Gateway Timeout
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '304':
          description: Not Modified
      x-iri:
        maturity: production
        implementation:
          level: required
  /api/v2/filesystem/download/{resource_id}:
    post:
      tags:
      - filesystem
      summary: Post Download
      description: Download a small file (max 5242880 Bytes)
      operationId: download
      x-iri-relation:
      - https://iri.science/rels/download-file
      security:
      - HTTPBearer: []
      parameters:
      - name: resource_id
        in: path
        required: true
        schema:
          type: string
          title: Resource Id
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PostDownloadRequest'
      responses:
        '200':
          description: File downloaded successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TaskSubmitResponse'
        '400':
          description: Invalid request parameters
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '401':
          description: Unauthorized
          headers:
            WWW-Authenticate:
              description: Bearer authentication challenge
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '405':
          description: Method Not Allowed
          headers:
            Allow:
              description: Allowed HTTP methods
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '409':
          description: Conflict
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '422':
          description: Unprocessable Entity
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '501':
          description: Not Implemented
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '503':
          description: Service Unavailable
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '504':
          description: Gateway Timeout
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '304':
          description: Not Modified
      x-iri:
        maturity: production
        implementation:
          level: required
  /api/v2/filesystem/upload/{resource_id}:
    post:
      tags:
      - filesystem
      summary: Post Upload
      description: Upload a small file (max 5242880 Bytes)
      operationId: upload
      x-iri-relation:
      - https://iri.science/rels/upload-file
      security:
      - HTTPBearer: []
      parameters:
      - name: resource_id
        in: path
        required: true
        schema:
          type: string
          title: Resource Id
      - name: path
        in: query
        required: true
        schema:
          type: string
          description: Specify path where file should be uploaded.
          title: Path
        description: Specify path where file should be uploaded.
      requestBody:
        required: true
        content:
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/Body_upload'
      responses:
        '200':
          description: File uploaded successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TaskSubmitResponse'
        '400':
          description: Invalid request parameters
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '401':
          description: Unauthorized
          headers:
            WWW-Authenticate:
              description: Bearer authentication challenge
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '405':
          description: Method Not Allowed
          headers:
            Allow:
              description: Allowed HTTP methods
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '409':
          description: Conflict
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '422':
          description: Unprocessable Entity
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '501':
          description: Not Implemented
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '503':
          description: Service Unavailable
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '504':
          description: Gateway Timeout
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '304':
          description: Not Modified
      x-iri:
        maturity: production
        implementation:
          level: required
  /api/v2/status/resources:
    get:
      tags:
      - status
      summary: Get all resources
      description: Get a list of all resources at this facility. You can optionally
        filter the returned list by specifying attribtes.
      operationId: getResources
      parameters:
      - name: name
        in: query
        required: false
        schema:
          type: string
          minLength: 1
          title: Name
      - name: description
        in: query
        required: false
        schema:
          type: string
          minLength: 1
          title: Description
      - name: group
        in: query
        required: false
        schema:
          type: string
          minLength: 1
          title: Group
      - name: offset
        in: query
        required: false
        schema:
          type: integer
          minimum: 0
          default: 0
          title: Offset
      - name: limit
        in: query
        required: false
        schema:
          type: integer
          maximum: 1000
          minimum: 0
          default: 100
          title: Limit
      - name: modified_since
        in: query
        required: false
        schema:
          type: string
          format: date-time
          description: Strict ISO8601 datetime. Only valid ISO8601 datetime strings
            are accepted.
          example: '2026-02-21T12:00:00Z'
          title: Modified Since
      - name: resource_type
        in: query
        required: false
        schema:
          type: string
          minLength: 15
          pattern: ^urn:doe-iri:[A-Za-z0-9][A-Za-z0-9-]{0,31}:(?:[A-Za-z0-9._~-]|%[0-9A-Fa-f]{2}|[!$&'()*+,;=@]|/)+(?::(?:[A-Za-z0-9._~-]|%[0-9A-Fa-f]{2}|[!$&'()*+,;=@]|/)+)*$
          description: DOE IRI resource type URN (urn:doe-iri:<domain>:<nss>). Facility-local
            extensions accepted. Matching is by URN prefix, so a canonical/parent
            URN (e.g. urn:doe-iri:resource:storage) returns resources of that type
            and of any more specific child type (e.g. urn:doe-iri:resource:storage:system);
            a full child URN matches only that exact type.
          examples:
          - urn:doe-iri:resource:compute
          - urn:doe-iri:resource:storage
          - urn:doe-iri:resource:storage:system
          - urn:doe-iri:service:generic
          title: Resource Type
        description: DOE IRI resource type URN (urn:doe-iri:<domain>:<nss>). Facility-local
          extensions accepted. Matching is by URN prefix, so a canonical/parent URN
          (e.g. urn:doe-iri:resource:storage) returns resources of that type and of
          any more specific child type (e.g. urn:doe-iri:resource:storage:system);
          a full child URN matches only that exact type.
      - name: current_status
        in: query
        required: false
        schema:
          $ref: '#/components/schemas/Status'
      - name: capability
        in: query
        required: false
        schema:
          type: array
          items:
            type: string
            minLength: 24
            pattern: ^urn:doe-iri:allocation:(?:[A-Za-z0-9._~-]|%[0-9A-Fa-f]{2}|[!$&'()*+,;=@]|/)+(?::(?:[A-Za-z0-9._~-]|%[0-9A-Fa-f]{2}|[!$&'()*+,;=@]|/)+)*$
            description: DOE IRI allocation-unit URN.
            examples:
            - urn:doe-iri:allocation:compute:node-hours
            - urn:doe-iri:allocation:storage:bytes
          minItems: 1
          title: Capability
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Resource'
                title: Response Getresources
        '400':
          description: Invalid request parameters
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '401':
          description: Unauthorized
          headers:
            WWW-Authenticate:
              description: Bearer authentication challenge
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '405':
          description: Method Not Allowed
          headers:
            Allow:
              description: Allowed HTTP methods
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '409':
          description: Conflict
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '422':
          description: Unprocessable Entity
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '501':
          description: Not Implemented
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '503':
          description: Service Unavailable
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '504':
          description: Gateway Timeout
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '304':
          description: Not Modified
      x-iri:
        maturity: production
        implementation:
          level: required
  /api/v2/status/resources/{resource_id}:
    get:
      tags:
      - status
      summary: Get a specific resource
      description: Get a specific resource for a given id
      operationId: getResource
      parameters:
      - name: resource_id
        in: path
        required: true
        schema:
          type: string
          title: Resource Id
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Resource'
        '400':
          description: Invalid request parameters
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '401':
          description: Unauthorized
          headers:
            WWW-Authenticate:
              description: Bearer authentication challenge
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '405':
          description: Method Not Allowed
          headers:
            Allow:
              description: Allowed HTTP methods
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '409':
          description: Conflict
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '422':
          description: Unprocessable Entity
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '501':
          description: Not Implemented
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '503':
          description: Service Unavailable
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '504':
          description: Gateway Timeout
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '304':
          description: Not Modified
      x-iri:
        maturity: production
        implementation:
          level: required
  /api/v2/status/incidents:
    get:
      tags:
      - status
      summary: Get all incidents without their events
      description: Get a list of all incidents. Each incident will be returned without
        its events.  You can optionally filter the returned list by specifying attributes.
      operationId: getIncidents
      parameters:
      - name: name
        in: query
        required: false
        schema:
          anyOf:
          - type: string
            minLength: 1
          - type: 'null'
          title: Name
      - name: description
        in: query
        required: false
        schema:
          anyOf:
          - type: string
            minLength: 1
          - type: 'null'
          title: Description
      - name: status
        in: query
        required: false
        schema:
          $ref: '#/components/schemas/Status'
      - name: type
        in: query
        required: false
        schema:
          $ref: '#/components/schemas/IncidentType'
      - name: from
        in: query
        required: false
        schema:
          type: string
          format: date-time
          description: Strict ISO8601 datetime. Only valid ISO8601 datetime strings
            are accepted.
          example: '2026-02-21T12:00:00Z'
          title: From
      - name: time
        in: query
        required: false
        schema:
          type: string
          format: date-time
          description: Strict ISO8601 datetime. Only valid ISO8601 datetime strings
            are accepted.
          example: '2026-02-21T12:00:00Z'
          title: Time
      - name: to
        in: query
        required: false
        schema:
          type: string
          format: date-time
          description: Strict ISO8601 datetime. Only valid ISO8601 datetime strings
            are accepted.
          example: '2026-02-21T12:00:00Z'
          title: To
      - name: modified_since
        in: query
        required: false
        schema:
          type: string
          format: date-time
          description: Strict ISO8601 datetime. Only valid ISO8601 datetime strings
            are accepted.
          example: '2026-02-21T12:00:00Z'
          title: Modified Since
      - name: resource_id
        in: query
        required: false
        schema:
          anyOf:
          - type: string
            minLength: 1
          - type: 'null'
          title: Resource Id
      - name: offset
        in: query
        required: false
        schema:
          type: integer
          minimum: 0
          default: 0
          title: Offset
      - name: limit
        in: query
        required: false
        schema:
          type: integer
          maximum: 1000
          minimum: 0
          default: 100
          title: Limit
      - name: resolution
        in: query
        required: false
        schema:
          $ref: '#/components/schemas/Resolution'
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Incident'
                title: Response Getincidents
        '400':
          description: Invalid request parameters
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '401':
          description: Unauthorized
          headers:
            WWW-Authenticate:
              description: Bearer authentication challenge
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '405':
          description: Method Not Allowed
          headers:
            Allow:
              description: Allowed HTTP methods
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '409':
          description: Conflict
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '422':
          description: Unprocessable Entity
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '501':
          description: Not Implemented
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '503':
          description: Service Unavailable
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '504':
          description: Gateway Timeout
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '304':
          description: Not Modified
      x-iri:
        maturity: production
        implementation:
          level: required
  /api/v2/status/incidents/{incident_id}:
    get:
      tags:
      - status
      summary: Get a specific incident and its events
      description: Get a specific incident for a given id. The incident's events will
        also be included.  You can optionally filter the returned list by specifying
        attributes.
      operationId: getIncident
      parameters:
      - name: incident_id
        in: path
        required: true
        schema:
          type: string
          title: Incident Id
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Incident'
        '400':
          description: Invalid request parameters
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '401':
          description: Unauthorized
          headers:
            WWW-Authenticate:
              description: Bearer authentication challenge
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '405':
          description: Method Not Allowed
          headers:
            Allow:
              description: Allowed HTTP methods
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '409':
          description: Conflict
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '422':
          description: Unprocessable Entity
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '501':
          description: Not Implemented
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '503':
          description: Service Unavailable
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '504':
          description: Gateway Timeout
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '304':
          description: Not Modified
      x-iri:
        maturity: production
        implementation:
          level: required
  /api/v2/status/events:
    get:
      tags:
      - status
      summary: Get all events
      description: Get a list of all events.  You can optionally filter the returned
        list by specifying attribtes.
      operationId: getEventsByIncident
      parameters:
      - name: incident_id
        in: query
        required: false
        schema:
          anyOf:
          - type: string
            minLength: 1
          - type: 'null'
          title: Incident Id
      - name: resource_id
        in: query
        required: false
        schema:
          anyOf:
          - type: string
            minLength: 1
          - type: 'null'
          title: Resource Id
      - name: name
        in: query
        required: false
        schema:
          anyOf:
          - type: string
            minLength: 1
          - type: 'null'
          title: Name
      - name: description
        in: query
        required: false
        schema:
          anyOf:
          - type: string
            minLength: 1
          - type: 'null'
          title: Description
      - name: status
        in: query
        required: false
        schema:
          $ref: '#/components/schemas/Status'
      - name: from
        in: query
        required: false
        schema:
          type: string
          format: date-time
          description: Strict ISO8601 datetime. Only valid ISO8601 datetime strings
            are accepted.
          example: '2026-02-21T12:00:00Z'
          title: From
      - name: time
        in: query
        required: false
        schema:
          type: string
          format: date-time
          description: Strict ISO8601 datetime. Only valid ISO8601 datetime strings
            are accepted.
          example: '2026-02-21T12:00:00Z'
          title: Time
      - name: to
        in: query
        required: false
        schema:
          type: string
          format: date-time
          description: Strict ISO8601 datetime. Only valid ISO8601 datetime strings
            are accepted.
          example: '2026-02-21T12:00:00Z'
          title: To
      - name: modified_since
        in: query
        required: false
        schema:
          type: string
          format: date-time
          description: Strict ISO8601 datetime. Only valid ISO8601 datetime strings
            are accepted.
          example: '2026-02-21T12:00:00Z'
          title: Modified Since
      - name: offset
        in: query
        required: false
        schema:
          type: integer
          minimum: 0
          default: 0
          title: Offset
      - name: limit
        in: query
        required: false
        schema:
          type: integer
          maximum: 1000
          minimum: 0
          default: 100
          title: Limit
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Event'
                title: Response Geteventsbyincident
        '400':
          description: Invalid request parameters
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '401':
          description: Unauthorized
          headers:
            WWW-Authenticate:
              description: Bearer authentication challenge
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '405':
          description: Method Not Allowed
          headers:
            Allow:
              description: Allowed HTTP methods
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '409':
          description: Conflict
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '422':
          description: Unprocessable Entity
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '501':
          description: Not Implemented
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '503':
          description: Service Unavailable
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '504':
          description: Gateway Timeout
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '304':
          description: Not Modified
      x-iri:
        maturity: production
        implementation:
          level: required
  /api/v2/status/events/{event_id}:
    get:
      tags:
      - status
      summary: Get a specific event
      description: Get a specific event for a given id
      operationId: getEventByIncident
      parameters:
      - name: event_id
        in: path
        required: true
        schema:
          type: string
          title: Event Id
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Event'
        '400':
          description: Invalid request parameters
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '401':
          description: Unauthorized
          headers:
            WWW-Authenticate:
              description: Bearer authentication challenge
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '405':
          description: Method Not Allowed
          headers:
            Allow:
              description: Allowed HTTP methods
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '409':
          description: Conflict
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '422':
          description: Unprocessable Entity
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '501':
          description: Not Implemented
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '503':
          description: Service Unavailable
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '504':
          description: Gateway Timeout
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '304':
          description: Not Modified
      x-iri:
        maturity: production
        implementation:
          level: required
  /api/v2/storage/locations/{resource_id}:
    get:
      tags:
      - storage
      summary: Get resolved storage locations for a resource
      description: 'Return the resolved storage paths for the authenticated user at
        the specified resource. The response includes both placement and access semantics
        for that resource context, so it can be used in place of a separate mounts
        endpoint. Optionally filter by logical name, project/allocation, and intent.


        Intent semantics:

        - `staging`: excludes archive (too slow for staging workflows)

        - `long-term-storage`: returns only archive

        - `write`: excludes paths that are read-only in a compute-job context

        - `read`: no filtering'
      operationId: getStorageLocations
      x-iri-relation:
      - https://iri.science/rels/resolve-storage-locations
      security:
      - HTTPBearer: []
      parameters:
      - name: resource_id
        in: path
        required: true
        schema:
          type: string
          title: Resource Id
      - name: logicalpath
        in: query
        required: false
        schema:
          anyOf:
          - $ref: '#/components/schemas/LogicalName'
          - type: 'null'
          description: Filter to a specific logical filesystem tier
          title: Logicalpath
        description: Filter to a specific logical filesystem tier
      - name: project
        in: query
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          description: Project or allocation identifier for project-scoped paths
          title: Project
        description: Project or allocation identifier for project-scoped paths
      - name: allocation
        in: query
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          description: Allocation identifier (alternative to project)
          title: Allocation
        description: Allocation identifier (alternative to project)
      - name: intent
        in: query
        required: false
        schema:
          anyOf:
          - $ref: '#/components/schemas/StorageIntent'
          - type: 'null'
          description: Intended use to guide which locations are returned
          title: Intent
        description: Intended use to guide which locations are returned
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/StorageInstance'
                title: Response Getstoragelocations
        '400':
          description: Invalid request parameters
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '401':
          description: Unauthorized
          headers:
            WWW-Authenticate:
              description: Bearer authentication challenge
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '405':
          description: Method Not Allowed
          headers:
            Allow:
              description: Allowed HTTP methods
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '409':
          description: Conflict
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '422':
          description: Unprocessable Entity
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '501':
          description: Not Implemented
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '503':
          description: Service Unavailable
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '504':
          description: Gateway Timeout
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '304':
          description: Not Modified
      x-iri:
        maturity: in_development
        implementation:
          level: optional
  /api/v2/storage/access-endpoints/{resource_id}:
    get:
      tags:
      - storage
      summary: Get data access endpoints for a storage resource
      description: 'Return the list of data access endpoints for the given storage
        resource for the authenticated user. Each entry describes a protocol (Globus,
        XRootD, S3, ...) and the connection details needed to use it. Adapters may
        use the authenticated identity to include user-specific paths (e.g. home directories,
        per-user Globus collections). Protocol-specific fields (endpoint_id, uri,
        bucket, etc.) are present only for the relevant protocol; unrelated fields
        are omitted.


        Optionally filter by protocol and/or endpoint ID.'
      operationId: getStorageAccessEndpoints
      x-iri-relation:
      - https://iri.science/rels/get-storage-access-endpoints
      security:
      - HTTPBearer: []
      parameters:
      - name: resource_id
        in: path
        required: true
        schema:
          type: string
          title: Resource Id
      - name: protocol
        in: query
        required: false
        schema:
          anyOf:
          - $ref: '#/components/schemas/AccessProtocol'
          - type: 'null'
          description: Filter by access protocol
          title: Protocol
        description: Filter by access protocol
      - name: endpoint_id
        in: query
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          description: Filter by endpoint ID
          title: Endpoint Id
        description: Filter by endpoint ID
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/AccessEndpoint'
                title: Response Getstorageaccessendpoints
        '400':
          description: Invalid request parameters
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '401':
          description: Unauthorized
          headers:
            WWW-Authenticate:
              description: Bearer authentication challenge
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '405':
          description: Method Not Allowed
          headers:
            Allow:
              description: Allowed HTTP methods
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '409':
          description: Conflict
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '422':
          description: Unprocessable Entity
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '501':
          description: Not Implemented
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '503':
          description: Service Unavailable
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '504':
          description: Gateway Timeout
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '304':
          description: Not Modified
      x-iri:
        maturity: in_development
        implementation:
          level: required
  /api/v2/task/{task_id}:
    get:
      tags:
      - task
      summary: Get Task
      description: Get a task
      operationId: getTask
      security:
      - HTTPBearer: []
      parameters:
      - name: task_id
        in: path
        required: true
        schema:
          type: string
          title: Task Id
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Task'
        '400':
          description: Invalid request parameters
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '401':
          description: Unauthorized
          headers:
            WWW-Authenticate:
              description: Bearer authentication challenge
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '405':
          description: Method Not Allowed
          headers:
            Allow:
              description: Allowed HTTP methods
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '409':
          description: Conflict
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '422':
          description: Unprocessable Entity
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '501':
          description: Not Implemented
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '503':
          description: Service Unavailable
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '504':
          description: Gateway Timeout
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '304':
          description: Not Modified
      x-iri:
        maturity: production
        implementation:
          level: required
    delete:
      tags:
      - task
      summary: Delete Task
      description: Delete a task
      operationId: deleteTask
      security:
      - HTTPBearer: []
      parameters:
      - name: task_id
        in: path
        required: true
        schema:
          type: string
          title: Task Id
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                type: string
                title: Response Deletetask
        '400':
          description: Invalid request parameters
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '401':
          description: Unauthorized
          headers:
            WWW-Authenticate:
              description: Bearer authentication challenge
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '405':
          description: Method Not Allowed
          headers:
            Allow:
              description: Allowed HTTP methods
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '409':
          description: Conflict
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '422':
          description: Unprocessable Entity
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '501':
          description: Not Implemented
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '503':
          description: Service Unavailable
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '504':
          description: Gateway Timeout
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '304':
          description: Not Modified
      x-iri:
        maturity: production
        implementation:
          level: required
  /api/v2/task:
    get:
      tags:
      - task
      summary: Get Tasks
      description: Get all tasks
      operationId: getTasks
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                items:
                  $ref: '#/components/schemas/Task'
                type: array
                title: Response Gettasks
        '400':
          description: Invalid request parameters
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '401':
          description: Unauthorized
          headers:
            WWW-Authenticate:
              description: Bearer authentication challenge
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '405':
          description: Method Not Allowed
          headers:
            Allow:
              description: Allowed HTTP methods
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '409':
          description: Conflict
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '422':
          description: Unprocessable Entity
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '501':
          description: Not Implemented
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '503':
          description: Service Unavailable
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '504':
          description: Gateway Timeout
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '304':
          description: Not Modified
      security:
      - HTTPBearer: []
      x-iri:
        maturity: production
        implementation:
          level: required
