openapi: 3.0.3 info: title: HPCPerfStats API version: '3.0' description: REST API for the HPCPerfStats machine SPA and public dashboards. paths: /api/admin_monitor/: get: operationId: admin_monitor_retrieve description: |- Staff-only: HPCPerfStats Monitor data (host timestamps, cache/Redis,. RabbitMQ, TimescaleDB stats). Supports a lightweight, per-section API via the optional 'section' query param: - ?section=hosts -> {"host_stats": [...]} - ?section=rabbitmq_hosts -> {"rabbitmq_host_stats": [...]} - ?section=cache -> {"cache_stats": {...}} - ?section=rabbitmq -> {"rabbitmq_stats": {...}} - ?section=timescaledb -> {"timescaledb_stats": {...}} - ?section=xalt -> {"xalt_stats": {...}} - omitted/other -> {"host_stats": [...], "rabbitmq_host_stats": [...], "cache_stats": {...}, "rabbitmq_stats": {...}, "timescaledb_stats": {...}, "xalt_stats": {...}} Args: request (Any): Request passed to this helper. Returns: Any: Value produced by this call (type depends on inputs). Examples: >>> admin_monitor(None) # doctest: +SKIP parameters: - in: query name: refresh schema: type: string - in: query name: section schema: type: string required: true tags: - admin security: - cookieAuth: [] - {} responses: '200': content: application/json: schema: $ref: '#/components/schemas/AdminMonitorResponse' description: '' '401': content: application/json: schema: $ref: '#/components/schemas/ErrorDetail' description: Authentication required '403': content: application/json: schema: $ref: '#/components/schemas/ErrorDetail' description: Forbidden '404': content: application/json: schema: $ref: '#/components/schemas/ErrorDetail' description: Not found '409': content: application/json: schema: $ref: '#/components/schemas/ErrorDetail' description: Conflict '413': content: application/json: schema: $ref: '#/components/schemas/ErrorDetail' description: Payload too large '429': content: application/json: schema: $ref: '#/components/schemas/ErrorDetail' description: Too many requests '500': content: application/json: schema: $ref: '#/components/schemas/ErrorDetail' description: Server error /api/cache/invalidate-page/: post: operationId: cache_invalidate_page_create description: |- Invalidate cache entries associated with the provided page path. Deletes Django ``@cache_page`` / ``dynamic_cache_page`` rows via ``cache.delete`` (correct key prefix/versioning), then raw Redis ``SCAN`` for keys whose names embed the same URL MD5 as Django's cache layer (covers ``Vary`` variants). For any ``/machine`` or ``/machine/...`` path, also targets ``/api/home/`` and drops ``home_options`` ORM cache keys (dates, metrics list, queues, states, site newest job end). Works without a raw Redis client (LocMem): ORM + Django cache deletes still run. Args: request (Any): Request passed to this helper. Returns: Any: Value produced by this call (type depends on inputs). Examples: >>> invalidate_cache_for_page(None) # doctest: +SKIP tags: - admin requestBody: content: application/json: schema: $ref: '#/components/schemas/InvalidateCacheRequestRequest' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/InvalidateCacheRequestRequest' multipart/form-data: schema: $ref: '#/components/schemas/InvalidateCacheRequestRequest' required: true security: - cookieAuth: [] - {} responses: '200': content: application/json: schema: $ref: '#/components/schemas/InvalidateCacheResponse' description: '' '400': content: application/json: schema: $ref: '#/components/schemas/ErrorDetail' description: '' '401': content: application/json: schema: $ref: '#/components/schemas/ErrorDetail' description: Authentication required '403': content: application/json: schema: $ref: '#/components/schemas/ErrorDetail' description: Forbidden /api/home/: get: operationId: home_retrieve description: |- Return options for search form: date_list, metrics, queues, states,. machine_name. Args: request (Any): Request passed to this helper. Returns: Any: Value produced by this call (type depends on inputs). Examples: >>> home_options(None) # doctest: +SKIP tags: - home security: - cookieAuth: [] - {} responses: '200': content: application/json: schema: $ref: '#/components/schemas/HomeOptions' description: '' '401': content: application/json: schema: $ref: '#/components/schemas/ErrorDetail' description: Authentication required '403': content: application/json: schema: $ref: '#/components/schemas/ErrorDetail' description: Forbidden /api/host_plot/: get: operationId: host_plot_retrieve description: |- Return Bokeh plot_item for a single host and time range (GET host, end_time__gte, end_time__lte). Documented ``host_data`` exception: authenticated users (not staff-only). Uses a longer session ``statement_timeout`` for large windows. Args: request (Any): Request passed to this helper. Returns: Any: Value produced by this call (type depends on inputs). Examples: >>> host_plot(None) # doctest: +SKIP summary: Host utilization plot parameters: - in: query name: end_time__gte schema: type: string required: true - in: query name: end_time__lte schema: type: string - in: query name: host schema: type: string required: true tags: - hosts security: - cookieAuth: [] - {} responses: '200': content: application/json: schema: $ref: '#/components/schemas/HostPlotResponse' description: '' '401': content: application/json: schema: $ref: '#/components/schemas/ErrorDetail' description: Authentication required '403': content: application/json: schema: $ref: '#/components/schemas/ErrorDetail' description: Forbidden /api/job_monitor/: get: operationId: job_monitor_retrieve description: |- Staff-only: aggregate job failure statistics per user over a recent window. The window is controlled by the optional ?days=N query parameter (integer). N is clamped to [1, 365]. If missing or invalid, defaults to 30 days. Returns rows of: - username - total_jobs: number of jobs run - failed_jobs: number of jobs with state OUT_OF_MEMORY or FAILED - failed_rate: percentage of failed jobs (0–100), sorted descending. GPU fields are intentionally omitted from this initial endpoint so the page can render quickly; per-user GPU stats are fetched asynchronously from job_monitor_gpu_for_user. Args: request (Any): Request passed to this helper. Returns: Any: Value produced by this call (type depends on inputs). Examples: >>> job_monitor(None) # doctest: +SKIP parameters: - in: query name: days schema: type: integer tags: - monitor security: - cookieAuth: [] - {} responses: '200': content: application/json: schema: $ref: '#/components/schemas/JobMonitorResponse' description: '' '401': content: application/json: schema: $ref: '#/components/schemas/ErrorDetail' description: Authentication required '403': content: application/json: schema: $ref: '#/components/schemas/ErrorDetail' description: Forbidden /api/job_monitor/gpu/: get: operationId: job_monitor_gpu_retrieve description: |- Staff-only GPU rollup for Job Monitor (single ``username`` or batch. ``usernames``). Args: request (Any): Request passed to this helper. Returns: Any: Value produced by this call (type depends on inputs). Examples: >>> job_monitor_gpu_for_user(None) # doctest: +SKIP parameters: - in: query name: days schema: type: integer - in: query name: username schema: type: string - in: query name: usernames schema: type: string description: Comma-separated usernames for batch GPU rollup tags: - monitor security: - cookieAuth: [] - {} responses: '200': content: application/json: schema: $ref: '#/components/schemas/JobMonitorGpuResponse' description: '' '401': content: application/json: schema: $ref: '#/components/schemas/ErrorDetail' description: Authentication required '403': content: application/json: schema: $ref: '#/components/schemas/ErrorDetail' description: Forbidden /api/jobs/: get: operationId: jobs_retrieve description: |- Paginated job list only (histograms via separate job_list_histograms. endpoint). Args: request (Any): Request passed to this helper. Returns: Any: Value produced by this call (type depends on inputs). Examples: >>> job_list(None) # doctest: +SKIP parameters: - in: query name: account schema: type: string description: Comma-separated project/account names (exact match, OR). - in: query name: end_time__date schema: type: string - in: query name: host schema: type: string - in: query name: include_filter_options schema: type: integer description: When 0, omit filter_options from the response (SPA loads them via GET /api/jobs/filter_options/). Default 1. - in: query name: order_by schema: type: string - in: query name: page schema: type: integer - in: query name: performance_sort_rank schema: type: string description: Comma-separated performance status ranks 0–5 (OR). - in: query name: queue schema: type: string description: Comma-separated queue names (OR). - in: query name: state schema: type: string description: Comma-separated major terminal status group keys (OR) — completed, failed, canceled, preempted, timeout. - in: query name: username schema: type: string description: Comma-separated usernames (OR within dimension). tags: - jobs security: - cookieAuth: [] - {} responses: '200': content: application/json: schema: $ref: '#/components/schemas/JobListResponse' description: '' '401': content: application/json: schema: $ref: '#/components/schemas/ErrorDetail' description: Authentication required '403': content: application/json: schema: $ref: '#/components/schemas/ErrorDetail' description: Forbidden '404': content: application/json: schema: $ref: '#/components/schemas/ErrorDetail' description: Not found '409': content: application/json: schema: $ref: '#/components/schemas/ErrorDetail' description: Conflict '413': content: application/json: schema: $ref: '#/components/schemas/ErrorDetail' description: Payload too large '429': content: application/json: schema: $ref: '#/components/schemas/ErrorDetail' description: Too many requests '500': content: application/json: schema: $ref: '#/components/schemas/ErrorDetail' description: Server error /api/jobs/{jid}/{type_name}/: get: operationId: jobs_retrieve_3 description: |- Type detail: Bokeh json_item (tplot_item), stats_data, schema. Args: request (Any): Request passed to this helper. jid (Any): Jid passed to this helper. type_name (Any): Type name passed to this helper. Returns: Any: Value produced by this call (type depends on inputs). Examples: >>> type_detail(None, None, None) # doctest: +SKIP parameters: - in: path name: jid schema: type: string required: true - in: path name: type_name schema: type: string required: true tags: - jobs security: - cookieAuth: [] - {} responses: '200': content: application/json: schema: $ref: '#/components/schemas/TypeDetailResponse' description: '' '401': content: application/json: schema: $ref: '#/components/schemas/ErrorDetail' description: Authentication required '403': content: application/json: schema: $ref: '#/components/schemas/ErrorDetail' description: Forbidden '404': content: application/json: schema: $ref: '#/components/schemas/ErrorDetail' description: Not found '409': content: application/json: schema: $ref: '#/components/schemas/ErrorDetail' description: Conflict '413': content: application/json: schema: $ref: '#/components/schemas/ErrorDetail' description: Payload too large '429': content: application/json: schema: $ref: '#/components/schemas/ErrorDetail' description: Too many requests '500': content: application/json: schema: $ref: '#/components/schemas/ErrorDetail' description: Server error /api/jobs/{id}/: get: operationId: jobs_retrieve_2 description: |- Single job detail: metadata, host_list, fsio, xalt, schema, URLs (plots via. separate job_plots endpoint). Args: request (Any): Request passed to this helper. pk (Any): Pk passed to this helper. Returns: Any: Value produced by this call (type depends on inputs). Examples: >>> job_detail(None, None) # doctest: +SKIP parameters: - in: query name: defer schema: type: string description: 'Comma-separated: xalt, proc, multiprecision' - in: path name: id schema: type: string required: true - in: query name: light schema: type: integer tags: - jobs security: - cookieAuth: [] - {} responses: '200': content: application/json: schema: $ref: '#/components/schemas/JobDetailResponse' description: '' '401': content: application/json: schema: $ref: '#/components/schemas/ErrorDetail' description: Authentication required '403': content: application/json: schema: $ref: '#/components/schemas/ErrorDetail' description: Forbidden '404': content: application/json: schema: $ref: '#/components/schemas/ErrorDetail' description: Not found '409': content: application/json: schema: $ref: '#/components/schemas/ErrorDetail' description: Conflict '413': content: application/json: schema: $ref: '#/components/schemas/ErrorDetail' description: Payload too large '429': content: application/json: schema: $ref: '#/components/schemas/ErrorDetail' description: Too many requests '500': content: application/json: schema: $ref: '#/components/schemas/ErrorDetail' description: Server error /api/jobs/{id}/plots/: get: operationId: jobs_plots_retrieve description: |- Job-level plots from Redis L1 / ``job_plot_artifact`` L2 only. No request-time ``jid_table`` / ``host_data`` compute. Fingerprint uses persisted ``metrics_distinct_time_count`` only. Null ``plot_item`` with ``unavailable_reason`` on a fingerprint hit is terminal unavailable. Query params: - plot: omit or ``all`` for all three; or one of summary_plot, roofline, gpu_roofline. - zoom: ``1`` for zoom layout (single-plot requests only). - progressive: ``1`` with plot=all (no zoom): HTTP 200 with ``status`` partial/ready while missing kinds are listed in ``loading_plots``. Args: request (Any): Request passed to this helper. pk (Any): Pk passed to this helper. Returns: Any: Value produced by this call (type depends on inputs). Examples: >>> job_plots(None, None) # doctest: +SKIP parameters: - in: path name: id schema: type: string required: true - in: query name: plot schema: type: string - in: query name: progressive schema: type: string - in: query name: zoom schema: type: string tags: - jobs security: - cookieAuth: [] - {} responses: '200': content: application/json: schema: $ref: '#/components/schemas/JobPlotsResponse' description: '' '401': content: application/json: schema: $ref: '#/components/schemas/ErrorDetail' description: Authentication required '403': content: application/json: schema: $ref: '#/components/schemas/ErrorDetail' description: Forbidden '404': content: application/json: schema: $ref: '#/components/schemas/ErrorDetail' description: Not found '409': content: application/json: schema: $ref: '#/components/schemas/ErrorDetail' description: Conflict '413': content: application/json: schema: $ref: '#/components/schemas/ErrorDetail' description: Payload too large '429': content: application/json: schema: $ref: '#/components/schemas/ErrorDetail' description: Too many requests '500': content: application/json: schema: $ref: '#/components/schemas/ErrorDetail' description: Server error '202': content: application/json: schema: $ref: '#/components/schemas/JobPlotsResponse' description: Plots still generating; retry after retry_after_seconds /api/jobs/filter_options/: get: operationId: jobs_filter_options_retrieve description: |- Faceted header-filter option values for the current job-list selection. Args: request (Any): Request passed to this helper. Returns: Any: Value produced by this call (type depends on inputs). Examples: >>> job_list_filter_options_view(None) # doctest: +SKIP parameters: - in: query name: account schema: type: string description: Comma-separated project/account names (exact match, OR). - in: query name: end_time__date schema: type: string - in: query name: host schema: type: string - in: query name: order_by schema: type: string - in: query name: page schema: type: integer - in: query name: performance_sort_rank schema: type: string description: Comma-separated performance status ranks 0–5 (OR). - in: query name: queue schema: type: string description: Comma-separated queue names (OR). - in: query name: state schema: type: string description: Comma-separated major terminal status group keys (OR). - in: query name: username schema: type: string description: Comma-separated usernames (OR within dimension). tags: - jobs security: - cookieAuth: [] - {} responses: '200': content: application/json: schema: $ref: '#/components/schemas/JobListFilterOptionsResponse' description: '' '401': content: application/json: schema: $ref: '#/components/schemas/ErrorDetail' description: Authentication required '403': content: application/json: schema: $ref: '#/components/schemas/ErrorDetail' description: Forbidden '404': content: application/json: schema: $ref: '#/components/schemas/ErrorDetail' description: Not found '409': content: application/json: schema: $ref: '#/components/schemas/ErrorDetail' description: Conflict '413': content: application/json: schema: $ref: '#/components/schemas/ErrorDetail' description: Payload too large '429': content: application/json: schema: $ref: '#/components/schemas/ErrorDetail' description: Too many requests '500': content: application/json: schema: $ref: '#/components/schemas/ErrorDetail' description: Server error /api/jobs/histograms/: get: operationId: jobs_histograms_retrieve description: |- Return Bokeh histograms for the job list, loaded incrementally. This endpoint supports per-plot loading for metric histograms. The caller must provide a 'group' query parameter: - group=metric&metric=: return a single metric histogram (thumb and full) for the given metric name. Args: request (Any): Request passed to this helper. Returns: Any: Value produced by this call (type depends on inputs). Examples: >>> job_list_histograms(None) # doctest: +SKIP parameters: - in: query name: group schema: type: string required: true - in: query name: metric schema: type: string tags: - jobs security: - cookieAuth: [] - {} responses: '200': content: application/json: schema: $ref: '#/components/schemas/JobListHistogramResponse' description: '' '401': content: application/json: schema: $ref: '#/components/schemas/ErrorDetail' description: Authentication required '403': content: application/json: schema: $ref: '#/components/schemas/ErrorDetail' description: Forbidden '404': content: application/json: schema: $ref: '#/components/schemas/ErrorDetail' description: Not found '409': content: application/json: schema: $ref: '#/components/schemas/ErrorDetail' description: Conflict '413': content: application/json: schema: $ref: '#/components/schemas/ErrorDetail' description: Payload too large '429': content: application/json: schema: $ref: '#/components/schemas/ErrorDetail' description: Too many requests '500': content: application/json: schema: $ref: '#/components/schemas/ErrorDetail' description: Server error /api/jobs/histograms/batch/: get: operationId: jobs_histograms_batch_retrieve description: |- Return multiple metric histograms in one response (single dataframe build). Query param ``metrics`` is comma-separated (default: runtime,nhosts,queue_wait). Args: request (Any): Request passed to this helper. Returns: Any: Value produced by this call (type depends on inputs). Examples: >>> job_list_histograms_batch(None) # doctest: +SKIP parameters: - in: query name: account schema: type: string - in: query name: end_time__date schema: type: string - in: query name: end_time__date__gte schema: type: string - in: query name: end_time__date__lte schema: type: string - in: query name: host schema: type: string - in: query name: metrics schema: type: string description: 'Comma-separated metric names (default: runtime,nhosts,queue_wait)' - in: query name: performance_sort_rank schema: type: string - in: query name: queue schema: type: string - in: query name: state schema: type: string - in: query name: username schema: type: string tags: - jobs security: - cookieAuth: [] - {} responses: '200': content: application/json: schema: $ref: '#/components/schemas/JobListHistogramBatchResponse' description: '' '401': content: application/json: schema: $ref: '#/components/schemas/ErrorDetail' description: Authentication required '403': content: application/json: schema: $ref: '#/components/schemas/ErrorDetail' description: Forbidden '404': content: application/json: schema: $ref: '#/components/schemas/ErrorDetail' description: Not found '409': content: application/json: schema: $ref: '#/components/schemas/ErrorDetail' description: Conflict '413': content: application/json: schema: $ref: '#/components/schemas/ErrorDetail' description: Payload too large '429': content: application/json: schema: $ref: '#/components/schemas/ErrorDetail' description: Too many requests '500': content: application/json: schema: $ref: '#/components/schemas/ErrorDetail' description: Server error /api/pub/cluster-dashboard/: get: operationId: pub_cluster_dashboard_retrieve description: |- Return public dashboard meta, a lazy expansion-factor block, or a full bundle. Args: request (Any): DRF request with optional ``section`` / ``grouping`` / ``period`` / ``full`` query parameters. Returns: Any: DRF ``Response`` with JSON payload and Cache-Control headers. Examples: >>> PublicClusterDashboardAggregateView().get(None) # doctest: +SKIP parameters: - in: query name: full schema: type: integer description: 1 to return legacy full bundle - in: query name: grouping schema: type: string enum: - monthly - yearly description: Lazy grouping. Required with section/period. monthly expects YYYY-MM; yearly expects YYYY. - in: query name: period schema: type: string pattern: ^(\d{4}|\d{4}-(0[1-9]|1[0-2]))$ description: Lazy period key. Required with section/grouping. Format YYYY-MM for monthly or YYYY for yearly. - in: query name: section schema: type: string enum: - expansion_factor description: Lazy section. When present, grouping and period are required. Only expansion_factor is supported. tags: - public responses: '200': content: application/json: schema: $ref: '#/components/schemas/PublicClusterDashboard' description: '' '400': content: application/json: schema: $ref: '#/components/schemas/ErrorDetail' description: Invalid or incomplete lazy query parameters '404': content: application/json: schema: $ref: '#/components/schemas/ErrorDetail' description: Valid period syntax but artifact not available '429': content: application/json: schema: $ref: '#/components/schemas/ErrorDetail' description: Too many requests /api/sacct/ingest/: post: operationId: sacct_ingest_create description: |- Ingest pipe-delimited sacct output into job_data using sync_acct logic. Requires authentication (API key or session) and staff. Request body must be raw pipe-delimited sacct output (same format as sacct -P -o ...). Query param date=YYYY-MM-DD is required (the date of the data being ingested) to compute which jobs are already in the DB. Args: request (Any): Request passed to this helper. Returns: Any: Value produced by this call (type depends on inputs). Raises: Exception: Raised when ``sacct_ingest`` hits a ``Exception`` failure path. Examples: >>> sacct_ingest(None) # doctest: +SKIP parameters: - in: query name: date schema: type: string tags: - admin security: - cookieAuth: [] - {} responses: '200': content: application/json: schema: $ref: '#/components/schemas/SacctIngestResponse' description: '' '401': content: application/json: schema: $ref: '#/components/schemas/ErrorDetail' description: Authentication required '403': content: application/json: schema: $ref: '#/components/schemas/ErrorDetail' description: Forbidden '404': content: application/json: schema: $ref: '#/components/schemas/ErrorDetail' description: Not found '409': content: application/json: schema: $ref: '#/components/schemas/ErrorDetail' description: Conflict '413': content: application/json: schema: $ref: '#/components/schemas/ErrorDetail' description: Payload too large '429': content: application/json: schema: $ref: '#/components/schemas/ErrorDetail' description: Too many requests '500': content: application/json: schema: $ref: '#/components/schemas/ErrorDetail' description: Server error /api/session/: get: operationId: session_retrieve description: |- Return current session state for SPA (logged_in, username, is_staff). Args: request (Any): Request passed to this helper. Returns: Any: Value produced by this call (type depends on inputs). Examples: >>> session_info(None) # doctest: +SKIP tags: - session security: - cookieAuth: [] - {} responses: '200': content: application/json: schema: $ref: '#/components/schemas/SessionInfo' description: '' '401': content: application/json: schema: $ref: '#/components/schemas/ErrorDetail' description: Authentication required '403': content: application/json: schema: $ref: '#/components/schemas/ErrorDetail' description: Forbidden /api/session/drop-staff/: post: operationId: session_drop_staff_create description: |- Remove staff access for the current authenticated session only. Args: request (Any): Request passed to this helper. Returns: Any: Value produced by this call (type depends on inputs). Examples: >>> drop_staff_for_session(None) # doctest: +SKIP tags: - session security: - cookieAuth: [] - {} responses: '200': content: application/json: schema: $ref: '#/components/schemas/DropStaffResponse' description: '' '401': content: application/json: schema: $ref: '#/components/schemas/ErrorDetail' description: Authentication required '403': content: application/json: schema: $ref: '#/components/schemas/ErrorDetail' description: Forbidden /api/user-api-key/: get: operationId: user_api_key_retrieve description: |- Return API key visibility for the OAuth session (create key if none exists). Args: request (Any): Request passed to this helper. Returns: Any: Value produced by this call (type depends on inputs). Examples: >>> user_api_key_status(None) # doctest: +SKIP tags: - session security: - cookieAuth: [] - {} responses: '200': content: application/json: schema: $ref: '#/components/schemas/UserApiKey' description: '' '401': content: application/json: schema: $ref: '#/components/schemas/ErrorDetail' description: Authentication required '403': content: application/json: schema: $ref: '#/components/schemas/ErrorDetail' description: Forbidden /api/user-api-key/rotate/: post: operationId: user_api_key_rotate_create description: |- Revoke active keys for this user and return a newly minted raw key. Args: request (Any): Request passed to this helper. Returns: Any: Value produced by this call (type depends on inputs). Examples: >>> user_api_key_rotate(None) # doctest: +SKIP tags: - session security: - cookieAuth: [] - {} responses: '200': content: application/json: schema: $ref: '#/components/schemas/UserApiKey' description: '' '401': content: application/json: schema: $ref: '#/components/schemas/ErrorDetail' description: Authentication required '403': content: application/json: schema: $ref: '#/components/schemas/ErrorDetail' description: Forbidden components: schemas: AdminMonitorHostStat: type: object description: |- Hold AdminMonitorHostStatSerializer state and behavior. Subclasses ``Serializer``, extending that type with this class's fields and behavior. Subclasses ``Serializer``, extending that type with this class's fields and behavior. properties: host: type: string last_time: type: string nullable: true age_bucket: type: string AdminMonitorResponse: type: object description: Section keys at top level; only one or a combined bundle is present per. properties: host_stats: type: array items: $ref: '#/components/schemas/AdminMonitorHostStat' rabbitmq_host_stats: type: array items: $ref: '#/components/schemas/AdminMonitorHostStat' cache_stats: type: object additionalProperties: {} rabbitmq_stats: type: object additionalProperties: {} timescaledb_stats: type: object additionalProperties: {} xalt_stats: type: object additionalProperties: {} DropStaffResponse: type: object description: |- Hold DropStaffResponseSerializer state and behavior. Subclasses ``Serializer``, extending that type with this class's fields and behavior. Subclasses ``Serializer``, extending that type with this class's fields and behavior. properties: ok: type: boolean message: type: string is_staff: type: boolean required: - is_staff - message - ok ErrorDetail: type: object description: |- Hold ErrorDetailSerializer state and behavior. Subclasses ``Serializer``, extending that type with this class's fields and behavior. Subclasses ``Serializer``, extending that type with this class's fields and behavior. properties: detail: type: string error: type: string login_url: type: string GpuInventoryEntry: type: object description: Per-(host,dev) GPU util/power for Job Detail Resources inventory. properties: host: type: string dev: type: string type: type: string util_max: type: number format: double nullable: true util_mean: type: number format: double nullable: true power_max_w: type: number format: double nullable: true sample_count: type: integer nullable: true required: - dev - host HomeMetricOption: type: object description: |- Hold HomeMetricOptionSerializer state and behavior. Subclasses ``Serializer``, extending that type with this class's fields and behavior. Subclasses ``Serializer``, extending that type with this class's fields and behavior. properties: type: type: string metric: type: string units: type: string required: - metric - type - units HomeOptions: type: object description: |- Hold HomeOptionsSerializer state and behavior. Subclasses ``Serializer``, extending that type with this class's fields and behavior. Subclasses ``Serializer``, extending that type with this class's fields and behavior. properties: machine_name: type: string year_list: type: array items: type: integer date_list: type: array items: type: array items: {} maxItems: 2 minItems: 2 metrics: type: array items: $ref: '#/components/schemas/HomeMetricOption' queues: type: array items: type: string states: type: array items: type: string required: - date_list - machine_name - metrics - queues - states - year_list HostPlotResponse: type: object description: |- Hold HostPlotResponseSerializer state and behavior. Subclasses ``Serializer``, extending that type with this class's fields and behavior. Subclasses ``Serializer``, extending that type with this class's fields and behavior. properties: host: type: string plot_item: nullable: true plot_unavailable_reason: type: string nullable: true end_time__gte: type: string end_time__lte: type: string required: - end_time__gte - end_time__lte - host - plot_item InvalidateCacheRequestRequest: type: object description: |- Hold InvalidateCacheRequestSerializer state and behavior. Subclasses ``Serializer``, extending that type with this class's fields and behavior. Subclasses ``Serializer``, extending that type with this class's fields and behavior. properties: page_path: type: string minLength: 1 required: - page_path InvalidateCacheResponse: type: object description: |- Hold InvalidateCacheResponseSerializer state and behavior. Subclasses ``Serializer``, extending that type with this class's fields and behavior. Subclasses ``Serializer``, extending that type with this class's fields and behavior. properties: ok: type: boolean page_path: type: string deleted_keys: type: integer scanned_keys: type: integer matched_sample: type: array items: type: string truncated_scan: type: boolean required: - deleted_keys - ok - page_path JobDetailJob: type: object description: Job detail primary job_data row (extends list entry fields). properties: jid: type: string submit_time: type: string format: date-time nullable: true start_time: type: string format: date-time nullable: true end_time: type: string format: date-time nullable: true runtime: type: number format: double nullable: true timelimit: type: number format: double nullable: true node_hrs: type: number format: double nullable: true nhosts: type: integer nullable: true ncores: type: integer nullable: true username: type: string account: type: string nullable: true sample_count: type: integer nullable: true queue: type: string nullable: true state: type: string nullable: true QOS: type: string nullable: true jobname: type: string nullable: true host_list: type: array items: type: string performance: $ref: '#/components/schemas/JobPerformance' color: type: string derived_data_status: type: string client_url: type: string nullable: true server_url: type: string nullable: true required: - jid JobDetailResponse: type: object description: |- Hold JobDetailResponseSerializer state and behavior. Subclasses ``Serializer``, extending that type with this class's fields and behavior. Subclasses ``Serializer``, extending that type with this class's fields and behavior. properties: job_data: $ref: '#/components/schemas/JobDetailJob' host_list: type: array items: type: string metrics_list: type: array items: $ref: '#/components/schemas/JobMetricRow' metrics: {} gpu: {} fsio: {} xalt_data: type: object additionalProperties: {} schema: type: object additionalProperties: {} proc_list: type: array items: $ref: '#/components/schemas/ProcListEntry' derived_data_status: type: string client_url: type: string nullable: true server_url: type: string nullable: true gpu_active: type: integer nullable: true gpu_utilization_max: type: number format: double nullable: true gpu_utilization_mean: type: number format: double nullable: true gpu_count: type: integer nullable: true gpu_inventory: type: array items: $ref: '#/components/schemas/GpuInventoryEntry' multiprecision_cpu_plot_item: nullable: true multiprecision_cpu_unavailable_reason: type: string nullable: true multiprecision_gpu_plot_item: nullable: true multiprecision_gpu_unavailable_reason: type: string nullable: true staff_metrics_distinct_time_count: type: integer nullable: true staff_artifact_contract: $ref: '#/components/schemas/StaffArtifactContract' JobListAggregates: type: object description: |- Hold JobListAggregatesSerializer state and behavior. Subclasses ``Serializer``, extending that type with this class's fields and behavior. Subclasses ``Serializer``, extending that type with this class's fields and behavior. properties: total_node_hours: type: number format: double queue_wait_mean_hours: type: number format: double JobListEntry: type: object description: |- Hold JobListEntrySerializer state and behavior. Subclasses ``Serializer``, extending that type with this class's fields and behavior. Subclasses ``Serializer``, extending that type with this class's fields and behavior. properties: jid: type: string submit_time: type: string format: date-time nullable: true start_time: type: string format: date-time nullable: true end_time: type: string format: date-time nullable: true runtime: type: number format: double nullable: true timelimit: type: number format: double nullable: true node_hrs: type: number format: double nullable: true nhosts: type: integer nullable: true ncores: type: integer nullable: true username: type: string account: type: string nullable: true sample_count: type: integer nullable: true queue: type: string nullable: true state: type: string nullable: true QOS: type: string nullable: true jobname: type: string nullable: true host_list: type: array items: type: string performance: $ref: '#/components/schemas/JobPerformance' color: type: string required: - jid JobListFilterOptions: type: object description: |- Hold JobListFilterOptionsSerializer state and behavior. Subclasses ``Serializer``, extending that type with this class's fields and behavior. Subclasses ``Serializer``, extending that type with this class's fields and behavior. properties: usernames: type: array items: type: string accounts: type: array items: type: string queues: type: array items: type: string states: type: array items: type: string performance_statuses: type: array items: $ref: '#/components/schemas/JobListPerformanceStatusOption' truncated: $ref: '#/components/schemas/JobListFilterOptionsTruncated' JobListFilterOptionsResponse: type: object description: |- Hold JobListFilterOptionsResponseSerializer state and behavior. Subclasses ``Serializer``, extending that type with this class's fields and behavior. Subclasses ``Serializer``, extending that type with this class's fields and behavior. properties: filter_options: allOf: - $ref: '#/components/schemas/JobListFilterOptions' nullable: true JobListFilterOptionsTruncated: type: object description: |- Hold JobListFilterOptionsTruncatedSerializer state and behavior. Subclasses ``Serializer``, extending that type with this class's fields and behavior. Subclasses ``Serializer``, extending that type with this class's fields and behavior. properties: usernames: type: boolean accounts: type: boolean queues: type: boolean states: type: boolean JobListHistogramBatchResponse: type: object description: Batch histogram envelope from job_list_histograms_batch. properties: nj: type: integer histogram_nj: type: integer histogram_sampled: type: boolean histograms: type: array items: $ref: '#/components/schemas/JobListHistogramResponse' JobListHistogramEnvelope: type: object description: Histogram metadata without embedded Bokeh plot_item payloads. properties: title: type: string metric: type: string queue: type: string unavailable_reason: type: string nullable: true JobListHistogramResponse: type: object description: Per-metric histogram envelope from job_list_histograms. properties: group: type: string metric: type: string nullable: true nj: type: integer histogram_nj: type: integer histogram_sampled: type: boolean title: type: string plot_item_thumb: nullable: true plot_item_full: nullable: true plot_unavailable_reason: type: string nullable: true JobListPagination: type: object description: |- Hold JobListPaginationSerializer state and behavior. Subclasses ``Serializer``, extending that type with this class's fields and behavior. Subclasses ``Serializer``, extending that type with this class's fields and behavior. properties: page: type: integer num_pages: type: integer has_previous: type: boolean has_next: type: boolean previous_page_number: type: integer nullable: true next_page_number: type: integer nullable: true JobListPerformanceStatusOption: type: object description: |- Hold JobListPerformanceStatusOptionSerializer state and behavior. Subclasses ``Serializer``, extending that type with this class's fields and behavior. Subclasses ``Serializer``, extending that type with this class's fields and behavior. properties: sort_rank: type: integer label: type: string required: - label - sort_rank JobListResponse: type: object description: |- Hold JobListResponseSerializer state and behavior. Subclasses ``Serializer``, extending that type with this class's fields and behavior. Subclasses ``Serializer``, extending that type with this class's fields and behavior. properties: nj: type: integer job_list: type: array items: $ref: '#/components/schemas/JobListEntry' filter_summary: type: array items: type: string filter_options: allOf: - $ref: '#/components/schemas/JobListFilterOptions' nullable: true histograms: type: object additionalProperties: $ref: '#/components/schemas/JobListHistogramEnvelope' aggregates: $ref: '#/components/schemas/JobListAggregates' pagination: $ref: '#/components/schemas/JobListPagination' qname: type: string order_by: type: string current_path: type: string nullable: true JobMetricRow: type: object description: One row from build_job_metrics_display_list (metrics_data catalog + value). properties: type: type: string metric: type: string units: type: string nullable: true value: type: number format: double nullable: true no_data_reason: type: string nullable: true JobMonitorGpuResponse: type: object description: Single-user GPU rollup or batch wrapper with ``results``. properties: username: type: string gpu_count_total: type: integer nullable: true gpu_active_total: type: integer nullable: true gpu_active_percentage: type: number format: double nullable: true has_data: type: boolean results: type: array items: $ref: '#/components/schemas/JobMonitorGpuRow' JobMonitorGpuRow: type: object description: |- Hold JobMonitorGpuRowSerializer state and behavior. Subclasses ``Serializer``, extending that type with this class's fields and behavior. Subclasses ``Serializer``, extending that type with this class's fields and behavior. properties: username: type: string gpu_count_total: type: integer nullable: true gpu_active_total: type: integer nullable: true gpu_active_percentage: type: number format: double nullable: true has_data: type: boolean JobMonitorResponse: type: object description: |- Hold JobMonitorResponseSerializer state and behavior. Subclasses ``Serializer``, extending that type with this class's fields and behavior. Subclasses ``Serializer``, extending that type with this class's fields and behavior. properties: window_days: type: integer start_time: type: string end_time: type: string results: type: array items: $ref: '#/components/schemas/JobMonitorRow' JobMonitorRow: type: object description: |- Hold JobMonitorRowSerializer state and behavior. Subclasses ``Serializer``, extending that type with this class's fields and behavior. Subclasses ``Serializer``, extending that type with this class's fields and behavior. properties: username: type: string total_jobs: type: integer failed_jobs: type: integer failed_rate: type: number format: double timedout_jobs: type: integer timedout_rate: type: number format: double JobPerformance: type: object description: Job list performance column from job_list_performance.summarize_performance. properties: label: type: string tone: type: string aria_label: type: string sort_rank: type: integer JobPlotsResponse: type: object description: Legacy plot keys returned by job_plots (summary, roofline, GPU roofline). properties: mscript: type: string mdiv: type: string mplot_item: nullable: true mplot_unavailable_reason: type: string nullable: true rscript: type: string rdiv: type: string rplot_item: nullable: true rplot_unavailable_reason: type: string nullable: true grscript: type: string grdiv: type: string grplot_item: nullable: true grplot_unavailable_reason: type: string nullable: true status: type: string detail: type: string retry_after_seconds: type: integer loading_plots: type: array items: type: string progressive: type: boolean plot: type: string plot_item: nullable: true unavailable_reason: type: string nullable: true ProcListEntry: type: object description: One proc_data row returned in job_detail proc_list (host_proc KEYS). properties: host: type: string nullable: true proc: type: string nullable: true device: type: string nullable: true uid: type: integer nullable: true vm_peak: type: integer nullable: true vm_size: type: integer nullable: true vm_lck: type: integer nullable: true vm_hwm: type: integer nullable: true vm_rss: type: integer nullable: true vm_data: type: integer nullable: true vm_stk: type: integer nullable: true vm_exe: type: integer nullable: true vm_lib: type: integer nullable: true vm_pte: type: integer nullable: true vm_swap: type: integer nullable: true threads: type: integer nullable: true PublicClusterDashboard: type: object description: |- Hold PublicClusterDashboardSerializer state and behavior. Subclasses ``Serializer``, extending that type with this class's fields and behavior. Subclasses ``Serializer``, extending that type with this class's fields and behavior. properties: status: type: string machine_name: type: string detail: type: string nullable: true retry_hint: type: string nullable: true schema_version: type: integer sections: $ref: '#/components/schemas/PublicDashboardSections' section: type: string grouping: type: string period_key: type: string block: $ref: '#/components/schemas/PublicExpansionFactorHistogramBlock' expansion_factors: type: object additionalProperties: {} monthly_metrics: type: array items: $ref: '#/components/schemas/PublicClusterMetricBlock' PublicClusterMetricBlock: type: object description: |- Hold PublicClusterMetricBlockSerializer state and behavior. Subclasses ``Serializer``, extending that type with this class's fields and behavior. Subclasses ``Serializer``, extending that type with this class's fields and behavior. properties: title: type: string bokeh_histogram_json_item: nullable: true PublicDashboardExpansionFactorSection: type: object description: |- Hold PublicDashboardExpansionFactorSectionSerializer state and behavior. Subclasses ``Serializer``, extending that type with this class's fields and behavior. Subclasses ``Serializer``, extending that type with this class's fields and behavior. properties: monthly_period_keys: type: array items: type: string yearly_period_keys: type: array items: type: string monthly_daily_histograms: type: object additionalProperties: {} yearly_weekly_histograms: type: object additionalProperties: {} PublicDashboardSections: type: object description: |- Hold PublicDashboardSectionsSerializer state and behavior. Subclasses ``Serializer``, extending that type with this class's fields and behavior. Subclasses ``Serializer``, extending that type with this class's fields and behavior. properties: expansion_factor: $ref: '#/components/schemas/PublicDashboardExpansionFactorSection' PublicExpansionFactorHistogramBlock: type: object description: |- Hold PublicExpansionFactorHistogramBlockSerializer state and behavior. Subclasses ``Serializer``, extending that type with this class's fields and behavior. Subclasses ``Serializer``, extending that type with this class's fields and behavior. properties: scheduler_expansion_factor_daily_means_in_month_count: type: integer scheduler_expansion_factor_weekly_means_in_year_count: type: integer histogram_bin_edges: type: array items: {} histogram_counts: type: array items: {} expansion_factor_definition: type: string bokeh_histogram_json_item: nullable: true SacctIngestResponse: type: object description: |- Hold SacctIngestResponseSerializer state and behavior. Subclasses ``Serializer``, extending that type with this class's fields and behavior. Subclasses ``Serializer``, extending that type with this class's fields and behavior. properties: ok: type: boolean message: type: string detail: type: string SessionInfo: type: object description: |- Hold SessionInfoSerializer state and behavior. Subclasses ``Serializer``, extending that type with this class's fields and behavior. Subclasses ``Serializer``, extending that type with this class's fields and behavior. properties: logged_in: type: boolean username: type: string is_staff: type: boolean machine_name: type: string required: - is_staff - logged_in - username StaffArtifactContract: type: object description: 'Staff Job Detail: runtime vs stored plot/detail artifact schema versions.' properties: current_plot: type: integer current_detail: type: integer db_plot: type: array items: type: integer db_detail: type: array items: type: integer required: - current_detail - current_plot - db_detail - db_plot TypeDetailResponse: type: object description: |- Hold TypeDetailResponseSerializer state and behavior. Subclasses ``Serializer``, extending that type with this class's fields and behavior. Subclasses ``Serializer``, extending that type with this class's fields and behavior. properties: type_name: type: string jobid: type: string tplot_item: nullable: true tplot_unavailable_reason: type: string nullable: true stats_data: type: array items: {} schema: type: array items: {} status: type: string UserApiKey: type: object description: |- Hold UserApiKeySerializer state and behavior. Subclasses ``Serializer``, extending that type with this class's fields and behavior. Subclasses ``Serializer``, extending that type with this class's fields and behavior. properties: username: type: string raw_key: type: string nullable: true key_prefix: type: string required: - key_prefix - username securitySchemes: cookieAuth: type: apiKey in: cookie name: sessionid