diff --git a/.eslintignore b/.eslintignore deleted file mode 100644 index 2c93b785..00000000 --- a/.eslintignore +++ /dev/null @@ -1,8 +0,0 @@ -# Ignore programatically generated API slices -imageBuilderApi.ts -contentSourcesApi.ts -rhsmApi.ts -provisioningApi.ts -edgeApi.ts -complianceApi.ts -composerCloudApi.ts diff --git a/.eslintrc.yml b/.eslintrc.yml deleted file mode 100644 index 28c374fd..00000000 --- a/.eslintrc.yml +++ /dev/null @@ -1,65 +0,0 @@ -extends: [ - "plugin:jsx-a11y/recommended", - "@redhat-cloud-services/eslint-config-redhat-cloud-services", - "plugin:react/recommended", - "plugin:react-hooks/recommended", - "plugin:@typescript-eslint/recommended", - "plugin:react-redux/recommended" - ] -globals: - insights: 'readonly' - shallow: readonly - render: 'readonly' - mount: 'readonly' -parser: "@typescript-eslint/parser" -parserOptions: - project: ["tsconfig.json"] -plugins: - - import - - disable-autofix -rules: - import/order: - - error - - groups: - - builtin - - external - - internal - - sibling - - parent - - index - alphabetize: - order: asc - caseInsensitive: true - newlines-between: always - pathGroups: # ensures the import of React is always on top - - pattern: react - group: builtin - position: before - pathGroupsExcludedImportTypes: - - react - prefer-const: - - error - - destructuring: any - no-console: error - eqeqeq: error - array-callback-return: warn - "@typescript-eslint/ban-ts-comment": - - error - - ts-expect-error: "allow-with-description" - ts-ignore: "allow-with-description" - ts-nocheck: true - ts-check: true - minimumDescriptionLength: 5 - "@typescript-eslint/ban-types": off - disable-autofix/@typescript-eslint/no-unnecessary-condition: warn - # Temporarily disabled - jsx-a11y/no-autofocus: off - rulesdir/forbid-pf-relative-imports: off -overrides: - - files: ["src/tests/**/*.ts"] - extends: "plugin:testing-library/react" - - files: ["playwright/**/*.ts"] - extends: "plugin:playwright/recommended" - rules: - playwright/no-conditional-in-test: off - playwright/no-conditional-expect: off diff --git a/.fmf/version b/.fmf/version new file mode 100644 index 00000000..d00491fd --- /dev/null +++ b/.fmf/version @@ -0,0 +1 @@ +1 diff --git a/.forgejo/workflows/ci.yml b/.forgejo/workflows/ci.yml new file mode 100644 index 00000000..b6742f80 --- /dev/null +++ b/.forgejo/workflows/ci.yml @@ -0,0 +1,257 @@ +--- +name: Debian Image Builder Frontend CI/CD + +on: + push: + branches: [main, develop] + pull_request: + branches: [main] + workflow_dispatch: + +env: + NODE_VERSION: "18" + DEBIAN_FRONTEND: noninteractive + +jobs: + build-and-test: + name: Build and Test Frontend + runs-on: ubuntu-latest + container: + image: node:18-bullseye + + steps: + - name: Checkout code + uses: actions/checkout@v4 + + - name: Setup Node.js environment + run: | + node --version + npm --version + + - name: Install build dependencies + run: | + apt-get update + apt-get install -y \ + build-essential \ + git \ + ca-certificates \ + python3 + + - name: Install Node.js dependencies + run: | + npm ci + npm run build || echo "Build script not found" + + - name: Run tests + run: | + if [ -f package.json ] && npm run test; then + npm test + else + echo "No test script found, skipping tests" + fi + + - name: Run linting + run: | + if [ -f package.json ] && npm run lint; then + npm run lint + else + echo "No lint script found, skipping linting" + fi + + - name: Build production bundle + run: | + if [ -f package.json ] && npm run build; then + npm run build + else + echo "No build script found" + fi + + - name: Upload build artifacts + uses: actions/upload-artifact@v4 + with: + name: frontend-build + path: | + dist/ + build/ + retention-days: 30 + + package: + name: Package Frontend + runs-on: ubuntu-latest + container: + image: node:18-bullseye + needs: build-and-test + + steps: + - name: Checkout code + uses: actions/checkout@v4 + + - name: Setup Node.js environment + run: | + node --version + npm --version + + - name: Install build dependencies + run: | + apt-get update + apt-get install -y \ + build-essential \ + devscripts \ + debhelper \ + git \ + ca-certificates \ + python3 + + - name: Install Node.js dependencies + run: npm ci + + - name: Build production bundle + run: | + if [ -f package.json ] && npm run build; then + npm run build + else + echo "No build script found" + fi + + - name: Create debian directory + run: | + mkdir -p debian + cat > debian/control << EOF +Source: debian-image-builder-frontend +Section: web +Priority: optional +Maintainer: Debian Forge Team +Build-Depends: debhelper (>= 13), nodejs, npm, git, ca-certificates +Standards-Version: 4.6.2 + +Package: debian-image-builder-frontend +Architecture: all +Depends: \${misc:Depends}, nodejs, nginx +Description: Debian Image Builder Frontend + Web-based frontend for Debian Image Builder with Cockpit integration. + Provides a user interface for managing image builds, blueprints, + and system configurations through a modern React application. +EOF + + cat > debian/rules << EOF +#!/usr/bin/make -f +%: + dh \$@ + +override_dh_auto_install: + dh_auto_install + mkdir -p debian/debian-image-builder-frontend/usr/share/debian-image-builder-frontend + mkdir -p debian/debian-image-builder-frontend/etc/nginx/sites-available + mkdir -p debian/debian-image-builder-frontend/etc/cockpit + + # Copy built frontend files + if [ -d dist ]; then + cp -r dist/* debian/debian-image-builder-frontend/usr/share/debian-image-builder-frontend/ + elif [ -d build ]; then + cp -r build/* debian/debian-image-builder-frontend/usr/share/debian-image-builder-frontend/ + fi + + # Copy source files for development + cp -r src debian/debian-image-builder-frontend/usr/share/debian-image-builder-frontend/ + cp package.json debian/debian-image-builder-frontend/usr/share/debian-image-builder-frontend/ + + # Create nginx configuration + cat > debian/debian-image-builder-frontend/etc/nginx/sites-available/debian-image-builder-frontend << 'NGINX_EOF' +server { + listen 80; + server_name localhost; + root /usr/share/debian-image-builder-frontend; + index index.html; + + location / { + try_files \$uri \$uri/ /index.html; + } + + location /api/ { + proxy_pass http://localhost:8080/; + proxy_set_header Host \$host; + proxy_set_header X-Real-IP \$remote_addr; + } +} +NGINX_EOF + + # Create cockpit manifest + cat > debian/debian-image-builder-frontend/etc/cockpit/debian-image-builder.manifest << 'COCKPIT_EOF' +{ + "version": 1, + "manifest": { + "name": "debian-image-builder", + "version": "1.0.0", + "title": "Debian Image Builder", + "description": "Build and manage Debian atomic images", + "url": "/usr/share/debian-image-builder-frontend", + "icon": "debian-logo", + "requires": { + "cockpit": ">= 200" + } + } +} +COCKPIT_EOF +EOF + + cat > debian/changelog << EOF +debian-image-builder-frontend (1.0.0-1) unstable; urgency=medium + + * Initial release + * Debian Image Builder Frontend with Cockpit integration + * React-based web interface for image management + + -- Debian Forge Team $(date -R) +EOF + + cat > debian/compat << EOF +13 +EOF + + chmod +x debian/rules + + - name: Build Debian package + run: | + dpkg-buildpackage -us -uc -b + ls -la ../*.deb + + - name: Upload Debian package + uses: actions/upload-artifact@v4 + with: + name: debian-image-builder-frontend-deb + path: ../*.deb + retention-days: 30 + + cockpit-integration: + name: Test Cockpit Integration + runs-on: ubuntu-latest + container: + image: node:18-bullseye + needs: build-and-test + + steps: + - name: Checkout code + uses: actions/checkout@v4 + + - name: Setup Node.js environment + run: | + node --version + npm --version + + - name: Install Node.js dependencies + run: npm ci + + - name: Test cockpit integration + run: | + echo "Testing Cockpit integration..." + if [ -d cockpit ]; then + echo "Cockpit directory found:" + ls -la cockpit/ + else + echo "No cockpit directory found" + fi + + if [ -f package.json ]; then + echo "Package.json scripts:" + npm run + fi diff --git a/.forgejo/workflows/ci.yml.disabled b/.forgejo/workflows/ci.yml.disabled new file mode 100644 index 00000000..b6742f80 --- /dev/null +++ b/.forgejo/workflows/ci.yml.disabled @@ -0,0 +1,257 @@ +--- +name: Debian Image Builder Frontend CI/CD + +on: + push: + branches: [main, develop] + pull_request: + branches: [main] + workflow_dispatch: + +env: + NODE_VERSION: "18" + DEBIAN_FRONTEND: noninteractive + +jobs: + build-and-test: + name: Build and Test Frontend + runs-on: ubuntu-latest + container: + image: node:18-bullseye + + steps: + - name: Checkout code + uses: actions/checkout@v4 + + - name: Setup Node.js environment + run: | + node --version + npm --version + + - name: Install build dependencies + run: | + apt-get update + apt-get install -y \ + build-essential \ + git \ + ca-certificates \ + python3 + + - name: Install Node.js dependencies + run: | + npm ci + npm run build || echo "Build script not found" + + - name: Run tests + run: | + if [ -f package.json ] && npm run test; then + npm test + else + echo "No test script found, skipping tests" + fi + + - name: Run linting + run: | + if [ -f package.json ] && npm run lint; then + npm run lint + else + echo "No lint script found, skipping linting" + fi + + - name: Build production bundle + run: | + if [ -f package.json ] && npm run build; then + npm run build + else + echo "No build script found" + fi + + - name: Upload build artifacts + uses: actions/upload-artifact@v4 + with: + name: frontend-build + path: | + dist/ + build/ + retention-days: 30 + + package: + name: Package Frontend + runs-on: ubuntu-latest + container: + image: node:18-bullseye + needs: build-and-test + + steps: + - name: Checkout code + uses: actions/checkout@v4 + + - name: Setup Node.js environment + run: | + node --version + npm --version + + - name: Install build dependencies + run: | + apt-get update + apt-get install -y \ + build-essential \ + devscripts \ + debhelper \ + git \ + ca-certificates \ + python3 + + - name: Install Node.js dependencies + run: npm ci + + - name: Build production bundle + run: | + if [ -f package.json ] && npm run build; then + npm run build + else + echo "No build script found" + fi + + - name: Create debian directory + run: | + mkdir -p debian + cat > debian/control << EOF +Source: debian-image-builder-frontend +Section: web +Priority: optional +Maintainer: Debian Forge Team +Build-Depends: debhelper (>= 13), nodejs, npm, git, ca-certificates +Standards-Version: 4.6.2 + +Package: debian-image-builder-frontend +Architecture: all +Depends: \${misc:Depends}, nodejs, nginx +Description: Debian Image Builder Frontend + Web-based frontend for Debian Image Builder with Cockpit integration. + Provides a user interface for managing image builds, blueprints, + and system configurations through a modern React application. +EOF + + cat > debian/rules << EOF +#!/usr/bin/make -f +%: + dh \$@ + +override_dh_auto_install: + dh_auto_install + mkdir -p debian/debian-image-builder-frontend/usr/share/debian-image-builder-frontend + mkdir -p debian/debian-image-builder-frontend/etc/nginx/sites-available + mkdir -p debian/debian-image-builder-frontend/etc/cockpit + + # Copy built frontend files + if [ -d dist ]; then + cp -r dist/* debian/debian-image-builder-frontend/usr/share/debian-image-builder-frontend/ + elif [ -d build ]; then + cp -r build/* debian/debian-image-builder-frontend/usr/share/debian-image-builder-frontend/ + fi + + # Copy source files for development + cp -r src debian/debian-image-builder-frontend/usr/share/debian-image-builder-frontend/ + cp package.json debian/debian-image-builder-frontend/usr/share/debian-image-builder-frontend/ + + # Create nginx configuration + cat > debian/debian-image-builder-frontend/etc/nginx/sites-available/debian-image-builder-frontend << 'NGINX_EOF' +server { + listen 80; + server_name localhost; + root /usr/share/debian-image-builder-frontend; + index index.html; + + location / { + try_files \$uri \$uri/ /index.html; + } + + location /api/ { + proxy_pass http://localhost:8080/; + proxy_set_header Host \$host; + proxy_set_header X-Real-IP \$remote_addr; + } +} +NGINX_EOF + + # Create cockpit manifest + cat > debian/debian-image-builder-frontend/etc/cockpit/debian-image-builder.manifest << 'COCKPIT_EOF' +{ + "version": 1, + "manifest": { + "name": "debian-image-builder", + "version": "1.0.0", + "title": "Debian Image Builder", + "description": "Build and manage Debian atomic images", + "url": "/usr/share/debian-image-builder-frontend", + "icon": "debian-logo", + "requires": { + "cockpit": ">= 200" + } + } +} +COCKPIT_EOF +EOF + + cat > debian/changelog << EOF +debian-image-builder-frontend (1.0.0-1) unstable; urgency=medium + + * Initial release + * Debian Image Builder Frontend with Cockpit integration + * React-based web interface for image management + + -- Debian Forge Team $(date -R) +EOF + + cat > debian/compat << EOF +13 +EOF + + chmod +x debian/rules + + - name: Build Debian package + run: | + dpkg-buildpackage -us -uc -b + ls -la ../*.deb + + - name: Upload Debian package + uses: actions/upload-artifact@v4 + with: + name: debian-image-builder-frontend-deb + path: ../*.deb + retention-days: 30 + + cockpit-integration: + name: Test Cockpit Integration + runs-on: ubuntu-latest + container: + image: node:18-bullseye + needs: build-and-test + + steps: + - name: Checkout code + uses: actions/checkout@v4 + + - name: Setup Node.js environment + run: | + node --version + npm --version + + - name: Install Node.js dependencies + run: npm ci + + - name: Test cockpit integration + run: | + echo "Testing Cockpit integration..." + if [ -d cockpit ]; then + echo "Cockpit directory found:" + ls -la cockpit/ + else + echo "No cockpit directory found" + fi + + if [ -f package.json ]; then + echo "Package.json scripts:" + npm run + fi diff --git a/.github/workflows/dev-checks.yml b/.github/workflows/dev-checks.yml index 9ddff1c5..8f3a40bf 100644 --- a/.github/workflows/dev-checks.yml +++ b/.github/workflows/dev-checks.yml @@ -5,35 +5,79 @@ on: branches: [ "main" ] push: branches: [ "main" ] + merge_group: + +concurrency: + group: ${{github.workflow}}-${{ github.ref }} + cancel-in-progress: true jobs: - dev-check: + build: + name: Build Check runs-on: ubuntu-latest - steps: - uses: actions/checkout@v4 - - name: Use Node.js 20 + - name: Use Node.js 22 uses: actions/setup-node@v4 with: - node-version: 20 + node-version: 22 + cache: 'npm' + - name: Install dependencies + run: npm ci + - name: Run build + run: npm run build + + lint-checks: + name: ESLint + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - name: Use Node.js 22 + uses: actions/setup-node@v4 + with: + node-version: 22 + cache: 'npm' + - name: Install dependencies + run: npm ci + - name: Run lint check + run: npm run lint + + circular-dependencies: + name: Circular Dependencies Check + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - name: Use Node.js 22 + uses: actions/setup-node@v4 + with: + node-version: 22 + cache: 'npm' + - name: Install dependencies + run: npm ci + - name: Check for circular dependencies + run: npm run circular + + api-changes: + name: Manual API Changes Check + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - name: Use Node.js 22 + uses: actions/setup-node@v4 + with: + node-version: 22 cache: 'npm' - name: Install dependencies run: npm ci - name: Check for manual changes to API - run: npm run api:generate && [ -z "$(git status --porcelain=v1 2>/dev/null)" ] && echo "✓ No manual API changes." || echo "✗ API manually changed, please refer to the README for the procedure to follow for programmatically generated API endpoints." && [ -z "$(git status --porcelain=v1 2>/dev/null)" ] - - name: Check for circular dependencies - run: npm run circular - - name: Run build - run: npm run build - - name: Run lint check - run: npm run lint - - name: Run unit tests - run: npm run test:coverage - - name: Run unit tests with cockpit - run: npm run test:cockpit - - name: Upload coverage to Codecov - uses: codecov/codecov-action@v4 - with: - token: ${{ secrets.CODECOV_TOKEN }} - files: ./coverage/junit.xml - verbose: true + run: | + npm run api + if [ -n "$(git status --porcelain)" ]; then + echo + echo "✗ API manually changed, please refer to the README for the procedure to follow for programmatically generated API endpoints." + exit 1 + else + echo + echo "✓ No manual API changes." + exit 0 + fi diff --git a/.github/workflows/playwright.yml b/.github/workflows/playwright.yml index 93d1cedc..5e6ee70e 100644 --- a/.github/workflows/playwright.yml +++ b/.github/workflows/playwright.yml @@ -4,6 +4,13 @@ on: pull_request: types: [opened, reopened, synchronize, labeled, unlabeled] workflow_dispatch: + merge_group: + +# this prevents multiple jobs from the same pr +# running when new changes are pushed. +concurrency: + group: ${{github.workflow}}-${{ github.ref }} + cancel-in-progress: true jobs: playwright-tests: @@ -30,7 +37,7 @@ jobs: - name: Set up Node.js uses: actions/setup-node@v4 with: - node-version: 20 + node-version: 22 cache: "npm" - name: Install front-end dependencies diff --git a/.github/workflows/pr_best_practices.yml b/.github/workflows/pr_best_practices.yml index d7a1b0c4..f07729c6 100644 --- a/.github/workflows/pr_best_practices.yml +++ b/.github/workflows/pr_best_practices.yml @@ -6,6 +6,7 @@ on: types: [opened, synchronize, reopened, edited] issue_comment: types: [created] + merge_group: jobs: pr-best-practices: diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 482bcfa8..c6011882 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -13,10 +13,10 @@ jobs: # artefact name. - uses: actions/checkout@v4 - - name: Use Node.js 20 + - name: Use Node.js 22 uses: actions/setup-node@v4 with: - node-version: 20 + node-version: 22 cache: 'npm' - name: Install dependencies diff --git a/.github/workflows/stale-cleanup.yml b/.github/workflows/stale-cleanup.yml index 56bbc780..4bc5f03d 100644 --- a/.github/workflows/stale-cleanup.yml +++ b/.github/workflows/stale-cleanup.yml @@ -8,6 +8,7 @@ jobs: stale: runs-on: ubuntu-latest permissions: + actions: write # needed to clean up the saved action state issues: write pull-requests: write steps: diff --git a/.github/workflows/unit-tests.yml b/.github/workflows/unit-tests.yml new file mode 100644 index 00000000..488cb413 --- /dev/null +++ b/.github/workflows/unit-tests.yml @@ -0,0 +1,51 @@ +name: Unit Tests + +on: + pull_request: + branches: [ "main" ] + push: + branches: [ "main" ] + merge_group: + +# this prevents multiple jobs from the same pr +# running when new changes are pushed. +concurrency: + group: ${{github.workflow}}-${{ github.ref }} + cancel-in-progress: true + +jobs: + unit-tests: + name: Service Tests + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - name: Use Node.js 22 + uses: actions/setup-node@v4 + with: + node-version: 22 + cache: 'npm' + - name: Install dependencies + run: npm ci + - name: Run unit tests + run: npm run test:coverage + - name: Upload coverage to Codecov + uses: codecov/codecov-action@v4 + with: + token: ${{ secrets.CODECOV_TOKEN }} + files: ./coverage/junit.xml + verbose: true + + cockpit-unit-tests: + name: Cockpit Tests + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - name: Use Node.js 22 + uses: actions/setup-node@v4 + with: + node-version: 22 + cache: 'npm' + - name: Install dependencies + run: npm ci + - name: Run unit tests with cockpit + run: npm run test:cockpit diff --git a/.github/workflows/update-apis.yml b/.github/workflows/update-apis.yml new file mode 100644 index 00000000..e400e2a9 --- /dev/null +++ b/.github/workflows/update-apis.yml @@ -0,0 +1,51 @@ +# This action checks API updates every day at 5:00 UTC. +name: Update API code generation + +on: + workflow_dispatch: + schedule: + - cron: "0 5 * * *" + +jobs: + update-api: + name: "Update API definitions" + if: github.repository == 'osbuild/image-builder-frontend' + runs-on: ubuntu-latest + + steps: + - name: Check out code into the Go module directory + uses: actions/checkout@v4 + + - name: Use Node.js 22 + uses: actions/setup-node@v4 + with: + node-version: 22 + cache: 'npm' + + - name: Install dependencies + run: npm ci + + - name: Mark the working directory as safe for git + run: git config --global --add safe.directory "$(pwd)" + + - name: Run API code generation + run: npm run api + + - name: Check if there are any changes + run: | + if [ "$(git status --porcelain)" ]; then + echo + echo "API codegen is up-to-date" + exit "0" + fi + + - name: Create Pull Request + uses: peter-evans/create-pull-request@v6 + with: + branch: update-apis + delete-branch: true + title: "api: regenerate api code generation" + commit-message: "api: regenerate api code generation" + body: Update api code generation + token: ${{ secrets.SCHUTZBOT_GITHUB_ACCESS_TOKEN }} + author: schutzbot diff --git a/.gitignore b/.gitignore index f52550d9..55a8e719 100644 --- a/.gitignore +++ b/.gitignore @@ -48,3 +48,4 @@ rpmbuild /blob-report/ /playwright/.cache/ .env +.auth diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 0948c85c..9cbc9f7a 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -32,8 +32,7 @@ test: - RUNNER: - aws/fedora-41-x86_64 - aws/fedora-42-x86_64 - - aws/rhel-9.6-nightly-x86_64 - - aws/rhel-10.0-nightly-x86_64 + - aws/rhel-10.1-nightly-x86_64 INTERNAL_NETWORK: ["true"] finish: diff --git a/.prettierrc b/.prettierrc deleted file mode 100644 index 258449ff..00000000 --- a/.prettierrc +++ /dev/null @@ -1,9 +0,0 @@ -{ - "semi": true, - "tabWidth": 2, - "singleQuote": false, - "jsxSingleQuote": false, - "bracketSpacing": true, - "tsxSingleQuote": true, - "tsSingleQuote": true -} \ No newline at end of file diff --git a/.tekton/image-builder-frontend-pull-request.yaml b/.tekton/image-builder-frontend-pull-request.yaml index 15583fb2..111fde6d 100644 --- a/.tekton/image-builder-frontend-pull-request.yaml +++ b/.tekton/image-builder-frontend-pull-request.yaml @@ -7,9 +7,8 @@ metadata: build.appstudio.redhat.com/pull_request_number: '{{pull_request_number}}' build.appstudio.redhat.com/target_branch: '{{target_branch}}' pipelinesascode.tekton.dev/max-keep-runs: "3" - pipelinesascode.tekton.dev/on-cel-expression: event == "pull_request" && target_branch - == "main" - creationTimestamp: null + pipelinesascode.tekton.dev/on-cel-expression: (event == "pull_request" && target_branch == "main") || (event == "push" && target_branch.startsWith("gh-readonly-queue/main/")) + creationTimestamp: labels: appstudio.openshift.io/application: insights-image-builder appstudio.openshift.io/component: image-builder-frontend @@ -46,7 +45,7 @@ spec: - name: name value: show-sbom - name: bundle - value: quay.io/konflux-ci/tekton-catalog/task-show-sbom:0.1@sha256:002f7c8c1d2f9e09904035da414aba1188ae091df0ea9532cd997be05e73d594 + value: quay.io/konflux-ci/tekton-catalog/task-show-sbom:0.1@sha256:beb0616db051952b4b861dd8c3e00fa1c0eccbd926feddf71194d3bb3ace9ce7 - name: kind value: task resolver: bundles @@ -65,7 +64,7 @@ spec: - name: name value: summary - name: bundle - value: quay.io/konflux-ci/tekton-catalog/task-summary:0.2@sha256:76075b709fa06ed824cbc84f41448b397b85bfde1cf9809395ba6d286f5b7cbd + value: quay.io/konflux-ci/tekton-catalog/task-summary:0.2@sha256:3f6e8513cbd70f0416eb6c6f2766973a754778526125ff33d8e3633def917091 - name: kind value: task resolver: bundles @@ -84,13 +83,11 @@ spec: name: output-image type: string - default: . - description: Path to the source code of an application's component from where - to build image. + description: Path to the source code of an application's component from where to build image. name: path-context type: string - default: Dockerfile - description: Path to the Dockerfile inside the context specified by parameter - path-context + description: Path to the Dockerfile inside the context specified by parameter path-context name: dockerfile type: string - default: "false" @@ -110,8 +107,7 @@ spec: name: prefetch-input type: string - default: "" - description: Image tag expiration time, time values could be something like - 1h, 2d, 3w for hours, days, and weeks, respectively. + description: Image tag expiration time, time values could be something like 1h, 2d, 3w for hours, days, and weeks, respectively. name: image-expires-after - default: "false" description: Build a source image. @@ -156,7 +152,7 @@ spec: - name: name value: init - name: bundle - value: quay.io/konflux-ci/tekton-catalog/task-init:0.2@sha256:7a24924417260b7094541caaedd2853dc8da08d4bb0968f710a400d3e8062063 + value: quay.io/konflux-ci/tekton-catalog/task-init:0.2@sha256:08e18a4dc5f947c1d20e8353a19d013144bea87b72f67236b165dd4778523951 - name: kind value: task resolver: bundles @@ -173,7 +169,7 @@ spec: - name: name value: git-clone - name: bundle - value: quay.io/konflux-ci/tekton-catalog/task-git-clone:0.1@sha256:3ced9a6b9d8520773d3ffbf062190515a362ecda11e72f56e38e4dd980294b57 + value: quay.io/konflux-ci/tekton-catalog/task-git-clone:0.1@sha256:7939000e2f92fc8b5d2c4ee4ba9000433c5aa7700d2915a1d4763853d5fd1fd4 - name: kind value: task resolver: bundles @@ -198,7 +194,7 @@ spec: - name: name value: prefetch-dependencies - name: bundle - value: quay.io/konflux-ci/tekton-catalog/task-prefetch-dependencies:0.2@sha256:08eec5362aa774347f08a210531a6901020778a08ca921b02758a91b5b2e1357 + value: quay.io/konflux-ci/tekton-catalog/task-prefetch-dependencies:0.2@sha256:ce5f2485d759221444357fe38276be876fc54531651e50dcfc0f84b34909d760 - name: kind value: task resolver: bundles @@ -242,7 +238,7 @@ spec: - name: name value: buildah - name: bundle - value: quay.io/konflux-ci/tekton-catalog/task-buildah:0.4@sha256:c777fdb0947aff3e4ac29a93ed6358c6f7994e6b150154427646788ec773c440 + value: quay.io/konflux-ci/tekton-catalog/task-buildah:0.4@sha256:7782cb7462130de8e8839a58dd15ed78e50938d718b51375267679c6044b4367 - name: kind value: task resolver: bundles @@ -274,7 +270,7 @@ spec: - name: name value: build-image-index - name: bundle - value: quay.io/konflux-ci/tekton-catalog/task-build-image-index:0.1@sha256:1b357f2ed430d18a009740a1783dd15af70ce1e23dc6254da1a83e9ec595d5be + value: quay.io/konflux-ci/tekton-catalog/task-build-image-index:0.1@sha256:72f77a8c62f9d6f69ab5c35170839e4b190026e6cc3d7d4ceafa7033fc30ad7b - name: kind value: task resolver: bundles @@ -286,7 +282,9 @@ spec: - name: build-source-image params: - name: BINARY_IMAGE - value: $(params.output-image) + value: $(tasks.build-image-index.results.IMAGE_URL) + - name: BINARY_IMAGE_DIGEST + value: $(tasks.build-image-index.results.IMAGE_DIGEST) runAfter: - build-image-index taskRef: @@ -294,7 +292,7 @@ spec: - name: name value: source-build - name: bundle - value: quay.io/konflux-ci/tekton-catalog/task-source-build:0.2@sha256:11029fa30652154f772b44132f8a116382c136a6223e8f9576137f99b9901dcb + value: quay.io/konflux-ci/tekton-catalog/task-source-build:0.3@sha256:96ed9431854ecf9805407dca77b063abdf7aba1b3b9d1925a5c6145c6b7e95fd - name: kind value: task resolver: bundles @@ -323,7 +321,7 @@ spec: - name: name value: sast-shell-check - name: bundle - value: quay.io/konflux-ci/tekton-catalog/task-sast-shell-check:0.1@sha256:188a4f6a582ac43d4de46c3998ded3c2a8ee237fb0604d90559a3b6e0aa62b0f + value: quay.io/konflux-ci/tekton-catalog/task-sast-shell-check:0.1@sha256:4a63982791a1a68f560c486f524ef5b9fdbeee0c16fe079eee3181a2cfd1c1bf - name: kind value: task resolver: bundles @@ -339,6 +337,8 @@ spec: params: - name: image-url value: $(tasks.build-image-index.results.IMAGE_URL) + - name: image-digest + value: $(tasks.build-image-index.results.IMAGE_DIGEST) runAfter: - build-image-index taskRef: @@ -346,7 +346,7 @@ spec: - name: name value: sast-unicode-check - name: bundle - value: quay.io/konflux-ci/tekton-catalog/task-sast-unicode-check:0.2@sha256:e4a5215b45b1886a185a9db8ab392f8440c2b0848f76d719885637cf8d2628ed + value: quay.io/konflux-ci/tekton-catalog/task-sast-unicode-check:0.3@sha256:bec18fa5e82e801c3f267f29bf94535a5024e72476f2b27cca7271d506abb5ad - name: kind value: task resolver: bundles @@ -371,7 +371,7 @@ spec: - name: name value: deprecated-image-check - name: bundle - value: quay.io/konflux-ci/tekton-catalog/task-deprecated-image-check:0.5@sha256:ecd33669676b3a193ff4c2c6223cb912cc1b0cf5cc36e080eaec7718500272cf + value: quay.io/konflux-ci/tekton-catalog/task-deprecated-image-check:0.5@sha256:1d07d16810c26713f3d875083924d93697900147364360587ccb5a63f2c31012 - name: kind value: task resolver: bundles @@ -393,7 +393,7 @@ spec: - name: name value: clair-scan - name: bundle - value: quay.io/konflux-ci/tekton-catalog/task-clair-scan:0.2@sha256:878ae247ffc58d95a9ac68e4d658ef91ef039363e03e65a386bc0ead02d9d7d8 + value: quay.io/konflux-ci/tekton-catalog/task-clair-scan:0.2@sha256:893ffa3ce26b061e21bb4d8db9ef7ed4ddd4044fe7aa5451ef391034da3ff759 - name: kind value: task resolver: bundles @@ -413,7 +413,7 @@ spec: - name: name value: ecosystem-cert-preflight-checks - name: bundle - value: quay.io/konflux-ci/tekton-catalog/task-ecosystem-cert-preflight-checks:0.2@sha256:302828e9d7abc72b8a44fb2b9be068f86c982d8e5f4550b8bf654571d6361ee8 + value: quay.io/konflux-ci/tekton-catalog/task-ecosystem-cert-preflight-checks:0.2@sha256:1f151e00f7fc427654b7b76045a426bb02fe650d192ffe147a304d2184787e38 - name: kind value: task resolver: bundles @@ -435,7 +435,7 @@ spec: - name: name value: sast-snyk-check - name: bundle - value: quay.io/konflux-ci/tekton-catalog/task-sast-snyk-check:0.4@sha256:15a945b054b245f6713845dd6ae813d373c9f9cbac386d7382964f1b70ae3076 + value: quay.io/konflux-ci/tekton-catalog/task-sast-snyk-check:0.4@sha256:351f2dce893159b703e9b6d430a2450b3df9967cb9bd3adb46852df8ccfe4c0d - name: kind value: task resolver: bundles @@ -460,7 +460,7 @@ spec: - name: name value: clamav-scan - name: bundle - value: quay.io/konflux-ci/tekton-catalog/task-clamav-scan:0.2@sha256:98d94290d6f21b6e231485326e3629bbcdec75c737b84e05ac9eac78f9a2c8b4 + value: quay.io/konflux-ci/tekton-catalog/task-clamav-scan:0.3@sha256:cce2dfcc5bd6e91ee54aacdadad523b013eeae5cdaa7f6a4624b8cbcc040f439 - name: kind value: task resolver: bundles @@ -471,8 +471,10 @@ spec: - "false" - name: apply-tags params: - - name: IMAGE + - name: IMAGE_URL value: $(tasks.build-image-index.results.IMAGE_URL) + - name: IMAGE_DIGEST + value: $(tasks.build-image-index.results.IMAGE_DIGEST) runAfter: - build-image-index taskRef: @@ -480,7 +482,7 @@ spec: - name: name value: apply-tags - name: bundle - value: quay.io/konflux-ci/tekton-catalog/task-apply-tags:0.1@sha256:9d9871143ab3a818f681488be6074f5b2f892c1843795a46f6daf3f5487e72d1 + value: quay.io/konflux-ci/tekton-catalog/task-apply-tags:0.2@sha256:70881c97a4c51ee1f4d023fa1110e0bdfcfd2f51d9a261fa543c3862b9a4eee9 - name: kind value: task resolver: bundles @@ -501,7 +503,7 @@ spec: - name: name value: push-dockerfile - name: bundle - value: quay.io/konflux-ci/tekton-catalog/task-push-dockerfile:0.1@sha256:c82189e5d331e489cff99f0399f133fd3fad08921bea86747dfa379d1b5c748d + value: quay.io/konflux-ci/tekton-catalog/task-push-dockerfile:0.1@sha256:d5cb22a833be51dd72a872cac8bfbe149e8ad34da7cb48a643a1e613447a1f9d - name: kind value: task resolver: bundles @@ -521,7 +523,7 @@ spec: - name: name value: rpms-signature-scan - name: bundle - value: quay.io/konflux-ci/tekton-catalog/task-rpms-signature-scan:0.2@sha256:297c2d8928aa3b114fcb1ba5d9da8b10226b68fed30706e78a6a5089c6cd30e3 + value: quay.io/konflux-ci/tekton-catalog/task-rpms-signature-scan:0.2@sha256:1b6c20ab3dbfb0972803d3ebcb2fa72642e59400c77bd66dfd82028bdd09e120 - name: kind value: task resolver: bundles @@ -542,7 +544,7 @@ spec: - name: workspace volumeClaimTemplate: metadata: - creationTimestamp: null + creationTimestamp: spec: accessModes: - ReadWriteOnce diff --git a/.tekton/image-builder-frontend-push.yaml b/.tekton/image-builder-frontend-push.yaml index 9d1b6a2b..ff7ad971 100644 --- a/.tekton/image-builder-frontend-push.yaml +++ b/.tekton/image-builder-frontend-push.yaml @@ -6,9 +6,8 @@ metadata: build.appstudio.redhat.com/commit_sha: '{{revision}}' build.appstudio.redhat.com/target_branch: '{{target_branch}}' pipelinesascode.tekton.dev/max-keep-runs: "3" - pipelinesascode.tekton.dev/on-cel-expression: event == "push" && target_branch - == "main" - creationTimestamp: null + pipelinesascode.tekton.dev/on-cel-expression: event == "push" && target_branch == "main" + creationTimestamp: labels: appstudio.openshift.io/application: insights-image-builder appstudio.openshift.io/component: image-builder-frontend @@ -43,7 +42,7 @@ spec: - name: name value: show-sbom - name: bundle - value: quay.io/konflux-ci/tekton-catalog/task-show-sbom:0.1@sha256:002f7c8c1d2f9e09904035da414aba1188ae091df0ea9532cd997be05e73d594 + value: quay.io/konflux-ci/tekton-catalog/task-show-sbom:0.1@sha256:beb0616db051952b4b861dd8c3e00fa1c0eccbd926feddf71194d3bb3ace9ce7 - name: kind value: task resolver: bundles @@ -62,7 +61,7 @@ spec: - name: name value: summary - name: bundle - value: quay.io/konflux-ci/tekton-catalog/task-summary:0.2@sha256:76075b709fa06ed824cbc84f41448b397b85bfde1cf9809395ba6d286f5b7cbd + value: quay.io/konflux-ci/tekton-catalog/task-summary:0.2@sha256:3f6e8513cbd70f0416eb6c6f2766973a754778526125ff33d8e3633def917091 - name: kind value: task resolver: bundles @@ -81,13 +80,11 @@ spec: name: output-image type: string - default: . - description: Path to the source code of an application's component from where - to build image. + description: Path to the source code of an application's component from where to build image. name: path-context type: string - default: Dockerfile - description: Path to the Dockerfile inside the context specified by parameter - path-context + description: Path to the Dockerfile inside the context specified by parameter path-context name: dockerfile type: string - default: "false" @@ -107,8 +104,7 @@ spec: name: prefetch-input type: string - default: "" - description: Image tag expiration time, time values could be something like - 1h, 2d, 3w for hours, days, and weeks, respectively. + description: Image tag expiration time, time values could be something like 1h, 2d, 3w for hours, days, and weeks, respectively. name: image-expires-after - default: "false" description: Build a source image. @@ -153,7 +149,7 @@ spec: - name: name value: init - name: bundle - value: quay.io/konflux-ci/tekton-catalog/task-init:0.2@sha256:7a24924417260b7094541caaedd2853dc8da08d4bb0968f710a400d3e8062063 + value: quay.io/konflux-ci/tekton-catalog/task-init:0.2@sha256:08e18a4dc5f947c1d20e8353a19d013144bea87b72f67236b165dd4778523951 - name: kind value: task resolver: bundles @@ -170,7 +166,7 @@ spec: - name: name value: git-clone - name: bundle - value: quay.io/konflux-ci/tekton-catalog/task-git-clone:0.1@sha256:3ced9a6b9d8520773d3ffbf062190515a362ecda11e72f56e38e4dd980294b57 + value: quay.io/konflux-ci/tekton-catalog/task-git-clone:0.1@sha256:7939000e2f92fc8b5d2c4ee4ba9000433c5aa7700d2915a1d4763853d5fd1fd4 - name: kind value: task resolver: bundles @@ -195,7 +191,7 @@ spec: - name: name value: prefetch-dependencies - name: bundle - value: quay.io/konflux-ci/tekton-catalog/task-prefetch-dependencies:0.2@sha256:08eec5362aa774347f08a210531a6901020778a08ca921b02758a91b5b2e1357 + value: quay.io/konflux-ci/tekton-catalog/task-prefetch-dependencies:0.2@sha256:ce5f2485d759221444357fe38276be876fc54531651e50dcfc0f84b34909d760 - name: kind value: task resolver: bundles @@ -239,7 +235,7 @@ spec: - name: name value: buildah - name: bundle - value: quay.io/konflux-ci/tekton-catalog/task-buildah:0.4@sha256:c777fdb0947aff3e4ac29a93ed6358c6f7994e6b150154427646788ec773c440 + value: quay.io/konflux-ci/tekton-catalog/task-buildah:0.4@sha256:7782cb7462130de8e8839a58dd15ed78e50938d718b51375267679c6044b4367 - name: kind value: task resolver: bundles @@ -271,7 +267,7 @@ spec: - name: name value: build-image-index - name: bundle - value: quay.io/konflux-ci/tekton-catalog/task-build-image-index:0.1@sha256:1b357f2ed430d18a009740a1783dd15af70ce1e23dc6254da1a83e9ec595d5be + value: quay.io/konflux-ci/tekton-catalog/task-build-image-index:0.1@sha256:72f77a8c62f9d6f69ab5c35170839e4b190026e6cc3d7d4ceafa7033fc30ad7b - name: kind value: task resolver: bundles @@ -283,7 +279,9 @@ spec: - name: build-source-image params: - name: BINARY_IMAGE - value: $(params.output-image) + value: $(tasks.build-image-index.results.IMAGE_URL) + - name: BINARY_IMAGE_DIGEST + value: $(tasks.build-image-index.results.IMAGE_DIGEST) runAfter: - build-image-index taskRef: @@ -291,7 +289,7 @@ spec: - name: name value: source-build - name: bundle - value: quay.io/konflux-ci/tekton-catalog/task-source-build:0.2@sha256:11029fa30652154f772b44132f8a116382c136a6223e8f9576137f99b9901dcb + value: quay.io/konflux-ci/tekton-catalog/task-source-build:0.3@sha256:96ed9431854ecf9805407dca77b063abdf7aba1b3b9d1925a5c6145c6b7e95fd - name: kind value: task resolver: bundles @@ -320,7 +318,7 @@ spec: - name: name value: sast-shell-check - name: bundle - value: quay.io/konflux-ci/tekton-catalog/task-sast-shell-check:0.1@sha256:188a4f6a582ac43d4de46c3998ded3c2a8ee237fb0604d90559a3b6e0aa62b0f + value: quay.io/konflux-ci/tekton-catalog/task-sast-shell-check:0.1@sha256:4a63982791a1a68f560c486f524ef5b9fdbeee0c16fe079eee3181a2cfd1c1bf - name: kind value: task resolver: bundles @@ -336,6 +334,8 @@ spec: params: - name: image-url value: $(tasks.build-image-index.results.IMAGE_URL) + - name: image-digest + value: $(tasks.build-image-index.results.IMAGE_DIGEST) runAfter: - build-image-index taskRef: @@ -343,7 +343,7 @@ spec: - name: name value: sast-unicode-check - name: bundle - value: quay.io/konflux-ci/tekton-catalog/task-sast-unicode-check:0.2@sha256:e4a5215b45b1886a185a9db8ab392f8440c2b0848f76d719885637cf8d2628ed + value: quay.io/konflux-ci/tekton-catalog/task-sast-unicode-check:0.3@sha256:bec18fa5e82e801c3f267f29bf94535a5024e72476f2b27cca7271d506abb5ad - name: kind value: task resolver: bundles @@ -368,7 +368,7 @@ spec: - name: name value: deprecated-image-check - name: bundle - value: quay.io/konflux-ci/tekton-catalog/task-deprecated-image-check:0.5@sha256:ecd33669676b3a193ff4c2c6223cb912cc1b0cf5cc36e080eaec7718500272cf + value: quay.io/konflux-ci/tekton-catalog/task-deprecated-image-check:0.5@sha256:1d07d16810c26713f3d875083924d93697900147364360587ccb5a63f2c31012 - name: kind value: task resolver: bundles @@ -390,7 +390,7 @@ spec: - name: name value: clair-scan - name: bundle - value: quay.io/konflux-ci/tekton-catalog/task-clair-scan:0.2@sha256:878ae247ffc58d95a9ac68e4d658ef91ef039363e03e65a386bc0ead02d9d7d8 + value: quay.io/konflux-ci/tekton-catalog/task-clair-scan:0.2@sha256:893ffa3ce26b061e21bb4d8db9ef7ed4ddd4044fe7aa5451ef391034da3ff759 - name: kind value: task resolver: bundles @@ -410,7 +410,7 @@ spec: - name: name value: ecosystem-cert-preflight-checks - name: bundle - value: quay.io/konflux-ci/tekton-catalog/task-ecosystem-cert-preflight-checks:0.2@sha256:302828e9d7abc72b8a44fb2b9be068f86c982d8e5f4550b8bf654571d6361ee8 + value: quay.io/konflux-ci/tekton-catalog/task-ecosystem-cert-preflight-checks:0.2@sha256:1f151e00f7fc427654b7b76045a426bb02fe650d192ffe147a304d2184787e38 - name: kind value: task resolver: bundles @@ -432,7 +432,7 @@ spec: - name: name value: sast-snyk-check - name: bundle - value: quay.io/konflux-ci/tekton-catalog/task-sast-snyk-check:0.4@sha256:15a945b054b245f6713845dd6ae813d373c9f9cbac386d7382964f1b70ae3076 + value: quay.io/konflux-ci/tekton-catalog/task-sast-snyk-check:0.4@sha256:351f2dce893159b703e9b6d430a2450b3df9967cb9bd3adb46852df8ccfe4c0d - name: kind value: task resolver: bundles @@ -457,7 +457,7 @@ spec: - name: name value: clamav-scan - name: bundle - value: quay.io/konflux-ci/tekton-catalog/task-clamav-scan:0.2@sha256:98d94290d6f21b6e231485326e3629bbcdec75c737b84e05ac9eac78f9a2c8b4 + value: quay.io/konflux-ci/tekton-catalog/task-clamav-scan:0.3@sha256:cce2dfcc5bd6e91ee54aacdadad523b013eeae5cdaa7f6a4624b8cbcc040f439 - name: kind value: task resolver: bundles @@ -468,8 +468,10 @@ spec: - "false" - name: apply-tags params: - - name: IMAGE + - name: IMAGE_URL value: $(tasks.build-image-index.results.IMAGE_URL) + - name: IMAGE_DIGEST + value: $(tasks.build-image-index.results.IMAGE_DIGEST) runAfter: - build-image-index taskRef: @@ -477,7 +479,7 @@ spec: - name: name value: apply-tags - name: bundle - value: quay.io/konflux-ci/tekton-catalog/task-apply-tags:0.1@sha256:9d9871143ab3a818f681488be6074f5b2f892c1843795a46f6daf3f5487e72d1 + value: quay.io/konflux-ci/tekton-catalog/task-apply-tags:0.2@sha256:70881c97a4c51ee1f4d023fa1110e0bdfcfd2f51d9a261fa543c3862b9a4eee9 - name: kind value: task resolver: bundles @@ -498,7 +500,7 @@ spec: - name: name value: push-dockerfile - name: bundle - value: quay.io/konflux-ci/tekton-catalog/task-push-dockerfile:0.1@sha256:c82189e5d331e489cff99f0399f133fd3fad08921bea86747dfa379d1b5c748d + value: quay.io/konflux-ci/tekton-catalog/task-push-dockerfile:0.1@sha256:d5cb22a833be51dd72a872cac8bfbe149e8ad34da7cb48a643a1e613447a1f9d - name: kind value: task resolver: bundles @@ -518,7 +520,7 @@ spec: - name: name value: rpms-signature-scan - name: bundle - value: quay.io/konflux-ci/tekton-catalog/task-rpms-signature-scan:0.2@sha256:297c2d8928aa3b114fcb1ba5d9da8b10226b68fed30706e78a6a5089c6cd30e3 + value: quay.io/konflux-ci/tekton-catalog/task-rpms-signature-scan:0.2@sha256:1b6c20ab3dbfb0972803d3ebcb2fa72642e59400c77bd66dfd82028bdd09e120 - name: kind value: task resolver: bundles @@ -539,7 +541,7 @@ spec: - name: workspace volumeClaimTemplate: metadata: - creationTimestamp: null + creationTimestamp: spec: accessModes: - ReadWriteOnce diff --git a/Makefile b/Makefile index 5830f78c..77a0cdef 100644 --- a/Makefile +++ b/Makefile @@ -1,12 +1,13 @@ PACKAGE_NAME = cockpit-image-builder -INSTALL_DIR = /share/cockpit/$(PACKAGE_NAME) +INSTALL_DIR_BASE = /share/cockpit/ +INSTALL_DIR = $(INSTALL_DIR_BASE)$(PACKAGE_NAME) APPSTREAMFILE=org.image-builder.$(PACKAGE_NAME).metainfo.xml VERSION := $(shell (cd "$(SRCDIR)" && grep "^Version:" cockpit/$(PACKAGE_NAME).spec | sed 's/[^[:digit:]]*\([[:digit:]]\+\).*/\1/')) COMMIT = $(shell (cd "$(SRCDIR)" && git rev-parse HEAD)) # TODO: figure out a strategy for keeping this updated -COCKPIT_REPO_COMMIT = b0e82161b4afcb9f0a6fddd8ff94380e983b2238 +COCKPIT_REPO_COMMIT = a70142a7a6f9c4e78e71f3c4ec738b6db2fbb04f COCKPIT_REPO_URL = https://github.com/cockpit-project/cockpit.git COCKPIT_REPO_TREE = '$(strip $(COCKPIT_REPO_COMMIT))^{tree}' @@ -55,6 +56,7 @@ cockpit/devel-uninstall: cockpit/devel-install: PREFIX=~/.local cockpit/devel-install: PREFIX="~/.local" + mkdir -p $(PREFIX)$(INSTALL_DIR_BASE) ln -s $(shell pwd)/cockpit/public $(PREFIX)$(INSTALL_DIR) .PHONY: cockpit/download diff --git a/README.md b/README.md index da4ec1e4..66244e72 100644 --- a/README.md +++ b/README.md @@ -19,16 +19,20 @@ Frontend code for Image Builder. ## Table of Contents 1. [How to build and run image-builder-frontend](#frontend-development) 1. [Frontend Development](#frontend-development) - 1. [API](#api-endpoints) - 2. [Unleash feature flags](#unleash-feature-flags) - 2. [Backend Development](#backend-development) -2. [File structure](#file-structure) -3. [Style Guidelines](#style-guidelines) -4. [Test Guidelines](#test-guidelines) -5. [Running hosted service Playwright tests](#running-hosted-service-playwright-tests) + 2. [Image builder as Cockpit plugin](#image-builder-as-cockpit-plugin) + 3. [Backend Development](#backend-development) +2. [API](#api-endpoints) +3. [Unleash feature flags](#unleash-feature-flags) +4. [File structure](#file-structure) +5. [Style Guidelines](#style-guidelines) +6. [Test Guidelines](#test-guidelines) +7. [Running hosted service Playwright tests](#running-hosted-service-playwright-tests) ## How to build and run image-builder-frontend +> [!IMPORTANT] +> Running image-builder-frontend against [console.redhat.com](https://console.redhat.com/) requires connection to the Red Hat VPN, which is only available to Red Hat employees. External contributors can locally run [image builder as Cockpit plugin](#image-builder-as-cockpit-plugin). + ### Frontend Development To develop the frontend you can use a proxy to run image-builder-frontend locally @@ -39,7 +43,7 @@ worrying if a feature from stage has been released yet. #### Nodejs and npm version -Make sure you have npm@10 and node 18+ installed. If you need multiple versions of nodejs check out [nvm](https://github.com/nvm-sh/nvm). +Make sure you have npm@10 and node 22+ installed. If you need multiple versions of nodejs check out [nvm](https://github.com/nvm-sh/nvm). #### Webpack proxy @@ -69,52 +73,70 @@ echo "127.0.0.1 stage.foo.redhat.com" >> /etc/hosts 4. open browser at `https://stage.foo.redhat.com:1337/beta/insights/image-builder` -#### Insights proxy (deprecated) +### Image builder as Cockpit plugin -1. Clone the insights proxy: https://github.com/RedHatInsights/insights-proxy +> [!NOTE] +> Issues marked with [cockpit-image-builder](https://github.com/osbuild/image-builder-frontend/issues?q=is%3Aissue%20state%3Aopen%20label%3Acockpit-image-builder) label are reproducible in image builder plugin and can be worked on by external contributors without connection to the Red Hat VPN. -2. Setting up the proxy +#### Cockpit setup +To install and setup Cockpit follow guide at: https://cockpit-project.org/running.html - Choose a runner (podman or docker), and point the SPANDX_CONFIG variable to - `profile/local-frontend.js` included in image-builder-frontend. +#### On-premises image builder installation and configuration +To install and configure `osbuild-composer` on your local machine follow our documentation: https://osbuild.org/docs/on-premises/installation/ - ```bash - sudo insights-proxy/scripts/patch-etc-hosts.sh - export RUNNER="podman" - export SPANDX_CONFIG=$PATH_TO/image-builder-frontend/profiles/local-frontend.js - sudo -E insights-proxy/scripts/run.sh - ``` +#### Scripts for local development of image builder plugin -3. Starting up image-builder-frontend +The following scripts are used to build the frontend with Webpack and install it into the Cockpit directories. These scripts streamline the development process by automating build and installation steps. - In the image-builder-frontend checkout directory +Runs Webpack with the specified configuration (cockpit/webpack.config.ts) to build the frontend assets. +Use this command whenever you need to compile the latest changes in your frontend code. - ```bash - npm install - npm start - ``` +Creates the necessary directory in the user's local Cockpit share (~/.local/share/cockpit/). +Creates a symbolic link (image-builder-frontend) pointing to the built frontend assets (cockpit/public). +Use this command after building the frontend to install it locally for development purposes. +The symbolic link allows Cockpit to serve the frontend assets from your local development environment, +making it easier to test changes in real-time without deploying to a remote server. -The UI should be running on -https://prod.foo.redhat.com:1337/beta/insights/image-builder/landing. -Note that this requires you to have access to either production or stage (plus VPN and proxy config) of insights. +```bash +make cockpit/build +``` -#### API endpoints +```bash +make cockpit/devel-install +``` + +To uninstall and remove the symbolic link, run the following command: + +```bash +make cockpit/devel-uninstall +``` + +For convenience, you can run the following to combine all three steps: + + +```bash +make cockpit/devel +``` + +### Backend Development + +To develop both the frontend and the backend you can again use the proxy to run both the +frontend and backend locally against the chrome at cloud.redhat.com. For instructions +see the [osbuild-getting-started project](https://github.com/osbuild/osbuild-getting-started). + +## API endpoints API slice definitions are programmatically generated using the [@rtk-query/codegen-openapi](https://redux-toolkit.js.org/rtk-query/usage/code-generation) package. -OpenAPI schema for the endpoints are stored in `/api/schema`. Their -corresponding configuration files are stored in `/api/config`. Each endpoint -has a corresponding empty API slice and generated API slice which are stored in -`/src/store`. +The OpenAPI schema are imported during code generation. OpenAPI configuration files are +stored in `/api/config`. Each endpoint has a corresponding empty API slice and generated API +slice which are stored in `/src/store`. -##### Add a new API +### Add a new API schema For a hypothetical API called foobar -1. Download the foobar API OpenAPI json or yaml representation under -`api/schema/foobar.json` - -2. Create a new "empty" API file under `src/store/emptyFoobarApi.ts` that has following +1. Create a new "empty" API file under `src/store/emptyFoobarApi.ts` that has following content: ```typescript @@ -130,21 +152,21 @@ export const emptyFoobarApi = createApi({ }); ``` -3. Declare new constant `FOOBAR_API` with the API url in `src/constants.ts` +2. Declare new constant `FOOBAR_API` with the API url in `src/constants.ts` ```typescript export const FOOBAR_API = 'api/foobar/v1' ``` -4. Create the config file for code generation in `api/config/foobar.ts` containing: +3. Create the config file for code generation in `api/config/foobar.ts` containing: ```typescript import type { ConfigFile } from '@rtk-query/codegen-openapi'; const config: ConfigFile = { - schemaFile: '../schema/foobar.json', + schemaFile: 'URL_TO_THE_OPENAPI_SCHEMA', apiFile: '../../src/store/emptyFoobarApi.ts', - apiImport: 'emptyEdgeApi', + apiImport: 'emptyContentSourcesApi', outputFile: '../../src/store/foobarApi.ts', exportName: 'foobarApi', hooks: true, @@ -152,20 +174,16 @@ const config: ConfigFile = { }; ``` -5. Update the `api.sh` script by adding a new line for npx to generate the code: - -```bash -npx @rtk-query/codegen-openapi ./api/config/foobar.ts & -``` - - -6. Update the `.eslintignore` file by adding a new line for the generated code: +4. Update the `eslint.config.js` file by adding the generated code path to the ignores array: ``` -foobarApi.ts +ignores: [ + , + '**/foobarApi.ts', +] ``` -7. run api generation +5. run api generation ```bash npm run api @@ -173,12 +191,12 @@ npm run api And voilà! -##### Add a new endpoint +### Add a new endpoint To add a new endpoint, simply update the `api/config/foobar.ts` file with new endpoints in the `filterEndpoints` table. -#### Unleash feature flags +## Unleash feature flags Your user needs to have the corresponding rights, do the same as this MR in internal gitlab https://gitlab.cee.redhat.com/service/app-interface/-/merge_requests/79225 @@ -194,7 +212,7 @@ existing flags: https://github.com/RedHatInsights/image-builder-frontend/blob/c84b493eba82ce83a7844943943d91112ffe8322/src/Components/ImagesTable/ImageLink.js#L99 -##### Mocking flags for tests +### Mocking flags for tests Flags can be mocked for the unit tests to access some feature. Checkout: https://github.com/osbuild/image-builder-frontend/blob/9a464e416bc3769cfc8e23b62f1dd410eb0e0455/src/test/Components/CreateImageWizard/CreateImageWizard.test.tsx#L49 @@ -204,66 +222,18 @@ base, then it's good practice to test the two of them. If not, only test what's actually owned by the frontend project. -##### Cleaning the flags +### Cleaning the flags Unleash toggles are expected to live for a limited amount of time, documentation specify 40 days for a release, we should keep that in mind for each toggle we're planning on using. -### Backend Development - -To develop both the frontend and the backend you can again use the proxy to run both the -frontend and backend locally against the chrome at cloud.redhat.com. For instructions -see the [osbuild-getting-started project](https://github.com/osbuild/osbuild-getting-started). - ## File Structure - -### OnPremise Development - Cockpit Build and Install - -## Overview - -The following scripts are used to build the frontend with Webpack and install it into the Cockpit directories. These scripts streamline the development process by automating build and installation steps. - -### Scripts - -#### 1. Build the Cockpit Frontend - -Runs Webpack with the specified configuration (cockpit/webpack.config.ts) to build the frontend assets. -Use this command whenever you need to compile the latest changes in your frontend code. - -Creates the necessary directory in the user's local Cockpit share (~/.local/share/cockpit/). -Creates a symbolic link (image-builder-frontend) pointing to the built frontend assets (cockpit/public). -Use this command after building the frontend to install it locally for development purposes. -The symbolic link allows Cockpit to serve the frontend assets from your local development environment, -making it easier to test changes in real-time without deploying to a remote server. - -```bash -make devel-install -``` - -```bash -make build -``` - -To uninstall and remove the symbolic link, run the following command: - -```bash -make devel-uninstall -``` - -For convenience, you can run the following to combine all three steps: - - -```bash -make cockpit/all -``` - ### Quick Reference | Directory | Description | | --------- | ----------- | | [`/api`](https://github.com/RedHatInsights/image-builder-frontend/tree/main/api) | API schema and config files | | [`/config`](https://github.com/RedHatInsights/image-builder-frontend/tree/main/config) | webpack configuration | -| [`/devel`](https://github.com/RedHatInsights/image-builder-frontend/tree/main/devel) | tools for local development | | [`/src`](https://github.com/RedHatInsights/image-builder-frontend/tree/main/src) | source code | | [`/src/Components`](https://github.com/RedHatInsights/image-builder-frontend/tree/main/src/Components) | source code split by individual components | | [`/src/test`](https://github.com/RedHatInsights/image-builder-frontend/tree/main/src/test) | test utilities | @@ -272,8 +242,19 @@ make cockpit/all ## Style Guidelines -This project uses eslint's recommended styling guidelines. These rules can be found here: -https://eslint.org/docs/rules/ +This project uses recommended rule sets rom several plugins: +- `@eslint/js` +- `typescript-eslint` +- `eslint-plugin-react` +- `eslint-plugin-react-hooks` +- `eslint-plugin-react-redux` +- `eslint-plugin-import` +- `eslint-plugin-jsx-a11y` +- `eslint-plugin-disable-autofix` +- `eslint-plugin-jest-dom` +- `eslint-plugin-testing-library` +- `eslint-plugin-playwright` +- `@redhat-cloud-services/eslint-config-redhat-cloud-services` To run the linter, use: ```bash @@ -282,16 +263,10 @@ npm run lint Any errors that can be fixed automatically, can be corrected by running: ```bash -npm run lint --fix +npm run lint:js:fix ``` -All the linting rules and configuration of eslint can be found in [`.eslintrc.yml`](https://github.com/RedHatInsights/image-builder-frontend/blob/main/.eslintrc.yml). - -### Additional eslint rules -There are also additional rules added to enforce code style. Those being: -- `import/order` -> enforces the order in import statements and separates them into groups based on their type -- `prefer-const` -> enforces use of `const` declaration for variables that are never reassigned -- `no-console` -> throws an error for any calls of `console` methods leftover after debugging +All the linting rules and configuration of ESLint can be found in [`eslint.config.js`](https://github.com/RedHatInsights/image-builder-frontend/blob/main/eslint.config.js). ## Test Guidelines @@ -369,16 +344,16 @@ Follow these steps to find and paste the certification file into the 'Keychain A npm ci ``` -3. Download the Playwright browsers with +3. Download the Playwright browsers with ```bash npx playwright install ``` -4. Start the local development stage server by running +4. Start the local development stage server by running ```bash npm run start:stage ``` 5. Now you have two options of how to run the tests: * (Preferred) Use VS Code and the [Playwright Test module for VSCode](https://marketplace.visualstudio.com/items?itemName=ms-playwright.playwright). But other editors do have similar plugins for ease of use, if so desired - * Using terminal - `npx playwright test` will run the playwright test suite. `npx playwright test --headed` will run the suite in a vnc-like browser so you can watch it's interactions. \ No newline at end of file + * Using terminal - `npx playwright test` will run the playwright test suite. `npx playwright test --headed` will run the suite in a vnc-like browser so you can watch it's interactions. diff --git a/api/codegen.sh b/api/codegen.sh index a0bd9ff4..f7a0f4a2 100644 --- a/api/codegen.sh +++ b/api/codegen.sh @@ -5,7 +5,6 @@ npx @rtk-query/codegen-openapi ./api/config/imageBuilder.ts & npx @rtk-query/codegen-openapi ./api/config/rhsm.ts & npx @rtk-query/codegen-openapi ./api/config/contentSources.ts & npx @rtk-query/codegen-openapi ./api/config/provisioning.ts & -npx @rtk-query/codegen-openapi ./api/config/edge.ts & npx @rtk-query/codegen-openapi ./api/config/compliance.ts & npx @rtk-query/codegen-openapi ./api/config/composerCloudApi.ts & diff --git a/api/config/compliance.ts b/api/config/compliance.ts index f06197ce..2a005846 100644 --- a/api/config/compliance.ts +++ b/api/config/compliance.ts @@ -1,7 +1,7 @@ import type { ConfigFile } from '@rtk-query/codegen-openapi'; const config: ConfigFile = { - schemaFile: '../schema/compliance.json', + schemaFile: 'https://console.redhat.com/api/compliance/v2/openapi.json', apiFile: '../../src/store/service/emptyComplianceApi.ts', apiImport: 'emptyComplianceApi', outputFile: '../../src/store/service/complianceApi.ts', diff --git a/api/config/composerCloudApi.ts b/api/config/composerCloudApi.ts index ac6e3396..dc916936 100644 --- a/api/config/composerCloudApi.ts +++ b/api/config/composerCloudApi.ts @@ -1,17 +1,15 @@ import type { ConfigFile } from '@rtk-query/codegen-openapi'; const config: ConfigFile = { - schemaFile: '../schema/composerCloudApi.v2.yaml', + schemaFile: + 'https://raw.githubusercontent.com/osbuild/osbuild-composer/main/internal/cloudapi/v2/openapi.v2.yml', apiFile: '../../src/store/cockpit/emptyComposerCloudApi.ts', apiImport: 'emptyComposerCloudApi', outputFile: '../../src/store/cockpit/composerCloudApi.ts', exportName: 'composerCloudApi', hooks: false, unionUndefined: true, - filterEndpoints: [ - 'postCompose', - 'getComposeStatus', - ], + filterEndpoints: ['postCompose', 'getComposeStatus'], }; export default config; diff --git a/api/config/contentSources.ts b/api/config/contentSources.ts index f0e48671..7d4db495 100644 --- a/api/config/contentSources.ts +++ b/api/config/contentSources.ts @@ -1,7 +1,7 @@ import type { ConfigFile } from '@rtk-query/codegen-openapi'; const config: ConfigFile = { - schemaFile: '../schema/contentSources.json', + schemaFile: 'https://console.redhat.com/api/content-sources/v1/openapi.json', apiFile: '../../src/store/service/emptyContentSourcesApi.ts', apiImport: 'emptyContentSourcesApi', outputFile: '../../src/store/service/contentSourcesApi.ts', @@ -12,6 +12,7 @@ const config: ConfigFile = { 'createRepository', 'listRepositories', 'listRepositoriesRpms', + 'listRepositoryParameters', 'searchRpm', 'searchPackageGroup', 'listFeatures', diff --git a/api/config/edge.ts b/api/config/edge.ts deleted file mode 100644 index ba528d07..00000000 --- a/api/config/edge.ts +++ /dev/null @@ -1,36 +0,0 @@ -import type { ConfigFile } from '@rtk-query/codegen-openapi'; - -const config: ConfigFile = { - schemaFile: '../schema/edge.json', - apiFile: '../../src/store/service/emptyEdgeApi.ts', - apiImport: 'emptyEdgeApi', - outputFile: '../../src/store/service/edgeApi.ts', - exportName: 'edgeApi', - hooks: true, - unionUndefined: true, - filterEndpoints: [ - 'createImage', - 'createImageUpdate', - 'getAllImages', - 'getImageStatusByID', - 'getImageByID', - 'getImageDetailsByID', - 'getImageByOstree', - 'createInstallerForImage', - 'getRepoForImage', - 'getMetadataForImage', - 'createKickStartForImage', - 'checkImageName', - 'retryCreateImage', - 'listAllImageSets', - 'getImageSetsByID', - 'getImageSetsView', - 'getImageSetViewByID', - 'getAllImageSetImagesView', - 'getImageSetsDevicesByID', - 'deleteImageSet', - 'getImageSetImageView', - ], -}; - -export default config; diff --git a/api/config/imageBuilder.ts b/api/config/imageBuilder.ts index 2bc1f324..da0bceea 100644 --- a/api/config/imageBuilder.ts +++ b/api/config/imageBuilder.ts @@ -1,7 +1,8 @@ import type { ConfigFile } from '@rtk-query/codegen-openapi'; const config: ConfigFile = { - schemaFile: '../schema/imageBuilder.yaml', + schemaFile: + 'https://raw.githubusercontent.com/osbuild/image-builder/main/internal/v1/api.yaml', apiFile: '../../src/store/service/emptyImageBuilderApi.ts', apiImport: 'emptyImageBuilderApi', outputFile: '../../src/store/service/imageBuilderApi.ts', diff --git a/api/config/provisioning.ts b/api/config/provisioning.ts index 40e5b91b..1b772426 100644 --- a/api/config/provisioning.ts +++ b/api/config/provisioning.ts @@ -1,7 +1,7 @@ import type { ConfigFile } from '@rtk-query/codegen-openapi'; const config: ConfigFile = { - schemaFile: '../schema/provisioning.json', + schemaFile: 'https://console.redhat.com/api/provisioning/v1/openapi.json', apiFile: '../../src/store/service/emptyProvisioningApi.ts', apiImport: 'emptyProvisioningApi', outputFile: '../../src/store/service/provisioningApi.ts', diff --git a/api/config/rhsm.ts b/api/config/rhsm.ts index 69797989..a2f9bfd3 100644 --- a/api/config/rhsm.ts +++ b/api/config/rhsm.ts @@ -1,7 +1,7 @@ import type { ConfigFile } from '@rtk-query/codegen-openapi'; const config: ConfigFile = { - schemaFile: '../schema/rhsm.json', + schemaFile: 'https://console.redhat.com/api/rhsm/v2/openapi.json', apiFile: '../../src/store/service/emptyRhsmApi.ts', apiImport: 'emptyRhsmApi', outputFile: '../../src/store/service/rhsmApi.ts', diff --git a/api/pull.sh b/api/pull.sh deleted file mode 100644 index d9bd0105..00000000 --- a/api/pull.sh +++ /dev/null @@ -1,10 +0,0 @@ -#!/bin/bash - -# Download the most up-to-date imageBuilder.yaml file and overwrite the existing one -curl https://raw.githubusercontent.com/osbuild/image-builder/main/internal/v1/api.yaml -o ./api/schema/imageBuilder.yaml - -curl https://console.redhat.com/api/compliance/v2/openapi.json -o ./api/schema/compliance.json - -curl https://console.redhat.com/api/content-sources/v1/openapi.json -o ./api/schema/contentSources.json - -curl https://raw.githubusercontent.com/osbuild/osbuild-composer/main/internal/cloudapi/v2/openapi.v2.yml -o ./api/schema/composerCloudApi.v2.yaml diff --git a/api/schema/compliance.json b/api/schema/compliance.json deleted file mode 100644 index 3b8497eb..00000000 --- a/api/schema/compliance.json +++ /dev/null @@ -1,17629 +0,0 @@ -{ - "openapi": "3.1.0", - "info": { - "title": "Cloud Services for RHEL Compliance API v2", - "version": "v2", - "description": "This is the API for Cloud Services for RHEL Compliance. You can find out more about Red Hat Cloud Services for RHEL at [https://console.redhat.com/](https://console.redhat.com/)" - }, - "servers": [ - { - "url": "https://{defaultHost}/api/compliance/v2", - "variables": { - "defaultHost": { - "default": "console.redhat.com" - } - } - } - ], - "paths": { - "/policies": { - "get": { - "summary": "Request Policies", - "parameters": [ - { - "name": "X-RH-IDENTITY", - "in": "header", - "schema": { - "type": "string" - }, - "description": "For internal use only" - }, - { - "name": "limit", - "in": "query", - "required": false, - "description": "Number of items to return per page", - "schema": { - "type": "number", - "maximum": 100, - "minimum": 1, - "default": 10 - } - }, - { - "name": "offset", - "in": "query", - "required": false, - "description": "Offset of first item of paginated response", - "schema": { - "type": "integer", - "minimum": 0, - "default": 0 - } - }, - { - "name": "ids_only", - "in": "query", - "required": false, - "description": "Indicates whether to return only resource IDs.", - "schema": { - "type": "boolean" - } - }, - { - "name": "sort_by", - "in": "query", - "required": false, - "description": "Attribute and direction to sort the items by. Represented by an array of fields with an optional direction (`:asc` or `:desc`).

If no direction is selected, `:asc` is used by default.", - "schema": { - "type": "array", - "items": { - "enum": [ - "title", - "os_major_version", - "total_system_count", - "business_objective", - "compliance_threshold", - "title:asc", - "title:desc", - "os_major_version:asc", - "os_major_version:desc", - "total_system_count:asc", - "total_system_count:desc", - "business_objective:asc", - "business_objective:desc", - "compliance_threshold:asc", - "compliance_threshold:desc" - ] - } - } - }, - { - "name": "filter", - "in": "query", - "required": false, - "description": "Query string to filter items by their attributes. Compliant with scoped_search query language. However, only `=` or `!=` (resp. `<>`) operators are supported.

Policies are searchable using attributes `title`, `os_major_version`, and `os_minor_version`

(e.g.: `(field_1=something AND field_2!=\"something else\") OR field_3>40`)", - "schema": { - "type": "string" - } - } - ], - "tags": [ - "Policies" - ], - "description": "Retrieve the list of policies that have been created to test the compliance of your registered systems.", - "operationId": "Policies", - "responses": { - "200": { - "description": "Lists Policies", - "content": { - "application/vnd.api+json": { - "examples": { - "List of Policies": { - "value": { - "data": [ - { - "id": "0aef59f7-5aac-4614-9346-cc72723eface", - "title": "Maiores sunt quos et.", - "description": "Quia cupiditate quis. Rerum modi consequuntur. Voluptatem provident ullam.", - "business_objective": null, - "compliance_threshold": 24.0, - "total_system_count": 0, - "type": "policy", - "os_major_version": 7, - "profile_title": "Quam voluptas eum iste.", - "ref_id": "xccdf_org.ssgproject.content_profile_7df4b808ec42b3692cda3bac1713260b" - }, - { - "id": "16114f64-f623-471c-b04e-12586c301e14", - "title": "Repellat at reprehenderit harum.", - "description": "Quam necessitatibus recusandae. Ut quae quisquam. Explicabo quae vel.", - "business_objective": null, - "compliance_threshold": 21.0, - "total_system_count": 0, - "type": "policy", - "os_major_version": 7, - "profile_title": "Nam delectus qui rerum.", - "ref_id": "xccdf_org.ssgproject.content_profile_1e51f6f4679ce47508c6ce9d2ed0a8e9" - }, - { - "id": "18175462-2ae5-4f46-8430-2e73c06aa760", - "title": "Et odit dolorem magni.", - "description": "Non saepe exercitationem. Natus ut reiciendis. Deserunt qui consequatur.", - "business_objective": null, - "compliance_threshold": 29.0, - "total_system_count": 0, - "type": "policy", - "os_major_version": 7, - "profile_title": "Voluptatem qui iste est.", - "ref_id": "xccdf_org.ssgproject.content_profile_301035df51e2f8756483224ee4ef7d2c" - }, - { - "id": "2661b423-d86f-4193-bcc7-36f9c6466e3b", - "title": "Labore minus quis deserunt.", - "description": "Est dicta ut. Omnis libero ea. Dignissimos et in.", - "business_objective": null, - "compliance_threshold": 89.0, - "total_system_count": 0, - "type": "policy", - "os_major_version": 7, - "profile_title": "Quisquam aliquam quis ducimus.", - "ref_id": "xccdf_org.ssgproject.content_profile_6b2a26e4f036aaebef129114ebaf37b5" - }, - { - "id": "2709efbe-184f-4290-b9f6-ff577a9b7a5e", - "title": "Et voluptatum est aut.", - "description": "Facilis ratione tempora. Voluptates est eos. Occaecati tenetur dolores.", - "business_objective": null, - "compliance_threshold": 12.0, - "total_system_count": 0, - "type": "policy", - "os_major_version": 7, - "profile_title": "Qui autem id id.", - "ref_id": "xccdf_org.ssgproject.content_profile_e8e17ff81d6b5c8b01481c13c851c1db" - }, - { - "id": "2cbfaa94-775b-4cad-b408-a05b6f53f144", - "title": "Quam est aut deserunt.", - "description": "Velit explicabo maiores. Laboriosam veniam rerum. Commodi et ut.", - "business_objective": null, - "compliance_threshold": 90.0, - "total_system_count": 0, - "type": "policy", - "os_major_version": 7, - "profile_title": "Pariatur nam et sequi.", - "ref_id": "xccdf_org.ssgproject.content_profile_e45e56b6ca8fc23d5fa2bc4a49b19e22" - }, - { - "id": "30cc7e98-54ab-433d-8dc1-e6822941a956", - "title": "Aut ratione delectus beatae.", - "description": "Molestias totam animi. Magni vitae non. Perspiciatis eos et.", - "business_objective": null, - "compliance_threshold": 27.0, - "total_system_count": 0, - "type": "policy", - "os_major_version": 7, - "profile_title": "Non voluptatem possimus non.", - "ref_id": "xccdf_org.ssgproject.content_profile_65f600924dbf8d9af413cd221d1f462d" - }, - { - "id": "31afdcbc-653c-451a-904c-6425c9c4bd69", - "title": "Perspiciatis provident reprehenderit ducimus.", - "description": "Excepturi sit sapiente. Perferendis fugit impedit. Porro rerum mollitia.", - "business_objective": null, - "compliance_threshold": 62.0, - "total_system_count": 0, - "type": "policy", - "os_major_version": 7, - "profile_title": "Natus nisi sed qui.", - "ref_id": "xccdf_org.ssgproject.content_profile_c50c7ed64e711e0b5c376579ac9d321f" - }, - { - "id": "34572b3a-4c91-4479-8f94-65d73351e559", - "title": "Aperiam est quasi repudiandae.", - "description": "Qui alias sit. Recusandae beatae et. Nihil et et.", - "business_objective": null, - "compliance_threshold": 13.0, - "total_system_count": 0, - "type": "policy", - "os_major_version": 7, - "profile_title": "Ex rerum asperiores molestiae.", - "ref_id": "xccdf_org.ssgproject.content_profile_e6e5d11ad98f0198f13d2cbfcb43b5a2" - }, - { - "id": "36f96798-e0c1-40bf-89da-5ada9ba4ce17", - "title": "Modi itaque dolorum delectus.", - "description": "Reprehenderit qui et. Debitis nihil sit. Aspernatur ut minus.", - "business_objective": null, - "compliance_threshold": 44.0, - "total_system_count": 0, - "type": "policy", - "os_major_version": 7, - "profile_title": "Rerum rem placeat cupiditate.", - "ref_id": "xccdf_org.ssgproject.content_profile_0872cd6091ad51d082384e16e50d7cce" - } - ], - "meta": { - "total": 25, - "limit": 10, - "offset": 0 - }, - "links": { - "first": "/api/compliance/v2/policies?limit=10&offset=0", - "last": "/api/compliance/v2/policies?limit=10&offset=20", - "next": "/api/compliance/v2/policies?limit=10&offset=10" - } - }, - "summary": "", - "description": "" - }, - "List of Policies sorted by \"os_major_version:asc\"": { - "value": { - "data": [ - { - "id": "04e247e5-fd9b-4f00-80ff-9e534a4ba19c", - "title": "Dolorum cumque culpa odit.", - "description": "Ut ut similique. Facilis illo ipsa. Facere mollitia aspernatur.", - "business_objective": null, - "compliance_threshold": 18.0, - "total_system_count": 0, - "type": "policy", - "os_major_version": 7, - "profile_title": "Voluptatem modi maiores neque.", - "ref_id": "xccdf_org.ssgproject.content_profile_411ebd096aafa4af48be5d2aabbac684" - }, - { - "id": "073818bc-e4a5-49a7-b06f-fa7a08640c64", - "title": "Unde voluptates quia aut.", - "description": "Dolorem ullam molestiae. Qui sit consequuntur. Quis error neque.", - "business_objective": null, - "compliance_threshold": 86.0, - "total_system_count": 0, - "type": "policy", - "os_major_version": 7, - "profile_title": "Perspiciatis accusantium sunt nam.", - "ref_id": "xccdf_org.ssgproject.content_profile_0de4dc72276aab82b68af219c3418531" - }, - { - "id": "1cff06a1-61d0-4200-93ba-e466b3c93e3f", - "title": "Non illum dolor expedita.", - "description": "Sunt dignissimos debitis. Iure temporibus eligendi. Aperiam ut deleniti.", - "business_objective": null, - "compliance_threshold": 71.0, - "total_system_count": 0, - "type": "policy", - "os_major_version": 7, - "profile_title": "Earum et nihil quia.", - "ref_id": "xccdf_org.ssgproject.content_profile_bb6287a5729ffd55fee99b2b389848e3" - }, - { - "id": "2189d96c-991f-47ef-bdbf-86b009b3b757", - "title": "Laborum quia optio voluptatibus.", - "description": "Eveniet nemo eius. Quos et consequatur. Aut vero quibusdam.", - "business_objective": null, - "compliance_threshold": 85.0, - "total_system_count": 0, - "type": "policy", - "os_major_version": 7, - "profile_title": "Sapiente pariatur omnis blanditiis.", - "ref_id": "xccdf_org.ssgproject.content_profile_5af3adb6287a78a1f0f3d702f7ec741e" - }, - { - "id": "23e9562d-b9ae-4f45-8b16-81f491dcc564", - "title": "Quia eum aut similique.", - "description": "Qui voluptatibus nesciunt. Hic ut aut. Provident fuga libero.", - "business_objective": null, - "compliance_threshold": 33.0, - "total_system_count": 0, - "type": "policy", - "os_major_version": 7, - "profile_title": "Autem sit eligendi placeat.", - "ref_id": "xccdf_org.ssgproject.content_profile_9c4d69808ecf013e6b5a43bdc1c5a48d" - }, - { - "id": "27b5eaf7-cc20-4fc8-be46-3e4ec6544bf7", - "title": "Sed aut doloribus aspernatur.", - "description": "Et ducimus consequatur. Voluptate autem iusto. Doloremque accusamus labore.", - "business_objective": null, - "compliance_threshold": 83.0, - "total_system_count": 0, - "type": "policy", - "os_major_version": 7, - "profile_title": "Nihil ipsa fuga laborum.", - "ref_id": "xccdf_org.ssgproject.content_profile_5831afccbbcb06df7211d7d02efdcc9b" - }, - { - "id": "2fba4a27-ecf8-466f-80d3-26474430047a", - "title": "Iusto qui commodi sint.", - "description": "Nostrum id quia. Quasi incidunt officiis. Quaerat non iure.", - "business_objective": null, - "compliance_threshold": 7.0, - "total_system_count": 0, - "type": "policy", - "os_major_version": 7, - "profile_title": "Ullam dolorem dolor rem.", - "ref_id": "xccdf_org.ssgproject.content_profile_64060000bd8adf69b8dcc7d1de67d10f" - }, - { - "id": "32f0a4d1-7dfc-422c-986d-352526046d16", - "title": "Possimus cum quos pariatur.", - "description": "Architecto nobis veniam. Voluptatem facere voluptate. Quis voluptates ut.", - "business_objective": null, - "compliance_threshold": 71.0, - "total_system_count": 0, - "type": "policy", - "os_major_version": 7, - "profile_title": "Quisquam nihil et rerum.", - "ref_id": "xccdf_org.ssgproject.content_profile_a6fdad4e61f45eded822d3ba9ba1a4b4" - }, - { - "id": "34021287-4a17-41b6-81e5-ea28388ff0b9", - "title": "Quia repellendus quia voluptas.", - "description": "Incidunt et debitis. Ut ipsa laboriosam. Ut dicta et.", - "business_objective": null, - "compliance_threshold": 80.0, - "total_system_count": 0, - "type": "policy", - "os_major_version": 7, - "profile_title": "Eveniet est voluptatem accusantium.", - "ref_id": "xccdf_org.ssgproject.content_profile_1fb876d87ccc8e3e1ac79e40e5de7758" - }, - { - "id": "3e9ba4af-73e2-4254-a441-dda05f2ebf68", - "title": "Quidem est vel qui.", - "description": "Dolorem libero ut. Ipsam magni sint. Aut quidem est.", - "business_objective": null, - "compliance_threshold": 70.0, - "total_system_count": 0, - "type": "policy", - "os_major_version": 7, - "profile_title": "Dicta a voluptatibus rem.", - "ref_id": "xccdf_org.ssgproject.content_profile_45b13b752789ae3201d5675ef9ecebfb" - } - ], - "meta": { - "total": 25, - "limit": 10, - "offset": 0, - "sort_by": "os_major_version" - }, - "links": { - "first": "/api/compliance/v2/policies?limit=10&offset=0&sort_by=os_major_version", - "last": "/api/compliance/v2/policies?limit=10&offset=20&sort_by=os_major_version", - "next": "/api/compliance/v2/policies?limit=10&offset=10&sort_by=os_major_version" - } - }, - "summary": "", - "description": "" - }, - "List of Policies filtered by \"(os_major_version=8)\"": { - "value": { - "data": [], - "meta": { - "total": 0, - "filter": "(os_major_version=8)", - "limit": 10, - "offset": 0 - }, - "links": { - "first": "/api/compliance/v2/policies?filter=%28os_major_version%3D8%29&limit=10&offset=0", - "last": "/api/compliance/v2/policies?filter=%28os_major_version%3D8%29&limit=10&offset=0" - } - }, - "summary": "", - "description": "" - } - }, - "schema": { - "type": "object", - "properties": { - "meta": { - "$ref": "#/components/schemas/metadata" - }, - "links": { - "$ref": "#/components/schemas/links" - }, - "data": { - "type": "array", - "items": { - "properties": { - "schema": { - "$ref": "#/components/schemas/policy" - } - } - } - } - } - } - } - } - }, - "422": { - "description": "Returns with Unprocessable Content", - "content": { - "application/vnd.api+json": { - "examples": { - "Description of an error when sorting by incorrect parameter": { - "value": { - "errors": [ - "Result cannot be sorted by the 'description' column." - ] - }, - "summary": "", - "description": "" - }, - "Description of an error when requesting higher limit than supported": { - "value": { - "errors": [ - "Invalid parameter: limit must be less than or equal to 100" - ] - }, - "summary": "", - "description": "" - } - }, - "schema": { - "$ref": "#/components/schemas/errors" - } - } - } - } - } - }, - "post": { - "summary": "Create a Policy", - "parameters": [ - { - "name": "X-RH-IDENTITY", - "in": "header", - "schema": { - "type": "string" - }, - "description": "For internal use only" - } - ], - "tags": [ - "Policies" - ], - "description": "Create a new security policy.", - "operationId": "CreatePolicy", - "responses": { - "201": { - "description": "Creates a Policy", - "content": { - "application/vnd.api+json": { - "examples": { - "Response example": { - "value": { - "data": { - "id": "5666da40-a302-4d34-9da5-62af457a168a", - "title": "Foo", - "description": "Hello World", - "business_objective": "Serious Business Objective", - "compliance_threshold": 33.3, - "total_system_count": null, - "type": "policy", - "os_major_version": 7, - "profile_title": "Sed distinctio quia nihil.", - "ref_id": "xccdf_org.ssgproject.content_profile_1b9f1caa0965033a01793fa5231c7ad1" - } - }, - "summary": "", - "description": "" - } - }, - "schema": { - "type": "object", - "properties": { - "data": { - "type": "object", - "properties": { - "schema": { - "$ref": "#/components/schemas/policy" - } - } - } - } - } - } - } - } - }, - "requestBody": { - "content": { - "application/vnd.api+json": { - "schema": { - "$ref": "#/components/schemas/policy" - } - } - } - } - } - }, - "/policies/{policy_id}": { - "get": { - "summary": "Request a Policy", - "parameters": [ - { - "name": "X-RH-IDENTITY", - "in": "header", - "schema": { - "type": "string" - }, - "description": "For internal use only" - }, - { - "name": "policy_id", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - } - ], - "tags": [ - "Policies" - ], - "description": "Retrieve a specific policy.", - "operationId": "Policy", - "responses": { - "200": { - "description": "Returns a Policy", - "content": { - "application/vnd.api+json": { - "examples": { - "Returns a Policy": { - "value": { - "data": { - "id": "798a9ee1-4dff-4316-a536-59b283b33901", - "title": "Et voluptatibus dolores cum.", - "description": "Repellendus laboriosam tempora. Itaque ut quisquam. Incidunt reiciendis iste.", - "business_objective": null, - "compliance_threshold": 9.0, - "total_system_count": 0, - "type": "policy", - "os_major_version": 7, - "profile_title": "Atque enim est magni.", - "ref_id": "xccdf_org.ssgproject.content_profile_2750dd8208bfe3bceaab0a64d63c1796" - } - }, - "summary": "", - "description": "" - } - }, - "schema": { - "type": "object", - "properties": { - "data": { - "type": "object", - "properties": { - "schema": { - "$ref": "#/components/schemas/policy" - } - } - } - } - } - } - } - }, - "404": { - "description": "Returns with Not Found", - "content": { - "application/vnd.api+json": { - "examples": { - "Description of an error when requesting a non-existing Policy": { - "value": { - "errors": [ - "V2::Policy not found with ID b91e15b6-7cf1-4bd6-8add-6edcc4769cc8" - ] - }, - "summary": "", - "description": "" - } - }, - "schema": { - "$ref": "#/components/schemas/errors" - } - } - } - } - } - }, - "patch": { - "summary": "Update a Policy", - "parameters": [ - { - "name": "X-RH-IDENTITY", - "in": "header", - "schema": { - "type": "string" - }, - "description": "For internal use only" - }, - { - "name": "policy_id", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - } - ], - "tags": [ - "Policies" - ], - "description": "Edit or update an existing policy.", - "operationId": "UpdatePolicy", - "responses": { - "202": { - "description": "Updates a Policy", - "content": { - "application/vnd.api+json": { - "examples": { - "Returns the updated Policy": { - "value": { - "data": { - "id": "3a5a634e-1d12-4eca-a073-93781384b3ed", - "title": "Sit perferendis fugiat fugit.", - "description": "Animi error sunt. Magnam soluta quis. Magni est esse.", - "business_objective": null, - "compliance_threshold": 100.0, - "total_system_count": 0, - "type": "policy", - "os_major_version": 7, - "profile_title": "Et eum est beatae.", - "ref_id": "xccdf_org.ssgproject.content_profile_a089488092364d0b1afbc8dee2c270a8" - } - }, - "summary": "", - "description": "" - } - }, - "schema": { - "type": "object", - "properties": { - "data": { - "type": "object", - "properties": { - "schema": { - "$ref": "#/components/schemas/policy" - } - } - } - } - } - } - } - } - }, - "requestBody": { - "content": { - "application/vnd.api+json": { - "schema": { - "$ref": "#/components/schemas/policy_update" - } - } - } - } - }, - "delete": { - "summary": "Delete a Policy", - "parameters": [ - { - "name": "X-RH-IDENTITY", - "in": "header", - "schema": { - "type": "string" - }, - "description": "For internal use only" - }, - { - "name": "policy_id", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - } - ], - "tags": [ - "Policies" - ], - "description": "Delete a specific policy.", - "operationId": "DeletePolicy", - "responses": { - "202": { - "description": "Deletes a Policy", - "content": { - "application/vnd.api+json": { - "examples": { - "Deletes a Policy": { - "value": { - "data": { - "id": "e066629a-f9d7-44c4-9aeb-e0e8249fb270", - "title": "Accusamus non consequatur facere.", - "description": "Voluptate porro et. Voluptates nobis nostrum. Voluptatum dolores velit.", - "business_objective": null, - "compliance_threshold": 18.0, - "total_system_count": 0, - "type": "policy", - "os_major_version": 7, - "profile_title": "Ea quia iusto dignissimos.", - "ref_id": "xccdf_org.ssgproject.content_profile_1a601f6d84f94a2dad0c71155ff571c8" - } - }, - "summary": "", - "description": "" - } - }, - "schema": { - "type": "object", - "properties": { - "data": { - "type": "object", - "properties": { - "schema": { - "$ref": "#/components/schemas/policy" - } - } - } - } - } - } - } - } - } - } - }, - "/systems/{system_id}/policies": { - "get": { - "summary": "Request Policies assigned to a System", - "parameters": [ - { - "name": "X-RH-IDENTITY", - "in": "header", - "schema": { - "type": "string" - }, - "description": "For internal use only" - }, - { - "name": "limit", - "in": "query", - "required": false, - "description": "Number of items to return per page", - "schema": { - "type": "number", - "maximum": 100, - "minimum": 1, - "default": 10 - } - }, - { - "name": "offset", - "in": "query", - "required": false, - "description": "Offset of first item of paginated response", - "schema": { - "type": "integer", - "minimum": 0, - "default": 0 - } - }, - { - "name": "ids_only", - "in": "query", - "required": false, - "description": "Indicates whether to return only resource IDs.", - "schema": { - "type": "boolean" - } - }, - { - "name": "sort_by", - "in": "query", - "required": false, - "description": "Attribute and direction to sort the items by. Represented by an array of fields with an optional direction (`:asc` or `:desc`).

If no direction is selected, `:asc` is used by default.", - "schema": { - "type": "array", - "items": { - "enum": [ - "title", - "business_objective", - "compliance_threshold", - "title:asc", - "title:desc", - "business_objective:asc", - "business_objective:desc", - "compliance_threshold:asc", - "compliance_threshold:desc" - ] - } - } - }, - { - "name": "filter", - "in": "query", - "required": false, - "description": "Query string to filter items by their attributes. Compliant with scoped_search query language. However, only `=` or `!=` (resp. `<>`) operators are supported.

Policies are searchable using attributes `title` and `os_minor_version`

(e.g.: `(field_1=something AND field_2!=\"something else\") OR field_3>40`)", - "schema": { - "type": "string" - } - }, - { - "name": "system_id", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - } - ], - "tags": [ - "Systems" - ], - "description": "List all policies assigned to a single system.", - "operationId": "SystemsPolicies", - "responses": { - "200": { - "description": "Lists Policies", - "content": { - "application/vnd.api+json": { - "examples": { - "List of Policies under a System": { - "value": { - "data": [ - { - "id": "171e6813-9160-44b8-9c40-63e918662932", - "title": "Consequatur fugiat incidunt perspiciatis.", - "description": "Exercitationem ut quam. Voluptates repellendus nostrum. Saepe adipisci molestias.", - "business_objective": null, - "compliance_threshold": 2.0, - "total_system_count": 1, - "type": "policy", - "os_major_version": 7, - "profile_title": "Autem et sapiente rerum.", - "ref_id": "xccdf_org.ssgproject.content_profile_48b11f1070adff49b656ce94b024a5b5" - }, - { - "id": "21ba7219-0e3d-40dc-844f-e996e32a5b39", - "title": "Autem nisi non qui.", - "description": "Dolores ipsum ut. Praesentium consequuntur qui. Magni ut ut.", - "business_objective": null, - "compliance_threshold": 46.0, - "total_system_count": 1, - "type": "policy", - "os_major_version": 7, - "profile_title": "Odit earum reiciendis provident.", - "ref_id": "xccdf_org.ssgproject.content_profile_1f4633572e8003024f176b975034fef4" - }, - { - "id": "2d384102-4937-4308-8ba9-64c760403039", - "title": "Rerum voluptatem et eaque.", - "description": "Natus similique architecto. Necessitatibus modi reiciendis. Soluta omnis at.", - "business_objective": null, - "compliance_threshold": 55.0, - "total_system_count": 1, - "type": "policy", - "os_major_version": 7, - "profile_title": "Aut omnis ad qui.", - "ref_id": "xccdf_org.ssgproject.content_profile_43829a2cddb4b7fb684d57b47bf7eef4" - }, - { - "id": "2fd38abe-75eb-450e-9f45-1684bbf370cc", - "title": "Earum rerum nemo sed.", - "description": "Quia optio est. Rerum assumenda ratione. Iusto rerum autem.", - "business_objective": null, - "compliance_threshold": 25.0, - "total_system_count": 1, - "type": "policy", - "os_major_version": 7, - "profile_title": "Rerum occaecati alias quam.", - "ref_id": "xccdf_org.ssgproject.content_profile_2c53fc185f4e88f57cca730d51c85f0a" - }, - { - "id": "36b2bc7b-82d7-4359-b4ff-3c82c6c82c1c", - "title": "Cumque aspernatur ipsa officia.", - "description": "Repellendus porro iusto. Ipsum et id. Vel tempora minima.", - "business_objective": null, - "compliance_threshold": 48.0, - "total_system_count": 1, - "type": "policy", - "os_major_version": 7, - "profile_title": "Dolorum totam repellendus non.", - "ref_id": "xccdf_org.ssgproject.content_profile_0f294cdc28dfde6e68acb85bee089d95" - }, - { - "id": "52eb5258-e423-4138-8bda-223c7898889c", - "title": "Harum sed consequatur cumque.", - "description": "Molestias officiis praesentium. Aut et voluptas. Tenetur et ratione.", - "business_objective": null, - "compliance_threshold": 50.0, - "total_system_count": 1, - "type": "policy", - "os_major_version": 7, - "profile_title": "Quo possimus temporibus quis.", - "ref_id": "xccdf_org.ssgproject.content_profile_bd42968507dd661c58c974a92bb4a505" - }, - { - "id": "5eb1eef7-b84d-46f6-8a66-81fd9a74c819", - "title": "Amet molestias suscipit eos.", - "description": "Eos sit eligendi. Necessitatibus distinctio error. Debitis id qui.", - "business_objective": null, - "compliance_threshold": 82.0, - "total_system_count": 1, - "type": "policy", - "os_major_version": 7, - "profile_title": "Quae provident aliquid eos.", - "ref_id": "xccdf_org.ssgproject.content_profile_9c170e8a7736e2dc5698ad3c897f1302" - }, - { - "id": "6225dfcb-8182-4e4a-8a6e-f218e63fa342", - "title": "Iure hic et inventore.", - "description": "Tempore eveniet quia. Ex deserunt facilis. Sit dolore odit.", - "business_objective": null, - "compliance_threshold": 88.0, - "total_system_count": 1, - "type": "policy", - "os_major_version": 7, - "profile_title": "Velit quod commodi dolorem.", - "ref_id": "xccdf_org.ssgproject.content_profile_48ee54866283803b04bdaa60b0a483fd" - }, - { - "id": "6457bba8-3fab-4372-95e9-62ed9b54f06a", - "title": "In earum temporibus nulla.", - "description": "Rerum alias mollitia. Similique id ea. Optio aliquam commodi.", - "business_objective": null, - "compliance_threshold": 13.0, - "total_system_count": 1, - "type": "policy", - "os_major_version": 7, - "profile_title": "Consequuntur aut dicta velit.", - "ref_id": "xccdf_org.ssgproject.content_profile_63d15f20d7dafd49220fe6bba561f308" - }, - { - "id": "69f94194-0eb9-485e-9913-910b72928989", - "title": "Nemo consequatur dolore nihil.", - "description": "Consequatur temporibus dicta. Consequuntur facere harum. Corrupti voluptas temporibus.", - "business_objective": null, - "compliance_threshold": 49.0, - "total_system_count": 1, - "type": "policy", - "os_major_version": 7, - "profile_title": "Illum vero sit doloribus.", - "ref_id": "xccdf_org.ssgproject.content_profile_3f1834b2eda537af769a452bb5779eca" - } - ], - "meta": { - "total": 25, - "limit": 10, - "offset": 0 - }, - "links": { - "first": "/api/compliance/v2/systems/5090ca71-8bfc-4a20-8038-dd678a7498ad/policies?limit=10&offset=0", - "last": "/api/compliance/v2/systems/5090ca71-8bfc-4a20-8038-dd678a7498ad/policies?limit=10&offset=20", - "next": "/api/compliance/v2/systems/5090ca71-8bfc-4a20-8038-dd678a7498ad/policies?limit=10&offset=10" - } - }, - "summary": "", - "description": "" - } - }, - "schema": { - "type": "object", - "properties": { - "meta": { - "$ref": "#/components/schemas/metadata" - }, - "links": { - "$ref": "#/components/schemas/links" - }, - "data": { - "type": "array", - "items": { - "properties": { - "schema": { - "$ref": "#/components/schemas/policy" - } - } - } - } - } - } - } - } - } - } - } - }, - "/security_guides/{security_guide_id}/profiles": { - "get": { - "summary": "Request Profiles", - "parameters": [ - { - "name": "X-RH-IDENTITY", - "in": "header", - "schema": { - "type": "string" - }, - "description": "For internal use only" - }, - { - "name": "limit", - "in": "query", - "required": false, - "description": "Number of items to return per page", - "schema": { - "type": "number", - "maximum": 100, - "minimum": 1, - "default": 10 - } - }, - { - "name": "offset", - "in": "query", - "required": false, - "description": "Offset of first item of paginated response", - "schema": { - "type": "integer", - "minimum": 0, - "default": 0 - } - }, - { - "name": "ids_only", - "in": "query", - "required": false, - "description": "Indicates whether to return only resource IDs.", - "schema": { - "type": "boolean" - } - }, - { - "name": "sort_by", - "in": "query", - "required": false, - "description": "Attribute and direction to sort the items by. Represented by an array of fields with an optional direction (`:asc` or `:desc`).

If no direction is selected, `:asc` is used by default.", - "schema": { - "type": "array", - "items": { - "enum": [ - "title", - "title:asc", - "title:desc" - ] - } - } - }, - { - "name": "filter", - "in": "query", - "required": false, - "description": "Query string to filter items by their attributes. Compliant with scoped_search query language. However, only `=` or `!=` (resp. `<>`) operators are supported.

Profiles are searchable using attributes `title` and `ref_id`

(e.g.: `(field_1=something AND field_2!=\"something else\") OR field_3>40`)", - "schema": { - "type": "string" - } - }, - { - "name": "security_guide_id", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - } - ], - "tags": [ - "Content" - ], - "description": "List all security guide profiles.", - "operationId": "Profiles", - "responses": { - "200": { - "description": "Lists Profiles", - "content": { - "application/vnd.api+json": { - "examples": { - "List of Profiles": { - "value": { - "data": [ - { - "id": "02634e33-878a-4f13-9457-28a61a8eefa2", - "ref_id": "xccdf_org.ssgproject.content_profile_4a52b138f1c8f1fdae876cc3c8f716f4", - "title": "Illum aspernatur dicta aut.", - "description": "Cum iure pariatur. Consequuntur cupiditate eaque. Sed nisi eligendi.", - "value_overrides": {}, - "type": "profile" - }, - { - "id": "0ac486e2-b9bf-4fc9-9f10-3335869a3a45", - "ref_id": "xccdf_org.ssgproject.content_profile_d2b0ec443fea7e27438b398a7a6eff3d", - "title": "Aut rerum doloremque est.", - "description": "Expedita dicta similique. Accusantium in impedit. Ipsam magnam hic.", - "value_overrides": {}, - "type": "profile" - }, - { - "id": "219c1916-a451-460c-9b16-74095a9eeed1", - "ref_id": "xccdf_org.ssgproject.content_profile_ad9035b7254506ba179e0703a44e8744", - "title": "Et ducimus minus saepe.", - "description": "Qui magnam sed. Nihil rem mollitia. Veritatis deleniti recusandae.", - "value_overrides": {}, - "type": "profile" - }, - { - "id": "2f54df73-18c5-40be-beca-d5f2db07bc71", - "ref_id": "xccdf_org.ssgproject.content_profile_8b96ef62861a8943fb1fea9df6461f1a", - "title": "Sit aspernatur est saepe.", - "description": "Fugit voluptatem aperiam. Sit itaque quam. Qui quia molestiae.", - "value_overrides": {}, - "type": "profile" - }, - { - "id": "52ab0c0d-3142-49dc-b2a8-566b0ffe6c6b", - "ref_id": "xccdf_org.ssgproject.content_profile_eb871a77a1e948193b236ba1dfffb19f", - "title": "Ad et beatae accusantium.", - "description": "Voluptatem voluptas laborum. Omnis est repellat. Molestias velit accusantium.", - "value_overrides": {}, - "type": "profile" - }, - { - "id": "5481fc11-6bfd-4170-b164-ac33f65e018a", - "ref_id": "xccdf_org.ssgproject.content_profile_bedfc52d32d5653741cd02f3634393eb", - "title": "Perferendis et incidunt at.", - "description": "Voluptate eum fugit. Ab alias assumenda. Autem quas numquam.", - "value_overrides": {}, - "type": "profile" - }, - { - "id": "58b97ed6-1850-459f-badb-bbb375311f40", - "ref_id": "xccdf_org.ssgproject.content_profile_3381f1ac22b4588db9e7ead2cc5a5530", - "title": "Deserunt assumenda tempora aut.", - "description": "Quas ut est. Maiores ut fugiat. Dolores sit quo.", - "value_overrides": {}, - "type": "profile" - }, - { - "id": "67ff27d6-e897-44b6-bea7-db4a31417a2f", - "ref_id": "xccdf_org.ssgproject.content_profile_ef52ac71e7310d6696e4889ebc308f44", - "title": "Quia est eius adipisci.", - "description": "Beatae eius a. Ut fugit facilis. Perspiciatis illum quia.", - "value_overrides": {}, - "type": "profile" - }, - { - "id": "740c9d10-b9b3-49ae-8cf3-4f92b6c0ea51", - "ref_id": "xccdf_org.ssgproject.content_profile_e1d8d2268ce32872eb3d1dab34d70cb0", - "title": "Dolorum nihil asperiores dolor.", - "description": "Et consectetur voluptatem. Non illo tenetur. Ut veniam esse.", - "value_overrides": {}, - "type": "profile" - }, - { - "id": "7cc7047a-f8f2-4e85-a8d5-8d0138e7dbcb", - "ref_id": "xccdf_org.ssgproject.content_profile_ac12ab0843dd12fe54bd972f895b555a", - "title": "Quo temporibus minima est.", - "description": "Eveniet dignissimos incidunt. Tenetur quia dignissimos. Qui id quia.", - "value_overrides": {}, - "type": "profile" - } - ], - "meta": { - "total": 25, - "limit": 10, - "offset": 0 - }, - "links": { - "first": "/api/compliance/v2/security_guides/0f79628a-f201-486a-96db-434eeab4db5a/profiles?limit=10&offset=0", - "last": "/api/compliance/v2/security_guides/0f79628a-f201-486a-96db-434eeab4db5a/profiles?limit=10&offset=20", - "next": "/api/compliance/v2/security_guides/0f79628a-f201-486a-96db-434eeab4db5a/profiles?limit=10&offset=10" - } - }, - "summary": "", - "description": "" - }, - "List of Profiles sorted by \"title:asc\"": { - "value": { - "data": [ - { - "id": "3fd54e05-93f2-426f-8c54-9137f019c5f3", - "ref_id": "xccdf_org.ssgproject.content_profile_77d03e6b6077f69efd8401e0ae0cf438", - "title": "Ab aut nihil dolor.", - "description": "Expedita repudiandae sunt. Soluta tenetur expedita. Tempore ipsa corporis.", - "value_overrides": {}, - "type": "profile" - }, - { - "id": "6875cf9f-3a9c-4df7-ab8c-2113a5c7b420", - "ref_id": "xccdf_org.ssgproject.content_profile_5f7435ce6574cedccf72e8ac31f95a15", - "title": "Aut nihil optio iste.", - "description": "Similique modi et. Eum natus quaerat. Est aliquam similique.", - "value_overrides": {}, - "type": "profile" - }, - { - "id": "dea801a3-5732-494e-87cf-89c4ce9146a8", - "ref_id": "xccdf_org.ssgproject.content_profile_2153f6275650c0491085b79ea3264e62", - "title": "Deserunt illo natus qui.", - "description": "Impedit repudiandae voluptatibus. In tempora eaque. Voluptatibus libero consequuntur.", - "value_overrides": {}, - "type": "profile" - }, - { - "id": "f6820d61-6b0a-44d7-b174-5d3b244d8fd2", - "ref_id": "xccdf_org.ssgproject.content_profile_b70e43a998b924ded89a4e0d3b13e101", - "title": "Dolores doloribus aut labore.", - "description": "Consequatur molestias quis. Porro dolor sed. Et perferendis eius.", - "value_overrides": {}, - "type": "profile" - }, - { - "id": "c769a442-b3a2-4440-bc02-c6ee7bfd3aea", - "ref_id": "xccdf_org.ssgproject.content_profile_acc33de1ee26b6dd0b37f29809e89bab", - "title": "Ducimus inventore quod voluptatem.", - "description": "Minima culpa aut. Accusantium nostrum dolorum. Et porro repellendus.", - "value_overrides": {}, - "type": "profile" - }, - { - "id": "284a41e4-7305-42e8-b19a-aeef1fca9837", - "ref_id": "xccdf_org.ssgproject.content_profile_bc9c088d630b637b3c6686daff7d267f", - "title": "Enim aut esse accusantium.", - "description": "Corrupti explicabo dicta. Voluptatem minus quis. Est architecto aliquam.", - "value_overrides": {}, - "type": "profile" - }, - { - "id": "c6f93562-e43b-4894-ba99-3e6657ae5853", - "ref_id": "xccdf_org.ssgproject.content_profile_611318cefff27e62dabe0725474f0803", - "title": "Facere sunt quasi distinctio.", - "description": "Aut aut quia. Harum quam cupiditate. Beatae non dolore.", - "value_overrides": {}, - "type": "profile" - }, - { - "id": "00e6f5cd-2b2c-497b-8c30-57f080e5b19c", - "ref_id": "xccdf_org.ssgproject.content_profile_57e0f518b7df1d6ecb387d666993b4c9", - "title": "Fugiat facere voluptatem nemo.", - "description": "Et labore nemo. Ex officia sequi. Pariatur ducimus fuga.", - "value_overrides": {}, - "type": "profile" - }, - { - "id": "8d060097-e439-4aac-9a80-e8257335ede3", - "ref_id": "xccdf_org.ssgproject.content_profile_49c2f661799cca262dbb6a0296beeb22", - "title": "Fugit dignissimos excepturi culpa.", - "description": "Non voluptatem perspiciatis. Dolorum soluta accusamus. Harum tempore dolorem.", - "value_overrides": {}, - "type": "profile" - }, - { - "id": "471c1b53-b2f7-4369-be79-db9642459093", - "ref_id": "xccdf_org.ssgproject.content_profile_0d34aed1333dad59ac05a8729f1a2a62", - "title": "In et dolores vel.", - "description": "Quia nobis natus. Similique saepe non. Numquam maxime laborum.", - "value_overrides": {}, - "type": "profile" - } - ], - "meta": { - "total": 25, - "limit": 10, - "offset": 0, - "sort_by": "title" - }, - "links": { - "first": "/api/compliance/v2/security_guides/e998d0ee-9028-43cd-87d3-d6fdd088c6a8/profiles?limit=10&offset=0&sort_by=title", - "last": "/api/compliance/v2/security_guides/e998d0ee-9028-43cd-87d3-d6fdd088c6a8/profiles?limit=10&offset=20&sort_by=title", - "next": "/api/compliance/v2/security_guides/e998d0ee-9028-43cd-87d3-d6fdd088c6a8/profiles?limit=10&offset=10&sort_by=title" - } - }, - "summary": "", - "description": "" - }, - "List of Profiles filtered by '(title=Delectus quia impedit et.)'": { - "value": { - "data": [ - { - "id": "10ecc052-24a2-47f5-ab39-a7c5e020aa73", - "ref_id": "xccdf_org.ssgproject.content_profile_8787f3d5aa9d9e39c4015ffc371a944c", - "title": "Delectus quia impedit et.", - "description": "Laudantium consequuntur qui. Architecto qui fugit. Sapiente impedit odio.", - "value_overrides": {}, - "type": "profile" - } - ], - "meta": { - "total": 1, - "filter": "(title=\"Delectus quia impedit et.\")", - "limit": 10, - "offset": 0 - }, - "links": { - "first": "/api/compliance/v2/security_guides/a2746af1-2cef-4f8f-a99b-18ac00fff9fb/profiles?filter=%28title%3D%22Delectus+quia+impedit+et.%22%29&limit=10&offset=0", - "last": "/api/compliance/v2/security_guides/a2746af1-2cef-4f8f-a99b-18ac00fff9fb/profiles?filter=%28title%3D%22Delectus+quia+impedit+et.%22%29&limit=10&offset=0" - } - }, - "summary": "", - "description": "" - } - }, - "schema": { - "type": "object", - "properties": { - "meta": { - "$ref": "#/components/schemas/metadata" - }, - "links": { - "$ref": "#/components/schemas/links" - }, - "data": { - "type": "array", - "items": { - "properties": { - "schema": { - "$ref": "#/components/schemas/profile" - } - } - } - } - } - } - } - } - }, - "422": { - "description": "Returns with Unprocessable Content", - "content": { - "application/vnd.api+json": { - "examples": { - "Description of an error when sorting by incorrect parameter": { - "value": { - "errors": [ - "Result cannot be sorted by the 'description' column." - ] - }, - "summary": "", - "description": "" - }, - "Description of an error when requesting higher limit than supported": { - "value": { - "errors": [ - "Invalid parameter: limit must be less than or equal to 100" - ] - }, - "summary": "", - "description": "" - } - }, - "schema": { - "$ref": "#/components/schemas/errors" - } - } - } - } - } - } - }, - "/security_guides/{security_guide_id}/profiles/{profile_id}": { - "get": { - "summary": "Request a Profile", - "parameters": [ - { - "name": "X-RH-IDENTITY", - "in": "header", - "schema": { - "type": "string" - }, - "description": "For internal use only" - }, - { - "name": "security_guide_id", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "profile_id", - "in": "path", - "required": true, - "description": "UUID or a ref_id with '.' characters replaced with '-'", - "schema": { - "type": "string" - } - } - ], - "tags": [ - "Content" - ], - "description": "Retrieve a specific profile.", - "operationId": "Profile", - "responses": { - "200": { - "description": "Returns a Profile", - "content": { - "application/vnd.api+json": { - "examples": { - "Returns a Profile": { - "value": { - "data": { - "id": "85d5e0de-b746-4c50-a630-015f18c1c84b", - "ref_id": "xccdf_org.ssgproject.content_profile_e48b4d97035e52abb08ce63a03ff4485", - "title": "Asperiores est qui assumenda.", - "description": "Saepe enim omnis. Voluptatem molestiae fugit. Modi eius et.", - "value_overrides": {}, - "type": "profile" - } - }, - "summary": "", - "description": "" - } - }, - "schema": { - "type": "object", - "properties": { - "data": { - "type": "object", - "properties": { - "schema": { - "$ref": "#/components/schemas/profile" - } - } - } - } - } - } - } - }, - "404": { - "description": "Returns with Not Found", - "content": { - "application/vnd.api+json": { - "examples": { - "Description of an error when requesting a non-existing Profile": { - "value": { - "errors": [ - "V2::Profile not found with ID a7acc7ca-5aff-4952-94a7-209c693d0e83" - ] - }, - "summary": "", - "description": "" - } - }, - "schema": { - "$ref": "#/components/schemas/errors" - } - } - } - } - } - } - }, - "/security_guides/{security_guide_id}/profiles/{profile_id}/rule_tree": { - "get": { - "summary": "Request the Rule Tree of a Profile", - "parameters": [ - { - "name": "X-RH-IDENTITY", - "in": "header", - "schema": { - "type": "string" - }, - "description": "For internal use only" - }, - { - "name": "security_guide_id", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "profile_id", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - } - ], - "tags": [ - "Content" - ], - "description": "Returns the Rule Tree of a Profile", - "operationId": "ProfileTree", - "deprecated": true, - "responses": { - "200": { - "description": "Returns the Rule Tree of a Profile", - "content": { - "application/vnd.api+json": { - "examples": { - "Returns the Rule Tree of a Profile": { - "value": [ - { - "id": "7e9393c8-3a8b-40c6-a929-2f4887457b23", - "type": "rule_group", - "children": [ - { - "id": "da39b210-b097-4c50-a44d-fb6d01863612", - "type": "rule" - } - ] - }, - { - "id": "45fb501e-e228-4d14-ba23-1a40bce4d8b0", - "type": "rule_group", - "children": [ - { - "id": "04825988-9691-4099-b6bd-54eccd7d338d", - "type": "rule" - } - ] - }, - { - "id": "d9fe2525-c6b6-4d57-817b-0456c09ee781", - "type": "rule_group", - "children": [ - { - "id": "6093118b-4308-4a8e-8a08-dc283cef6dce", - "type": "rule" - } - ] - }, - { - "id": "7357b6f7-effe-40c3-9c41-6ad035810477", - "type": "rule_group", - "children": [ - { - "id": "1ed667f3-5c25-42c2-935e-c8a0c046d4a5", - "type": "rule" - } - ] - }, - { - "id": "bbdc225e-f46a-4874-9e7f-6b8a8cddc721", - "type": "rule_group", - "children": [ - { - "id": "aa5c2c3b-953d-4cd2-be35-f33c0afe9fcd", - "type": "rule" - } - ] - }, - { - "id": "c28e7dbf-3ecb-4b5a-a59c-cd4ba2873729", - "type": "rule_group", - "children": [ - { - "id": "1f5a96eb-a2ed-43e8-8416-14f5f49ccb35", - "type": "rule" - } - ] - }, - { - "id": "d26e18a7-2918-43a6-8b25-d2ec3946d268", - "type": "rule_group", - "children": [ - { - "id": "1801298a-9b54-4553-b532-73063c75c951", - "type": "rule" - } - ] - }, - { - "id": "c57b9d6d-c46b-4498-a0db-303595abea07", - "type": "rule_group", - "children": [ - { - "id": "5d96deeb-3369-4d06-9065-77cf45410a60", - "type": "rule" - } - ] - }, - { - "id": "f0777a8e-fbc0-412e-815c-397ebaf3724a", - "type": "rule_group", - "children": [ - { - "id": "2000a8b6-0b24-4b2f-bfee-f6adcb2b1d19", - "type": "rule" - } - ] - }, - { - "id": "4179cd23-8308-4933-954d-00c0362c2b24", - "type": "rule_group", - "children": [ - { - "id": "3ef28b8e-ca2a-46bf-8316-c437904a0c61", - "type": "rule" - } - ] - } - ], - "summary": "", - "description": "" - } - }, - "schema": { - "$ref": "#/components/schemas/rule_tree" - } - } - } - }, - "404": { - "description": "Returns with Not Found", - "content": { - "application/vnd.api+json": { - "examples": { - "Description of an error when requesting a non-existing Profile": { - "value": { - "errors": [ - "V2::Profile not found with ID fd37ca20-4bf6-4d3c-b7be-5ddedfaaf1fc" - ] - }, - "summary": "", - "description": "" - } - }, - "schema": { - "$ref": "#/components/schemas/errors" - } - } - } - } - } - } - }, - "/reports": { - "get": { - "summary": "Request Reports", - "parameters": [ - { - "name": "X-RH-IDENTITY", - "in": "header", - "schema": { - "type": "string" - }, - "description": "For internal use only" - }, - { - "name": "limit", - "in": "query", - "required": false, - "description": "Number of items to return per page", - "schema": { - "type": "number", - "maximum": 100, - "minimum": 1, - "default": 10 - } - }, - { - "name": "offset", - "in": "query", - "required": false, - "description": "Offset of first item of paginated response", - "schema": { - "type": "integer", - "minimum": 0, - "default": 0 - } - }, - { - "name": "ids_only", - "in": "query", - "required": false, - "description": "Indicates whether to return only resource IDs.", - "schema": { - "type": "boolean" - } - }, - { - "name": "sort_by", - "in": "query", - "required": false, - "description": "Attribute and direction to sort the items by. Represented by an array of fields with an optional direction (`:asc` or `:desc`).

If no direction is selected, `:asc` is used by default.", - "schema": { - "type": "array", - "items": { - "enum": [ - "title", - "os_major_version", - "business_objective", - "compliance_threshold", - "percent_compliant", - "title:asc", - "title:desc", - "os_major_version:asc", - "os_major_version:desc", - "business_objective:asc", - "business_objective:desc", - "compliance_threshold:asc", - "compliance_threshold:desc", - "percent_compliant:asc", - "percent_compliant:desc" - ] - } - } - }, - { - "name": "filter", - "in": "query", - "required": false, - "description": "Query string to filter items by their attributes. Compliant with scoped_search query language. However, only `=` or `!=` (resp. `<>`) operators are supported.

Reports are searchable using attributes `title`, `os_major_version`, `with_reported_systems`, and `percent_compliant`

(e.g.: `(field_1=something AND field_2!=\"something else\") OR field_3>40`)", - "schema": { - "type": "string" - } - } - ], - "tags": [ - "Reports" - ], - "description": "Retrieve a list of all available reports.", - "operationId": "Reports", - "responses": { - "200": { - "description": "Lists Reports", - "content": { - "application/vnd.api+json": { - "examples": { - "List of Reports": { - "value": { - "data": [ - { - "id": "689f537f-2b70-4fb6-b424-b14953c87c48", - "title": "Iste est at tempore.", - "description": "Harum quaerat neque. Dolorem sit qui. Tempore qui praesentium.", - "business_objective": "matrix", - "compliance_threshold": 90.0, - "type": "report", - "os_major_version": 8, - "profile_title": "A aut dolorum id.", - "ref_id": "xccdf_org.ssgproject.content_profile_788fdf94a1646efa05a8c3e03aba5911", - "all_systems_exposed": true, - "percent_compliant": 25, - "assigned_system_count": 4, - "compliant_system_count": 1, - "unsupported_system_count": 2, - "reported_system_count": 4 - }, - { - "id": "7b29ef42-a3b9-4c77-94fe-78600f9e5dee", - "title": "Sint sed repellendus fugiat.", - "description": "Expedita sint consequatur. Dolores et tempore. Et distinctio ut.", - "business_objective": "transmitter", - "compliance_threshold": 90.0, - "type": "report", - "os_major_version": 8, - "profile_title": "Sed qui et quam.", - "ref_id": "xccdf_org.ssgproject.content_profile_793151f9a5c0f346f17ad1c5f2b68bc5", - "all_systems_exposed": true, - "percent_compliant": 25, - "assigned_system_count": 4, - "compliant_system_count": 1, - "unsupported_system_count": 2, - "reported_system_count": 4 - }, - { - "id": "a5eb644c-5186-444b-a610-5010f042398e", - "title": "Mollitia dolores molestiae consequatur.", - "description": "Dicta explicabo id. Ipsam voluptates consequatur. Dolorem dolore totam.", - "business_objective": "port", - "compliance_threshold": 90.0, - "type": "report", - "os_major_version": 8, - "profile_title": "Dicta blanditiis cum tempore.", - "ref_id": "xccdf_org.ssgproject.content_profile_c777e7940ded07dac91968f98a117a46", - "all_systems_exposed": true, - "percent_compliant": 25, - "assigned_system_count": 4, - "compliant_system_count": 1, - "unsupported_system_count": 2, - "reported_system_count": 4 - }, - { - "id": "a8dd26a4-9ab2-4af0-aa4e-cd92941af447", - "title": "Quo vel nesciunt expedita.", - "description": "Alias vel aliquid. Adipisci nihil consequuntur. Vero nihil quidem.", - "business_objective": "card", - "compliance_threshold": 90.0, - "type": "report", - "os_major_version": 8, - "profile_title": "Sunt sapiente occaecati illo.", - "ref_id": "xccdf_org.ssgproject.content_profile_ccc792a7d436513de7e79c04a3ee98c8", - "all_systems_exposed": true, - "percent_compliant": 25, - "assigned_system_count": 4, - "compliant_system_count": 1, - "unsupported_system_count": 2, - "reported_system_count": 4 - }, - { - "id": "b733adaf-9a84-40ba-9366-4b1ab497d45f", - "title": "Est maiores est voluptas.", - "description": "Aliquid dolorem aut. Et voluptatem consequatur. Laboriosam eum quisquam.", - "business_objective": "firewall", - "compliance_threshold": 90.0, - "type": "report", - "os_major_version": 8, - "profile_title": "Accusamus perferendis aliquid voluptatum.", - "ref_id": "xccdf_org.ssgproject.content_profile_34a697fd9b2da38dffe90cda4131a7f2", - "all_systems_exposed": true, - "percent_compliant": 25, - "assigned_system_count": 4, - "compliant_system_count": 1, - "unsupported_system_count": 2, - "reported_system_count": 4 - } - ], - "meta": { - "total": 5, - "limit": 10, - "offset": 0 - }, - "links": { - "first": "/api/compliance/v2/reports?limit=10&offset=0", - "last": "/api/compliance/v2/reports?limit=10&offset=0" - } - }, - "summary": "", - "description": "" - }, - "List of Reports sorted by \"os_major_version:asc\"": { - "value": { - "data": [ - { - "id": "551ad74f-aa50-4e14-8b21-24d793a6164c", - "title": "Non et nemo suscipit.", - "description": "Quaerat et et. Reprehenderit voluptatem ab. Et sunt ut.", - "business_objective": "driver", - "compliance_threshold": 90.0, - "type": "report", - "os_major_version": 8, - "profile_title": "Harum ducimus molestiae laboriosam.", - "ref_id": "xccdf_org.ssgproject.content_profile_4e630caaabb4e1661654a35b6eb1a067", - "all_systems_exposed": true, - "percent_compliant": 25, - "assigned_system_count": 4, - "compliant_system_count": 1, - "unsupported_system_count": 2, - "reported_system_count": 4 - }, - { - "id": "b174983f-6864-4447-8f8b-a7811f5f8db4", - "title": "Rerum et in similique.", - "description": "Dolores optio sunt. Voluptatem et ipsum. Et quod nihil.", - "business_objective": "matrix", - "compliance_threshold": 90.0, - "type": "report", - "os_major_version": 8, - "profile_title": "Non enim maxime inventore.", - "ref_id": "xccdf_org.ssgproject.content_profile_49a034de5556425364fc51b85736a177", - "all_systems_exposed": true, - "percent_compliant": 25, - "assigned_system_count": 4, - "compliant_system_count": 1, - "unsupported_system_count": 2, - "reported_system_count": 4 - }, - { - "id": "b64fc37e-ccb3-4f71-a500-dadc86d01f89", - "title": "Dicta aperiam consectetur veniam.", - "description": "Et quaerat omnis. Eos occaecati maiores. Maiores unde commodi.", - "business_objective": "monitor", - "compliance_threshold": 90.0, - "type": "report", - "os_major_version": 8, - "profile_title": "Sequi sit autem ipsum.", - "ref_id": "xccdf_org.ssgproject.content_profile_2779186bdee8247b917c04f5829b04a1", - "all_systems_exposed": true, - "percent_compliant": 25, - "assigned_system_count": 4, - "compliant_system_count": 1, - "unsupported_system_count": 2, - "reported_system_count": 4 - }, - { - "id": "b986f4af-8dcc-49b1-a105-a8815887ad2d", - "title": "Minima error ipsa quidem.", - "description": "Ipsum ab ea. Soluta cupiditate praesentium. Quia quis vero.", - "business_objective": "monitor", - "compliance_threshold": 90.0, - "type": "report", - "os_major_version": 8, - "profile_title": "Fugit magni est laudantium.", - "ref_id": "xccdf_org.ssgproject.content_profile_85684217dcaf9ea3696c9308bd428f3e", - "all_systems_exposed": true, - "percent_compliant": 25, - "assigned_system_count": 4, - "compliant_system_count": 1, - "unsupported_system_count": 2, - "reported_system_count": 4 - }, - { - "id": "d9073e82-4549-4edb-812f-4040fa3fa585", - "title": "Incidunt unde commodi quae.", - "description": "Est maiores aliquid. Doloremque est nobis. Modi nihil magnam.", - "business_objective": "port", - "compliance_threshold": 90.0, - "type": "report", - "os_major_version": 8, - "profile_title": "Omnis qui et ipsam.", - "ref_id": "xccdf_org.ssgproject.content_profile_a34e14a9c5bd4ce4f5f4950e1fbc47d3", - "all_systems_exposed": true, - "percent_compliant": 25, - "assigned_system_count": 4, - "compliant_system_count": 1, - "unsupported_system_count": 2, - "reported_system_count": 4 - } - ], - "meta": { - "total": 5, - "limit": 10, - "offset": 0, - "sort_by": "os_major_version" - }, - "links": { - "first": "/api/compliance/v2/reports?limit=10&offset=0&sort_by=os_major_version", - "last": "/api/compliance/v2/reports?limit=10&offset=0&sort_by=os_major_version" - } - }, - "summary": "", - "description": "" - } - }, - "schema": { - "type": "object", - "properties": { - "meta": { - "$ref": "#/components/schemas/metadata" - }, - "links": { - "$ref": "#/components/schemas/links" - }, - "data": { - "type": "array", - "items": { - "properties": { - "schema": { - "$ref": "#/components/schemas/report" - } - } - } - } - } - } - } - } - }, - "422": { - "description": "Returns with Unprocessable Content", - "content": { - "application/vnd.api+json": { - "examples": { - "Description of an error when sorting by incorrect parameter": { - "value": { - "errors": [ - "Result cannot be sorted by the 'description' column." - ] - }, - "summary": "", - "description": "" - }, - "Description of an error when requesting higher limit than supported": { - "value": { - "errors": [ - "Invalid parameter: limit must be less than or equal to 100" - ] - }, - "summary": "", - "description": "" - } - }, - "schema": { - "$ref": "#/components/schemas/errors" - } - } - } - } - } - } - }, - "/reports/os_versions": { - "get": { - "summary": "Request the list of available OS versions", - "parameters": [ - { - "name": "X-RH-IDENTITY", - "in": "header", - "schema": { - "type": "string" - }, - "description": "For internal use only" - }, - { - "name": "filter", - "in": "query", - "required": false, - "description": "Query string to filter items by their attributes. Compliant with scoped_search query language. However, only `=` or `!=` (resp. `<>`) operators are supported.

Reports are searchable using attributes `title`, `os_major_version`, `with_reported_systems`, and `percent_compliant`

(e.g.: `(field_1=something AND field_2!=\"something else\") OR field_3>40`)", - "schema": { - "type": "string" - } - } - ], - "tags": [ - "Reports" - ], - "description": "This feature is exclusively used by the frontend", - "operationId": "ReportsOS", - "deprecated": true, - "responses": { - "200": { - "description": "Lists available OS versions", - "content": { - "application/vnd.api+json": { - "examples": { - "List of available OS versions": { - "value": [], - "summary": "", - "description": "" - } - }, - "schema": { - "type": "array", - "items": { - "type": "integer" - } - } - } - } - } - } - } - }, - "/reports/{report_id}": { - "get": { - "summary": "Request a Report", - "parameters": [ - { - "name": "X-RH-IDENTITY", - "in": "header", - "schema": { - "type": "string" - }, - "description": "For internal use only" - }, - { - "name": "report_id", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - } - ], - "tags": [ - "Reports" - ], - "description": "Retrieve a specific report.", - "operationId": "Report", - "responses": { - "200": { - "description": "Returns a Report", - "content": { - "application/vnd.api+json": { - "examples": { - "Returns a Report": { - "value": { - "data": { - "id": "38bd6f12-bb1d-448e-aaa5-6c9f5a822f77", - "title": "Mollitia architecto minus ut.", - "description": "Est explicabo commodi. Enim officia accusantium. Asperiores odit cupiditate.", - "business_objective": "feed", - "compliance_threshold": 90.0, - "type": "report", - "os_major_version": 9, - "profile_title": "Dolores in atque voluptatem.", - "ref_id": "xccdf_org.ssgproject.content_profile_da6c3791047f4d8546ba1f2574bd5cda", - "all_systems_exposed": true, - "percent_compliant": 25, - "assigned_system_count": 4, - "compliant_system_count": 1, - "unsupported_system_count": 2, - "reported_system_count": 4 - } - }, - "summary": "", - "description": "" - } - }, - "schema": { - "type": "object", - "properties": { - "data": { - "type": "object", - "properties": { - "schema": { - "$ref": "#/components/schemas/report" - } - } - } - } - } - } - } - }, - "404": { - "description": "Returns with Not Found", - "content": { - "application/vnd.api+json": { - "examples": { - "Description of an error when requesting a non-existing Report": { - "value": { - "errors": [ - "V2::Report not found with ID 47d35ae2-582a-42d4-b797-d5a30b6c0afd" - ] - }, - "summary": "", - "description": "" - } - }, - "schema": { - "$ref": "#/components/schemas/errors" - } - } - } - } - } - }, - "delete": { - "summary": "Delete a Report results", - "parameters": [ - { - "name": "X-RH-IDENTITY", - "in": "header", - "schema": { - "type": "string" - }, - "description": "For internal use only" - }, - { - "name": "report_id", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - } - ], - "tags": [ - "Reports" - ], - "description": "Delete test results for a specific report.", - "operationId": "DeleteReport", - "responses": { - "202": { - "description": "Deletes Report's test results", - "content": { - "application/vnd.api+json": { - "examples": { - "Deletes Report's test results": { - "value": { - "data": { - "id": "5f74ce7c-9961-486a-84cb-30a77e5bcc72", - "title": "Aut non sed quisquam.", - "description": "Voluptas ut velit. Officiis veritatis minima. Eum id est.", - "business_objective": "pixel", - "compliance_threshold": 90.0, - "type": "report", - "os_major_version": 9, - "profile_title": "Adipisci autem sequi distinctio.", - "ref_id": "xccdf_org.ssgproject.content_profile_c396a88fb792eecbe95fd47f837fc4b8", - "all_systems_exposed": true, - "percent_compliant": 25, - "assigned_system_count": 4, - "compliant_system_count": 1, - "unsupported_system_count": 2, - "reported_system_count": 4 - } - }, - "summary": "", - "description": "" - } - } - } - } - } - } - } - }, - "/reports/{report_id}/stats": { - "get": { - "summary": "Request detailed stats for a Report", - "parameters": [ - { - "name": "X-RH-IDENTITY", - "in": "header", - "schema": { - "type": "string" - }, - "description": "For internal use only" - }, - { - "name": "report_id", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - } - ], - "tags": [ - "Reports" - ], - "description": "Returns detailed stats for a Report", - "deprecated": true, - "operationId": "ReportStats", - "responses": { - "200": { - "description": "Returns detailed stats for a Report", - "content": { - "application/vnd.api+json": { - "examples": { - "Returns detailed stats for a Report": { - "value": { - "top_failed_rules": [] - }, - "summary": "", - "description": "" - } - }, - "schema": { - "type": "object", - "properties": { - "data": { - "type": "object", - "properties": { - "schema": { - "$ref": "#/components/schemas/report_stats" - } - } - } - } - } - } - } - }, - "404": { - "description": "Returns with Not Found", - "content": { - "application/vnd.api+json": { - "examples": { - "Description of an error when requesting a non-existing Report": { - "value": { - "errors": [ - "V2::Report not found with ID 5fb02438-cea6-4057-96ef-0b1b875be20f" - ] - }, - "summary": "", - "description": "" - } - }, - "schema": { - "$ref": "#/components/schemas/errors" - } - } - } - } - } - } - }, - "/systems/{system_id}/reports": { - "get": { - "summary": "Request Reports", - "parameters": [ - { - "name": "X-RH-IDENTITY", - "in": "header", - "schema": { - "type": "string" - }, - "description": "For internal use only" - }, - { - "name": "limit", - "in": "query", - "required": false, - "description": "Number of items to return per page", - "schema": { - "type": "number", - "maximum": 100, - "minimum": 1, - "default": 10 - } - }, - { - "name": "offset", - "in": "query", - "required": false, - "description": "Offset of first item of paginated response", - "schema": { - "type": "integer", - "minimum": 0, - "default": 0 - } - }, - { - "name": "ids_only", - "in": "query", - "required": false, - "description": "Indicates whether to return only resource IDs.", - "schema": { - "type": "boolean" - } - }, - { - "name": "sort_by", - "in": "query", - "required": false, - "description": "Attribute and direction to sort the items by. Represented by an array of fields with an optional direction (`:asc` or `:desc`).

If no direction is selected, `:asc` is used by default.", - "schema": { - "type": "array", - "items": { - "enum": [ - "title", - "business_objective", - "compliance_threshold", - "percent_compliant", - "title:asc", - "title:desc", - "business_objective:asc", - "business_objective:desc", - "compliance_threshold:asc", - "compliance_threshold:desc", - "percent_compliant:asc", - "percent_compliant:desc" - ] - } - } - }, - { - "name": "filter", - "in": "query", - "required": false, - "description": "Query string to filter items by their attributes. Compliant with scoped_search query language. However, only `=` or `!=` (resp. `<>`) operators are supported.

Reports are searchable using attributes `title`

(e.g.: `(field_1=something AND field_2!=\"something else\") OR field_3>40`)", - "schema": { - "type": "string" - } - }, - { - "name": "system_id", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - } - ], - "tags": [ - "Reports" - ], - "description": "Retrieve a list of reports for a specific system.", - "operationId": "SystemReports", - "responses": { - "200": { - "description": "Lists Reports", - "content": { - "application/vnd.api+json": { - "examples": { - "List of Reports": { - "value": { - "data": [ - { - "id": "4c83b4a6-4d05-4dd6-994b-6980b3c46742", - "title": "Aut quis voluptatem asperiores.", - "description": "Et animi et. Quis dolor quos. Et possimus veniam.", - "business_objective": "program", - "compliance_threshold": 90.0, - "type": "report", - "os_major_version": 8, - "profile_title": "Vel nesciunt nemo maxime.", - "ref_id": "xccdf_org.ssgproject.content_profile_a9b71fe53e25afadef9176748478d64c", - "all_systems_exposed": false, - "percent_compliant": 0, - "compliant_system_count": 0, - "unsupported_system_count": 0, - "reported_system_count": 0 - }, - { - "id": "6627d125-0e9b-4e13-93a9-e53c67d464e5", - "title": "Libero quis dicta rerum.", - "description": "Et ratione amet. Assumenda molestias cupiditate. Ea quas et.", - "business_objective": "card", - "compliance_threshold": 90.0, - "type": "report", - "os_major_version": 8, - "profile_title": "Cupiditate est velit dolor.", - "ref_id": "xccdf_org.ssgproject.content_profile_5a2c7bc0a9b8d1f38edaebd2f1234faf", - "all_systems_exposed": false, - "percent_compliant": 0, - "compliant_system_count": 0, - "unsupported_system_count": 0, - "reported_system_count": 0 - }, - { - "id": "8a7ce129-473e-40d6-9498-3cdea9e01afc", - "title": "Beatae voluptatem quae voluptatem.", - "description": "Error est earum. Magni consequuntur quasi. Ab cum odit.", - "business_objective": "hard drive", - "compliance_threshold": 90.0, - "type": "report", - "os_major_version": 8, - "profile_title": "Odit nihil vitae dolores.", - "ref_id": "xccdf_org.ssgproject.content_profile_9079743385a167ba5a5cfd00e10f06ef", - "all_systems_exposed": false, - "percent_compliant": 0, - "compliant_system_count": 0, - "unsupported_system_count": 0, - "reported_system_count": 0 - }, - { - "id": "9aac9b71-c889-4a42-b5a2-11a178c7de64", - "title": "Eligendi ipsum perferendis facere.", - "description": "Officiis ea ducimus. Itaque excepturi aut. Modi itaque esse.", - "business_objective": "port", - "compliance_threshold": 90.0, - "type": "report", - "os_major_version": 8, - "profile_title": "A iure aliquam eligendi.", - "ref_id": "xccdf_org.ssgproject.content_profile_1bf275d1badf0c69bce3296d2ac60443", - "all_systems_exposed": false, - "percent_compliant": 0, - "compliant_system_count": 0, - "unsupported_system_count": 0, - "reported_system_count": 0 - }, - { - "id": "a757e1cc-0b61-4dec-b974-e1c41384d19c", - "title": "A alias ipsam voluptatibus.", - "description": "Nam possimus consequatur. Ut culpa sit. Eos vel rerum.", - "business_objective": "pixel", - "compliance_threshold": 90.0, - "type": "report", - "os_major_version": 8, - "profile_title": "Voluptatibus sint est qui.", - "ref_id": "xccdf_org.ssgproject.content_profile_5cb3f27f7f1808c2af93ef2f9853da6f", - "all_systems_exposed": false, - "percent_compliant": 0, - "compliant_system_count": 0, - "unsupported_system_count": 0, - "reported_system_count": 0 - } - ], - "meta": { - "total": 5, - "limit": 10, - "offset": 0 - }, - "links": { - "first": "/api/compliance/v2/systems/6cf60085-1cbc-40ff-9265-e480cd952996/reports?limit=10&offset=0", - "last": "/api/compliance/v2/systems/6cf60085-1cbc-40ff-9265-e480cd952996/reports?limit=10&offset=0" - } - }, - "summary": "", - "description": "" - }, - "List of Reports sorted by \"title:asc\"": { - "value": { - "data": [ - { - "id": "869b4ff8-3eb2-46d9-ab72-1c7bd0ecc7ad", - "title": "Est omnis aut qui.", - "description": "Amet eligendi soluta. Et ut harum. Velit aut eveniet.", - "business_objective": "interface", - "compliance_threshold": 90.0, - "type": "report", - "os_major_version": 8, - "profile_title": "Provident aut est sequi.", - "ref_id": "xccdf_org.ssgproject.content_profile_9332b32e7c492853f280cd491162a07d", - "all_systems_exposed": false, - "percent_compliant": 0, - "compliant_system_count": 0, - "unsupported_system_count": 0, - "reported_system_count": 0 - }, - { - "id": "d95ad1f5-10d2-4f06-ba0d-75570f8cc1c3", - "title": "Et repudiandae itaque qui.", - "description": "Accusantium eveniet suscipit. Autem maiores accusamus. Ipsam consequatur perferendis.", - "business_objective": "hard drive", - "compliance_threshold": 90.0, - "type": "report", - "os_major_version": 8, - "profile_title": "Reiciendis in qui molestias.", - "ref_id": "xccdf_org.ssgproject.content_profile_5ffdb3a99006a9fe6f70285ed5eaf306", - "all_systems_exposed": false, - "percent_compliant": 0, - "compliant_system_count": 0, - "unsupported_system_count": 0, - "reported_system_count": 0 - }, - { - "id": "4a246d7c-6db1-44b4-b87a-1e3914a28540", - "title": "Excepturi aliquam consequatur ut.", - "description": "Vel sunt enim. Voluptatem numquam quisquam. Tempora culpa iure.", - "business_objective": "port", - "compliance_threshold": 90.0, - "type": "report", - "os_major_version": 8, - "profile_title": "Voluptatum in reiciendis sit.", - "ref_id": "xccdf_org.ssgproject.content_profile_b6efda8fbefdc8ac1a8a552e1f7c6fb8", - "all_systems_exposed": false, - "percent_compliant": 0, - "compliant_system_count": 0, - "unsupported_system_count": 0, - "reported_system_count": 0 - }, - { - "id": "38b2ac69-cd70-4596-9561-e9251b5e33b8", - "title": "Hic labore provident minus.", - "description": "Qui quos vel. Consequatur harum aliquam. Non corrupti est.", - "business_objective": "capacitor", - "compliance_threshold": 90.0, - "type": "report", - "os_major_version": 8, - "profile_title": "Molestiae aliquam sapiente consectetur.", - "ref_id": "xccdf_org.ssgproject.content_profile_5e5e0c0d25d85124367733cce26c2f3f", - "all_systems_exposed": false, - "percent_compliant": 0, - "compliant_system_count": 0, - "unsupported_system_count": 0, - "reported_system_count": 0 - }, - { - "id": "12fb16e5-05f6-4bda-906c-808a888d7886", - "title": "Laborum quia suscipit illum.", - "description": "Qui vel tempore. Similique facilis et. Laboriosam et cum.", - "business_objective": "firewall", - "compliance_threshold": 90.0, - "type": "report", - "os_major_version": 8, - "profile_title": "Rerum earum natus aperiam.", - "ref_id": "xccdf_org.ssgproject.content_profile_3bbe2ba1e232ffccaec18c35e9cfe6a1", - "all_systems_exposed": false, - "percent_compliant": 0, - "compliant_system_count": 0, - "unsupported_system_count": 0, - "reported_system_count": 0 - } - ], - "meta": { - "total": 5, - "limit": 10, - "offset": 0, - "sort_by": "title" - }, - "links": { - "first": "/api/compliance/v2/systems/5102cb2d-d069-44e7-8251-855b920a8bd2/reports?limit=10&offset=0&sort_by=title", - "last": "/api/compliance/v2/systems/5102cb2d-d069-44e7-8251-855b920a8bd2/reports?limit=10&offset=0&sort_by=title" - } - }, - "summary": "", - "description": "" - } - }, - "schema": { - "type": "object", - "properties": { - "meta": { - "$ref": "#/components/schemas/metadata" - }, - "links": { - "$ref": "#/components/schemas/links" - }, - "data": { - "type": "array", - "items": { - "properties": { - "schema": { - "$ref": "#/components/schemas/report" - } - } - } - } - } - } - } - } - }, - "422": { - "description": "Returns with Unprocessable Content", - "content": { - "application/vnd.api+json": { - "examples": { - "Description of an error when sorting by incorrect parameter": { - "value": { - "errors": [ - "Result cannot be sorted by the 'description' column." - ] - }, - "summary": "", - "description": "" - }, - "Description of an error when requesting higher limit than supported": { - "value": { - "errors": [ - "Invalid parameter: limit must be less than or equal to 100" - ] - }, - "summary": "", - "description": "" - } - }, - "schema": { - "$ref": "#/components/schemas/errors" - } - } - } - } - } - } - }, - "/security_guides/{security_guide_id}/rule_groups": { - "get": { - "summary": "Request Rule Groups", - "parameters": [ - { - "name": "X-RH-IDENTITY", - "in": "header", - "schema": { - "type": "string" - }, - "description": "For internal use only" - }, - { - "name": "limit", - "in": "query", - "required": false, - "description": "Number of items to return per page", - "schema": { - "type": "number", - "maximum": 100, - "minimum": 1, - "default": 10 - } - }, - { - "name": "offset", - "in": "query", - "required": false, - "description": "Offset of first item of paginated response", - "schema": { - "type": "integer", - "minimum": 0, - "default": 0 - } - }, - { - "name": "ids_only", - "in": "query", - "required": false, - "description": "Indicates whether to return only resource IDs.", - "schema": { - "type": "boolean" - } - }, - { - "name": "sort_by", - "in": "query", - "required": false, - "description": "Attribute and direction to sort the items by. Represented by an array of fields with an optional direction (`:asc` or `:desc`).

If no direction is selected, `:asc` is used by default.", - "schema": { - "type": "array", - "items": { - "enum": [ - "precedence", - "precedence:asc", - "precedence:desc" - ] - } - } - }, - { - "name": "filter", - "in": "query", - "required": false, - "description": "Query string to filter items by their attributes. Compliant with scoped_search query language. However, only `=` or `!=` (resp. `<>`) operators are supported.

Rule Groups are searchable using attributes `title` and `ref_id`

(e.g.: `(field_1=something AND field_2!=\"something else\") OR field_3>40`)", - "schema": { - "type": "string" - } - }, - { - "name": "security_guide_id", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - } - ], - "tags": [ - "Content" - ], - "description": "List all rules groups.", - "operationId": "RuleGroups", - "responses": { - "200": { - "description": "Lists Rule Groups", - "content": { - "application/vnd.api+json": { - "examples": { - "List of Rule Groups": { - "value": { - "data": [ - { - "id": "1b2164b8-ec27-4236-a38c-f4d51998b723", - "ref_id": "xccdf_org.ssgproject.content_rule_group_59be0d41b47d1136741d752fc94a3d44", - "title": "Aut et vero omnis.", - "rationale": "In nisi aut. Aut nisi et. Sequi asperiores et.", - "description": "Fugit vel veritatis. Itaque ut minima. Distinctio nulla ratione.", - "precedence": null, - "type": "rule_group" - }, - { - "id": "20cbda89-4b05-416b-991c-25efa37f2a0c", - "ref_id": "xccdf_org.ssgproject.content_rule_group_540ff7d72090d4846cb08abcab1bd868", - "title": "Qui voluptatem autem itaque.", - "rationale": "Aliquam quisquam et. Exercitationem ipsa harum. Pariatur accusantium velit.", - "description": "Quasi et aspernatur. Corrupti quas vel. Iste et similique.", - "precedence": null, - "type": "rule_group" - }, - { - "id": "23f8847e-bb56-409b-9107-fabe069d1f71", - "ref_id": "xccdf_org.ssgproject.content_rule_group_e189363ae27e385578d39c1d98ac3331", - "title": "Rerum odio aut est.", - "rationale": "Sint qui incidunt. Omnis rem voluptatem. Maiores officia voluptas.", - "description": "Sapiente natus id. Cum nisi unde. Modi officia non.", - "precedence": null, - "type": "rule_group" - }, - { - "id": "2a5106ae-0c92-43d0-a3d0-993ea28588d3", - "ref_id": "xccdf_org.ssgproject.content_rule_group_413a345b52f3224588828ecdaa96f8bb", - "title": "Qui explicabo ut optio.", - "rationale": "Deserunt velit et. Quia quia ex. Enim occaecati eum.", - "description": "Placeat earum nihil. Ratione provident fugit. Sit beatae inventore.", - "precedence": null, - "type": "rule_group" - }, - { - "id": "360a37d2-ccde-4f8e-b06f-6842ffc34460", - "ref_id": "xccdf_org.ssgproject.content_rule_group_65671dc89b0af9f53324b16ea166f3fb", - "title": "Sit omnis reiciendis quas.", - "rationale": "Et ratione et. Ad at sint. Veritatis laborum accusamus.", - "description": "Voluptatem facilis molestiae. Porro quod ullam. Voluptas enim est.", - "precedence": null, - "type": "rule_group" - }, - { - "id": "3e21189e-5d48-4c78-ba13-f7808506f427", - "ref_id": "xccdf_org.ssgproject.content_rule_group_547ec032f53af80334ffb43a6ef1c630", - "title": "Placeat nemo eligendi praesentium.", - "rationale": "Dignissimos consequatur sit. Ut non in. Temporibus ipsa et.", - "description": "Ipsum quia non. Doloremque aut ut. Neque omnis eum.", - "precedence": null, - "type": "rule_group" - }, - { - "id": "4a16c40c-0b08-45a0-82a2-458e65350430", - "ref_id": "xccdf_org.ssgproject.content_rule_group_f55b8c912247602c2efc3ee5ecbdf132", - "title": "Ab magni illum est.", - "rationale": "Ducimus quod non. Quibusdam adipisci non. Molestiae culpa aut.", - "description": "Quia velit beatae. Porro voluptatibus eum. Accusantium consequatur iste.", - "precedence": null, - "type": "rule_group" - }, - { - "id": "5505ce06-2fd8-4c2a-b47f-9de4a889841e", - "ref_id": "xccdf_org.ssgproject.content_rule_group_4c39accb08fd734e1aa7372b0a2b97c9", - "title": "Reprehenderit quibusdam et numquam.", - "rationale": "Voluptate consequuntur molestiae. Aspernatur impedit quasi. Magni deserunt est.", - "description": "Eius molestiae asperiores. Reiciendis fuga earum. Molestias ipsam autem.", - "precedence": null, - "type": "rule_group" - }, - { - "id": "60f58260-3459-4d23-80ba-ff1dd7c25333", - "ref_id": "xccdf_org.ssgproject.content_rule_group_af51287ced2b22f2cefe78d69a632e1b", - "title": "Culpa repellendus magni ut.", - "rationale": "Quo error ad. Et quis necessitatibus. Libero iste ut.", - "description": "Rerum aliquid ut. Illum vero quasi. Qui sed eius.", - "precedence": null, - "type": "rule_group" - }, - { - "id": "62ae6b16-e27e-4f61-9585-369f62d689a2", - "ref_id": "xccdf_org.ssgproject.content_rule_group_0063552e83bd5ac920e03ce8f1cc50eb", - "title": "Quo laborum nihil itaque.", - "rationale": "Est dolores pariatur. Blanditiis necessitatibus voluptas. Doloribus maxime ut.", - "description": "Et qui libero. Expedita odit mollitia. Quia consequuntur perspiciatis.", - "precedence": null, - "type": "rule_group" - } - ], - "meta": { - "total": 25, - "limit": 10, - "offset": 0 - }, - "links": { - "first": "/api/compliance/v2/security_guides/07d639b2-4a92-42c5-b93a-93ddec69901e/rule_groups?limit=10&offset=0", - "last": "/api/compliance/v2/security_guides/07d639b2-4a92-42c5-b93a-93ddec69901e/rule_groups?limit=10&offset=20", - "next": "/api/compliance/v2/security_guides/07d639b2-4a92-42c5-b93a-93ddec69901e/rule_groups?limit=10&offset=10" - } - }, - "summary": "", - "description": "" - }, - "List of Rule Groups sorted by \"precedence:asc\"": { - "value": { - "data": [ - { - "id": "117fe26b-b27a-43fb-9899-ec5faae878b8", - "ref_id": "xccdf_org.ssgproject.content_rule_group_b06cdee9d27b366e4615add6f24c89a6", - "title": "Cum reprehenderit dicta voluptatem.", - "rationale": "Aut libero et. Corporis placeat cupiditate. Ipsa magnam impedit.", - "description": "Et non pariatur. Mollitia a officiis. Est labore ut.", - "precedence": null, - "type": "rule_group" - }, - { - "id": "1a1c66c2-1c77-4280-b40f-a1d41677c3f8", - "ref_id": "xccdf_org.ssgproject.content_rule_group_8ed28885d296b3b613ebd1c7c03fe6be", - "title": "Quia blanditiis asperiores quod.", - "rationale": "Excepturi molestiae soluta. Accusantium vero quibusdam. Voluptatibus tempore sit.", - "description": "Alias rerum temporibus. Quia dignissimos iste. Ullam facere minus.", - "precedence": null, - "type": "rule_group" - }, - { - "id": "2174490b-f330-4973-83a0-f68b751af2a1", - "ref_id": "xccdf_org.ssgproject.content_rule_group_87ba8da18c70949b11b9de52c3c64a67", - "title": "Suscipit repellat esse ea.", - "rationale": "Sit molestiae fuga. Blanditiis vitae aliquid. Cum sunt aut.", - "description": "Maxime consequuntur consequatur. Atque neque ea. Quibusdam et sit.", - "precedence": null, - "type": "rule_group" - }, - { - "id": "22d49f93-a569-47bf-b3b5-90da3d94e2fd", - "ref_id": "xccdf_org.ssgproject.content_rule_group_43911dc60cf1b32af9153320f0517b09", - "title": "Corrupti distinctio illum ea.", - "rationale": "Quos iure deserunt. Ut deleniti voluptas. Accusamus excepturi in.", - "description": "Incidunt aliquid autem. Nobis sit deleniti. Ullam veritatis assumenda.", - "precedence": null, - "type": "rule_group" - }, - { - "id": "24485846-871a-4fd9-a3e4-fa82ea5e31e1", - "ref_id": "xccdf_org.ssgproject.content_rule_group_f459c30ca66ae97b5fab8e6a319d54a7", - "title": "Perferendis quidem sed ratione.", - "rationale": "Voluptatem assumenda animi. Est dolor quia. Sed qui suscipit.", - "description": "Temporibus quasi debitis. Rerum dolorem beatae. Dolores qui perspiciatis.", - "precedence": null, - "type": "rule_group" - }, - { - "id": "3aa26f33-f16d-428b-8d10-bb21f941f87b", - "ref_id": "xccdf_org.ssgproject.content_rule_group_00b903c7cff7ddf99670462f73ada563", - "title": "Quis harum veniam tenetur.", - "rationale": "Laudantium dolorum hic. Assumenda amet doloribus. Est quis mollitia.", - "description": "Modi quia vitae. Natus quam in. Natus explicabo rem.", - "precedence": null, - "type": "rule_group" - }, - { - "id": "40449fe5-5204-4959-ba82-cd132e247dff", - "ref_id": "xccdf_org.ssgproject.content_rule_group_4e3d9a95a7222315d4eafd4fe5854c46", - "title": "Voluptas architecto facere mollitia.", - "rationale": "Veniam nostrum minima. Quia quia eos. Facere porro mollitia.", - "description": "Harum beatae quo. Quasi voluptatem sed. Et sint pariatur.", - "precedence": null, - "type": "rule_group" - }, - { - "id": "42af0545-7125-4d00-86c1-6e45c6eacb6d", - "ref_id": "xccdf_org.ssgproject.content_rule_group_fc5febdb02d5db2446f2d223dd0d7245", - "title": "Iusto quia beatae sapiente.", - "rationale": "Eaque dicta et. Inventore voluptatibus animi. Et quas nesciunt.", - "description": "Dolores voluptas dolores. Voluptatem dolorem iusto. Sit ut voluptatem.", - "precedence": null, - "type": "rule_group" - }, - { - "id": "48614537-8441-41e9-8769-07882af202a5", - "ref_id": "xccdf_org.ssgproject.content_rule_group_5031ce9ec31d8580fd136d2e6f0f05a8", - "title": "Unde nam consequatur ut.", - "rationale": "Ipsum tenetur ex. Est doloribus similique. Quod ducimus et.", - "description": "Voluptatibus fugit et. Neque fugiat et. Qui fugit a.", - "precedence": null, - "type": "rule_group" - }, - { - "id": "4a84fa35-c0e4-435f-ab15-37bdcc3eb96c", - "ref_id": "xccdf_org.ssgproject.content_rule_group_67ce0875341b5edd959ddb68e48e7391", - "title": "Itaque expedita fuga nihil.", - "rationale": "Voluptates ullam soluta. Et explicabo quidem. Fugit consectetur quasi.", - "description": "Molestiae et aperiam. Unde vel ducimus. Fugit perspiciatis voluptatem.", - "precedence": null, - "type": "rule_group" - } - ], - "meta": { - "total": 25, - "limit": 10, - "offset": 0, - "sort_by": "precedence" - }, - "links": { - "first": "/api/compliance/v2/security_guides/565da504-b36b-4e3a-826e-8946b1d33588/rule_groups?limit=10&offset=0&sort_by=precedence", - "last": "/api/compliance/v2/security_guides/565da504-b36b-4e3a-826e-8946b1d33588/rule_groups?limit=10&offset=20&sort_by=precedence", - "next": "/api/compliance/v2/security_guides/565da504-b36b-4e3a-826e-8946b1d33588/rule_groups?limit=10&offset=10&sort_by=precedence" - } - }, - "summary": "", - "description": "" - } - }, - "schema": { - "type": "object", - "properties": { - "meta": { - "$ref": "#/components/schemas/metadata" - }, - "links": { - "$ref": "#/components/schemas/links" - }, - "data": { - "type": "array", - "items": { - "properties": { - "schema": { - "$ref": "#/components/schemas/rule_group" - } - } - } - } - } - } - } - } - }, - "422": { - "description": "Returns with Unprocessable Content", - "content": { - "application/vnd.api+json": { - "examples": { - "Description of an error when sorting by incorrect parameter": { - "value": { - "errors": [ - "Result cannot be sorted by the 'description' column." - ] - }, - "summary": "", - "description": "" - }, - "Description of an error when requesting higher limit than supported": { - "value": { - "errors": [ - "Invalid parameter: limit must be less than or equal to 100" - ] - }, - "summary": "", - "description": "" - } - }, - "schema": { - "$ref": "#/components/schemas/errors" - } - } - } - } - } - } - }, - "/security_guides/{security_guide_id}/rule_groups/{rule_group_id}": { - "get": { - "summary": "Request a Rule Group", - "parameters": [ - { - "name": "X-RH-IDENTITY", - "in": "header", - "schema": { - "type": "string" - }, - "description": "For internal use only" - }, - { - "name": "security_guide_id", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "rule_group_id", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - } - ], - "tags": [ - "Content" - ], - "description": "Retrieve a specific rule group.", - "operationId": "RuleGroup", - "responses": { - "200": { - "description": "Returns a Rule Group", - "content": { - "application/vnd.api+json": { - "examples": { - "Returns a Rule Group": { - "value": { - "data": { - "id": "d4e0f85d-7e96-42f3-a812-32f9f664e17e", - "ref_id": "xccdf_org.ssgproject.content_rule_group_2dd9a9aa7d4d18476dcacfa7dcaf70ba", - "title": "Odio porro amet reiciendis.", - "rationale": "Consequatur aliquam facilis. Assumenda possimus corrupti. A tenetur optio.", - "description": "Ut ipsum veniam. Facere fugiat non. Facilis officiis excepturi.", - "precedence": null, - "type": "rule_group" - } - }, - "summary": "", - "description": "" - } - }, - "schema": { - "type": "object", - "properties": { - "data": { - "type": "object", - "properties": { - "schema": { - "$ref": "#/components/schemas/rule_group" - } - } - } - } - } - } - } - }, - "404": { - "description": "Returns with Not Found", - "content": { - "application/vnd.api+json": { - "examples": { - "Description of an error when requesting a non-existing Rule Group": { - "value": { - "errors": [ - "V2::RuleGroup not found with ID cd2259ff-3d67-4a09-9669-d23470d1c305" - ] - }, - "summary": "", - "description": "" - } - }, - "schema": { - "$ref": "#/components/schemas/errors" - } - } - } - } - } - } - }, - "/reports/{report_id}/test_results/{test_result_id}/rule_results": { - "get": { - "summary": "Request Rule Results under a Report", - "parameters": [ - { - "name": "X-RH-IDENTITY", - "in": "header", - "schema": { - "type": "string" - }, - "description": "For internal use only" - }, - { - "name": "limit", - "in": "query", - "required": false, - "description": "Number of items to return per page", - "schema": { - "type": "number", - "maximum": 100, - "minimum": 1, - "default": 10 - } - }, - { - "name": "offset", - "in": "query", - "required": false, - "description": "Offset of first item of paginated response", - "schema": { - "type": "integer", - "minimum": 0, - "default": 0 - } - }, - { - "name": "ids_only", - "in": "query", - "required": false, - "description": "Indicates whether to return only resource IDs.", - "schema": { - "type": "boolean" - } - }, - { - "name": "sort_by", - "in": "query", - "required": false, - "description": "Attribute and direction to sort the items by. Represented by an array of fields with an optional direction (`:asc` or `:desc`).

If no direction is selected, `:asc` is used by default.", - "schema": { - "type": "array", - "items": { - "enum": [ - "result", - "severity", - "title", - "precedence", - "remediation_available", - "result:asc", - "result:desc", - "severity:asc", - "severity:desc", - "title:asc", - "title:desc", - "precedence:asc", - "precedence:desc", - "remediation_available:asc", - "remediation_available:desc" - ] - } - } - }, - { - "name": "filter", - "in": "query", - "required": false, - "description": "Query string to filter items by their attributes. Compliant with scoped_search query language. However, only `=` or `!=` (resp. `<>`) operators are supported.

Rule Results are searchable using attributes `result`, `title`, `severity`, and `rule_group_id`

(e.g.: `(field_1=something AND field_2!=\"something else\") OR field_3>40`)", - "schema": { - "type": "string" - } - }, - { - "name": "test_result_id", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "report_id", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - } - ], - "tags": [ - "Reports" - ], - "description": "Retrieve all of the rule results for a specific report.", - "operationId": "ReportRuleResults", - "responses": { - "200": { - "description": "Lists Rule Results under a Report", - "content": { - "application/vnd.api+json": { - "examples": { - "List of Rule Results": { - "value": { - "data": [ - { - "id": "ffd28ef6-ad41-49b0-9492-0d4705acd1bd", - "result": "fail", - "rule_id": "efb91e1f-23e3-4013-b2d2-50b18318a6e3", - "type": "rule_result", - "system_id": "edfca2a0-197b-42a5-b093-32f36fa1706a", - "ref_id": "xccdf_org.ssgproject.content_rule_f3de9d1e4293348dd90d4752f9b2d501", - "rule_group_id": "7f6a285f-0bea-4052-a4b6-4cd71915cba4", - "title": "Dolorem iusto doloremque iste.", - "rationale": "Enim quia voluptas. Atque voluptas eum. Nemo qui et.", - "description": "Quasi ipsum delectus. Sed veritatis minima. Reprehenderit ratione blanditiis.", - "severity": "medium", - "precedence": 6445, - "identifier": { - "href": "http://weber-considine.example/irene", - "label": "Gerda Boffin" - }, - "references": [ - { - "href": "http://moore-wolff.test/dorian", - "label": "Meneldor" - }, - { - "href": "http://gibson.test/caroline", - "label": "Eofor" - }, - { - "href": "http://rowe-rice.example/angel.mckenzie", - "label": "Mimosa Bunce" - }, - { - "href": "http://white.example/dorsey", - "label": "Telchar" - }, - { - "href": "http://keebler.test/branden", - "label": "Gamil Zirak" - } - ], - "remediation_issue_id": null - } - ], - "meta": { - "total": 1, - "limit": 10, - "offset": 0 - }, - "links": { - "first": "/api/compliance/v2/reports/12aa91eb-0e82-439c-a68f-0f444bda9748/test_results/29fb6038-c614-4e4e-ba29-b3d3003aa520/rule_results?limit=10&offset=0", - "last": "/api/compliance/v2/reports/12aa91eb-0e82-439c-a68f-0f444bda9748/test_results/29fb6038-c614-4e4e-ba29-b3d3003aa520/rule_results?limit=10&offset=0" - } - }, - "summary": "", - "description": "" - }, - "List of Rule Results sorted by \"result:asc\"": { - "value": { - "data": [ - { - "id": "3a815034-34c0-43ee-ba31-e98abc290f83", - "result": "fail", - "rule_id": "ea34901e-6760-48a9-84af-ac33dc132aa4", - "type": "rule_result", - "system_id": "3ec556b5-0c40-4b72-84f0-4860c7604c47", - "ref_id": "xccdf_org.ssgproject.content_rule_d76114d47c8d44fb959cc848b6904cbb", - "rule_group_id": "ffca9704-1b7a-4862-9ac7-2de7023b7ce6", - "title": "Officiis aperiam et qui.", - "rationale": "Fugiat pariatur doloremque. Dolor et sunt. Impedit veritatis delectus.", - "description": "Pariatur rem eum. Repudiandae unde ratione. Suscipit qui est.", - "severity": "medium", - "precedence": 6798, - "identifier": { - "href": "http://herzog.example/stefanie", - "label": "Adamanta Chubb" - }, - "references": [ - { - "href": "http://spencer.test/bryant.braun", - "label": "Camellia Sackville" - }, - { - "href": "http://koch-schaefer.test/adrien", - "label": "Hending" - }, - { - "href": "http://greenholt-hirthe.example/coretta_hoeger", - "label": "Gróin" - }, - { - "href": "http://kuhic.example/aurelio.schamberger", - "label": "Amarië" - }, - { - "href": "http://marquardt-halvorson.example/romona", - "label": "Fastolph Bolger" - } - ], - "remediation_issue_id": null - } - ], - "meta": { - "total": 1, - "limit": 10, - "offset": 0, - "sort_by": "result" - }, - "links": { - "first": "/api/compliance/v2/reports/6da3756e-be0d-4153-908c-ea454fb4b5d0/test_results/8cea3417-6541-4d59-afcc-3b69434366fc/rule_results?limit=10&offset=0&sort_by=result", - "last": "/api/compliance/v2/reports/6da3756e-be0d-4153-908c-ea454fb4b5d0/test_results/8cea3417-6541-4d59-afcc-3b69434366fc/rule_results?limit=10&offset=0&sort_by=result" - } - }, - "summary": "", - "description": "" - }, - "List of Rule Results filtered by \"(title=foo)\"": { - "value": { - "data": [], - "meta": { - "total": 0, - "filter": "(title=foo)", - "limit": 10, - "offset": 0 - }, - "links": { - "first": "/api/compliance/v2/reports/06720f81-984f-4a57-87d9-d505e72424d4/test_results/e769c553-4598-4712-8092-029429941fc0/rule_results?filter=%28title%3Dfoo%29&limit=10&offset=0", - "last": "/api/compliance/v2/reports/06720f81-984f-4a57-87d9-d505e72424d4/test_results/e769c553-4598-4712-8092-029429941fc0/rule_results?filter=%28title%3Dfoo%29&limit=10&offset=0" - } - }, - "summary": "", - "description": "" - } - }, - "schema": { - "type": "object", - "properties": { - "meta": { - "$ref": "#/components/schemas/metadata" - }, - "links": { - "$ref": "#/components/schemas/links" - }, - "data": { - "type": "array", - "items": { - "properties": { - "schema": { - "$ref": "#/components/schemas/rule_result" - } - } - } - } - } - } - } - } - }, - "422": { - "description": "Returns with Unprocessable Content", - "content": { - "application/vnd.api+json": { - "examples": { - "Description of an error when sorting by incorrect parameter": { - "value": { - "errors": [ - "Result cannot be sorted by the 'description' column." - ] - }, - "summary": "", - "description": "" - }, - "Description of an error when requesting higher limit than supported": { - "value": { - "errors": [ - "Invalid parameter: limit must be less than or equal to 100" - ] - }, - "summary": "", - "description": "" - } - }, - "schema": { - "$ref": "#/components/schemas/errors" - } - } - } - } - } - } - }, - "/security_guides/{security_guide_id}/rules": { - "get": { - "summary": "Request Rules", - "parameters": [ - { - "name": "X-RH-IDENTITY", - "in": "header", - "schema": { - "type": "string" - }, - "description": "For internal use only" - }, - { - "name": "limit", - "in": "query", - "required": false, - "description": "Number of items to return per page", - "schema": { - "type": "number", - "maximum": 100, - "minimum": 1, - "default": 10 - } - }, - { - "name": "offset", - "in": "query", - "required": false, - "description": "Offset of first item of paginated response", - "schema": { - "type": "integer", - "minimum": 0, - "default": 0 - } - }, - { - "name": "ids_only", - "in": "query", - "required": false, - "description": "Indicates whether to return only resource IDs.", - "schema": { - "type": "boolean" - } - }, - { - "name": "sort_by", - "in": "query", - "required": false, - "description": "Attribute and direction to sort the items by. Represented by an array of fields with an optional direction (`:asc` or `:desc`).

If no direction is selected, `:asc` is used by default.", - "schema": { - "type": "array", - "items": { - "enum": [ - "title", - "severity", - "precedence", - "remediation_available", - "title:asc", - "title:desc", - "severity:asc", - "severity:desc", - "precedence:asc", - "precedence:desc", - "remediation_available:asc", - "remediation_available:desc" - ] - } - } - }, - { - "name": "filter", - "in": "query", - "required": false, - "description": "Query string to filter items by their attributes. Compliant with scoped_search query language. However, only `=` or `!=` (resp. `<>`) operators are supported.

Rules are searchable using attributes `title`, `severity`, `remediation_available`, and `rule_group_id`

(e.g.: `(field_1=something AND field_2!=\"something else\") OR field_3>40`)", - "schema": { - "type": "string" - } - }, - { - "name": "security_guide_id", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - } - ], - "tags": [ - "Content" - ], - "description": "Retrieve a list of rules for a specific security guide.", - "operationId": "Rules", - "responses": { - "200": { - "description": "Lists Rules", - "content": { - "application/vnd.api+json": { - "examples": { - "List of Rules": { - "value": { - "data": [ - { - "id": "006f105f-15a9-48ee-9db2-90fd0edf5576", - "ref_id": "xccdf_org.ssgproject.content_rule_8d76bcaec9d91b082ccf61c07645cbad", - "title": "Qui est error voluptatum.", - "rationale": "Porro harum rem. Ipsum atque qui. Aut ea sed.", - "description": "Consequatur sit sed. Et velit consequatur. Accusamus ea sint.", - "severity": "high", - "precedence": 7491, - "identifier": { - "href": "http://heathcote.example/art", - "label": "Smaug" - }, - "references": [ - { - "href": "http://morissette.test/alysha_collier", - "label": "Mrs. Maggot" - }, - { - "href": "http://ortiz.example/ronny", - "label": "Nellas" - }, - { - "href": "http://langosh.example/hallie_ferry", - "label": "Tolman Cotton Junior" - }, - { - "href": "http://abernathy-pollich.example/gennie.upton", - "label": "Lorgan" - }, - { - "href": "http://hand.example/necole", - "label": "Ivy Goodenough" - } - ], - "value_checks": null, - "remediation_available": false, - "rule_group_id": "8dc76775-c664-405d-9769-87623d43b810", - "type": "rule" - }, - { - "id": "027fe419-efc8-436a-931c-2c4fef9133c5", - "ref_id": "xccdf_org.ssgproject.content_rule_c58f9f78660c2d75140e25f565129ee0", - "title": "Qui quis quisquam ad.", - "rationale": "Temporibus nulla mollitia. Facilis qui quas. Reprehenderit tempore nesciunt.", - "description": "Culpa voluptatum voluptatem. Quasi impedit officia. Ut et ratione.", - "severity": "high", - "precedence": 7851, - "identifier": { - "href": "http://wunsch.example/colby", - "label": "Saradas Brandybuck" - }, - "references": [ - { - "href": "http://rempel-breitenberg.example/zoila", - "label": "Targon" - }, - { - "href": "http://morissette-rosenbaum.test/tia", - "label": "Baldor" - }, - { - "href": "http://leuschke.test/claris.runte", - "label": "Egalmoth" - }, - { - "href": "http://schneider.example/parker.schowalter", - "label": "Daisy Gamgee" - }, - { - "href": "http://gerlach-ernser.example/ernest", - "label": "Ohtar" - } - ], - "value_checks": null, - "remediation_available": false, - "rule_group_id": "6d4d655b-c0c8-4503-8e8e-df5882595c34", - "type": "rule" - }, - { - "id": "039514bb-2d89-4d5e-8b04-13350dd8a575", - "ref_id": "xccdf_org.ssgproject.content_rule_9790f96ec88c5400e3a023e4002665cc", - "title": "Voluptate occaecati autem iure.", - "rationale": "Mollitia dolorem distinctio. Quae velit quo. Quia impedit harum.", - "description": "Eius dolore ipsam. Dolores facilis aspernatur. Ea officia natus.", - "severity": "low", - "precedence": 6339, - "identifier": { - "href": "http://morar.example/lorene_lubowitz", - "label": "Rudolph Bolger" - }, - "references": [ - { - "href": "http://leuschke.test/ambrose_gutmann", - "label": "Elfwine" - }, - { - "href": "http://donnelly-hudson.example/ricky", - "label": "Anardil" - }, - { - "href": "http://welch.example/vanessa_gutkowski", - "label": "Bregor" - }, - { - "href": "http://franecki.test/julissa", - "label": "Tar-Meneldur" - }, - { - "href": "http://johns.example/german.toy", - "label": "Guthláf" - } - ], - "value_checks": null, - "remediation_available": false, - "rule_group_id": "c0c1b7eb-d2c7-4b4a-8f0e-902ae6aaff34", - "type": "rule" - }, - { - "id": "153e1432-a654-47c0-b844-75df7cae7e30", - "ref_id": "xccdf_org.ssgproject.content_rule_dfc28edac7ca17bf60edf58b6ea88815", - "title": "Eum suscipit et praesentium.", - "rationale": "Accusamus sunt ipsum. Ut odio repudiandae. A ratione temporibus.", - "description": "Earum est non. Aut porro aut. Sit animi et.", - "severity": "low", - "precedence": 1107, - "identifier": { - "href": "http://schamberger.example/oswaldo", - "label": "Huan" - }, - "references": [ - { - "href": "http://wilderman.example/vernie", - "label": "Gundahar Bolger" - }, - { - "href": "http://leannon-dach.test/anjelica", - "label": "Amandil" - }, - { - "href": "http://friesen-beer.example/maribel", - "label": "Aldamir" - }, - { - "href": "http://stamm-greenholt.example/taylor", - "label": "Thorin Stonehelm" - }, - { - "href": "http://oconner.test/brent", - "label": "Elanor Gardner" - } - ], - "value_checks": null, - "remediation_available": false, - "rule_group_id": "0463f755-7e79-4cc2-aaf5-1fe24fe148da", - "type": "rule" - }, - { - "id": "1d0e58f2-2ef2-43fe-bd2b-c4cb8b89c42f", - "ref_id": "xccdf_org.ssgproject.content_rule_1ad607bb23bada40ff4385fee8b00560", - "title": "Quis corporis nobis quo.", - "rationale": "Aliquid labore occaecati. Optio est delectus. Repudiandae sint tempora.", - "description": "Minima nobis sunt. Inventore ad eius. Sit minus voluptatum.", - "severity": "low", - "precedence": 3178, - "identifier": { - "href": "http://lowe.test/denver.romaguera", - "label": "Quennar" - }, - "references": [ - { - "href": "http://simonis-medhurst.example/jaime_donnelly", - "label": "Hallatan" - }, - { - "href": "http://brekke-pollich.test/myron.altenwerth", - "label": "Great Eagle" - }, - { - "href": "http://jones.test/carmen.yost", - "label": "Cora Goodbody" - }, - { - "href": "http://schmidt.test/alena_ernser", - "label": "Bungo Baggins" - }, - { - "href": "http://hahn.test/graham.mclaughlin", - "label": "Ceorl" - } - ], - "value_checks": null, - "remediation_available": false, - "rule_group_id": "ef5795e1-ecd0-4bab-ac74-314215ae35a1", - "type": "rule" - }, - { - "id": "3737ed0a-5d1e-4caf-be54-4ff8a40528cf", - "ref_id": "xccdf_org.ssgproject.content_rule_4f11ca515e61b1a0535c681cea4ab153", - "title": "Corporis provident sit enim.", - "rationale": "Dolores expedita quo. Quasi consequatur dolorum. Non ex eaque.", - "description": "Non laboriosam nemo. Quisquam cum autem. Aut minus excepturi.", - "severity": "high", - "precedence": 4661, - "identifier": { - "href": "http://abshire.test/kelley.crona", - "label": "Tolman Gardner" - }, - "references": [ - { - "href": "http://konopelski-feest.example/louise", - "label": "Elrohir" - }, - { - "href": "http://roberts.test/kathy", - "label": "Myrtle Burrows" - }, - { - "href": "http://leuschke.test/fredric", - "label": "Saeros" - }, - { - "href": "http://morissette-bins.test/mohammad", - "label": "Baragund" - }, - { - "href": "http://torp-dickens.example/jarred", - "label": "Primrose Boffin" - } - ], - "value_checks": null, - "remediation_available": false, - "rule_group_id": "d1806777-0082-4047-9934-e68af8bb44dd", - "type": "rule" - }, - { - "id": "3d314f56-6316-4d68-96e0-2d0f941a687e", - "ref_id": "xccdf_org.ssgproject.content_rule_96dca6822eb7f15774b5d95fe44a4d83", - "title": "Ad atque reiciendis quia.", - "rationale": "Et nihil saepe. Dolor veniam iure. Debitis dolorem officiis.", - "description": "Adipisci totam soluta. Voluptates id possimus. Ipsa quis optio.", - "severity": "medium", - "precedence": 3142, - "identifier": { - "href": "http://stark.example/alan.vandervort", - "label": "Gimli" - }, - "references": [ - { - "href": "http://hudson.test/vaughn_hermiston", - "label": "Halfast Gamgee" - }, - { - "href": "http://nader.test/kami.stroman", - "label": "Sangahyando" - }, - { - "href": "http://daniel.test/santiago_lang", - "label": "Briffo Boffin" - }, - { - "href": "http://brekke.test/teodoro", - "label": "Grór" - }, - { - "href": "http://harvey.test/jasper", - "label": "Peony Baggins" - } - ], - "value_checks": null, - "remediation_available": false, - "rule_group_id": "f0f5cd15-ea13-4540-abc7-0ac614cd5295", - "type": "rule" - }, - { - "id": "4dfd00c7-8283-4731-9be9-abe32acca1d6", - "ref_id": "xccdf_org.ssgproject.content_rule_d42fe1cfff51deba9068db0b0facf4fa", - "title": "Reprehenderit eum eaque ut.", - "rationale": "Voluptas quisquam aliquam. Nulla similique modi. Porro hic molestiae.", - "description": "Beatae officiis occaecati. Aperiam magnam debitis. In voluptas aut.", - "severity": "medium", - "precedence": 5046, - "identifier": { - "href": "http://adams.example/ellis", - "label": "Merry Gardner" - }, - "references": [ - { - "href": "http://lesch-rutherford.example/jerrold_wolf", - "label": "Minto Burrows" - }, - { - "href": "http://heathcote.test/miguel.volkman", - "label": "Ar-Adûnakhôr" - }, - { - "href": "http://boyle-koepp.test/cleo_langosh", - "label": "Wilcome" - }, - { - "href": "http://mckenzie-pollich.test/naomi_crona", - "label": "Frerin" - }, - { - "href": "http://runolfsdottir-dach.example/terrance.rogahn", - "label": "Filibert Bolger" - } - ], - "value_checks": null, - "remediation_available": false, - "rule_group_id": "9bd47fe2-7dcf-4bc9-981b-8139761cc502", - "type": "rule" - }, - { - "id": "4f74dd42-22d9-45b5-bbde-d405f077d671", - "ref_id": "xccdf_org.ssgproject.content_rule_87f55760f7238a970caa8b6dbfcd9297", - "title": "Sit vitae alias in.", - "rationale": "Facere alias totam. Itaque cupiditate consequatur. Aut suscipit cumque.", - "description": "Eveniet sit sunt. Facere dolorum vel. Non cum voluptate.", - "severity": "high", - "precedence": 8722, - "identifier": { - "href": "http://littel.example/faustino.windler", - "label": "Imin" - }, - "references": [ - { - "href": "http://kozey.example/yong", - "label": "Angamaitë" - }, - { - "href": "http://hettinger.test/lettie", - "label": "Nessanië" - }, - { - "href": "http://steuber-weber.test/wally", - "label": "Ivriniel" - }, - { - "href": "http://franecki-paucek.example/juliann", - "label": "Eldacar" - }, - { - "href": "http://kris-leffler.test/walker", - "label": "Axantur" - } - ], - "value_checks": null, - "remediation_available": false, - "rule_group_id": "a0d6e8be-c2f4-48f0-8f52-01abf5879823", - "type": "rule" - }, - { - "id": "4fd11ab8-9615-4f2f-8fbc-8a34583d1f14", - "ref_id": "xccdf_org.ssgproject.content_rule_9777b86ce8baae13c4aa6b3776039692", - "title": "Eveniet quam veniam quia.", - "rationale": "Est alias possimus. Ut corporis sit. Voluptas consequatur aut.", - "description": "Autem voluptatem neque. Error fugiat ea. Incidunt voluptatem saepe.", - "severity": "medium", - "precedence": 8550, - "identifier": { - "href": "http://gibson.example/tyler", - "label": "Dís" - }, - "references": [ - { - "href": "http://heaney.example/zackary", - "label": "Poppy Chubb-Baggins" - }, - { - "href": "http://reichel-breitenberg.example/kristeen", - "label": "Nolondil" - }, - { - "href": "http://romaguera-bogan.example/trey", - "label": "Mentha Brandybuck" - }, - { - "href": "http://kohler.example/gita_rowe", - "label": "Skinbark" - }, - { - "href": "http://kassulke.test/earleen", - "label": "Celegorm" - } - ], - "value_checks": null, - "remediation_available": false, - "rule_group_id": "8e2ad9ce-5578-44ab-a63b-3ef6d84ee488", - "type": "rule" - } - ], - "meta": { - "total": 25, - "limit": 10, - "offset": 0 - }, - "links": { - "first": "/api/compliance/v2/security_guides/ca8b1af1-6c64-45a8-aa64-6ca137582424/rules?limit=10&offset=0", - "last": "/api/compliance/v2/security_guides/ca8b1af1-6c64-45a8-aa64-6ca137582424/rules?limit=10&offset=20", - "next": "/api/compliance/v2/security_guides/ca8b1af1-6c64-45a8-aa64-6ca137582424/rules?limit=10&offset=10" - } - }, - "summary": "", - "description": "" - }, - "List of Rules sorted by \"precedence:asc\"": { - "value": { - "data": [ - { - "id": "85cc9ecc-6c73-4411-b807-d7a236e2d0a2", - "ref_id": "xccdf_org.ssgproject.content_rule_c61b4d0770dfecbc55bc97fc8f33d5cc", - "title": "Ducimus aut repellendus voluptas.", - "rationale": "Mollitia ut ad. In soluta enim. Consequatur voluptas magnam.", - "description": "Omnis assumenda cupiditate. Ex dolor laboriosam. Perferendis fugit harum.", - "severity": "low", - "precedence": 42, - "identifier": { - "href": "http://will.example/adella.flatley", - "label": "Haldad" - }, - "references": [ - { - "href": "http://daugherty-schulist.example/dwain.stiedemann", - "label": "Fundin" - }, - { - "href": "http://ernser-berge.example/micheal", - "label": "Hunthor" - }, - { - "href": "http://block.example/willis.heaney", - "label": "Angrim" - }, - { - "href": "http://murazik.test/marica.nicolas", - "label": "Targon" - }, - { - "href": "http://mills.example/rickie", - "label": "Frodo Gardner" - } - ], - "value_checks": null, - "remediation_available": false, - "rule_group_id": "fb382d3f-837f-4561-9ba3-53ea2c68a9c7", - "type": "rule" - }, - { - "id": "2f38d117-b1c0-4e1b-939f-f9a0d65e940f", - "ref_id": "xccdf_org.ssgproject.content_rule_6f74b2027b80adf9d6da1fcfd82e3603", - "title": "In fugiat quia et.", - "rationale": "Quo est autem. Sed sit in. Quisquam distinctio reprehenderit.", - "description": "Ratione iure ut. Non voluptatem enim. Exercitationem cumque aut.", - "severity": "high", - "precedence": 257, - "identifier": { - "href": "http://stamm-moore.test/esteban_howell", - "label": "Asphodel Brandybuck" - }, - "references": [ - { - "href": "http://spinka.test/leonardo.feil", - "label": "Erling" - }, - { - "href": "http://thompson.example/ai", - "label": "Turambar" - }, - { - "href": "http://bartell-thiel.test/galen", - "label": "Bandobras Took" - }, - { - "href": "http://price-lang.example/karisa.stiedemann", - "label": "Beleth" - }, - { - "href": "http://schultz.example/rocco.schaefer", - "label": "Brandir" - } - ], - "value_checks": null, - "remediation_available": false, - "rule_group_id": "5b67effe-be0e-4f82-86e4-a0a8653fb8b7", - "type": "rule" - }, - { - "id": "c3265315-a6dd-4cbc-9803-b50fe55d42de", - "ref_id": "xccdf_org.ssgproject.content_rule_e65b8fa2b2a980deacf7d668d402c386", - "title": "Maiores autem ad corrupti.", - "rationale": "Dicta a quasi. Ex sunt ad. Sapiente quis voluptas.", - "description": "Reprehenderit in soluta. Ab ut rerum. Dolores ut voluptas.", - "severity": "high", - "precedence": 446, - "identifier": { - "href": "http://grimes.example/fernande_aufderhar", - "label": "Togo Goodbody" - }, - "references": [ - { - "href": "http://doyle.example/bradley", - "label": "Nob" - }, - { - "href": "http://witting.example/bebe", - "label": "Hirwen" - }, - { - "href": "http://bauch.test/margareta", - "label": "Nazgûl" - }, - { - "href": "http://dickinson-nolan.test/geoffrey_gutkowski", - "label": "Saruman" - }, - { - "href": "http://johnston-waters.test/kenneth_leuschke", - "label": "Chica Chubb" - } - ], - "value_checks": null, - "remediation_available": false, - "rule_group_id": "3bb25a4c-4741-47b9-adf6-abe6416e890a", - "type": "rule" - }, - { - "id": "929c7c70-f9ba-4674-8857-40b02e616c23", - "ref_id": "xccdf_org.ssgproject.content_rule_9f766ed99ab7bb1ca79a8c6fa3ec7c0b", - "title": "Voluptas atque nulla rem.", - "rationale": "Velit consectetur eius. Esse eius facere. Ut mollitia est.", - "description": "Maiores soluta perspiciatis. Aut nulla optio. Accusantium perferendis asperiores.", - "severity": "high", - "precedence": 449, - "identifier": { - "href": "http://schimmel-jacobson.test/hipolito_kulas", - "label": "Erling" - }, - "references": [ - { - "href": "http://kuhlman.test/elly", - "label": "Amandil" - }, - { - "href": "http://corkery.test/charles.schimmel", - "label": "Elendur" - }, - { - "href": "http://torp-oconnell.example/hubert.rowe", - "label": "Wulf" - }, - { - "href": "http://champlin.example/reyes", - "label": "Merimas Brandybuck" - }, - { - "href": "http://maggio-marvin.test/porfirio.ziemann", - "label": "Indor" - } - ], - "value_checks": null, - "remediation_available": false, - "rule_group_id": "2a91cf2f-b989-476e-bb23-561f850f5675", - "type": "rule" - }, - { - "id": "d9c63555-8942-4ad7-944f-51bca531acc5", - "ref_id": "xccdf_org.ssgproject.content_rule_833c9ea6e12d400f1b3641809f07d291", - "title": "Soluta quibusdam ut consequuntur.", - "rationale": "Ut vel quae. Ducimus quasi est. Nulla a consequatur.", - "description": "Aut nam quisquam. Maiores numquam debitis. Consequatur natus doloribus.", - "severity": "high", - "precedence": 689, - "identifier": { - "href": "http://runte.test/chastity", - "label": "Isengar Took" - }, - "references": [ - { - "href": "http://schuster-gottlieb.test/doria", - "label": "Elboron" - }, - { - "href": "http://kozey-fritsch.example/merle", - "label": "Gilly Brownlock" - }, - { - "href": "http://pfannerstill.example/sherlyn", - "label": "Peeping Jack" - }, - { - "href": "http://pagac-hegmann.test/reynalda", - "label": "Imrazôr" - }, - { - "href": "http://goyette.test/trista", - "label": "Elfhelm" - } - ], - "value_checks": null, - "remediation_available": false, - "rule_group_id": "e3fd10fe-eea6-452f-8b41-4d7218742df7", - "type": "rule" - }, - { - "id": "974e3b26-e6b7-42af-9fa5-ecb0fe68e2c6", - "ref_id": "xccdf_org.ssgproject.content_rule_607fbdfa5e8651be38d76922e467b486", - "title": "Non nesciunt est omnis.", - "rationale": "Ratione ab corporis. Aliquam quisquam provident. Pariatur eos in.", - "description": "Velit exercitationem magni. Et ut qui. Aut quisquam sunt.", - "severity": "high", - "precedence": 1800, - "identifier": { - "href": "http://krajcik.test/mariella_douglas", - "label": "Otto Boffin" - }, - "references": [ - { - "href": "http://kris.example/abigail", - "label": "Lindir" - }, - { - "href": "http://frami.example/charlyn.predovic", - "label": "Brego" - }, - { - "href": "http://kertzmann.test/bryanna_goyette", - "label": "Hallas" - }, - { - "href": "http://bernier.test/devin", - "label": "Mosco Burrows" - }, - { - "href": "http://hackett-marquardt.example/clemente", - "label": "Meriadoc Brandybuck" - } - ], - "value_checks": null, - "remediation_available": false, - "rule_group_id": "3fad9291-4194-45bb-807a-3752e44d6960", - "type": "rule" - }, - { - "id": "5bea4533-657e-4839-87d5-cddf3dc12545", - "ref_id": "xccdf_org.ssgproject.content_rule_6a7f03c08c3bfe103c7ef85e00fbfdb1", - "title": "Ab voluptas ut nulla.", - "rationale": "Illum ut soluta. Quos sed placeat. Recusandae delectus expedita.", - "description": "Quis rerum ut. Id voluptatem ullam. Omnis porro nihil.", - "severity": "medium", - "precedence": 1803, - "identifier": { - "href": "http://leuschke.example/lauryn.nitzsche", - "label": "Wulf" - }, - "references": [ - { - "href": "http://fadel.example/cletus", - "label": "Hallacar" - }, - { - "href": "http://treutel.test/lazaro", - "label": "Nazgûl" - }, - { - "href": "http://zemlak.example/joaquin.schmeler", - "label": "Haldar" - }, - { - "href": "http://berge-haag.test/evia.feeney", - "label": "Ferumbras Took" - }, - { - "href": "http://wilkinson.test/gidget", - "label": "Folcwine" - } - ], - "value_checks": null, - "remediation_available": false, - "rule_group_id": "ccafbec6-a8de-430d-b2be-7d479cc47c43", - "type": "rule" - }, - { - "id": "12d25aa7-517f-4fb1-b057-2d40b33dde9c", - "ref_id": "xccdf_org.ssgproject.content_rule_76776beca77d82abf43f9cc093d4702d", - "title": "Beatae qui nisi deserunt.", - "rationale": "Aut dolorum voluptate. Facere reprehenderit et. Aspernatur quod minima.", - "description": "Tempore suscipit consequuntur. Officiis ipsum excepturi. Provident suscipit fugit.", - "severity": "low", - "precedence": 2087, - "identifier": { - "href": "http://fahey-mills.example/leonel", - "label": "Aravorn" - }, - "references": [ - { - "href": "http://huel-abbott.example/vance_rolfson", - "label": "Primrose Gardner" - }, - { - "href": "http://schmeler-mante.example/georgann.king", - "label": "Dírhael" - }, - { - "href": "http://kiehn.example/joaquin", - "label": "Poldor" - }, - { - "href": "http://jaskolski-mckenzie.example/adolfo_greenfelder", - "label": "Eärendil" - }, - { - "href": "http://connelly.test/ginny", - "label": "Mallor" - } - ], - "value_checks": null, - "remediation_available": false, - "rule_group_id": "9d72c0fe-1fcb-48bc-ada6-81d399d687fc", - "type": "rule" - }, - { - "id": "3a423c63-4521-45bd-867c-00b1b6136e94", - "ref_id": "xccdf_org.ssgproject.content_rule_42c2783ee503bd662bf3c2030fa944b3", - "title": "Quisquam sed eveniet ipsum.", - "rationale": "Autem et ab. Quos possimus numquam. Saepe beatae eum.", - "description": "Dolorum saepe impedit. Quas sed reprehenderit. Sed rem nesciunt.", - "severity": "low", - "precedence": 2429, - "identifier": { - "href": "http://dickinson.example/mohamed_langosh", - "label": "Náli" - }, - "references": [ - { - "href": "http://gerlach-heidenreich.example/oswaldo.swift", - "label": "Daisy Gardner" - }, - { - "href": "http://kuhic.test/darron.zieme", - "label": "Lóni" - }, - { - "href": "http://mertz-herman.test/brooke_herzog", - "label": "Nina Lightfoot" - }, - { - "href": "http://legros-lubowitz.example/terry", - "label": "Sador" - }, - { - "href": "http://stiedemann-lang.test/sharen", - "label": "Tar-Atanamir" - } - ], - "value_checks": null, - "remediation_available": false, - "rule_group_id": "3d921f2e-3791-4f7c-b105-713e95b3a593", - "type": "rule" - }, - { - "id": "2f630791-6d44-4ae9-81b3-c362635caf6b", - "ref_id": "xccdf_org.ssgproject.content_rule_0339ab79c154679056a4529e6f4671d2", - "title": "Velit adipisci et nam.", - "rationale": "Neque consequatur numquam. Dolor ab eum. Odio ipsum qui.", - "description": "Exercitationem ea qui. Ullam vitae et. Molestiae ut corrupti.", - "severity": "high", - "precedence": 2605, - "identifier": { - "href": "http://dibbert.test/kum", - "label": "Tar-Ancalimë" - }, - "references": [ - { - "href": "http://paucek-kutch.example/angela.rohan", - "label": "Vidumavi" - }, - { - "href": "http://turner-rippin.example/ramon", - "label": "Isumbras" - }, - { - "href": "http://runolfsdottir-gutmann.test/noelle.marquardt", - "label": "Poppy Chubb-Baggins" - }, - { - "href": "http://kohler.test/george_luettgen", - "label": "Ondoher" - }, - { - "href": "http://cruickshank-runte.example/gilberto", - "label": "Ardamir" - } - ], - "value_checks": null, - "remediation_available": false, - "rule_group_id": "aaa374a2-2a09-4a39-b77c-6b9c660fe571", - "type": "rule" - } - ], - "meta": { - "total": 25, - "limit": 10, - "offset": 0, - "sort_by": "precedence" - }, - "links": { - "first": "/api/compliance/v2/security_guides/d06948c3-94fb-49a9-ad1c-2ccdfbb257f7/rules?limit=10&offset=0&sort_by=precedence", - "last": "/api/compliance/v2/security_guides/d06948c3-94fb-49a9-ad1c-2ccdfbb257f7/rules?limit=10&offset=20&sort_by=precedence", - "next": "/api/compliance/v2/security_guides/d06948c3-94fb-49a9-ad1c-2ccdfbb257f7/rules?limit=10&offset=10&sort_by=precedence" - } - }, - "summary": "", - "description": "" - } - }, - "schema": { - "type": "object", - "properties": { - "meta": { - "$ref": "#/components/schemas/metadata" - }, - "links": { - "$ref": "#/components/schemas/links" - }, - "data": { - "type": "array", - "items": { - "properties": { - "schema": { - "$ref": "#/components/schemas/rule" - } - } - } - } - } - } - } - } - }, - "422": { - "description": "Returns with Unprocessable Content", - "content": { - "application/vnd.api+json": { - "examples": { - "Description of an error when sorting by incorrect parameter": { - "value": { - "errors": [ - "Result cannot be sorted by the 'description' column." - ] - }, - "summary": "", - "description": "" - }, - "Description of an error when requesting higher limit than supported": { - "value": { - "errors": [ - "Invalid parameter: limit must be less than or equal to 100" - ] - }, - "summary": "", - "description": "" - } - }, - "schema": { - "$ref": "#/components/schemas/errors" - } - } - } - } - } - } - }, - "/security_guides/{security_guide_id}/rules/{rule_id}": { - "get": { - "summary": "Request a Rule", - "parameters": [ - { - "name": "X-RH-IDENTITY", - "in": "header", - "schema": { - "type": "string" - }, - "description": "For internal use only" - }, - { - "name": "security_guide_id", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "rule_id", - "in": "path", - "required": true, - "description": "UUID or a ref_id with '.' characters replaced with '-'", - "schema": { - "type": "string" - } - } - ], - "tags": [ - "Content" - ], - "description": "Retrieve a specific rule from a specific security guide.", - "operationId": "Rule", - "responses": { - "200": { - "description": "Returns a Rule", - "content": { - "application/vnd.api+json": { - "examples": { - "Returns a Rule": { - "value": { - "data": { - "id": "5b086919-9045-4dcf-b515-3a35a512060d", - "ref_id": "xccdf_org.ssgproject.content_rule_ffe10e40dc6f8d0b6194675f51053976", - "title": "Similique repellendus velit quidem.", - "rationale": "Explicabo ea consequatur. Quia est nihil. Reiciendis qui tempora.", - "description": "Qui esse ut. Aut dolorem similique. Autem sint sed.", - "severity": "low", - "precedence": 8296, - "identifier": { - "href": "http://champlin-predovic.example/granville", - "label": "Tosto Boffin" - }, - "references": [ - { - "href": "http://skiles-funk.example/dong", - "label": "Hunthor" - }, - { - "href": "http://lindgren.example/jaquelyn.farrell", - "label": "Eldacar" - }, - { - "href": "http://green.example/elmer.oconnell", - "label": "Almáriel" - }, - { - "href": "http://aufderhar.test/barney", - "label": "Dís" - }, - { - "href": "http://roob.test/sade", - "label": "Finduilas" - } - ], - "value_checks": null, - "remediation_available": false, - "rule_group_id": "fe2c02e1-d4af-43fd-b8a6-386f6438c977", - "type": "rule" - } - }, - "summary": "", - "description": "" - } - }, - "schema": { - "type": "object", - "properties": { - "data": { - "type": "object", - "properties": { - "schema": { - "$ref": "#/components/schemas/rule" - } - } - } - } - } - } - } - }, - "404": { - "description": "Returns with Not Found", - "content": { - "application/vnd.api+json": { - "examples": { - "Description of an error when requesting a non-existing Rule": { - "value": { - "errors": [ - "V2::Rule not found with ID 0c49fd1b-2e2a-48b1-a477-0a52c9473de1" - ] - }, - "summary": "", - "description": "" - } - }, - "schema": { - "$ref": "#/components/schemas/errors" - } - } - } - } - } - } - }, - "/security_guides/{security_guide_id}/profiles/{profile_id}/rules": { - "get": { - "summary": "Request Rules assigned to a Profile", - "parameters": [ - { - "name": "X-RH-IDENTITY", - "in": "header", - "schema": { - "type": "string" - }, - "description": "For internal use only" - }, - { - "name": "limit", - "in": "query", - "required": false, - "description": "Number of items to return per page", - "schema": { - "type": "number", - "maximum": 100, - "minimum": 1, - "default": 10 - } - }, - { - "name": "offset", - "in": "query", - "required": false, - "description": "Offset of first item of paginated response", - "schema": { - "type": "integer", - "minimum": 0, - "default": 0 - } - }, - { - "name": "ids_only", - "in": "query", - "required": false, - "description": "Indicates whether to return only resource IDs.", - "schema": { - "type": "boolean" - } - }, - { - "name": "sort_by", - "in": "query", - "required": false, - "description": "Attribute and direction to sort the items by. Represented by an array of fields with an optional direction (`:asc` or `:desc`).

If no direction is selected, `:asc` is used by default.", - "schema": { - "type": "array", - "items": { - "enum": [ - "title", - "severity", - "precedence", - "remediation_available", - "title:asc", - "title:desc", - "severity:asc", - "severity:desc", - "precedence:asc", - "precedence:desc", - "remediation_available:asc", - "remediation_available:desc" - ] - } - } - }, - { - "name": "filter", - "in": "query", - "required": false, - "description": "Query string to filter items by their attributes. Compliant with scoped_search query language. However, only `=` or `!=` (resp. `<>`) operators are supported.

Rules are searchable using attributes `title`, `severity`, `remediation_available`, and `rule_group_id`

(e.g.: `(field_1=something AND field_2!=\"something else\") OR field_3>40`)", - "schema": { - "type": "string" - } - }, - { - "name": "security_guide_id", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "profile_id", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - } - ], - "tags": [ - "Content" - ], - "description": "Retrieve a list of all security guide rules for a specific profile.", - "operationId": "ProfileRules", - "responses": { - "200": { - "description": "Lists Rules assigned to a Profile", - "content": { - "application/vnd.api+json": { - "examples": { - "List of Rules": { - "value": { - "data": [ - { - "id": "039e6979-ebb1-4efa-88a1-0dedacbc110a", - "ref_id": "xccdf_org.ssgproject.content_rule_ecc7dd07460bf751c056e0cb662c07a2", - "title": "Temporibus fuga corporis impedit.", - "rationale": "Minus ut quasi. Eum quod quo. Dolor assumenda et.", - "description": "Fuga sed consequatur. Rerum quis deserunt. Aliquam eum architecto.", - "severity": "medium", - "precedence": 2679, - "identifier": { - "href": "http://nader.example/florene", - "label": "Cora Goodbody" - }, - "references": [ - { - "href": "http://glover.test/bill_kertzmann", - "label": "Amdír" - }, - { - "href": "http://olson-larson.test/asha", - "label": "Guilin" - }, - { - "href": "http://schroeder-wiza.example/rosette", - "label": "Ibun" - }, - { - "href": "http://sipes.example/christia_monahan", - "label": "Hardang" - }, - { - "href": "http://ruecker.test/luther.stehr", - "label": "Adalbert Bolger" - } - ], - "value_checks": null, - "remediation_available": false, - "rule_group_id": "882f5c7e-9e08-4f34-8e4b-d2a0950a7ed7", - "type": "rule", - "remediation_issue_id": null - }, - { - "id": "27678b80-1095-490c-b2b3-33623c8a3561", - "ref_id": "xccdf_org.ssgproject.content_rule_255f09f55c4f64b367f3f5b86819617a", - "title": "Magni voluptatem quibusdam aliquid.", - "rationale": "Nemo eligendi eum. Nihil praesentium unde. Facere pariatur veniam.", - "description": "At culpa provident. Quas deserunt rerum. Et porro nostrum.", - "severity": "medium", - "precedence": 8546, - "identifier": { - "href": "http://mayert.test/anh.farrell", - "label": "Ebor" - }, - "references": [ - { - "href": "http://dach-kovacek.test/jeanene_runolfsson", - "label": "Finwë" - }, - { - "href": "http://smith-kihn.test/carita.stehr", - "label": "Ivorwen" - }, - { - "href": "http://romaguera.example/adrianne.hills", - "label": "Olo Proudfoot" - }, - { - "href": "http://klein-shanahan.example/rory.wilderman", - "label": "Vorondil" - }, - { - "href": "http://oreilly.example/marlon", - "label": "Radbug" - } - ], - "value_checks": null, - "remediation_available": false, - "rule_group_id": "3536a3a6-3fb6-4855-ae63-9b673e403e35", - "type": "rule", - "remediation_issue_id": null - }, - { - "id": "2a9b6f35-7092-438c-ba36-bed492f7fd0c", - "ref_id": "xccdf_org.ssgproject.content_rule_61b0ea963a378ba5b291bff2713cc6b0", - "title": "Tempora deserunt minima mollitia.", - "rationale": "Repudiandae ipsa quia. Veniam magnam et. Odit incidunt sed.", - "description": "Inventore vel voluptatem. Qui in velit. Iusto nulla itaque.", - "severity": "medium", - "precedence": 8710, - "identifier": { - "href": "http://howell.example/trenton", - "label": "Belegund" - }, - "references": [ - { - "href": "http://donnelly.test/dimple_crona", - "label": "Salvia Brandybuck" - }, - { - "href": "http://lindgren.example/delana.huel", - "label": "Polo Baggins" - }, - { - "href": "http://hills-mertz.example/hester_ullrich", - "label": "Éothéod" - }, - { - "href": "http://ullrich-kessler.example/kasey.murphy", - "label": "Belemir" - }, - { - "href": "http://gutkowski.test/shellie.gottlieb", - "label": "Wiseman Gamwich" - } - ], - "value_checks": null, - "remediation_available": false, - "rule_group_id": "24e1e6f2-a037-4974-b67d-39881f02ed96", - "type": "rule", - "remediation_issue_id": null - }, - { - "id": "2bc5f14f-8a54-4b89-b417-ed979cea46b6", - "ref_id": "xccdf_org.ssgproject.content_rule_976e7b0632ae2ee7ffb765dc1b356617", - "title": "Qui recusandae sunt quisquam.", - "rationale": "Magni eum quis. Sint sint omnis. Iste exercitationem et.", - "description": "Ut voluptate et. Vel illum quia. Quis porro provident.", - "severity": "high", - "precedence": 7865, - "identifier": { - "href": "http://koelpin-terry.test/ulrike", - "label": "Dúnhere" - }, - "references": [ - { - "href": "http://stoltenberg.example/geneva", - "label": "Dís" - }, - { - "href": "http://schroeder.test/cecilia", - "label": "Aravir" - }, - { - "href": "http://erdman.example/lacey", - "label": "Ulbar" - }, - { - "href": "http://block.example/shonda_bednar", - "label": "Bowman Cotton" - }, - { - "href": "http://mayer.example/alex", - "label": "Eärendil" - } - ], - "value_checks": null, - "remediation_available": false, - "rule_group_id": "5d33afcc-71cd-480b-b9ed-1a24d9e0e637", - "type": "rule", - "remediation_issue_id": null - }, - { - "id": "2ffe7f90-dd27-4de6-bd2d-04ccf138e012", - "ref_id": "xccdf_org.ssgproject.content_rule_7dca3d418413402982ed59a9ac96bf40", - "title": "Quis nisi consequatur placeat.", - "rationale": "Culpa eligendi aut. Mollitia id eum. Ut inventore dolore.", - "description": "Quidem dolores odio. Inventore pariatur non. Veniam ut sit.", - "severity": "low", - "precedence": 6044, - "identifier": { - "href": "http://mckenzie.test/elanor", - "label": "Bregolas" - }, - "references": [ - { - "href": "http://hayes.example/rafaela_leuschke", - "label": "Walda" - }, - { - "href": "http://bosco.example/nicolle.mcdermott", - "label": "Erkenbrand" - }, - { - "href": "http://weissnat.example/branda.tillman", - "label": "Soronto" - }, - { - "href": "http://leuschke.test/jack", - "label": "Grimbold" - }, - { - "href": "http://bins.test/weldon", - "label": "Eluréd" - } - ], - "value_checks": null, - "remediation_available": false, - "rule_group_id": "14af3d52-5baf-4730-b2e8-22467a2df5fa", - "type": "rule", - "remediation_issue_id": null - }, - { - "id": "376d5204-7533-41db-9910-50701de50dfc", - "ref_id": "xccdf_org.ssgproject.content_rule_e09e9a59b000bb0d6c3fb7f229e9de83", - "title": "Iste quaerat et aut.", - "rationale": "Repudiandae similique non. Consequatur qui dolor. Quia maxime repellendus.", - "description": "Voluptates odio autem. Aspernatur voluptatem repellendus. Ea non et.", - "severity": "medium", - "precedence": 4847, - "identifier": { - "href": "http://heathcote-williamson.test/maximo", - "label": "Nazgûl" - }, - "references": [ - { - "href": "http://murazik.example/horacio.stanton", - "label": "Ungoliant" - }, - { - "href": "http://smith-kunde.example/claudio.wuckert", - "label": "Bifur" - }, - { - "href": "http://collins-collins.test/clarita", - "label": "Glóredhel" - }, - { - "href": "http://schinner-dubuque.example/chad", - "label": "Soronto" - }, - { - "href": "http://bogisich.test/marlon", - "label": "Magor" - } - ], - "value_checks": null, - "remediation_available": false, - "rule_group_id": "ef6686ec-c274-41fc-94d8-2ad55ac7b773", - "type": "rule", - "remediation_issue_id": null - }, - { - "id": "37da77a2-f4ff-4505-aa1b-27d095480308", - "ref_id": "xccdf_org.ssgproject.content_rule_c9cbc3a549215ec61ede3740f9919d24", - "title": "Cupiditate quaerat deleniti quod.", - "rationale": "Accusantium qui sunt. Nihil odio esse. Minima dolorem fugit.", - "description": "Aut ea ipsam. Amet ut veritatis. Nesciunt qui explicabo.", - "severity": "medium", - "precedence": 2908, - "identifier": { - "href": "http://fadel.example/erik_trantow", - "label": "Bill Ferny" - }, - "references": [ - { - "href": "http://ratke.test/evan", - "label": "Hildigard Took" - }, - { - "href": "http://sauer-howell.test/miguel", - "label": "Nina Lightfoot" - }, - { - "href": "http://altenwerth.example/lieselotte_hodkiewicz", - "label": "Voronwë" - }, - { - "href": "http://huel-bernhard.example/prudence", - "label": "Borthand" - }, - { - "href": "http://padberg.test/latarsha", - "label": "Zimrahin" - } - ], - "value_checks": null, - "remediation_available": false, - "rule_group_id": "8aa7c763-ebf1-4302-88a9-a903b340a6c9", - "type": "rule", - "remediation_issue_id": null - }, - { - "id": "587dbd14-952d-4399-acee-0340f838499b", - "ref_id": "xccdf_org.ssgproject.content_rule_eb1fd246499b86652ab0692931cc5ac4", - "title": "Ad omnis et sint.", - "rationale": "Optio ut laboriosam. Dicta eos voluptas. Aut quo dolore.", - "description": "Magnam ex corrupti. Consequatur deserunt in. Eum ab est.", - "severity": "high", - "precedence": 4212, - "identifier": { - "href": "http://bernier.test/daisy_bechtelar", - "label": "Farin" - }, - "references": [ - { - "href": "http://hauck.example/brendon_nitzsche", - "label": "Dírhael" - }, - { - "href": "http://emard.example/natashia_oconnell", - "label": "Daisy Baggins" - }, - { - "href": "http://bruen.test/carla.haag", - "label": "Éothain" - }, - { - "href": "http://brakus-collier.example/jacquelyne", - "label": "Ornendil" - }, - { - "href": "http://ankunding.test/danette", - "label": "Eöl" - } - ], - "value_checks": null, - "remediation_available": false, - "rule_group_id": "20988eac-3c47-4a01-bf67-54f6990c0416", - "type": "rule", - "remediation_issue_id": null - }, - { - "id": "5c3a04c7-eb8a-4d4e-a41b-2cbcae42262a", - "ref_id": "xccdf_org.ssgproject.content_rule_321fe7106b50e2e15cfac22a9ad78166", - "title": "Quos corporis iste expedita.", - "rationale": "At reiciendis explicabo. Vel dicta iure. Commodi animi quia.", - "description": "Ea est vitae. Iure recusandae dolor. Placeat ut et.", - "severity": "medium", - "precedence": 2814, - "identifier": { - "href": "http://boyle.example/van", - "label": "Chica Chubb" - }, - "references": [ - { - "href": "http://schaden.test/harry", - "label": "Witch-king" - }, - { - "href": "http://bahringer.example/adella_kautzer", - "label": "Erling" - }, - { - "href": "http://willms.test/emory.bashirian", - "label": "Barach" - }, - { - "href": "http://ortiz.test/charisse", - "label": "Eärnil" - }, - { - "href": "http://ondricka-bins.example/kellee", - "label": "Nár" - } - ], - "value_checks": null, - "remediation_available": false, - "rule_group_id": "fa04fef4-3374-442b-b395-01f50ab0cd7b", - "type": "rule", - "remediation_issue_id": null - }, - { - "id": "6b6bb222-334e-4dc4-bd8e-f42571698ad3", - "ref_id": "xccdf_org.ssgproject.content_rule_d022c5a511f702e24afcc18dc90d5fbd", - "title": "Officia vel aliquid et.", - "rationale": "Vero itaque ipsa. Consequuntur consequatur aperiam. Neque doloribus cumque.", - "description": "Perferendis asperiores quia. Laboriosam incidunt consectetur. Rerum blanditiis quia.", - "severity": "low", - "precedence": 4782, - "identifier": { - "href": "http://trantow-klocko.test/saul.conroy", - "label": "Dagnir" - }, - "references": [ - { - "href": "http://swift.example/jerry", - "label": "Ruby Bolger" - }, - { - "href": "http://schimmel.example/lewis.rippin", - "label": "Amrothos" - }, - { - "href": "http://emard.test/juan", - "label": "Arador" - }, - { - "href": "http://murray-marquardt.test/minna", - "label": "Írimë" - }, - { - "href": "http://carter.example/harry", - "label": "Tar-Telperiën" - } - ], - "value_checks": null, - "remediation_available": false, - "rule_group_id": "cc965289-fb4c-4a1a-81c2-4358c976db19", - "type": "rule", - "remediation_issue_id": null - } - ], - "meta": { - "total": 25, - "limit": 10, - "offset": 0 - }, - "links": { - "first": "/api/compliance/v2/security_guides/04b5c8d4-2f95-4285-92c4-a69e249fa05e/profiles/de795edd-73d8-4dde-9e8b-c925a3e8f203/rules?limit=10&offset=0", - "last": "/api/compliance/v2/security_guides/04b5c8d4-2f95-4285-92c4-a69e249fa05e/profiles/de795edd-73d8-4dde-9e8b-c925a3e8f203/rules?limit=10&offset=20", - "next": "/api/compliance/v2/security_guides/04b5c8d4-2f95-4285-92c4-a69e249fa05e/profiles/de795edd-73d8-4dde-9e8b-c925a3e8f203/rules?limit=10&offset=10" - } - }, - "summary": "", - "description": "" - }, - "List of Rules sorted by \"precedence:asc\"": { - "value": { - "data": [ - { - "id": "40c12d9c-607d-446a-ad20-6122a6e278b8", - "ref_id": "xccdf_org.ssgproject.content_rule_6da422958aa4c62ddd43f47c9f5ac2ea", - "title": "Et dolores voluptatibus facere.", - "rationale": "Ipsa maiores eveniet. Rerum porro ullam. Ut et rem.", - "description": "Exercitationem explicabo voluptas. Libero reiciendis a. Veritatis nihil perferendis.", - "severity": "high", - "precedence": 654, - "identifier": { - "href": "http://oberbrunner.test/boyd", - "label": "Fram" - }, - "references": [ - { - "href": "http://huels-walter.example/odis.becker", - "label": "Landroval" - }, - { - "href": "http://wuckert.example/guadalupe", - "label": "Bandobras Took" - }, - { - "href": "http://schowalter.test/sanford.fisher", - "label": "Bolg" - }, - { - "href": "http://hills-rath.test/anastasia", - "label": "Melilot Brandybuck" - }, - { - "href": "http://von.example/bridgette.hansen", - "label": "Gundolpho Bolger" - } - ], - "value_checks": null, - "remediation_available": false, - "rule_group_id": "1caba462-a4f9-4d13-8bee-02fe2739b15b", - "type": "rule", - "remediation_issue_id": null - }, - { - "id": "37d3a23b-4096-4362-bfb8-179b0d29dcb2", - "ref_id": "xccdf_org.ssgproject.content_rule_998fb878c5978a1b923220c85220f515", - "title": "Adipisci quasi nihil aliquid.", - "rationale": "Excepturi id amet. Dolorem est labore. Molestiae in id.", - "description": "Voluptates quam amet. Harum et quia. Doloribus ab quisquam.", - "severity": "low", - "precedence": 756, - "identifier": { - "href": "http://pfannerstill.example/victor", - "label": "Finduilas" - }, - "references": [ - { - "href": "http://hirthe.example/rolanda_gorczany", - "label": "Eglantine Banks" - }, - { - "href": "http://lind.test/myles", - "label": "Cemendur" - }, - { - "href": "http://glover-sauer.test/mellisa_towne", - "label": "Iago Grubb" - }, - { - "href": "http://ritchie.example/philip.renner", - "label": "Fëanor" - }, - { - "href": "http://boyer.example/sherron_sporer", - "label": "Folcwine" - } - ], - "value_checks": null, - "remediation_available": false, - "rule_group_id": "9ae8e4a5-bd78-4a2b-b3ca-fbe035876cfd", - "type": "rule", - "remediation_issue_id": null - }, - { - "id": "2ca29178-3610-4a43-87c7-27542360f316", - "ref_id": "xccdf_org.ssgproject.content_rule_59df190a5e645bc55c7a71e26c6fd5c0", - "title": "Non corrupti nemo commodi.", - "rationale": "Soluta et voluptatem. Ratione sed et. Est rerum fuga.", - "description": "Aut aut inventore. Voluptatem tempora aut. Commodi non at.", - "severity": "high", - "precedence": 1552, - "identifier": { - "href": "http://prohaska.example/kathe_kemmer", - "label": "Moro Burrows" - }, - "references": [ - { - "href": "http://oconner.example/aliza", - "label": "Elendil" - }, - { - "href": "http://raynor-roberts.example/elliott.baumbach", - "label": "Dáin" - }, - { - "href": "http://effertz-fritsch.test/kelly_mayert", - "label": "Gildor" - }, - { - "href": "http://wehner.example/shantae_kilback", - "label": "Yávien" - }, - { - "href": "http://wisoky-crona.example/ezra", - "label": "Adamanta Chubb" - } - ], - "value_checks": null, - "remediation_available": false, - "rule_group_id": "568051b9-a310-46f0-8945-74cb6d5501a7", - "type": "rule", - "remediation_issue_id": null - }, - { - "id": "a7db8787-7e35-4bbf-9639-aba32442ff0b", - "ref_id": "xccdf_org.ssgproject.content_rule_42a71bc1318e2e81ac38f7cff2e83fdb", - "title": "Possimus consequuntur quos et.", - "rationale": "Facilis molestias est. Nihil ducimus aut. Et perferendis aut.", - "description": "Enim architecto sequi. Consequuntur voluptas voluptate. Dolorem non sapiente.", - "severity": "low", - "precedence": 2265, - "identifier": { - "href": "http://hudson.test/lanelle.feil", - "label": "Aravir" - }, - "references": [ - { - "href": "http://vandervort.example/marlon.emard", - "label": "Rowlie Appledore" - }, - { - "href": "http://mayer.example/tressie.denesik", - "label": "Dinodas Brandybuck" - }, - { - "href": "http://anderson.test/edith", - "label": "Elfstan Fairbairn" - }, - { - "href": "http://klocko-wisoky.test/solomon_robel", - "label": "Draugluin" - }, - { - "href": "http://denesik.example/leonard.armstrong", - "label": "Pott the Mayor" - } - ], - "value_checks": null, - "remediation_available": false, - "rule_group_id": "5af63cea-3204-482f-8927-2a9f8fc1c6a2", - "type": "rule", - "remediation_issue_id": null - }, - { - "id": "625554d5-fae7-494a-9a74-050959e237d1", - "ref_id": "xccdf_org.ssgproject.content_rule_f897b00fcae539d5a1430b38d8675fc7", - "title": "Culpa et ipsum accusantium.", - "rationale": "Animi facere id. Alias dolorem itaque. Velit dolor fuga.", - "description": "Quia ut qui. Numquam quo itaque. Dolor provident totam.", - "severity": "high", - "precedence": 2553, - "identifier": { - "href": "http://bergstrom-paucek.test/danita.sipes", - "label": "Poppy Chubb-Baggins" - }, - "references": [ - { - "href": "http://okuneva.test/billie", - "label": "Duilin" - }, - { - "href": "http://larkin-jakubowski.test/deshawn.abernathy", - "label": "Marach" - }, - { - "href": "http://stoltenberg.example/lavonne.mann", - "label": "Gilraen" - }, - { - "href": "http://rippin.example/willow.nitzsche", - "label": "Dorlas" - }, - { - "href": "http://blick.example/annamarie", - "label": "Aerin" - } - ], - "value_checks": null, - "remediation_available": false, - "rule_group_id": "0a12ce67-ae0a-41b4-9f55-8caef05969f7", - "type": "rule", - "remediation_issue_id": null - }, - { - "id": "a98c1f55-6a15-4688-b4a4-1b5e4a3e3713", - "ref_id": "xccdf_org.ssgproject.content_rule_168b4f854904100bc9892475691643ac", - "title": "Explicabo ad ducimus rem.", - "rationale": "Exercitationem necessitatibus corrupti. Enim similique odio. Vel voluptatibus et.", - "description": "Sed nemo aliquid. Velit quis dolor. Et velit dolor.", - "severity": "medium", - "precedence": 2827, - "identifier": { - "href": "http://tromp-koelpin.example/roselyn", - "label": "Avranc" - }, - "references": [ - { - "href": "http://ankunding-emmerich.test/nickolas", - "label": "Witch-king" - }, - { - "href": "http://schamberger-jacobson.example/deane", - "label": "Caliondo" - }, - { - "href": "http://gottlieb-hand.test/zack", - "label": "Pimpernel Took" - }, - { - "href": "http://mcclure.test/olivia", - "label": "Balin" - }, - { - "href": "http://harris-mertz.example/donnie.hermann", - "label": "Theobald Bolger" - } - ], - "value_checks": null, - "remediation_available": false, - "rule_group_id": "a0297f9e-5acd-433d-95f5-9fec0616fd8e", - "type": "rule", - "remediation_issue_id": null - }, - { - "id": "9c3de1f8-0491-417f-87ae-248bf54508ac", - "ref_id": "xccdf_org.ssgproject.content_rule_7eae8731e79186caef0718c03d3bcbf7", - "title": "Tempora praesentium facere sit.", - "rationale": "Repudiandae ex ea. Optio fugiat nobis. Corrupti perspiciatis quisquam.", - "description": "Labore rerum sed. Et inventore voluptatibus. Eaque nostrum temporibus.", - "severity": "low", - "precedence": 2934, - "identifier": { - "href": "http://jacobson-schumm.test/lesley_heidenreich", - "label": "Baldor" - }, - "references": [ - { - "href": "http://bauch-hammes.example/bea", - "label": "Déor" - }, - { - "href": "http://mitchell-torphy.example/roger", - "label": "Ragnir" - }, - { - "href": "http://hudson.test/irena", - "label": "Bodo Proudfoot" - }, - { - "href": "http://runolfsson-hermiston.example/page", - "label": "Madoc Brandybuck" - }, - { - "href": "http://tromp.test/nettie_schiller", - "label": "Goldilocks Gardner" - } - ], - "value_checks": null, - "remediation_available": false, - "rule_group_id": "2593b9dd-8712-49f3-9252-24ee16b9b9b9", - "type": "rule", - "remediation_issue_id": null - }, - { - "id": "362ac6dc-807c-4174-9416-b1e6bc044f24", - "ref_id": "xccdf_org.ssgproject.content_rule_ef2193e951fcf79946ea8095939ed5d8", - "title": "Earum blanditiis illo enim.", - "rationale": "Est quidem reprehenderit. Vitae distinctio esse. Beatae optio repudiandae.", - "description": "Eum fugiat ex. Labore illum et. Et quisquam cum.", - "severity": "medium", - "precedence": 3145, - "identifier": { - "href": "http://ohara.example/amos", - "label": "Hirwen" - }, - "references": [ - { - "href": "http://batz.test/earl.fahey", - "label": "Celeborn" - }, - { - "href": "http://stark.test/jesica", - "label": "Gollum" - }, - { - "href": "http://rutherford-keebler.test/judith.schoen", - "label": "Estella Bolger" - }, - { - "href": "http://cruickshank.test/charleen", - "label": "Huor" - }, - { - "href": "http://gorczany-maggio.example/christian", - "label": "Merry Gardner" - } - ], - "value_checks": null, - "remediation_available": false, - "rule_group_id": "55ff5b54-68a5-4021-b6fc-5fe56b315748", - "type": "rule", - "remediation_issue_id": null - }, - { - "id": "8ef84698-1ca3-40c4-996d-d6e8671cbc75", - "ref_id": "xccdf_org.ssgproject.content_rule_1880df384dd9c20c2c92239a2703a1ee", - "title": "Aperiam autem repellendus aut.", - "rationale": "Eveniet dolorem nihil. Nam tenetur omnis. Alias quisquam ut.", - "description": "Id omnis dolores. Cum et eligendi. Voluptatem rem praesentium.", - "severity": "medium", - "precedence": 3543, - "identifier": { - "href": "http://daugherty-beer.test/edmund_howe", - "label": "Elendur" - }, - "references": [ - { - "href": "http://bruen.test/jerold_stroman", - "label": "Ebor" - }, - { - "href": "http://reinger-medhurst.test/mireya_okeefe", - "label": "Mithrellas" - }, - { - "href": "http://stiedemann.test/esta.marvin", - "label": "Gruffo Boffin" - }, - { - "href": "http://runolfsson-konopelski.test/mendy_fritsch", - "label": "Peony Baggins" - }, - { - "href": "http://nader-cartwright.example/ike.hudson", - "label": "Mahtan" - } - ], - "value_checks": null, - "remediation_available": false, - "rule_group_id": "24a5c05a-98d0-4130-9610-6956639b1093", - "type": "rule", - "remediation_issue_id": null - }, - { - "id": "7bdbc7f8-7c0c-4f6a-ab5d-a801e93917d5", - "ref_id": "xccdf_org.ssgproject.content_rule_24d93c2c13d6f56a2a065a7c62dcf551", - "title": "Eos corporis voluptatem aspernatur.", - "rationale": "Ratione dolor quis. Aut mollitia est. Quam iure accusantium.", - "description": "Ducimus asperiores nobis. Sint fugiat et. Et est rem.", - "severity": "high", - "precedence": 3883, - "identifier": { - "href": "http://nienow.example/carlos_bode", - "label": "Eöl" - }, - "references": [ - { - "href": "http://tremblay.example/ted", - "label": "Balin" - }, - { - "href": "http://marquardt-paucek.test/olin.hudson", - "label": "Vinitharya" - }, - { - "href": "http://luettgen.test/greta", - "label": "Thingol" - }, - { - "href": "http://brekke.test/tomika", - "label": "Hareth" - }, - { - "href": "http://parisian-lang.test/karolyn", - "label": "Frerin" - } - ], - "value_checks": null, - "remediation_available": false, - "rule_group_id": "d7117cff-c148-496c-b4d8-a4faafebb23b", - "type": "rule", - "remediation_issue_id": null - } - ], - "meta": { - "total": 25, - "limit": 10, - "offset": 0, - "sort_by": "precedence" - }, - "links": { - "first": "/api/compliance/v2/security_guides/22e4ed36-c32b-42fc-b191-327449a62c1e/profiles/4bf88cfc-3a46-4654-b5b9-bf942c42d2ab/rules?limit=10&offset=0&sort_by=precedence", - "last": "/api/compliance/v2/security_guides/22e4ed36-c32b-42fc-b191-327449a62c1e/profiles/4bf88cfc-3a46-4654-b5b9-bf942c42d2ab/rules?limit=10&offset=20&sort_by=precedence", - "next": "/api/compliance/v2/security_guides/22e4ed36-c32b-42fc-b191-327449a62c1e/profiles/4bf88cfc-3a46-4654-b5b9-bf942c42d2ab/rules?limit=10&offset=10&sort_by=precedence" - } - }, - "summary": "", - "description": "" - } - }, - "schema": { - "type": "object", - "properties": { - "meta": { - "$ref": "#/components/schemas/metadata" - }, - "links": { - "$ref": "#/components/schemas/links" - }, - "data": { - "type": "array", - "items": { - "properties": { - "schema": { - "$ref": "#/components/schemas/rule" - } - } - } - } - } - } - } - } - }, - "422": { - "description": "Returns with Unprocessable Content", - "content": { - "application/vnd.api+json": { - "examples": { - "Description of an error when sorting by incorrect parameter": { - "value": { - "errors": [ - "Result cannot be sorted by the 'description' column." - ] - }, - "summary": "", - "description": "" - }, - "Description of an error when requesting higher limit than supported": { - "value": { - "errors": [ - "Invalid parameter: limit must be less than or equal to 100" - ] - }, - "summary": "", - "description": "" - } - }, - "schema": { - "$ref": "#/components/schemas/errors" - } - } - } - } - } - } - }, - "/security_guides/{security_guide_id}/profiles/{profile_id}/rules/{rule_id}": { - "get": { - "summary": "Request a Rule assigned to a Profile", - "parameters": [ - { - "name": "X-RH-IDENTITY", - "in": "header", - "schema": { - "type": "string" - }, - "description": "For internal use only" - }, - { - "name": "security_guide_id", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "profile_id", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "rule_id", - "in": "path", - "required": true, - "description": "UUID or a ref_id with '.' characters replaced with '-'", - "schema": { - "type": "string" - } - } - ], - "tags": [ - "Content" - ], - "description": "Retrieve a specific security guide rule for a specific profile.", - "operationId": "ProfileRule", - "responses": { - "200": { - "description": "Returns a Rule assigned to a Profile", - "content": { - "application/vnd.api+json": { - "examples": { - "Returns a Rule": { - "value": { - "data": { - "id": "4769dae7-d51b-48b1-8846-8908f50b2ce4", - "ref_id": "xccdf_org.ssgproject.content_rule_44a30b12e134809c42eddb92dc9449d0", - "title": "Aut neque dolorum ullam.", - "rationale": "Iusto facilis ipsum. Assumenda architecto consequatur. Quaerat est dolor.", - "description": "Sunt quibusdam occaecati. Et omnis modi. Nostrum consequatur ab.", - "severity": "low", - "precedence": 6447, - "identifier": { - "href": "http://okeefe.example/jonna_bernhard", - "label": "Éothain" - }, - "references": [ - { - "href": "http://russel-russel.test/geraldo", - "label": "Madril" - }, - { - "href": "http://armstrong-cole.example/evita_hettinger", - "label": "Ar-Gimilzôr" - }, - { - "href": "http://ward-goldner.test/josefina.prosacco", - "label": "Khamûl" - }, - { - "href": "http://deckow-marquardt.example/maragret", - "label": "Galadhon" - }, - { - "href": "http://marks-goyette.example/michael_oberbrunner", - "label": "Ar-Adûnakhôr" - } - ], - "value_checks": null, - "remediation_available": false, - "rule_group_id": "b3ed2616-d377-4846-8f10-7458fa5bd3bd", - "type": "rule", - "remediation_issue_id": null - } - }, - "summary": "", - "description": "" - } - }, - "schema": { - "type": "object", - "properties": { - "data": { - "type": "object", - "properties": { - "schema": { - "$ref": "#/components/schemas/rule" - } - } - } - } - } - } - } - }, - "404": { - "description": "Returns with Not Found", - "content": { - "application/vnd.api+json": { - "examples": { - "Description of an error when requesting a non-existing Rule": { - "value": { - "errors": [ - "V2::Rule not found with ID 1ca5626d-d3f4-48b3-ba42-cce804567171" - ] - }, - "summary": "", - "description": "" - } - }, - "schema": { - "$ref": "#/components/schemas/errors" - } - } - } - } - } - } - }, - "/policies/{policy_id}/tailorings/{tailoring_id}/rules": { - "get": { - "summary": "Request Rules assigned to a Tailoring", - "parameters": [ - { - "name": "X-RH-IDENTITY", - "in": "header", - "schema": { - "type": "string" - }, - "description": "For internal use only" - }, - { - "name": "limit", - "in": "query", - "required": false, - "description": "Number of items to return per page", - "schema": { - "type": "number", - "maximum": 100, - "minimum": 1, - "default": 10 - } - }, - { - "name": "offset", - "in": "query", - "required": false, - "description": "Offset of first item of paginated response", - "schema": { - "type": "integer", - "minimum": 0, - "default": 0 - } - }, - { - "name": "ids_only", - "in": "query", - "required": false, - "description": "Indicates whether to return only resource IDs.", - "schema": { - "type": "boolean" - } - }, - { - "name": "sort_by", - "in": "query", - "required": false, - "description": "Attribute and direction to sort the items by. Represented by an array of fields with an optional direction (`:asc` or `:desc`).

If no direction is selected, `:asc` is used by default.", - "schema": { - "type": "array", - "items": { - "enum": [ - "title", - "severity", - "precedence", - "remediation_available", - "title:asc", - "title:desc", - "severity:asc", - "severity:desc", - "precedence:asc", - "precedence:desc", - "remediation_available:asc", - "remediation_available:desc" - ] - } - } - }, - { - "name": "filter", - "in": "query", - "required": false, - "description": "Query string to filter items by their attributes. Compliant with scoped_search query language. However, only `=` or `!=` (resp. `<>`) operators are supported.

Rules are searchable using attributes `title`, `severity`, `remediation_available`, and `rule_group_id`

(e.g.: `(field_1=something AND field_2!=\"something else\") OR field_3>40`)", - "schema": { - "type": "string" - } - }, - { - "name": "policy_id", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "tailoring_id", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - } - ], - "tags": [ - "Policies" - ], - "description": "Retrieve a list of rules relating to specific tailorings.", - "operationId": "TailoringRules", - "responses": { - "200": { - "description": "Lists Rules assigned to a Tailoring", - "content": { - "application/vnd.api+json": { - "examples": { - "List of Rules": { - "value": { - "data": [ - { - "id": "8c9df336-6aca-4a4d-90aa-b053ce099a7c", - "ref_id": "xccdf_org.ssgproject.content_rule_3084058bfc63bb682353689baa7d6615", - "title": "Vel ipsam eius eum.", - "rationale": "Assumenda pariatur ducimus. Eum sed enim. Ex quibusdam laboriosam.", - "description": "Ipsam nisi nobis. Voluptatem omnis in. Eum saepe voluptas.", - "severity": "medium", - "precedence": 5707, - "identifier": { - "href": "http://schoen-dickens.test/dalia", - "label": "Rorimac Brandybuck" - }, - "references": [ - { - "href": "http://kuhic.test/rupert", - "label": "Porto Baggins" - }, - { - "href": "http://feest.example/joeann_mcdermott", - "label": "Ted Sandyman" - }, - { - "href": "http://kris.example/aldo_kuvalis", - "label": "Lagduf" - }, - { - "href": "http://swaniawski.example/venetta", - "label": "Sangahyando" - }, - { - "href": "http://dubuque-willms.example/michal_anderson", - "label": "Nellas" - } - ], - "value_checks": null, - "remediation_available": false, - "rule_group_id": "d230695a-4c35-4913-8689-45f3104be2d1", - "type": "rule" - } - ], - "meta": { - "total": 1, - "limit": 10, - "offset": 0 - }, - "links": { - "first": "/api/compliance/v2/policies/c350856f-f242-4d68-bb5d-ace092fc37d2/tailorings/4f68b6e2-4710-4851-9558-3a35d6c5efa5/rules?limit=10&offset=0", - "last": "/api/compliance/v2/policies/c350856f-f242-4d68-bb5d-ace092fc37d2/tailorings/4f68b6e2-4710-4851-9558-3a35d6c5efa5/rules?limit=10&offset=0" - } - }, - "summary": "", - "description": "" - }, - "List of Rules sorted by \"precedence:asc\"": { - "value": { - "data": [ - { - "id": "88bc6c68-9c81-4a09-97fa-1a894f387917", - "ref_id": "xccdf_org.ssgproject.content_rule_4db41e36b4ccb614c779cffb41be6a3d", - "title": "Odio minima ducimus doloribus.", - "rationale": "Porro soluta totam. Dolores aut rerum. Dolor aut eaque.", - "description": "Ea eum quasi. Ipsum excepturi nobis. Fuga neque et.", - "severity": "high", - "precedence": 7619, - "identifier": { - "href": "http://reynolds-wilkinson.example/bobby_haag", - "label": "Elendil" - }, - "references": [ - { - "href": "http://witting-rau.example/garth.shields", - "label": "Valandur" - }, - { - "href": "http://wintheiser.example/danyel_turner", - "label": "Barach" - }, - { - "href": "http://luettgen-schulist.test/gertude.friesen", - "label": "Gilraen" - }, - { - "href": "http://mohr-will.example/daniella", - "label": "Huor" - }, - { - "href": "http://wunsch.test/kathyrn.mckenzie", - "label": "Arassuil" - } - ], - "value_checks": null, - "remediation_available": false, - "rule_group_id": "2c65daa1-9036-484b-8fe9-95e4813a02d8", - "type": "rule" - } - ], - "meta": { - "total": 1, - "limit": 10, - "offset": 0, - "sort_by": "precedence" - }, - "links": { - "first": "/api/compliance/v2/policies/c0fc4e1f-10fa-41b7-9543-76bc13aeed75/tailorings/6cc7ccd1-825a-43b6-9854-7e4cea21771b/rules?limit=10&offset=0&sort_by=precedence", - "last": "/api/compliance/v2/policies/c0fc4e1f-10fa-41b7-9543-76bc13aeed75/tailorings/6cc7ccd1-825a-43b6-9854-7e4cea21771b/rules?limit=10&offset=0&sort_by=precedence" - } - }, - "summary": "", - "description": "" - } - }, - "schema": { - "type": "object", - "properties": { - "meta": { - "$ref": "#/components/schemas/metadata" - }, - "links": { - "$ref": "#/components/schemas/links" - }, - "data": { - "type": "array", - "items": { - "properties": { - "schema": { - "$ref": "#/components/schemas/rule" - } - } - } - } - } - } - } - } - }, - "422": { - "description": "Returns with Unprocessable Content", - "content": { - "application/vnd.api+json": { - "examples": { - "Description of an error when sorting by incorrect parameter": { - "value": { - "errors": [ - "Result cannot be sorted by the 'description' column." - ] - }, - "summary": "", - "description": "" - }, - "Description of an error when requesting higher limit than supported": { - "value": { - "errors": [ - "Invalid parameter: limit must be less than or equal to 100" - ] - }, - "summary": "", - "description": "" - } - }, - "schema": { - "$ref": "#/components/schemas/errors" - } - } - } - } - } - }, - "post": { - "summary": "Bulk assign Rules to a Tailoring", - "parameters": [ - { - "name": "X-RH-IDENTITY", - "in": "header", - "schema": { - "type": "string" - }, - "description": "For internal use only" - }, - { - "name": "policy_id", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "tailoring_id", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - } - ], - "tags": [ - "Policies" - ], - "description": "This feature is exclusively used by the frontend", - "deprecated": true, - "operationId": "AssignRules", - "responses": { - "202": { - "description": "Assigns all specified rules and unassigns the rest", - "content": { - "application/vnd.api+json": { - "examples": { - "List of assigned Rules": { - "value": { - "data": [ - { - "id": "1b91e965-0f86-4cb8-9fd9-a75788da7a6d", - "ref_id": "xccdf_org.ssgproject.content_rule_057ad317b66a646e3e5bbc0841ca9390", - "title": "Doloribus praesentium delectus eligendi.", - "rationale": "Amet non aut. At rerum voluptatibus. Harum illum earum.", - "description": "Est corrupti illo. Nobis expedita totam. At aut iste.", - "severity": "medium", - "precedence": 2172, - "identifier": { - "href": "http://deckow.test/devorah", - "label": "Ferumbras Took" - }, - "references": [ - { - "href": "http://lynch.test/trudy", - "label": "Otho Sackville-Baggins" - }, - { - "href": "http://waters.example/columbus", - "label": "Andreth" - }, - { - "href": "http://auer.example/reuben_buckridge", - "label": "Tar-Calmacil" - }, - { - "href": "http://nolan.example/janna", - "label": "Erchirion" - }, - { - "href": "http://baumbach-huels.example/dale", - "label": "Hugo Bracegirdle" - } - ], - "value_checks": null, - "remediation_available": false, - "rule_group_id": "6e261f35-df17-4145-9580-1a58e67de934", - "type": "rule" - }, - { - "id": "1ded8a22-bc65-4a25-b224-1401abd8e6fb", - "ref_id": "xccdf_org.ssgproject.content_rule_858c6517f058d46d4f6cbf571e3a270e", - "title": "Suscipit est quia ab.", - "rationale": "Quibusdam quis quidem. Ducimus cupiditate error. Sint eveniet recusandae.", - "description": "Autem harum eum. Corporis delectus similique. Temporibus perspiciatis sed.", - "severity": "medium", - "precedence": 5293, - "identifier": { - "href": "http://hodkiewicz-kuhic.example/gabriel_wyman", - "label": "Halfred Greenhand" - }, - "references": [ - { - "href": "http://satterfield.example/darren.hessel", - "label": "Adalbert Bolger" - }, - { - "href": "http://gislason.test/belva_mann", - "label": "Celebrindor" - }, - { - "href": "http://herman.example/melida_ohara", - "label": "Turambar" - }, - { - "href": "http://roberts-emard.example/maud_doyle", - "label": "Hirgon" - }, - { - "href": "http://denesik-spencer.example/doyle", - "label": "Gildis" - } - ], - "value_checks": null, - "remediation_available": false, - "rule_group_id": "cdd05f83-6fe1-4edf-9090-389f945149c8", - "type": "rule" - }, - { - "id": "1ecd0508-63c7-41dd-91dc-5b1742108e91", - "ref_id": "xccdf_org.ssgproject.content_rule_6ed5e1b46e779203d80ebcddfb09b313", - "title": "Labore soluta qui omnis.", - "rationale": "Deleniti animi modi. Incidunt sunt ratione. Sunt molestias id.", - "description": "Qui impedit qui. Adipisci recusandae vel. Ut expedita pariatur.", - "severity": "medium", - "precedence": 112, - "identifier": { - "href": "http://wolff.test/dreama_stracke", - "label": "Gléowine" - }, - "references": [ - { - "href": "http://okon.example/reuben", - "label": "Ciryandil" - }, - { - "href": "http://fritsch.test/mose.thompson", - "label": "Glóin" - }, - { - "href": "http://ryan-rohan.test/chadwick", - "label": "Marach" - }, - { - "href": "http://stroman.test/zackary.oberbrunner", - "label": "Rose Gardner" - }, - { - "href": "http://klein.example/rea", - "label": "Orodreth" - } - ], - "value_checks": null, - "remediation_available": false, - "rule_group_id": "a0be2dab-8157-4024-9547-182a73ebe3e6", - "type": "rule" - }, - { - "id": "3b0e748b-1a04-4743-9ddf-b434f3950de5", - "ref_id": "xccdf_org.ssgproject.content_rule_354a2793b6f113a104d658f0ac4497e3", - "title": "Consequuntur earum autem velit.", - "rationale": "Exercitationem quo molestiae. Quaerat dolorum adipisci. Et autem quo.", - "description": "Et voluptatem non. Qui est ut. Repellendus provident quisquam.", - "severity": "medium", - "precedence": 8245, - "identifier": { - "href": "http://koss-oconner.test/kirby", - "label": "Minardil" - }, - "references": [ - { - "href": "http://rowe.test/robt", - "label": "Hallatan" - }, - { - "href": "http://williamson-koch.example/britt", - "label": "Ar-Sakalthôr" - }, - { - "href": "http://hoeger-gutmann.test/verline.spinka", - "label": "Asgon" - }, - { - "href": "http://lind.example/orville", - "label": "Odo Proudfoot" - }, - { - "href": "http://blanda.test/kendrick", - "label": "Lúthien" - } - ], - "value_checks": null, - "remediation_available": false, - "rule_group_id": "ba5fdb17-1df5-406a-b451-6a3acd5cf8a1", - "type": "rule" - }, - { - "id": "3ecedd7d-b41f-45c1-b05d-371fd9b5dcae", - "ref_id": "xccdf_org.ssgproject.content_rule_fe9e3caeab1f6cfd329206aae9bc7d7a", - "title": "Praesentium quo nostrum est.", - "rationale": "Excepturi magni omnis. Quam amet cumque. Et at ipsam.", - "description": "Ut sequi id. Illo aut consectetur. Nostrum rerum optio.", - "severity": "high", - "precedence": 2022, - "identifier": { - "href": "http://kertzmann-barton.example/kendall", - "label": "Beldis" - }, - "references": [ - { - "href": "http://parisian-quigley.example/darryl.gulgowski", - "label": "Ciryatur" - }, - { - "href": "http://glover-stamm.test/chang", - "label": "Dior" - }, - { - "href": "http://wolff-mcglynn.test/joe", - "label": "Théoden" - }, - { - "href": "http://wilkinson.example/genaro", - "label": "Freca" - }, - { - "href": "http://parker-dare.test/brent", - "label": "Tanta Hornblower" - } - ], - "value_checks": null, - "remediation_available": false, - "rule_group_id": "79d094bd-e317-4537-9b99-edf745d560bf", - "type": "rule" - }, - { - "id": "448bfeb5-7623-46ed-83a8-e3a855b57d2f", - "ref_id": "xccdf_org.ssgproject.content_rule_e54f2569a53fcdfdbd90f24798ea9da6", - "title": "Ab quibusdam nihil in.", - "rationale": "Aut molestiae amet. Fugiat velit quam. Molestiae dignissimos eos.", - "description": "Et ut et. Libero nulla ad. Provident in sint.", - "severity": "high", - "precedence": 8607, - "identifier": { - "href": "http://bailey.example/julianna_klein", - "label": "Finwë" - }, - "references": [ - { - "href": "http://okon.test/hoyt_goyette", - "label": "Daisy Gamgee" - }, - { - "href": "http://kozey.example/adam_willms", - "label": "Marach" - }, - { - "href": "http://tillman.example/mervin.oconnell", - "label": "Fosco Baggins" - }, - { - "href": "http://feeney.example/brandon", - "label": "Dwalin" - }, - { - "href": "http://huels-brekke.example/carlo", - "label": "Frerin" - } - ], - "value_checks": null, - "remediation_available": false, - "rule_group_id": "29480bda-025d-494f-bb39-b656e457f1aa", - "type": "rule" - }, - { - "id": "4a99118e-f866-4116-aae3-f8ac2d39f54f", - "ref_id": "xccdf_org.ssgproject.content_rule_ddb33ef03910942b712518cfee8c43f1", - "title": "Corporis rerum ut dolores.", - "rationale": "Tenetur exercitationem qui. Sunt et minus. Enim est minima.", - "description": "Et nesciunt blanditiis. Fuga suscipit ut. Reiciendis voluptatem eligendi.", - "severity": "high", - "precedence": 1240, - "identifier": { - "href": "http://hilpert-hoppe.test/max", - "label": "Dírhael" - }, - "references": [ - { - "href": "http://walsh.example/kaila.haag", - "label": "Rudibert Bolger" - }, - { - "href": "http://jacobson.example/ashton.kris", - "label": "Quennar" - }, - { - "href": "http://klocko.test/casandra", - "label": "Amlach" - }, - { - "href": "http://lueilwitz-abernathy.test/maira", - "label": "Bard" - }, - { - "href": "http://bode.example/aaron", - "label": "Pervinca Took" - } - ], - "value_checks": null, - "remediation_available": false, - "rule_group_id": "49d4db5a-222d-4ccb-811c-105dbf06639e", - "type": "rule" - }, - { - "id": "51799ff2-7fbb-48b7-9d6a-6cb50999c2d6", - "ref_id": "xccdf_org.ssgproject.content_rule_b6db05ac1fd6e458270fe69e8251f026", - "title": "Nihil autem deleniti ab.", - "rationale": "Voluptate esse incidunt. Esse dolore est. Numquam velit possimus.", - "description": "Doloribus in unde. Incidunt totam quia. Veritatis adipisci possimus.", - "severity": "medium", - "precedence": 7009, - "identifier": { - "href": "http://satterfield.test/trey_abshire", - "label": "Nienor" - }, - "references": [ - { - "href": "http://frami-roob.test/pasquale.streich", - "label": "Chica Chubb" - }, - { - "href": "http://ankunding.example/oliva_waters", - "label": "Snaga" - }, - { - "href": "http://kreiger.example/caitlyn_renner", - "label": "Fíli" - }, - { - "href": "http://mann.test/don", - "label": "Hending" - }, - { - "href": "http://boyer.test/randal.halvorson", - "label": "Dernhelm" - } - ], - "value_checks": null, - "remediation_available": false, - "rule_group_id": "357f4779-c7fa-40f9-9e1c-081af3e352d2", - "type": "rule" - }, - { - "id": "5a4a1613-1a6c-40b0-a779-fabd969858c4", - "ref_id": "xccdf_org.ssgproject.content_rule_3f36d14ccd80280b803ce51c82d295ea", - "title": "Animi illo ut in.", - "rationale": "Exercitationem a voluptas. Hic fugiat quo. Beatae sequi nihil.", - "description": "Iure similique at. Quia consectetur explicabo. Ea dolores sit.", - "severity": "medium", - "precedence": 7047, - "identifier": { - "href": "http://koss-hane.example/augustine", - "label": "Othrondir" - }, - "references": [ - { - "href": "http://boyle-rosenbaum.test/hyon", - "label": "Sigismond Took" - }, - { - "href": "http://crona-feil.example/nannette", - "label": "Beorn" - }, - { - "href": "http://hyatt.test/bonny", - "label": "Belen" - }, - { - "href": "http://lemke.test/sandy_dicki", - "label": "Galadriel" - }, - { - "href": "http://greenfelder.test/arnold", - "label": "Elrond" - } - ], - "value_checks": null, - "remediation_available": false, - "rule_group_id": "690c0d8c-3430-4a4e-8922-537c2be7b544", - "type": "rule" - }, - { - "id": "68ba4df5-8b1f-42cc-80a0-59aef0380cf6", - "ref_id": "xccdf_org.ssgproject.content_rule_45565b485ab21dcaf54bab248cf84afc", - "title": "Ut quia voluptas voluptatem.", - "rationale": "Saepe voluptate quis. Officia deleniti asperiores. Blanditiis consequatur veniam.", - "description": "Eveniet a autem. Ut ut voluptate. In odio ut.", - "severity": "high", - "precedence": 5102, - "identifier": { - "href": "http://blick.test/alvin_streich", - "label": "Wilibald Bolger" - }, - "references": [ - { - "href": "http://ward.example/carter", - "label": "Nimloth of Doriath" - }, - { - "href": "http://johnston.test/paola", - "label": "Goldwine" - }, - { - "href": "http://goyette.example/nathan.mante", - "label": "Wilibald Bolger" - }, - { - "href": "http://brekke-mohr.example/cory", - "label": "Théodwyn" - }, - { - "href": "http://nicolas.example/hobert", - "label": "Berylla Boffin" - } - ], - "value_checks": null, - "remediation_available": false, - "rule_group_id": "ff6985df-ef7d-4981-a2f0-6cd5d079e541", - "type": "rule" - } - ], - "meta": { - "total": 25, - "limit": 10, - "offset": 0 - }, - "links": { - "first": "/api/compliance/v2/policies/41dd1a93-2784-4bd3-a148-9dabb9d89a0d/tailorings/a4ad7bde-bdd0-4f4d-8aee-42105266631e/rules?limit=10&offset=0", - "last": "/api/compliance/v2/policies/41dd1a93-2784-4bd3-a148-9dabb9d89a0d/tailorings/a4ad7bde-bdd0-4f4d-8aee-42105266631e/rules?limit=10&offset=20", - "next": "/api/compliance/v2/policies/41dd1a93-2784-4bd3-a148-9dabb9d89a0d/tailorings/a4ad7bde-bdd0-4f4d-8aee-42105266631e/rules?limit=10&offset=10" - } - }, - "summary": "", - "description": "" - } - }, - "schema": { - "type": "object", - "properties": { - "meta": { - "$ref": "#/components/schemas/metadata" - }, - "links": { - "$ref": "#/components/schemas/links" - }, - "data": { - "type": "array", - "items": { - "properties": { - "schema": { - "$ref": "#/components/schemas/rule" - } - } - } - } - } - } - } - } - } - }, - "requestBody": { - "content": { - "application/vnd.api+json": { - "schema": { - "type": "object", - "properties": { - "ids": { - "type": "array", - "items": { - "type": "string" - } - } - } - } - } - } - } - } - }, - "/policies/{policy_id}/tailorings/{tailoring_id}/rules/{rule_id}": { - "patch": { - "summary": "Assign a Rule to a Tailoring", - "parameters": [ - { - "name": "X-RH-IDENTITY", - "in": "header", - "schema": { - "type": "string" - }, - "description": "For internal use only" - }, - { - "name": "policy_id", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "tailoring_id", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "rule_id", - "in": "path", - "required": true, - "description": "UUID or a ref_id with '.' characters replaced with '-'", - "schema": { - "type": "string" - } - } - ], - "tags": [ - "Policies" - ], - "description": "Add a rule to a specific tailoring.", - "operationId": "AssignRule", - "responses": { - "202": { - "description": "Assigns a Rule to a Tailoring", - "content": { - "application/vnd.api+json": { - "examples": { - "Assigns a Rule to a Tailoring": { - "value": { - "data": { - "id": "2688b651-ed1e-419d-a106-0ae43aefeace", - "ref_id": "xccdf_org.ssgproject.content_rule_62007b6bd3cc202262d3f5466c2f9d5f", - "title": "Veritatis in eligendi voluptatem.", - "rationale": "Et ab provident. Quis vel libero. Sunt voluptatum aperiam.", - "description": "Aut qui officiis. Ab ut beatae. Ipsum perspiciatis enim.", - "severity": "low", - "precedence": 732, - "identifier": { - "href": "http://white.test/aldo", - "label": "Hathol" - }, - "references": [ - { - "href": "http://davis-ondricka.example/rosario_maggio", - "label": "Landroval" - }, - { - "href": "http://robel.test/karl", - "label": "Eluréd" - }, - { - "href": "http://powlowski.example/hyman", - "label": "Polo Baggins" - }, - { - "href": "http://hayes.test/ciera_daniel", - "label": "Vardamir" - }, - { - "href": "http://dickens.example/glen_nicolas", - "label": "Théodred" - } - ], - "value_checks": null, - "remediation_available": false, - "rule_group_id": "83f83188-f2fe-4a97-9a97-4aa72224f451", - "type": "rule" - } - }, - "summary": "", - "description": "" - } - } - } - } - }, - "404": { - "description": "Returns with Not found", - "content": { - "application/vnd.api+json": { - "examples": { - "Returns with Not found": { - "value": { - "errors": [ - "V2::Rule not found with ID 08ce7f0a-aa37-4454-b3f2-6d51d905ecf7" - ] - }, - "summary": "", - "description": "" - } - } - } - } - } - } - }, - "delete": { - "summary": "Unassign a Rule from a Tailoring", - "parameters": [ - { - "name": "X-RH-IDENTITY", - "in": "header", - "schema": { - "type": "string" - }, - "description": "For internal use only" - }, - { - "name": "policy_id", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "tailoring_id", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "rule_id", - "in": "path", - "required": true, - "description": "UUID or a ref_id with '.' characters replaced with '-'", - "schema": { - "type": "string" - } - } - ], - "tags": [ - "Policies" - ], - "description": "Use this to remove a rule from your tailoring.", - "operationId": "UnassignRule", - "responses": { - "202": { - "description": "Unassigns a Rule from a Tailoring", - "content": { - "application/vnd.api+json": { - "examples": { - "Unassigns a Rule from a Tailoring": { - "value": { - "data": { - "id": "1c21b25d-7e6f-47e0-b0d8-e15e4c3e3c9c", - "ref_id": "xccdf_org.ssgproject.content_rule_8cbe493da1038097f410e4554be8acc8", - "title": "Tenetur saepe voluptatem optio.", - "rationale": "Earum quia non. Dolor nihil hic. Aspernatur sint aut.", - "description": "Reprehenderit ducimus esse. Optio repellat dolor. Ut omnis et.", - "severity": "high", - "precedence": 3999, - "identifier": { - "href": "http://reichert.example/katia", - "label": "Gwaihir" - }, - "references": [ - { - "href": "http://thompson-parker.example/felipe_abbott", - "label": "Holfast Gardner" - }, - { - "href": "http://hessel.test/tamika.hoeger", - "label": "Borthand" - }, - { - "href": "http://lind.example/jeffry_runolfsson", - "label": "Malvegil" - }, - { - "href": "http://christiansen.test/brenna", - "label": "Túrin" - }, - { - "href": "http://parker.example/hai", - "label": "Saradas Brandybuck" - } - ], - "value_checks": null, - "remediation_available": false, - "rule_group_id": "9264e63c-edb2-4cfe-9322-85e909e214b8", - "type": "rule" - } - }, - "summary": "", - "description": "" - } - } - } - } - }, - "404": { - "description": "Returns with Not found", - "content": { - "application/vnd.api+json": { - "examples": { - "Description of an error when unassigning a non-existing Rule": { - "value": { - "errors": [ - "V2::Rule not found with ID 78f9e071-9b7d-49f6-9f23-5a8cb32fb5b7" - ] - }, - "summary": "", - "description": "" - } - } - } - } - } - } - } - }, - "/security_guides": { - "get": { - "summary": "Request Security Guides", - "parameters": [ - { - "name": "X-RH-IDENTITY", - "in": "header", - "schema": { - "type": "string" - }, - "description": "For internal use only" - }, - { - "name": "limit", - "in": "query", - "required": false, - "description": "Number of items to return per page", - "schema": { - "type": "number", - "maximum": 100, - "minimum": 1, - "default": 10 - } - }, - { - "name": "offset", - "in": "query", - "required": false, - "description": "Offset of first item of paginated response", - "schema": { - "type": "integer", - "minimum": 0, - "default": 0 - } - }, - { - "name": "ids_only", - "in": "query", - "required": false, - "description": "Indicates whether to return only resource IDs.", - "schema": { - "type": "boolean" - } - }, - { - "name": "sort_by", - "in": "query", - "required": false, - "description": "Attribute and direction to sort the items by. Represented by an array of fields with an optional direction (`:asc` or `:desc`).

If no direction is selected, `:asc` is used by default.", - "schema": { - "type": "array", - "items": { - "enum": [ - "title", - "version", - "os_major_version", - "title:asc", - "title:desc", - "version:asc", - "version:desc", - "os_major_version:asc", - "os_major_version:desc" - ] - } - } - }, - { - "name": "filter", - "in": "query", - "required": false, - "description": "Query string to filter items by their attributes. Compliant with scoped_search query language. However, only `=` or `!=` (resp. `<>`) operators are supported.

Security Guides are searchable using attributes `title`, `version`, `ref_id`, `os_major_version`, `profile_ref_id`, and `supported_profile`

(e.g.: `(field_1=something AND field_2!=\"something else\") OR field_3>40`)", - "schema": { - "type": "string" - } - } - ], - "tags": [ - "Content" - ], - "description": "Retrieve a list of all SCAP security guides.", - "operationId": "SecurityGuides", - "responses": { - "200": { - "description": "Lists Security Guides", - "content": { - "application/vnd.api+json": { - "examples": { - "List of Security Guides": { - "value": { - "data": [ - { - "id": "05162585-b31b-405d-ae0b-165c2c3201d7", - "ref_id": "xccdf_org.ssgproject.content_benchmark_RHEL-7", - "title": "Quo non deserunt neque.", - "version": "100.83.8", - "description": "Voluptatem iste quae. Reiciendis debitis fugit. Delectus ea omnis.", - "os_major_version": 7, - "type": "security_guide" - }, - { - "id": "096f669e-736b-435c-a27a-871bbb0f8e50", - "ref_id": "xccdf_org.ssgproject.content_benchmark_RHEL-7", - "title": "Rerum laboriosam nostrum quidem.", - "version": "100.83.15", - "description": "Esse a vero. Eligendi et modi. Ut ut tempora.", - "os_major_version": 7, - "type": "security_guide" - }, - { - "id": "0aab5284-f62e-4c57-88ac-ead4e6859e98", - "ref_id": "xccdf_org.ssgproject.content_benchmark_RHEL-7", - "title": "Dolor voluptatem at facere.", - "version": "100.82.43", - "description": "Magnam sapiente dolores. Et sint et. Incidunt iste voluptas.", - "os_major_version": 7, - "type": "security_guide" - }, - { - "id": "141952be-f49b-48c3-85d9-b6e331cd4d48", - "ref_id": "xccdf_org.ssgproject.content_benchmark_RHEL-7", - "title": "Iusto totam nemo reprehenderit.", - "version": "100.83.16", - "description": "Numquam voluptatem hic. Modi earum itaque. Autem magni et.", - "os_major_version": 7, - "type": "security_guide" - }, - { - "id": "210ad79f-1969-43fe-8280-abda48bc49db", - "ref_id": "xccdf_org.ssgproject.content_benchmark_RHEL-7", - "title": "Ex est eius sunt.", - "version": "100.83.1", - "description": "Ipsum consectetur doloremque. Rerum quo autem. Perferendis eos reiciendis.", - "os_major_version": 7, - "type": "security_guide" - }, - { - "id": "26a73ee6-644b-4d01-ac6d-43f03ba621e0", - "ref_id": "xccdf_org.ssgproject.content_benchmark_RHEL-7", - "title": "Rem ipsum necessitatibus ea.", - "version": "100.83.3", - "description": "Numquam inventore ad. Occaecati harum veritatis. Quis atque aliquam.", - "os_major_version": 7, - "type": "security_guide" - }, - { - "id": "2a966333-ce03-4046-8b7a-808672fedd9b", - "ref_id": "xccdf_org.ssgproject.content_benchmark_RHEL-7", - "title": "Tempore voluptate et voluptatibus.", - "version": "100.82.44", - "description": "Nesciunt enim iusto. Nam iure sit. Nulla tenetur omnis.", - "os_major_version": 7, - "type": "security_guide" - }, - { - "id": "3aa4cbeb-445e-406d-80ee-45cfb3aafd0a", - "ref_id": "xccdf_org.ssgproject.content_benchmark_RHEL-7", - "title": "Quidem quam velit sunt.", - "version": "100.83.10", - "description": "Sit et tempore. Magnam aliquam eum. Atque cumque quis.", - "os_major_version": 7, - "type": "security_guide" - }, - { - "id": "42febb18-2f7f-4dfd-a8d4-4aae65490d61", - "ref_id": "xccdf_org.ssgproject.content_benchmark_RHEL-7", - "title": "Delectus modi ut officiis.", - "version": "100.83.6", - "description": "Atque hic excepturi. Libero quia id. Velit et aut.", - "os_major_version": 7, - "type": "security_guide" - }, - { - "id": "4efc0ac0-c807-4f27-bd93-a7c93e074629", - "ref_id": "xccdf_org.ssgproject.content_benchmark_RHEL-7", - "title": "Est explicabo nulla quis.", - "version": "100.83.12", - "description": "Sit pariatur qui. Culpa suscipit enim. Accusamus saepe iusto.", - "os_major_version": 7, - "type": "security_guide" - } - ], - "meta": { - "total": 25, - "limit": 10, - "offset": 0 - }, - "links": { - "first": "/api/compliance/v2/security_guides?limit=10&offset=0", - "last": "/api/compliance/v2/security_guides?limit=10&offset=20", - "next": "/api/compliance/v2/security_guides?limit=10&offset=10" - } - }, - "summary": "", - "description": "" - }, - "List of Security Guides sorted by \"os_major_version:asc\"": { - "value": { - "data": [ - { - "id": "00466a3e-ed93-4c06-b6ca-ddfcbbd22aa1", - "ref_id": "xccdf_org.ssgproject.content_benchmark_RHEL-7", - "title": "Aliquid earum sed rerum.", - "version": "100.83.30", - "description": "Qui hic voluptates. Sit doloremque est. Possimus dolore expedita.", - "os_major_version": 7, - "type": "security_guide" - }, - { - "id": "0863ce26-a85d-40aa-a633-b693011bc662", - "ref_id": "xccdf_org.ssgproject.content_benchmark_RHEL-7", - "title": "Nisi voluptas sapiente perspiciatis.", - "version": "100.83.37", - "description": "Et voluptas voluptatem. Provident soluta id. Autem dignissimos quia.", - "os_major_version": 7, - "type": "security_guide" - }, - { - "id": "165fccf8-4c3e-4d4c-9098-4224cc03b852", - "ref_id": "xccdf_org.ssgproject.content_benchmark_RHEL-7", - "title": "Non ut quia quia.", - "version": "100.83.36", - "description": "Dolore et beatae. Omnis et ipsum. Optio eligendi nihil.", - "os_major_version": 7, - "type": "security_guide" - }, - { - "id": "1a1075ca-d908-4b14-a992-26114f82eadc", - "ref_id": "xccdf_org.ssgproject.content_benchmark_RHEL-7", - "title": "Velit aut temporibus assumenda.", - "version": "100.83.29", - "description": "Qui voluptate veniam. Sit temporibus magnam. Ut fuga in.", - "os_major_version": 7, - "type": "security_guide" - }, - { - "id": "1a720e9a-d36e-4102-8779-aae4c73f1e44", - "ref_id": "xccdf_org.ssgproject.content_benchmark_RHEL-7", - "title": "Quos reprehenderit alias esse.", - "version": "100.83.41", - "description": "In quam culpa. Illo veniam iure. Voluptatem explicabo vel.", - "os_major_version": 7, - "type": "security_guide" - }, - { - "id": "212052fc-4c5e-40b1-a68f-80849ce38419", - "ref_id": "xccdf_org.ssgproject.content_benchmark_RHEL-7", - "title": "Dolores ad velit ea.", - "version": "100.83.28", - "description": "Omnis fugit quod. Doloremque esse fuga. Ad animi molestiae.", - "os_major_version": 7, - "type": "security_guide" - }, - { - "id": "22b5794c-61c8-4bd4-8500-efae4991ff6f", - "ref_id": "xccdf_org.ssgproject.content_benchmark_RHEL-7", - "title": "Esse vel autem odio.", - "version": "100.83.39", - "description": "Animi qui corrupti. Architecto aliquam ratione. Quaerat et et.", - "os_major_version": 7, - "type": "security_guide" - }, - { - "id": "260706f4-62f8-4eae-8f72-5c1f7c509049", - "ref_id": "xccdf_org.ssgproject.content_benchmark_RHEL-7", - "title": "Voluptas soluta quia et.", - "version": "100.83.18", - "description": "Voluptatum nihil ab. Quaerat rerum aut. Iste est optio.", - "os_major_version": 7, - "type": "security_guide" - }, - { - "id": "28e01b81-95bc-459f-bd73-59c14ae3db61", - "ref_id": "xccdf_org.ssgproject.content_benchmark_RHEL-7", - "title": "Omnis aut non quod.", - "version": "100.83.27", - "description": "Temporibus non blanditiis. Vel ut doloremque. Sunt quae error.", - "os_major_version": 7, - "type": "security_guide" - }, - { - "id": "2a168238-e390-48b0-bc62-ea4c76a17ebe", - "ref_id": "xccdf_org.ssgproject.content_benchmark_RHEL-7", - "title": "Officia ab occaecati nostrum.", - "version": "100.83.24", - "description": "Quas accusantium odit. Ea et quia. Reiciendis doloremque numquam.", - "os_major_version": 7, - "type": "security_guide" - } - ], - "meta": { - "total": 25, - "limit": 10, - "offset": 0, - "sort_by": "os_major_version" - }, - "links": { - "first": "/api/compliance/v2/security_guides?limit=10&offset=0&sort_by=os_major_version", - "last": "/api/compliance/v2/security_guides?limit=10&offset=20&sort_by=os_major_version", - "next": "/api/compliance/v2/security_guides?limit=10&offset=10&sort_by=os_major_version" - } - }, - "summary": "", - "description": "" - }, - "List of Security Guides filtered by \"(os_major_version=8)\"": { - "value": { - "data": [], - "meta": { - "total": 0, - "filter": "(os_major_version=8)", - "limit": 10, - "offset": 0 - }, - "links": { - "first": "/api/compliance/v2/security_guides?filter=%28os_major_version%3D8%29&limit=10&offset=0", - "last": "/api/compliance/v2/security_guides?filter=%28os_major_version%3D8%29&limit=10&offset=0" - } - }, - "summary": "", - "description": "" - } - }, - "schema": { - "type": "object", - "properties": { - "meta": { - "$ref": "#/components/schemas/metadata" - }, - "links": { - "$ref": "#/components/schemas/links" - }, - "data": { - "type": "array", - "items": { - "properties": { - "schema": { - "$ref": "#/components/schemas/security_guide" - } - } - } - } - } - } - } - } - }, - "422": { - "description": "Returns with Unprocessable Content", - "content": { - "application/vnd.api+json": { - "examples": { - "Description of an error when sorting by incorrect parameter": { - "value": { - "errors": [ - "Result cannot be sorted by the 'description' column." - ] - }, - "summary": "", - "description": "" - }, - "Description of an error when requesting higher limit than supported": { - "value": { - "errors": [ - "Invalid parameter: limit must be less than or equal to 100" - ] - }, - "summary": "", - "description": "" - } - }, - "schema": { - "$ref": "#/components/schemas/errors" - } - } - } - } - } - } - }, - "/security_guides/os_versions": { - "get": { - "summary": "Request the list of available OS versions", - "parameters": [ - { - "name": "X-RH-IDENTITY", - "in": "header", - "schema": { - "type": "string" - }, - "description": "For internal use only" - }, - { - "name": "filter", - "in": "query", - "required": false, - "description": "Query string to filter items by their attributes. Compliant with scoped_search query language. However, only `=` or `!=` (resp. `<>`) operators are supported.

Systems are searchable using attributes `display_name`, `os_version`, `os_major_version`, `os_minor_version`, `assigned_or_scanned`, `never_reported`, `group_name`, `policies`, and `profile_ref_id`

(e.g.: `(field_1=something AND field_2!=\"something else\") OR field_3>40`)", - "schema": { - "type": "string" - } - } - ], - "tags": [ - "Content" - ], - "description": "This feature is exclusively used by the frontend", - "operationId": "SecurityGuidesOS", - "deprecated": true, - "responses": { - "200": { - "description": "Lists available OS versions", - "content": { - "application/vnd.api+json": { - "examples": { - "List of available OS versions": { - "value": [ - 7 - ], - "summary": "", - "description": "" - } - }, - "schema": { - "type": "array", - "items": { - "type": "integer" - } - } - } - } - } - } - } - }, - "/security_guides/{security_guide_id}": { - "get": { - "summary": "Request a Security Guide", - "parameters": [ - { - "name": "X-RH-IDENTITY", - "in": "header", - "schema": { - "type": "string" - }, - "description": "For internal use only" - }, - { - "name": "security_guide_id", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - } - ], - "tags": [ - "Content" - ], - "description": "Retrieve a specific security guide.", - "operationId": "SecurityGuide", - "responses": { - "200": { - "description": "Returns a Security Guide", - "content": { - "application/vnd.api+json": { - "examples": { - "Returns a Security Guide": { - "value": { - "data": { - "id": "b33c9b6f-05c8-4d5f-9375-b4b6aeb8cb0b", - "ref_id": "xccdf_org.ssgproject.content_benchmark_RHEL-7", - "title": "Accusantium quos pariatur commodi.", - "version": "100.85.43", - "description": "Ut nostrum facere. Enim eveniet aut. Doloremque eaque sit.", - "os_major_version": 7, - "type": "security_guide" - } - }, - "summary": "", - "description": "" - } - }, - "schema": { - "type": "object", - "properties": { - "data": { - "type": "object", - "properties": { - "schema": { - "$ref": "#/components/schemas/security_guide" - } - } - } - } - } - } - } - }, - "404": { - "description": "Returns with Not Found", - "content": { - "application/vnd.api+json": { - "examples": { - "Description of an error when requesting a non-existing Security Guide": { - "value": { - "errors": [ - "V2::SecurityGuide not found with ID 4c33859a-7c16-441b-a1fc-a03fcde22a64" - ] - }, - "summary": "", - "description": "" - } - }, - "schema": { - "$ref": "#/components/schemas/errors" - } - } - } - } - } - } - }, - "/security_guides/{security_guide_id}/rule_tree": { - "get": { - "summary": "Request the Rule Tree of a Security Guide", - "parameters": [ - { - "name": "X-RH-IDENTITY", - "in": "header", - "schema": { - "type": "string" - }, - "description": "For internal use only" - }, - { - "name": "security_guide_id", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - } - ], - "tags": [ - "Content" - ], - "description": "Returns rule tree of a security guide.", - "operationId": "SecurityGuideRuleTree", - "deprecated": true, - "responses": { - "200": { - "description": "Returns the Rule Tree of a Security Guide", - "content": { - "application/vnd.api+json": { - "examples": { - "Returns the Rule Tree of a Security Guide": { - "value": [ - { - "id": "22835aef-1555-4312-9377-dae4fe8cf5d3", - "type": "rule_group", - "children": [ - { - "id": "c1d16875-b002-49f0-ad6e-df073ffd5e99", - "type": "rule" - } - ] - }, - { - "id": "b32e54a2-8231-4215-9124-23ef1d35da1b", - "type": "rule_group", - "children": [ - { - "id": "078f2766-deb7-4db2-a772-3201638f6c6d", - "type": "rule" - } - ] - }, - { - "id": "b872023e-32cd-4ff4-b415-e99ecb688635", - "type": "rule_group", - "children": [ - { - "id": "3d819a72-a03f-4d2f-a291-85e555ec4578", - "type": "rule" - } - ] - }, - { - "id": "be75c45b-979c-41bb-b41b-970841ac0edd", - "type": "rule_group", - "children": [ - { - "id": "6177ece1-0cfe-43f7-a286-a0e603383775", - "type": "rule" - } - ] - }, - { - "id": "6d6e43af-2b0a-445c-8c38-235ba38d0f4e", - "type": "rule_group", - "children": [ - { - "id": "986dc4e2-181c-49cd-bb55-21d947020fa1", - "type": "rule" - } - ] - }, - { - "id": "8e50ba96-dd9b-458d-9e01-53d2334e5da1", - "type": "rule_group", - "children": [ - { - "id": "a7118c36-e709-404b-ac8a-cc2de69b2d4a", - "type": "rule" - } - ] - }, - { - "id": "1bb040b6-00c8-4652-8e7a-1f24567deb31", - "type": "rule_group", - "children": [ - { - "id": "262fe46d-b6a3-48d0-99fd-b3da4f7dbc4e", - "type": "rule" - } - ] - }, - { - "id": "703fae9d-f169-490e-a7de-191b56b02d3d", - "type": "rule_group", - "children": [ - { - "id": "52f3c806-263d-4b27-bce9-ce5747c3f5d4", - "type": "rule" - } - ] - }, - { - "id": "267834f8-26a2-441a-a8bd-35a77837ccae", - "type": "rule_group", - "children": [ - { - "id": "8fa56c64-f63a-43a5-8198-2a38be046365", - "type": "rule" - } - ] - }, - { - "id": "f5815895-927d-4411-90a8-15ffa6739188", - "type": "rule_group", - "children": [ - { - "id": "c061a498-1d57-4190-af7e-e604b1e070bb", - "type": "rule" - } - ] - } - ], - "summary": "", - "description": "" - } - }, - "schema": { - "$ref": "#/components/schemas/rule_tree" - } - } - } - }, - "404": { - "description": "Returns with Not Found", - "content": { - "application/vnd.api+json": { - "examples": { - "Description of an error when requesting a non-existing Security Guide": { - "value": { - "errors": [ - "V2::SecurityGuide not found with ID 4d9bb6a2-377f-4b0f-acbd-37c43f1a740f" - ] - }, - "summary": "", - "description": "" - } - }, - "schema": { - "$ref": "#/components/schemas/errors" - } - } - } - } - } - } - }, - "/security_guides/supported_profiles": { - "get": { - "summary": "Request Supported Profiles", - "parameters": [ - { - "name": "X-RH-IDENTITY", - "in": "header", - "schema": { - "type": "string" - }, - "description": "For internal use only" - }, - { - "name": "limit", - "in": "query", - "required": false, - "description": "Number of items to return per page", - "schema": { - "type": "number", - "maximum": 100, - "minimum": 1, - "default": 10 - } - }, - { - "name": "offset", - "in": "query", - "required": false, - "description": "Offset of first item of paginated response", - "schema": { - "type": "integer", - "minimum": 0, - "default": 0 - } - }, - { - "name": "ids_only", - "in": "query", - "required": false, - "description": "Indicates whether to return only resource IDs.", - "schema": { - "type": "boolean" - } - }, - { - "name": "sort_by", - "in": "query", - "required": false, - "description": "Attribute and direction to sort the items by. Represented by an array of fields with an optional direction (`:asc` or `:desc`).

If no direction is selected, `:asc` is used by default.", - "schema": { - "type": "array", - "items": { - "enum": [ - "title", - "os_major_version", - "os_minor_versions", - "title:asc", - "title:desc", - "os_major_version:asc", - "os_major_version:desc", - "os_minor_versions:asc", - "os_minor_versions:desc" - ] - } - } - }, - { - "name": "filter", - "in": "query", - "required": false, - "description": "Query string to filter items by their attributes. Compliant with scoped_search query language. However, only `=` or `!=` (resp. `<>`) operators are supported.

Supported Profiles are searchable using attributes `os_major_version`, `title`, and `ref_id`

(e.g.: `(field_1=something AND field_2!=\"something else\") OR field_3>40`)", - "schema": { - "type": "string" - } - } - ], - "tags": [ - "Content" - ], - "description": "Retrieve the list of profiles supported by particular RHEL versions.", - "operationId": "SupportedProfiles", - "responses": { - "200": { - "description": "Lists Supported Profiles", - "content": { - "application/vnd.api+json": { - "examples": { - "List of Supported Profiles": { - "value": { - "data": [ - { - "id": "835e1843-22f4-4bac-b26e-3fce575f7f20", - "title": "Voluptatem eos expedita est.", - "description": "Quis natus sapiente. Et eligendi quia. Repellat ut est.", - "ref_id": "xccdf_org.ssgproject.content_profile_426bab394c8c3179e64b8d7c9df706d6", - "security_guide_id": "3b526888-4f54-456e-8e99-d5182a878909", - "security_guide_version": "100.86.22", - "os_major_version": 7, - "os_minor_versions": [ - 3, - 2, - 1 - ], - "type": "supported_profile" - } - ], - "meta": { - "total": 1, - "limit": 10, - "offset": 0 - }, - "links": { - "first": "/api/compliance/v2/security_guides/supported_profiles?limit=10&offset=0", - "last": "/api/compliance/v2/security_guides/supported_profiles?limit=10&offset=0" - } - }, - "summary": "", - "description": "" - }, - "List of Supported Profiles sorted by \"os_major_version:asc\"": { - "value": { - "data": [ - { - "id": "5274b515-4a06-4a32-943c-54900d101992", - "title": "Aliquam quis ut qui.", - "description": "Ratione et in. Sint aut et. Consequatur officiis optio.", - "ref_id": "xccdf_org.ssgproject.content_profile_d394f4d9c14161d2c3f55b62353b402f", - "security_guide_id": "902a78c9-c9b8-47d4-b1c5-b6a46f65997f", - "security_guide_version": "100.86.23", - "os_major_version": 7, - "os_minor_versions": [ - 3, - 2, - 1 - ], - "type": "supported_profile" - } - ], - "meta": { - "total": 1, - "limit": 10, - "offset": 0, - "sort_by": "os_major_version" - }, - "links": { - "first": "/api/compliance/v2/security_guides/supported_profiles?limit=10&offset=0&sort_by=os_major_version", - "last": "/api/compliance/v2/security_guides/supported_profiles?limit=10&offset=0&sort_by=os_major_version" - } - }, - "summary": "", - "description": "" - }, - "List of Supported Profiles filtered by \"(os_major_version=8)\"": { - "value": { - "data": [], - "meta": { - "total": 0, - "filter": "(os_major_version=8)", - "limit": 10, - "offset": 0 - }, - "links": { - "first": "/api/compliance/v2/security_guides/supported_profiles?filter=%28os_major_version%3D8%29&limit=10&offset=0", - "last": "/api/compliance/v2/security_guides/supported_profiles?filter=%28os_major_version%3D8%29&limit=10&offset=0" - } - }, - "summary": "", - "description": "" - } - }, - "schema": { - "type": "object", - "properties": { - "meta": { - "$ref": "#/components/schemas/metadata" - }, - "links": { - "$ref": "#/components/schemas/links" - }, - "data": { - "type": "array", - "items": { - "properties": { - "schema": { - "$ref": "#/components/schemas/supported_profile" - } - } - } - } - } - } - } - } - }, - "422": { - "description": "Returns with Unprocessable Content", - "content": { - "application/vnd.api+json": { - "examples": { - "Description of an error when sorting by incorrect parameter": { - "value": { - "errors": [ - "Result cannot be sorted by the 'description' column." - ] - }, - "summary": "", - "description": "" - }, - "Description of an error when requesting higher limit than supported": { - "value": { - "errors": [ - "Invalid parameter: limit must be less than or equal to 100" - ] - }, - "summary": "", - "description": "" - } - }, - "schema": { - "$ref": "#/components/schemas/errors" - } - } - } - } - } - } - }, - "/systems": { - "get": { - "summary": "Request Systems", - "parameters": [ - { - "name": "X-RH-IDENTITY", - "in": "header", - "schema": { - "type": "string" - }, - "description": "For internal use only" - }, - { - "name": "tags", - "in": "query", - "required": false, - "description": "An array of tags to narrow down the search results. In case the value contains symbols used for separators (`/` or `=`), they need to be encoded.
e.g.: `namespace/key=value`, `insights-client/selinux-config=SELINUX%3Denforcing`", - "schema": { - "type": "array", - "items": { - "type": "string" - } - } - }, - { - "name": "limit", - "in": "query", - "required": false, - "description": "Number of items to return per page", - "schema": { - "type": "number", - "maximum": 100, - "minimum": 1, - "default": 10 - } - }, - { - "name": "offset", - "in": "query", - "required": false, - "description": "Offset of first item of paginated response", - "schema": { - "type": "integer", - "minimum": 0, - "default": 0 - } - }, - { - "name": "ids_only", - "in": "query", - "required": false, - "description": "Indicates whether to return only resource IDs.", - "schema": { - "type": "boolean" - } - }, - { - "name": "sort_by", - "in": "query", - "required": false, - "description": "Attribute and direction to sort the items by. Represented by an array of fields with an optional direction (`:asc` or `:desc`).

If no direction is selected, `:asc` is used by default.", - "schema": { - "type": "array", - "items": { - "enum": [ - "display_name", - "os_major_version", - "os_minor_version", - "os_version", - "groups", - "display_name:asc", - "display_name:desc", - "os_major_version:asc", - "os_major_version:desc", - "os_minor_version:asc", - "os_minor_version:desc", - "os_version:asc", - "os_version:desc", - "groups:asc", - "groups:desc" - ] - } - } - }, - { - "name": "filter", - "in": "query", - "required": false, - "description": "Query string to filter items by their attributes. Compliant with scoped_search query language. However, only `=` or `!=` (resp. `<>`) operators are supported.

Systems are searchable using attributes `display_name`, `os_major_version`, `os_minor_version`, `assigned_or_scanned`, `group_name`, `policies`, and `profile_ref_id`

(e.g.: `(field_1=something AND field_2!=\"something else\") OR field_3>40`)", - "schema": { - "type": "string" - } - } - ], - "tags": [ - "Systems" - ], - "description": "List all systems that are accessible when you are logged into your account.", - "operationId": "Systems", - "responses": { - "200": { - "description": "Lists Systems", - "content": { - "application/vnd.api+json": { - "examples": { - "List of Systems": { - "value": { - "data": [ - { - "id": "095406ee-c1fc-4b0c-97b5-042a65da4a15", - "display_name": "gulgowski.example", - "groups": [], - "culled_timestamp": "2035-05-01T11:49:16.985Z", - "stale_timestamp": "2035-04-17T11:49:16.985Z", - "stale_warning_timestamp": "2035-04-24T11:49:16.985Z", - "updated": "2025-04-17T11:49:16.986Z", - "insights_id": null, - "tags": [ - { - "key": "array", - "value": "primary", - "namespace": "transmitting" - }, - { - "key": "driver", - "value": "virtual", - "namespace": "calculating" - }, - { - "key": "matrix", - "value": "neural", - "namespace": "indexing" - }, - { - "key": "feed", - "value": "1080p", - "namespace": "programming" - }, - { - "key": "feed", - "value": "primary", - "namespace": "synthesizing" - } - ], - "type": "system", - "last_check_in": "2035-04-25T11:49:16.985Z", - "os_major_version": 8, - "os_minor_version": 0, - "policies": [] - }, - { - "id": "0964e6ba-a1b4-427d-9f47-6d3a618949de", - "display_name": "sporer-hayes.example", - "groups": [], - "culled_timestamp": "2035-05-01T11:49:17.027Z", - "stale_timestamp": "2035-04-17T11:49:17.027Z", - "stale_warning_timestamp": "2035-04-24T11:49:17.027Z", - "updated": "2025-04-17T11:49:17.027Z", - "insights_id": null, - "tags": [ - { - "key": "circuit", - "value": "neural", - "namespace": "calculating" - }, - { - "key": "firewall", - "value": "virtual", - "namespace": "quantifying" - }, - { - "key": "capacitor", - "value": "online", - "namespace": "programming" - }, - { - "key": "program", - "value": "multi-byte", - "namespace": "transmitting" - }, - { - "key": "monitor", - "value": "open-source", - "namespace": "overriding" - } - ], - "type": "system", - "last_check_in": "2035-04-25T11:49:17.027Z", - "os_major_version": 8, - "os_minor_version": 0, - "policies": [] - }, - { - "id": "0f3cdb19-06a5-45fd-b08a-b714d5580208", - "display_name": "pacocha.example", - "groups": [], - "culled_timestamp": "2035-05-01T11:49:16.969Z", - "stale_timestamp": "2035-04-17T11:49:16.969Z", - "stale_warning_timestamp": "2035-04-24T11:49:16.969Z", - "updated": "2025-04-17T11:49:16.969Z", - "insights_id": null, - "tags": [ - { - "key": "pixel", - "value": "solid state", - "namespace": "bypassing" - }, - { - "key": "panel", - "value": "auxiliary", - "namespace": "quantifying" - }, - { - "key": "port", - "value": "multi-byte", - "namespace": "generating" - }, - { - "key": "program", - "value": "primary", - "namespace": "hacking" - }, - { - "key": "bus", - "value": "multi-byte", - "namespace": "connecting" - } - ], - "type": "system", - "last_check_in": "2035-04-25T11:49:16.969Z", - "os_major_version": 8, - "os_minor_version": 0, - "policies": [] - }, - { - "id": "19d69fe7-f16f-453b-98ee-b241016d07eb", - "display_name": "casper-bayer.test", - "groups": [], - "culled_timestamp": "2035-05-01T11:49:17.001Z", - "stale_timestamp": "2035-04-17T11:49:17.001Z", - "stale_warning_timestamp": "2035-04-24T11:49:17.001Z", - "updated": "2025-04-17T11:49:17.001Z", - "insights_id": null, - "tags": [ - { - "key": "program", - "value": "digital", - "namespace": "bypassing" - }, - { - "key": "pixel", - "value": "bluetooth", - "namespace": "synthesizing" - }, - { - "key": "interface", - "value": "solid state", - "namespace": "navigating" - }, - { - "key": "feed", - "value": "neural", - "namespace": "connecting" - }, - { - "key": "feed", - "value": "multi-byte", - "namespace": "indexing" - } - ], - "type": "system", - "last_check_in": "2035-04-25T11:49:17.001Z", - "os_major_version": 8, - "os_minor_version": 0, - "policies": [] - }, - { - "id": "2857916d-dc11-43fe-b96c-740b12c946b7", - "display_name": "goldner.example", - "groups": [], - "culled_timestamp": "2035-05-01T11:49:17.004Z", - "stale_timestamp": "2035-04-17T11:49:17.004Z", - "stale_warning_timestamp": "2035-04-24T11:49:17.004Z", - "updated": "2025-04-17T11:49:17.004Z", - "insights_id": null, - "tags": [ - { - "key": "protocol", - "value": "open-source", - "namespace": "transmitting" - }, - { - "key": "system", - "value": "bluetooth", - "namespace": "compressing" - }, - { - "key": "sensor", - "value": "bluetooth", - "namespace": "backing up" - }, - { - "key": "program", - "value": "open-source", - "namespace": "calculating" - }, - { - "key": "application", - "value": "digital", - "namespace": "hacking" - } - ], - "type": "system", - "last_check_in": "2035-04-25T11:49:17.004Z", - "os_major_version": 8, - "os_minor_version": 0, - "policies": [] - }, - { - "id": "29e611b3-330f-443a-8eda-d278adda7cd2", - "display_name": "hermiston-rohan.example", - "groups": [], - "culled_timestamp": "2035-05-01T11:49:16.995Z", - "stale_timestamp": "2035-04-17T11:49:16.995Z", - "stale_warning_timestamp": "2035-04-24T11:49:16.995Z", - "updated": "2025-04-17T11:49:16.996Z", - "insights_id": null, - "tags": [ - { - "key": "capacitor", - "value": "digital", - "namespace": "overriding" - }, - { - "key": "interface", - "value": "mobile", - "namespace": "backing up" - }, - { - "key": "monitor", - "value": "back-end", - "namespace": "programming" - }, - { - "key": "matrix", - "value": "mobile", - "namespace": "overriding" - }, - { - "key": "capacitor", - "value": "auxiliary", - "namespace": "backing up" - } - ], - "type": "system", - "last_check_in": "2035-04-25T11:49:16.995Z", - "os_major_version": 8, - "os_minor_version": 0, - "policies": [] - }, - { - "id": "324c4943-4ea4-4bd6-8d54-f9ca3eb46d33", - "display_name": "kiehn.test", - "groups": [], - "culled_timestamp": "2035-05-01T11:49:16.971Z", - "stale_timestamp": "2035-04-17T11:49:16.971Z", - "stale_warning_timestamp": "2035-04-24T11:49:16.971Z", - "updated": "2025-04-17T11:49:16.971Z", - "insights_id": null, - "tags": [ - { - "key": "port", - "value": "cross-platform", - "namespace": "backing up" - }, - { - "key": "microchip", - "value": "redundant", - "namespace": "backing up" - }, - { - "key": "pixel", - "value": "solid state", - "namespace": "indexing" - }, - { - "key": "monitor", - "value": "haptic", - "namespace": "copying" - }, - { - "key": "bus", - "value": "digital", - "namespace": "synthesizing" - } - ], - "type": "system", - "last_check_in": "2035-04-25T11:49:16.971Z", - "os_major_version": 8, - "os_minor_version": 0, - "policies": [] - }, - { - "id": "39226c5e-9941-4713-8975-d032e522de91", - "display_name": "bogan.example", - "groups": [], - "culled_timestamp": "2035-05-01T11:49:16.973Z", - "stale_timestamp": "2035-04-17T11:49:16.973Z", - "stale_warning_timestamp": "2035-04-24T11:49:16.973Z", - "updated": "2025-04-17T11:49:16.973Z", - "insights_id": null, - "tags": [ - { - "key": "driver", - "value": "1080p", - "namespace": "programming" - }, - { - "key": "microchip", - "value": "bluetooth", - "namespace": "calculating" - }, - { - "key": "array", - "value": "auxiliary", - "namespace": "backing up" - }, - { - "key": "circuit", - "value": "cross-platform", - "namespace": "compressing" - }, - { - "key": "array", - "value": "redundant", - "namespace": "calculating" - } - ], - "type": "system", - "last_check_in": "2035-04-25T11:49:16.973Z", - "os_major_version": 8, - "os_minor_version": 0, - "policies": [] - }, - { - "id": "40c1ac56-c687-4fd8-b474-f15485ab0510", - "display_name": "littel.example", - "groups": [], - "culled_timestamp": "2035-05-01T11:49:17.017Z", - "stale_timestamp": "2035-04-17T11:49:17.017Z", - "stale_warning_timestamp": "2035-04-24T11:49:17.017Z", - "updated": "2025-04-17T11:49:17.017Z", - "insights_id": null, - "tags": [ - { - "key": "microchip", - "value": "online", - "namespace": "calculating" - }, - { - "key": "application", - "value": "1080p", - "namespace": "indexing" - }, - { - "key": "interface", - "value": "back-end", - "namespace": "backing up" - }, - { - "key": "matrix", - "value": "mobile", - "namespace": "connecting" - }, - { - "key": "interface", - "value": "optical", - "namespace": "programming" - } - ], - "type": "system", - "last_check_in": "2035-04-25T11:49:17.017Z", - "os_major_version": 8, - "os_minor_version": 0, - "policies": [] - }, - { - "id": "41006059-00ce-40c5-98ab-4667976c0d4d", - "display_name": "graham.example", - "groups": [], - "culled_timestamp": "2035-05-01T11:49:17.015Z", - "stale_timestamp": "2035-04-17T11:49:17.015Z", - "stale_warning_timestamp": "2035-04-24T11:49:17.015Z", - "updated": "2025-04-17T11:49:17.015Z", - "insights_id": null, - "tags": [ - { - "key": "array", - "value": "mobile", - "namespace": "compressing" - }, - { - "key": "card", - "value": "digital", - "namespace": "calculating" - }, - { - "key": "system", - "value": "open-source", - "namespace": "calculating" - }, - { - "key": "bandwidth", - "value": "primary", - "namespace": "parsing" - }, - { - "key": "port", - "value": "wireless", - "namespace": "indexing" - } - ], - "type": "system", - "last_check_in": "2035-04-25T11:49:17.015Z", - "os_major_version": 8, - "os_minor_version": 0, - "policies": [] - } - ], - "meta": { - "total": 25, - "tags": [], - "limit": 10, - "offset": 0 - }, - "links": { - "first": "/api/compliance/v2/systems?limit=10&offset=0", - "last": "/api/compliance/v2/systems?limit=10&offset=20", - "next": "/api/compliance/v2/systems?limit=10&offset=10" - } - }, - "summary": "", - "description": "" - }, - "List of Systems sorted by \"os_major_version:asc\"": { - "value": { - "data": [ - { - "id": "010b0778-50f5-4f2e-80fd-079f45a1b3bc", - "display_name": "batz.test", - "groups": [], - "culled_timestamp": "2035-05-01T11:49:17.092Z", - "stale_timestamp": "2035-04-17T11:49:17.092Z", - "stale_warning_timestamp": "2035-04-24T11:49:17.092Z", - "updated": "2025-04-17T11:49:17.092Z", - "insights_id": null, - "tags": [ - { - "key": "application", - "value": "open-source", - "namespace": "synthesizing" - }, - { - "key": "firewall", - "value": "optical", - "namespace": "connecting" - }, - { - "key": "bandwidth", - "value": "optical", - "namespace": "navigating" - }, - { - "key": "panel", - "value": "optical", - "namespace": "hacking" - }, - { - "key": "bus", - "value": "redundant", - "namespace": "quantifying" - } - ], - "type": "system", - "last_check_in": "2035-04-25T11:49:17.092Z", - "os_major_version": 8, - "os_minor_version": 0, - "policies": [] - }, - { - "id": "017c23c7-277f-456c-98d9-b47dcc59caf5", - "display_name": "howell-casper.example", - "groups": [], - "culled_timestamp": "2035-05-01T11:49:17.059Z", - "stale_timestamp": "2035-04-17T11:49:17.059Z", - "stale_warning_timestamp": "2035-04-24T11:49:17.059Z", - "updated": "2025-04-17T11:49:17.059Z", - "insights_id": null, - "tags": [ - { - "key": "sensor", - "value": "neural", - "namespace": "copying" - }, - { - "key": "card", - "value": "open-source", - "namespace": "connecting" - }, - { - "key": "driver", - "value": "online", - "namespace": "hacking" - }, - { - "key": "feed", - "value": "1080p", - "namespace": "transmitting" - }, - { - "key": "microchip", - "value": "solid state", - "namespace": "compressing" - } - ], - "type": "system", - "last_check_in": "2035-04-25T11:49:17.059Z", - "os_major_version": 8, - "os_minor_version": 0, - "policies": [] - }, - { - "id": "22037ff7-ba34-410f-93c4-1f2ed2f41dd3", - "display_name": "witting.example", - "groups": [], - "culled_timestamp": "2035-05-01T11:49:17.097Z", - "stale_timestamp": "2035-04-17T11:49:17.097Z", - "stale_warning_timestamp": "2035-04-24T11:49:17.097Z", - "updated": "2025-04-17T11:49:17.097Z", - "insights_id": null, - "tags": [ - { - "key": "array", - "value": "open-source", - "namespace": "navigating" - }, - { - "key": "pixel", - "value": "virtual", - "namespace": "connecting" - }, - { - "key": "port", - "value": "back-end", - "namespace": "parsing" - }, - { - "key": "interface", - "value": "mobile", - "namespace": "calculating" - }, - { - "key": "monitor", - "value": "optical", - "namespace": "calculating" - } - ], - "type": "system", - "last_check_in": "2035-04-25T11:49:17.097Z", - "os_major_version": 8, - "os_minor_version": 0, - "policies": [] - }, - { - "id": "2439fd61-b8cd-4439-aeeb-af24078e1aa7", - "display_name": "nienow.test", - "groups": [], - "culled_timestamp": "2035-05-01T11:49:17.073Z", - "stale_timestamp": "2035-04-17T11:49:17.073Z", - "stale_warning_timestamp": "2035-04-24T11:49:17.073Z", - "updated": "2025-04-17T11:49:17.073Z", - "insights_id": null, - "tags": [ - { - "key": "port", - "value": "bluetooth", - "namespace": "connecting" - }, - { - "key": "transmitter", - "value": "solid state", - "namespace": "parsing" - }, - { - "key": "pixel", - "value": "mobile", - "namespace": "connecting" - }, - { - "key": "pixel", - "value": "primary", - "namespace": "programming" - }, - { - "key": "application", - "value": "haptic", - "namespace": "synthesizing" - } - ], - "type": "system", - "last_check_in": "2035-04-25T11:49:17.073Z", - "os_major_version": 8, - "os_minor_version": 0, - "policies": [] - }, - { - "id": "280685c4-3cbe-4c51-9975-4e56d083eb77", - "display_name": "gleichner-fisher.example", - "groups": [], - "culled_timestamp": "2035-05-01T11:49:17.068Z", - "stale_timestamp": "2035-04-17T11:49:17.068Z", - "stale_warning_timestamp": "2035-04-24T11:49:17.068Z", - "updated": "2025-04-17T11:49:17.068Z", - "insights_id": null, - "tags": [ - { - "key": "array", - "value": "online", - "namespace": "compressing" - }, - { - "key": "sensor", - "value": "multi-byte", - "namespace": "hacking" - }, - { - "key": "matrix", - "value": "haptic", - "namespace": "parsing" - }, - { - "key": "card", - "value": "cross-platform", - "namespace": "navigating" - }, - { - "key": "pixel", - "value": "virtual", - "namespace": "connecting" - } - ], - "type": "system", - "last_check_in": "2035-04-25T11:49:17.068Z", - "os_major_version": 8, - "os_minor_version": 0, - "policies": [] - }, - { - "id": "2a9c4042-44ed-4caf-ab66-de8c24cf0b22", - "display_name": "jacobson.test", - "groups": [], - "culled_timestamp": "2035-05-01T11:49:17.094Z", - "stale_timestamp": "2035-04-17T11:49:17.094Z", - "stale_warning_timestamp": "2035-04-24T11:49:17.094Z", - "updated": "2025-04-17T11:49:17.094Z", - "insights_id": null, - "tags": [ - { - "key": "panel", - "value": "digital", - "namespace": "connecting" - }, - { - "key": "circuit", - "value": "bluetooth", - "namespace": "programming" - }, - { - "key": "microchip", - "value": "bluetooth", - "namespace": "compressing" - }, - { - "key": "protocol", - "value": "mobile", - "namespace": "copying" - }, - { - "key": "sensor", - "value": "primary", - "namespace": "connecting" - } - ], - "type": "system", - "last_check_in": "2035-04-25T11:49:17.094Z", - "os_major_version": 8, - "os_minor_version": 0, - "policies": [] - }, - { - "id": "3486ae2f-8490-4c02-ba73-34b628bdbfcf", - "display_name": "hirthe.test", - "groups": [], - "culled_timestamp": "2035-05-01T11:49:17.060Z", - "stale_timestamp": "2035-04-17T11:49:17.060Z", - "stale_warning_timestamp": "2035-04-24T11:49:17.060Z", - "updated": "2025-04-17T11:49:17.060Z", - "insights_id": null, - "tags": [ - { - "key": "card", - "value": "neural", - "namespace": "connecting" - }, - { - "key": "bandwidth", - "value": "back-end", - "namespace": "copying" - }, - { - "key": "pixel", - "value": "1080p", - "namespace": "parsing" - }, - { - "key": "monitor", - "value": "virtual", - "namespace": "hacking" - }, - { - "key": "transmitter", - "value": "online", - "namespace": "copying" - } - ], - "type": "system", - "last_check_in": "2035-04-25T11:49:17.060Z", - "os_major_version": 8, - "os_minor_version": 0, - "policies": [] - }, - { - "id": "3b94888f-2cf5-47f9-80c4-d90d54f033e0", - "display_name": "reichert-wilderman.example", - "groups": [], - "culled_timestamp": "2035-05-01T11:49:17.080Z", - "stale_timestamp": "2035-04-17T11:49:17.080Z", - "stale_warning_timestamp": "2035-04-24T11:49:17.080Z", - "updated": "2025-04-17T11:49:17.080Z", - "insights_id": null, - "tags": [ - { - "key": "bus", - "value": "auxiliary", - "namespace": "calculating" - }, - { - "key": "port", - "value": "auxiliary", - "namespace": "parsing" - }, - { - "key": "firewall", - "value": "solid state", - "namespace": "copying" - }, - { - "key": "circuit", - "value": "neural", - "namespace": "compressing" - }, - { - "key": "panel", - "value": "open-source", - "namespace": "transmitting" - } - ], - "type": "system", - "last_check_in": "2035-04-25T11:49:17.080Z", - "os_major_version": 8, - "os_minor_version": 0, - "policies": [] - }, - { - "id": "4c0ad47a-40dc-4b2f-a7a1-ae2cbf70c7ec", - "display_name": "goyette.example", - "groups": [], - "culled_timestamp": "2035-05-01T11:49:17.057Z", - "stale_timestamp": "2035-04-17T11:49:17.057Z", - "stale_warning_timestamp": "2035-04-24T11:49:17.057Z", - "updated": "2025-04-17T11:49:17.057Z", - "insights_id": null, - "tags": [ - { - "key": "card", - "value": "primary", - "namespace": "overriding" - }, - { - "key": "bus", - "value": "virtual", - "namespace": "overriding" - }, - { - "key": "panel", - "value": "online", - "namespace": "compressing" - }, - { - "key": "transmitter", - "value": "open-source", - "namespace": "calculating" - }, - { - "key": "panel", - "value": "open-source", - "namespace": "connecting" - } - ], - "type": "system", - "last_check_in": "2035-04-25T11:49:17.057Z", - "os_major_version": 8, - "os_minor_version": 0, - "policies": [] - }, - { - "id": "5908eeea-8e3c-4648-9893-e8b8314fc0ad", - "display_name": "sawayn.example", - "groups": [], - "culled_timestamp": "2035-05-01T11:49:17.077Z", - "stale_timestamp": "2035-04-17T11:49:17.077Z", - "stale_warning_timestamp": "2035-04-24T11:49:17.077Z", - "updated": "2025-04-17T11:49:17.077Z", - "insights_id": null, - "tags": [ - { - "key": "sensor", - "value": "redundant", - "namespace": "synthesizing" - }, - { - "key": "matrix", - "value": "mobile", - "namespace": "programming" - }, - { - "key": "application", - "value": "primary", - "namespace": "synthesizing" - }, - { - "key": "matrix", - "value": "back-end", - "namespace": "navigating" - }, - { - "key": "feed", - "value": "multi-byte", - "namespace": "parsing" - } - ], - "type": "system", - "last_check_in": "2035-04-25T11:49:17.077Z", - "os_major_version": 8, - "os_minor_version": 0, - "policies": [] - } - ], - "meta": { - "total": 25, - "tags": [], - "limit": 10, - "offset": 0, - "sort_by": "os_major_version" - }, - "links": { - "first": "/api/compliance/v2/systems?limit=10&offset=0&sort_by=os_major_version", - "last": "/api/compliance/v2/systems?limit=10&offset=20&sort_by=os_major_version", - "next": "/api/compliance/v2/systems?limit=10&offset=10&sort_by=os_major_version" - } - }, - "summary": "", - "description": "" - }, - "List of Systems filtered by \"(os_major_version=8)\"": { - "value": { - "data": [ - { - "id": "027ebfd3-efd1-4b09-a6f4-a75ed5b6be3d", - "display_name": "wuckert-ankunding.example", - "groups": [], - "culled_timestamp": "2035-05-01T11:49:17.164Z", - "stale_timestamp": "2035-04-17T11:49:17.164Z", - "stale_warning_timestamp": "2035-04-24T11:49:17.164Z", - "updated": "2025-04-17T11:49:17.164Z", - "insights_id": null, - "tags": [ - { - "key": "bus", - "value": "mobile", - "namespace": "calculating" - }, - { - "key": "panel", - "value": "haptic", - "namespace": "copying" - }, - { - "key": "sensor", - "value": "online", - "namespace": "compressing" - }, - { - "key": "bandwidth", - "value": "multi-byte", - "namespace": "programming" - }, - { - "key": "program", - "value": "online", - "namespace": "transmitting" - } - ], - "type": "system", - "last_check_in": "2035-04-25T11:49:17.164Z", - "os_major_version": 8, - "os_minor_version": 0, - "policies": [] - }, - { - "id": "0e308c38-f22f-49a3-9a1d-550e65f148d8", - "display_name": "donnelly-beier.test", - "groups": [], - "culled_timestamp": "2035-05-01T11:49:17.124Z", - "stale_timestamp": "2035-04-17T11:49:17.124Z", - "stale_warning_timestamp": "2035-04-24T11:49:17.124Z", - "updated": "2025-04-17T11:49:17.124Z", - "insights_id": null, - "tags": [ - { - "key": "program", - "value": "haptic", - "namespace": "generating" - }, - { - "key": "application", - "value": "bluetooth", - "namespace": "compressing" - }, - { - "key": "interface", - "value": "1080p", - "namespace": "backing up" - }, - { - "key": "array", - "value": "virtual", - "namespace": "compressing" - }, - { - "key": "alarm", - "value": "1080p", - "namespace": "parsing" - } - ], - "type": "system", - "last_check_in": "2035-04-25T11:49:17.124Z", - "os_major_version": 8, - "os_minor_version": 0, - "policies": [] - }, - { - "id": "0f8ea7b2-20e3-4c5a-953b-991110fcf922", - "display_name": "waelchi.example", - "groups": [], - "culled_timestamp": "2035-05-01T11:49:17.156Z", - "stale_timestamp": "2035-04-17T11:49:17.156Z", - "stale_warning_timestamp": "2035-04-24T11:49:17.156Z", - "updated": "2025-04-17T11:49:17.156Z", - "insights_id": null, - "tags": [ - { - "key": "array", - "value": "redundant", - "namespace": "synthesizing" - }, - { - "key": "circuit", - "value": "optical", - "namespace": "bypassing" - }, - { - "key": "bandwidth", - "value": "1080p", - "namespace": "hacking" - }, - { - "key": "port", - "value": "1080p", - "namespace": "indexing" - }, - { - "key": "pixel", - "value": "cross-platform", - "namespace": "copying" - } - ], - "type": "system", - "last_check_in": "2035-04-25T11:49:17.156Z", - "os_major_version": 8, - "os_minor_version": 0, - "policies": [] - }, - { - "id": "369ebf30-2d70-4a4d-8a6b-266aec43b695", - "display_name": "hayes.example", - "groups": [], - "culled_timestamp": "2035-05-01T11:49:17.153Z", - "stale_timestamp": "2035-04-17T11:49:17.153Z", - "stale_warning_timestamp": "2035-04-24T11:49:17.153Z", - "updated": "2025-04-17T11:49:17.153Z", - "insights_id": null, - "tags": [ - { - "key": "port", - "value": "digital", - "namespace": "compressing" - }, - { - "key": "alarm", - "value": "1080p", - "namespace": "compressing" - }, - { - "key": "port", - "value": "1080p", - "namespace": "compressing" - }, - { - "key": "monitor", - "value": "primary", - "namespace": "programming" - }, - { - "key": "card", - "value": "optical", - "namespace": "synthesizing" - } - ], - "type": "system", - "last_check_in": "2035-04-25T11:49:17.153Z", - "os_major_version": 8, - "os_minor_version": 0, - "policies": [] - }, - { - "id": "3e4424ac-7763-41db-a029-e3119e6fae8a", - "display_name": "jones-mohr.test", - "groups": [], - "culled_timestamp": "2035-05-01T11:49:17.135Z", - "stale_timestamp": "2035-04-17T11:49:17.135Z", - "stale_warning_timestamp": "2035-04-24T11:49:17.135Z", - "updated": "2025-04-17T11:49:17.135Z", - "insights_id": null, - "tags": [ - { - "key": "bus", - "value": "auxiliary", - "namespace": "copying" - }, - { - "key": "monitor", - "value": "mobile", - "namespace": "calculating" - }, - { - "key": "sensor", - "value": "1080p", - "namespace": "backing up" - }, - { - "key": "feed", - "value": "optical", - "namespace": "bypassing" - }, - { - "key": "card", - "value": "digital", - "namespace": "backing up" - } - ], - "type": "system", - "last_check_in": "2035-04-25T11:49:17.135Z", - "os_major_version": 8, - "os_minor_version": 0, - "policies": [] - }, - { - "id": "428ba845-6ccb-4bce-b4b7-8b85cad4bea3", - "display_name": "prohaska.example", - "groups": [], - "culled_timestamp": "2035-05-01T11:49:17.167Z", - "stale_timestamp": "2035-04-17T11:49:17.167Z", - "stale_warning_timestamp": "2035-04-24T11:49:17.167Z", - "updated": "2025-04-17T11:49:17.167Z", - "insights_id": null, - "tags": [ - { - "key": "bus", - "value": "mobile", - "namespace": "connecting" - }, - { - "key": "pixel", - "value": "primary", - "namespace": "calculating" - }, - { - "key": "driver", - "value": "virtual", - "namespace": "quantifying" - }, - { - "key": "interface", - "value": "cross-platform", - "namespace": "calculating" - }, - { - "key": "system", - "value": "online", - "namespace": "synthesizing" - } - ], - "type": "system", - "last_check_in": "2035-04-25T11:49:17.167Z", - "os_major_version": 8, - "os_minor_version": 0, - "policies": [] - }, - { - "id": "4315153c-7434-4ad5-94f4-fd33cef72476", - "display_name": "price.example", - "groups": [], - "culled_timestamp": "2035-05-01T11:49:17.144Z", - "stale_timestamp": "2035-04-17T11:49:17.144Z", - "stale_warning_timestamp": "2035-04-24T11:49:17.144Z", - "updated": "2025-04-17T11:49:17.144Z", - "insights_id": null, - "tags": [ - { - "key": "microchip", - "value": "solid state", - "namespace": "indexing" - }, - { - "key": "driver", - "value": "auxiliary", - "namespace": "parsing" - }, - { - "key": "capacitor", - "value": "back-end", - "namespace": "compressing" - }, - { - "key": "panel", - "value": "bluetooth", - "namespace": "transmitting" - }, - { - "key": "panel", - "value": "wireless", - "namespace": "programming" - } - ], - "type": "system", - "last_check_in": "2035-04-25T11:49:17.144Z", - "os_major_version": 8, - "os_minor_version": 0, - "policies": [] - }, - { - "id": "5476cbcd-2969-4c88-9e3b-011e4c1e9927", - "display_name": "walker.example", - "groups": [], - "culled_timestamp": "2035-05-01T11:49:17.139Z", - "stale_timestamp": "2035-04-17T11:49:17.139Z", - "stale_warning_timestamp": "2035-04-24T11:49:17.139Z", - "updated": "2025-04-17T11:49:17.139Z", - "insights_id": null, - "tags": [ - { - "key": "sensor", - "value": "back-end", - "namespace": "connecting" - }, - { - "key": "firewall", - "value": "back-end", - "namespace": "parsing" - }, - { - "key": "circuit", - "value": "optical", - "namespace": "programming" - }, - { - "key": "microchip", - "value": "wireless", - "namespace": "parsing" - }, - { - "key": "bus", - "value": "back-end", - "namespace": "bypassing" - } - ], - "type": "system", - "last_check_in": "2035-04-25T11:49:17.139Z", - "os_major_version": 8, - "os_minor_version": 0, - "policies": [] - }, - { - "id": "5548df50-286c-49f1-bbaa-db9e57a17cc7", - "display_name": "lind.test", - "groups": [], - "culled_timestamp": "2035-05-01T11:49:17.169Z", - "stale_timestamp": "2035-04-17T11:49:17.169Z", - "stale_warning_timestamp": "2035-04-24T11:49:17.169Z", - "updated": "2025-04-17T11:49:17.169Z", - "insights_id": null, - "tags": [ - { - "key": "alarm", - "value": "neural", - "namespace": "indexing" - }, - { - "key": "transmitter", - "value": "1080p", - "namespace": "overriding" - }, - { - "key": "program", - "value": "bluetooth", - "namespace": "overriding" - }, - { - "key": "firewall", - "value": "1080p", - "namespace": "calculating" - }, - { - "key": "bus", - "value": "1080p", - "namespace": "synthesizing" - } - ], - "type": "system", - "last_check_in": "2035-04-25T11:49:17.169Z", - "os_major_version": 8, - "os_minor_version": 0, - "policies": [] - }, - { - "id": "5634e65c-02a9-4050-8331-799ff7619a5f", - "display_name": "morissette-stoltenberg.example", - "groups": [], - "culled_timestamp": "2035-05-01T11:49:17.141Z", - "stale_timestamp": "2035-04-17T11:49:17.141Z", - "stale_warning_timestamp": "2035-04-24T11:49:17.141Z", - "updated": "2025-04-17T11:49:17.141Z", - "insights_id": null, - "tags": [ - { - "key": "circuit", - "value": "optical", - "namespace": "transmitting" - }, - { - "key": "feed", - "value": "mobile", - "namespace": "calculating" - }, - { - "key": "panel", - "value": "cross-platform", - "namespace": "indexing" - }, - { - "key": "circuit", - "value": "primary", - "namespace": "connecting" - }, - { - "key": "bandwidth", - "value": "back-end", - "namespace": "transmitting" - } - ], - "type": "system", - "last_check_in": "2035-04-25T11:49:17.141Z", - "os_major_version": 8, - "os_minor_version": 0, - "policies": [] - } - ], - "meta": { - "total": 25, - "filter": "(os_major_version=8)", - "tags": [], - "limit": 10, - "offset": 0 - }, - "links": { - "first": "/api/compliance/v2/systems?filter=%28os_major_version%3D8%29&limit=10&offset=0", - "last": "/api/compliance/v2/systems?filter=%28os_major_version%3D8%29&limit=10&offset=20", - "next": "/api/compliance/v2/systems?filter=%28os_major_version%3D8%29&limit=10&offset=10" - } - }, - "summary": "", - "description": "" - } - }, - "schema": { - "type": "object", - "properties": { - "meta": { - "$ref": "#/components/schemas/metadata" - }, - "links": { - "$ref": "#/components/schemas/links" - }, - "data": { - "type": "array", - "items": { - "properties": { - "schema": { - "$ref": "#/components/schemas/system" - } - } - } - } - } - } - } - } - }, - "422": { - "description": "Returns with Unprocessable Content", - "content": { - "application/vnd.api+json": { - "examples": { - "Description of an error when sorting by incorrect parameter": { - "value": { - "errors": [ - "Result cannot be sorted by the 'description' column." - ] - }, - "summary": "", - "description": "" - }, - "Description of an error when requesting higher limit than supported": { - "value": { - "errors": [ - "Invalid parameter: limit must be less than or equal to 100" - ] - }, - "summary": "", - "description": "" - } - }, - "schema": { - "$ref": "#/components/schemas/errors" - } - } - } - } - } - } - }, - "/systems/os_versions": { - "get": { - "summary": "Request the list of available OS versions", - "parameters": [ - { - "name": "X-RH-IDENTITY", - "in": "header", - "schema": { - "type": "string" - }, - "description": "For internal use only" - }, - { - "name": "filter", - "in": "query", - "required": false, - "description": "Query string to filter items by their attributes. Compliant with scoped_search query language. However, only `=` or `!=` (resp. `<>`) operators are supported.

Systems are searchable using attributes `display_name`, `os_version`, `os_major_version`, `os_minor_version`, `assigned_or_scanned`, `never_reported`, `group_name`, `policies`, and `profile_ref_id`

(e.g.: `(field_1=something AND field_2!=\"something else\") OR field_3>40`)", - "schema": { - "type": "string" - } - } - ], - "tags": [ - "Systems" - ], - "description": "This feature is exclusively used by the frontend.", - "operationId": "SystemsOS", - "deprecated": true, - "responses": { - "200": { - "description": "Lists available OS versions", - "content": { - "application/vnd.api+json": { - "examples": { - "List of available OS versions": { - "value": [ - "8.0" - ], - "summary": "", - "description": "" - } - }, - "schema": { - "type": "array", - "items": { - "type": "string" - } - } - } - } - } - } - } - }, - "/systems/{system_id}": { - "get": { - "summary": "Request a System", - "parameters": [ - { - "name": "X-RH-IDENTITY", - "in": "header", - "schema": { - "type": "string" - }, - "description": "For internal use only" - }, - { - "name": "system_id", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - } - ], - "tags": [ - "Systems" - ], - "description": "Get information about one specific system.", - "operationId": "System", - "responses": { - "200": { - "description": "Returns a System", - "content": { - "application/vnd.api+json": { - "examples": { - "Returns a System": { - "value": { - "data": { - "id": "1b214511-b569-4cfa-8feb-8b8073e4d77d", - "display_name": "cormier.test", - "groups": [], - "culled_timestamp": "2035-05-01T11:49:17.520Z", - "stale_timestamp": "2035-04-17T11:49:17.520Z", - "stale_warning_timestamp": "2035-04-24T11:49:17.520Z", - "updated": "2025-04-17T11:49:17.520Z", - "insights_id": null, - "tags": [ - { - "key": "feed", - "value": "1080p", - "namespace": "backing up" - }, - { - "key": "protocol", - "value": "haptic", - "namespace": "connecting" - }, - { - "key": "feed", - "value": "open-source", - "namespace": "hacking" - }, - { - "key": "firewall", - "value": "solid state", - "namespace": "bypassing" - }, - { - "key": "program", - "value": "haptic", - "namespace": "overriding" - } - ], - "type": "system", - "last_check_in": "2035-04-25T11:49:17.520Z", - "os_major_version": 8, - "os_minor_version": 0, - "policies": [] - } - }, - "summary": "", - "description": "" - } - }, - "schema": { - "type": "object", - "properties": { - "data": { - "type": "object", - "properties": { - "schema": { - "$ref": "#/components/schemas/system" - } - } - } - } - } - } - } - }, - "404": { - "description": "Returns with Not Found", - "content": { - "application/vnd.api+json": { - "examples": { - "Description of an error when requesting a non-existing System": { - "value": { - "errors": [ - "V2::System not found with ID 2caa6742-2cdd-4247-a0dd-b0422a28fe6e" - ] - }, - "summary": "", - "description": "" - } - }, - "schema": { - "$ref": "#/components/schemas/errors" - } - } - } - } - } - } - }, - "/policies/{policy_id}/systems": { - "get": { - "summary": "Request Systems assigned to a Policy", - "parameters": [ - { - "name": "X-RH-IDENTITY", - "in": "header", - "schema": { - "type": "string" - }, - "description": "For internal use only" - }, - { - "name": "tags", - "in": "query", - "required": false, - "description": "An array of tags to narrow down the search results. In case the value contains symbols used for separators (`/` or `=`), they need to be encoded.
e.g.: `namespace/key=value`, `insights-client/selinux-config=SELINUX%3Denforcing`", - "schema": { - "type": "array", - "items": { - "type": "string" - } - } - }, - { - "name": "limit", - "in": "query", - "required": false, - "description": "Number of items to return per page", - "schema": { - "type": "number", - "maximum": 100, - "minimum": 1, - "default": 10 - } - }, - { - "name": "offset", - "in": "query", - "required": false, - "description": "Offset of first item of paginated response", - "schema": { - "type": "integer", - "minimum": 0, - "default": 0 - } - }, - { - "name": "ids_only", - "in": "query", - "required": false, - "description": "Indicates whether to return only resource IDs.", - "schema": { - "type": "boolean" - } - }, - { - "name": "sort_by", - "in": "query", - "required": false, - "description": "Attribute and direction to sort the items by. Represented by an array of fields with an optional direction (`:asc` or `:desc`).

If no direction is selected, `:asc` is used by default.", - "schema": { - "type": "array", - "items": { - "enum": [ - "display_name", - "os_minor_version", - "os_version", - "groups", - "display_name:asc", - "display_name:desc", - "os_minor_version:asc", - "os_minor_version:desc", - "os_version:asc", - "os_version:desc", - "groups:asc", - "groups:desc" - ] - } - } - }, - { - "name": "filter", - "in": "query", - "required": false, - "description": "Query string to filter items by their attributes. Compliant with scoped_search query language. However, only `=` or `!=` (resp. `<>`) operators are supported.

Systems are searchable using attributes `display_name`, `os_minor_version`, and `group_name`

(e.g.: `(field_1=something AND field_2!=\"something else\") OR field_3>40`)", - "schema": { - "type": "string" - } - }, - { - "name": "policy_id", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - } - ], - "tags": [ - "Policies" - ], - "description": "Retrieve all of the systems assigned to a specific policy.", - "operationId": "PolicySystems", - "responses": { - "200": { - "description": "Lists Systems assigned to a Policy", - "content": { - "application/vnd.api+json": { - "examples": { - "List of Systems": { - "value": { - "data": [ - { - "id": "00b0ebe8-4784-455a-aa84-cd2d0be93b26", - "display_name": "mueller.test", - "groups": [], - "culled_timestamp": "2035-05-01T11:49:17.672Z", - "stale_timestamp": "2035-04-17T11:49:17.672Z", - "stale_warning_timestamp": "2035-04-24T11:49:17.672Z", - "updated": "2025-04-17T11:49:17.672Z", - "insights_id": null, - "tags": [ - { - "key": "circuit", - "value": "digital", - "namespace": "copying" - }, - { - "key": "interface", - "value": "cross-platform", - "namespace": "copying" - }, - { - "key": "pixel", - "value": "haptic", - "namespace": "synthesizing" - }, - { - "key": "program", - "value": "optical", - "namespace": "backing up" - }, - { - "key": "microchip", - "value": "bluetooth", - "namespace": "copying" - } - ], - "type": "system", - "last_check_in": "2035-04-25T11:49:17.672Z", - "os_major_version": 8, - "os_minor_version": 0 - }, - { - "id": "0c2e1075-8559-425b-bd7a-a22f9c66f9d0", - "display_name": "schinner.test", - "groups": [], - "culled_timestamp": "2035-05-01T11:49:17.596Z", - "stale_timestamp": "2035-04-17T11:49:17.596Z", - "stale_warning_timestamp": "2035-04-24T11:49:17.596Z", - "updated": "2025-04-17T11:49:17.596Z", - "insights_id": null, - "tags": [ - { - "key": "bus", - "value": "online", - "namespace": "bypassing" - }, - { - "key": "program", - "value": "virtual", - "namespace": "transmitting" - }, - { - "key": "bus", - "value": "back-end", - "namespace": "synthesizing" - }, - { - "key": "transmitter", - "value": "mobile", - "namespace": "quantifying" - }, - { - "key": "transmitter", - "value": "bluetooth", - "namespace": "navigating" - } - ], - "type": "system", - "last_check_in": "2035-04-25T11:49:17.596Z", - "os_major_version": 8, - "os_minor_version": 0 - }, - { - "id": "160d3c0e-85dd-4f4a-b6b7-4cda7afc413b", - "display_name": "gottlieb-dubuque.test", - "groups": [], - "culled_timestamp": "2035-05-01T11:49:17.757Z", - "stale_timestamp": "2035-04-17T11:49:17.757Z", - "stale_warning_timestamp": "2035-04-24T11:49:17.757Z", - "updated": "2025-04-17T11:49:17.757Z", - "insights_id": null, - "tags": [ - { - "key": "panel", - "value": "primary", - "namespace": "parsing" - }, - { - "key": "monitor", - "value": "neural", - "namespace": "hacking" - }, - { - "key": "sensor", - "value": "online", - "namespace": "overriding" - }, - { - "key": "system", - "value": "redundant", - "namespace": "calculating" - }, - { - "key": "circuit", - "value": "multi-byte", - "namespace": "synthesizing" - } - ], - "type": "system", - "last_check_in": "2035-04-25T11:49:17.757Z", - "os_major_version": 8, - "os_minor_version": 0 - }, - { - "id": "259fd8f6-e193-45a3-b7b1-2309ff60bcc6", - "display_name": "wisoky.test", - "groups": [], - "culled_timestamp": "2035-05-01T11:49:17.607Z", - "stale_timestamp": "2035-04-17T11:49:17.607Z", - "stale_warning_timestamp": "2035-04-24T11:49:17.607Z", - "updated": "2025-04-17T11:49:17.607Z", - "insights_id": null, - "tags": [ - { - "key": "panel", - "value": "wireless", - "namespace": "backing up" - }, - { - "key": "sensor", - "value": "haptic", - "namespace": "hacking" - }, - { - "key": "hard drive", - "value": "wireless", - "namespace": "calculating" - }, - { - "key": "circuit", - "value": "back-end", - "namespace": "copying" - }, - { - "key": "pixel", - "value": "haptic", - "namespace": "parsing" - } - ], - "type": "system", - "last_check_in": "2035-04-25T11:49:17.607Z", - "os_major_version": 8, - "os_minor_version": 0 - }, - { - "id": "2cd0f854-8115-4171-b8b7-707fd7f0e974", - "display_name": "zieme.test", - "groups": [], - "culled_timestamp": "2035-05-01T11:49:17.557Z", - "stale_timestamp": "2035-04-17T11:49:17.557Z", - "stale_warning_timestamp": "2035-04-24T11:49:17.557Z", - "updated": "2025-04-17T11:49:17.557Z", - "insights_id": null, - "tags": [ - { - "key": "bandwidth", - "value": "mobile", - "namespace": "compressing" - }, - { - "key": "bus", - "value": "wireless", - "namespace": "compressing" - }, - { - "key": "pixel", - "value": "multi-byte", - "namespace": "indexing" - }, - { - "key": "circuit", - "value": "auxiliary", - "namespace": "hacking" - }, - { - "key": "program", - "value": "neural", - "namespace": "parsing" - } - ], - "type": "system", - "last_check_in": "2035-04-25T11:49:17.557Z", - "os_major_version": 8, - "os_minor_version": 0 - }, - { - "id": "2fec6942-5f98-4aea-af2d-5c74401febd6", - "display_name": "connelly.test", - "groups": [], - "culled_timestamp": "2035-05-01T11:49:17.745Z", - "stale_timestamp": "2035-04-17T11:49:17.745Z", - "stale_warning_timestamp": "2035-04-24T11:49:17.745Z", - "updated": "2025-04-17T11:49:17.746Z", - "insights_id": null, - "tags": [ - { - "key": "pixel", - "value": "open-source", - "namespace": "copying" - }, - { - "key": "protocol", - "value": "primary", - "namespace": "generating" - }, - { - "key": "bus", - "value": "online", - "namespace": "quantifying" - }, - { - "key": "sensor", - "value": "auxiliary", - "namespace": "calculating" - }, - { - "key": "panel", - "value": "digital", - "namespace": "parsing" - } - ], - "type": "system", - "last_check_in": "2035-04-25T11:49:17.745Z", - "os_major_version": 8, - "os_minor_version": 0 - }, - { - "id": "427a6c96-ce60-476c-9e21-6b8745a35c48", - "display_name": "volkman.example", - "groups": [], - "culled_timestamp": "2035-05-01T11:49:17.714Z", - "stale_timestamp": "2035-04-17T11:49:17.714Z", - "stale_warning_timestamp": "2035-04-24T11:49:17.714Z", - "updated": "2025-04-17T11:49:17.714Z", - "insights_id": null, - "tags": [ - { - "key": "alarm", - "value": "primary", - "namespace": "backing up" - }, - { - "key": "array", - "value": "redundant", - "namespace": "quantifying" - }, - { - "key": "sensor", - "value": "back-end", - "namespace": "indexing" - }, - { - "key": "sensor", - "value": "neural", - "namespace": "transmitting" - }, - { - "key": "port", - "value": "redundant", - "namespace": "synthesizing" - } - ], - "type": "system", - "last_check_in": "2035-04-25T11:49:17.714Z", - "os_major_version": 8, - "os_minor_version": 0 - }, - { - "id": "44f15598-a0aa-4e1f-a727-336a76107ff4", - "display_name": "kulas-schaden.test", - "groups": [], - "culled_timestamp": "2035-05-01T11:49:17.725Z", - "stale_timestamp": "2035-04-17T11:49:17.725Z", - "stale_warning_timestamp": "2035-04-24T11:49:17.725Z", - "updated": "2025-04-17T11:49:17.725Z", - "insights_id": null, - "tags": [ - { - "key": "matrix", - "value": "haptic", - "namespace": "copying" - }, - { - "key": "port", - "value": "1080p", - "namespace": "programming" - }, - { - "key": "program", - "value": "haptic", - "namespace": "generating" - }, - { - "key": "feed", - "value": "wireless", - "namespace": "calculating" - }, - { - "key": "driver", - "value": "cross-platform", - "namespace": "parsing" - } - ], - "type": "system", - "last_check_in": "2035-04-25T11:49:17.725Z", - "os_major_version": 8, - "os_minor_version": 0 - }, - { - "id": "475b347e-b280-4017-bd0b-c383c15ffa8f", - "display_name": "king.test", - "groups": [], - "culled_timestamp": "2035-05-01T11:49:17.767Z", - "stale_timestamp": "2035-04-17T11:49:17.767Z", - "stale_warning_timestamp": "2035-04-24T11:49:17.767Z", - "updated": "2025-04-17T11:49:17.767Z", - "insights_id": null, - "tags": [ - { - "key": "sensor", - "value": "mobile", - "namespace": "generating" - }, - { - "key": "matrix", - "value": "wireless", - "namespace": "calculating" - }, - { - "key": "panel", - "value": "open-source", - "namespace": "transmitting" - }, - { - "key": "system", - "value": "primary", - "namespace": "programming" - }, - { - "key": "transmitter", - "value": "mobile", - "namespace": "parsing" - } - ], - "type": "system", - "last_check_in": "2035-04-25T11:49:17.767Z", - "os_major_version": 8, - "os_minor_version": 0 - }, - { - "id": "48b2b4ba-710b-4586-a251-40f1693becc1", - "display_name": "hessel.test", - "groups": [], - "culled_timestamp": "2035-05-01T11:49:17.788Z", - "stale_timestamp": "2035-04-17T11:49:17.788Z", - "stale_warning_timestamp": "2035-04-24T11:49:17.788Z", - "updated": "2025-04-17T11:49:17.788Z", - "insights_id": null, - "tags": [ - { - "key": "bus", - "value": "open-source", - "namespace": "hacking" - }, - { - "key": "driver", - "value": "back-end", - "namespace": "connecting" - }, - { - "key": "panel", - "value": "mobile", - "namespace": "backing up" - }, - { - "key": "circuit", - "value": "digital", - "namespace": "compressing" - }, - { - "key": "monitor", - "value": "neural", - "namespace": "transmitting" - } - ], - "type": "system", - "last_check_in": "2035-04-25T11:49:17.788Z", - "os_major_version": 8, - "os_minor_version": 0 - } - ], - "meta": { - "total": 25, - "tags": [], - "limit": 10, - "offset": 0 - }, - "links": { - "first": "/api/compliance/v2/policies/90a7be96-12c3-430d-a7ea-2a3d4a9c110e/systems?limit=10&offset=0", - "last": "/api/compliance/v2/policies/90a7be96-12c3-430d-a7ea-2a3d4a9c110e/systems?limit=10&offset=20", - "next": "/api/compliance/v2/policies/90a7be96-12c3-430d-a7ea-2a3d4a9c110e/systems?limit=10&offset=10" - } - }, - "summary": "", - "description": "" - }, - "List of Systems sorted by \"os_minor_version:asc\"": { - "value": { - "data": [ - { - "id": "04c833be-e1ff-4302-bc63-9b0301a60691", - "display_name": "rodriguez-jakubowski.test", - "groups": [], - "culled_timestamp": "2035-05-01T11:49:17.991Z", - "stale_timestamp": "2035-04-17T11:49:17.991Z", - "stale_warning_timestamp": "2035-04-24T11:49:17.991Z", - "updated": "2025-04-17T11:49:17.991Z", - "insights_id": null, - "tags": [ - { - "key": "capacitor", - "value": "online", - "namespace": "indexing" - }, - { - "key": "pixel", - "value": "redundant", - "namespace": "bypassing" - }, - { - "key": "pixel", - "value": "digital", - "namespace": "generating" - }, - { - "key": "protocol", - "value": "optical", - "namespace": "connecting" - }, - { - "key": "interface", - "value": "digital", - "namespace": "hacking" - } - ], - "type": "system", - "last_check_in": "2035-04-25T11:49:17.991Z", - "os_major_version": 8, - "os_minor_version": 0 - }, - { - "id": "1ec805eb-2e9e-4147-b7a7-4e3aeb850ec7", - "display_name": "daugherty.test", - "groups": [], - "culled_timestamp": "2035-05-01T11:49:17.954Z", - "stale_timestamp": "2035-04-17T11:49:17.954Z", - "stale_warning_timestamp": "2035-04-24T11:49:17.954Z", - "updated": "2025-04-17T11:49:17.954Z", - "insights_id": null, - "tags": [ - { - "key": "circuit", - "value": "neural", - "namespace": "transmitting" - }, - { - "key": "alarm", - "value": "solid state", - "namespace": "copying" - }, - { - "key": "transmitter", - "value": "back-end", - "namespace": "navigating" - }, - { - "key": "pixel", - "value": "neural", - "namespace": "hacking" - }, - { - "key": "interface", - "value": "1080p", - "namespace": "calculating" - } - ], - "type": "system", - "last_check_in": "2035-04-25T11:49:17.954Z", - "os_major_version": 8, - "os_minor_version": 0 - }, - { - "id": "29034aad-9a59-457d-97b0-346d84484700", - "display_name": "bartell.test", - "groups": [], - "culled_timestamp": "2035-05-01T11:49:17.927Z", - "stale_timestamp": "2035-04-17T11:49:17.927Z", - "stale_warning_timestamp": "2035-04-24T11:49:17.927Z", - "updated": "2025-04-17T11:49:17.927Z", - "insights_id": null, - "tags": [ - { - "key": "array", - "value": "cross-platform", - "namespace": "synthesizing" - }, - { - "key": "circuit", - "value": "bluetooth", - "namespace": "compressing" - }, - { - "key": "firewall", - "value": "primary", - "namespace": "parsing" - }, - { - "key": "system", - "value": "optical", - "namespace": "hacking" - }, - { - "key": "feed", - "value": "virtual", - "namespace": "indexing" - } - ], - "type": "system", - "last_check_in": "2035-04-25T11:49:17.927Z", - "os_major_version": 8, - "os_minor_version": 0 - }, - { - "id": "36a81342-baba-47ce-a459-bc4b64c2057a", - "display_name": "mohr.test", - "groups": [], - "culled_timestamp": "2035-05-01T11:49:18.033Z", - "stale_timestamp": "2035-04-17T11:49:18.033Z", - "stale_warning_timestamp": "2035-04-24T11:49:18.033Z", - "updated": "2025-04-17T11:49:18.033Z", - "insights_id": null, - "tags": [ - { - "key": "matrix", - "value": "haptic", - "namespace": "parsing" - }, - { - "key": "matrix", - "value": "multi-byte", - "namespace": "parsing" - }, - { - "key": "transmitter", - "value": "bluetooth", - "namespace": "programming" - }, - { - "key": "alarm", - "value": "mobile", - "namespace": "navigating" - }, - { - "key": "microchip", - "value": "haptic", - "namespace": "generating" - } - ], - "type": "system", - "last_check_in": "2035-04-25T11:49:18.033Z", - "os_major_version": 8, - "os_minor_version": 0 - }, - { - "id": "40387b9a-a817-445a-a564-9845cd8ac756", - "display_name": "grimes-bahringer.example", - "groups": [], - "culled_timestamp": "2035-05-01T11:49:18.095Z", - "stale_timestamp": "2035-04-17T11:49:18.095Z", - "stale_warning_timestamp": "2035-04-24T11:49:18.095Z", - "updated": "2025-04-17T11:49:18.095Z", - "insights_id": null, - "tags": [ - { - "key": "bus", - "value": "1080p", - "namespace": "backing up" - }, - { - "key": "circuit", - "value": "multi-byte", - "namespace": "copying" - }, - { - "key": "pixel", - "value": "optical", - "namespace": "calculating" - }, - { - "key": "system", - "value": "redundant", - "namespace": "indexing" - }, - { - "key": "port", - "value": "virtual", - "namespace": "synthesizing" - } - ], - "type": "system", - "last_check_in": "2035-04-25T11:49:18.095Z", - "os_major_version": 8, - "os_minor_version": 0 - }, - { - "id": "4622115a-64c7-4d95-8ba5-510b94c34fa2", - "display_name": "hessel.example", - "groups": [], - "culled_timestamp": "2035-05-01T11:49:17.966Z", - "stale_timestamp": "2035-04-17T11:49:17.966Z", - "stale_warning_timestamp": "2035-04-24T11:49:17.966Z", - "updated": "2025-04-17T11:49:17.966Z", - "insights_id": null, - "tags": [ - { - "key": "system", - "value": "digital", - "namespace": "synthesizing" - }, - { - "key": "firewall", - "value": "cross-platform", - "namespace": "calculating" - }, - { - "key": "matrix", - "value": "solid state", - "namespace": "quantifying" - }, - { - "key": "circuit", - "value": "solid state", - "namespace": "hacking" - }, - { - "key": "hard drive", - "value": "virtual", - "namespace": "transmitting" - } - ], - "type": "system", - "last_check_in": "2035-04-25T11:49:17.966Z", - "os_major_version": 8, - "os_minor_version": 0 - }, - { - "id": "4b807915-a574-460f-a516-befe6b028226", - "display_name": "veum-runte.test", - "groups": [], - "culled_timestamp": "2035-05-01T11:49:18.086Z", - "stale_timestamp": "2035-04-17T11:49:18.086Z", - "stale_warning_timestamp": "2035-04-24T11:49:18.086Z", - "updated": "2025-04-17T11:49:18.086Z", - "insights_id": null, - "tags": [ - { - "key": "pixel", - "value": "digital", - "namespace": "quantifying" - }, - { - "key": "card", - "value": "bluetooth", - "namespace": "connecting" - }, - { - "key": "matrix", - "value": "wireless", - "namespace": "generating" - }, - { - "key": "bus", - "value": "optical", - "namespace": "parsing" - }, - { - "key": "feed", - "value": "wireless", - "namespace": "synthesizing" - } - ], - "type": "system", - "last_check_in": "2035-04-25T11:49:18.086Z", - "os_major_version": 8, - "os_minor_version": 0 - }, - { - "id": "4eb35c85-b385-419d-96ca-3c38b59250af", - "display_name": "bode.example", - "groups": [], - "culled_timestamp": "2035-05-01T11:49:18.075Z", - "stale_timestamp": "2035-04-17T11:49:18.075Z", - "stale_warning_timestamp": "2035-04-24T11:49:18.075Z", - "updated": "2025-04-17T11:49:18.075Z", - "insights_id": null, - "tags": [ - { - "key": "monitor", - "value": "virtual", - "namespace": "copying" - }, - { - "key": "panel", - "value": "primary", - "namespace": "transmitting" - }, - { - "key": "monitor", - "value": "haptic", - "namespace": "transmitting" - }, - { - "key": "monitor", - "value": "mobile", - "namespace": "synthesizing" - }, - { - "key": "card", - "value": "optical", - "namespace": "transmitting" - } - ], - "type": "system", - "last_check_in": "2035-04-25T11:49:18.075Z", - "os_major_version": 8, - "os_minor_version": 0 - }, - { - "id": "565b403c-a5da-4861-a921-6512c42741bd", - "display_name": "schimmel-hartmann.example", - "groups": [], - "culled_timestamp": "2035-05-01T11:49:18.001Z", - "stale_timestamp": "2035-04-17T11:49:18.001Z", - "stale_warning_timestamp": "2035-04-24T11:49:18.001Z", - "updated": "2025-04-17T11:49:18.001Z", - "insights_id": null, - "tags": [ - { - "key": "interface", - "value": "cross-platform", - "namespace": "parsing" - }, - { - "key": "firewall", - "value": "wireless", - "namespace": "synthesizing" - }, - { - "key": "system", - "value": "neural", - "namespace": "synthesizing" - }, - { - "key": "capacitor", - "value": "haptic", - "namespace": "overriding" - }, - { - "key": "protocol", - "value": "primary", - "namespace": "generating" - } - ], - "type": "system", - "last_check_in": "2035-04-25T11:49:18.001Z", - "os_major_version": 8, - "os_minor_version": 0 - }, - { - "id": "5ca9840f-6c10-4b1c-8db0-d40f97bf4742", - "display_name": "larson-prohaska.example", - "groups": [], - "culled_timestamp": "2035-05-01T11:49:18.135Z", - "stale_timestamp": "2035-04-17T11:49:18.135Z", - "stale_warning_timestamp": "2035-04-24T11:49:18.135Z", - "updated": "2025-04-17T11:49:18.136Z", - "insights_id": null, - "tags": [ - { - "key": "port", - "value": "digital", - "namespace": "calculating" - }, - { - "key": "application", - "value": "digital", - "namespace": "navigating" - }, - { - "key": "interface", - "value": "open-source", - "namespace": "calculating" - }, - { - "key": "port", - "value": "1080p", - "namespace": "navigating" - }, - { - "key": "monitor", - "value": "open-source", - "namespace": "hacking" - } - ], - "type": "system", - "last_check_in": "2035-04-25T11:49:18.135Z", - "os_major_version": 8, - "os_minor_version": 0 - } - ], - "meta": { - "total": 25, - "tags": [], - "limit": 10, - "offset": 0, - "sort_by": "os_minor_version" - }, - "links": { - "first": "/api/compliance/v2/policies/7e31f6ab-b24e-403e-aac4-5f1dbf2c9cdd/systems?limit=10&offset=0&sort_by=os_minor_version", - "last": "/api/compliance/v2/policies/7e31f6ab-b24e-403e-aac4-5f1dbf2c9cdd/systems?limit=10&offset=20&sort_by=os_minor_version", - "next": "/api/compliance/v2/policies/7e31f6ab-b24e-403e-aac4-5f1dbf2c9cdd/systems?limit=10&offset=10&sort_by=os_minor_version" - } - }, - "summary": "", - "description": "" - }, - "List of Systems filtered by \"(os_minor_version=0)\"": { - "value": { - "data": [ - { - "id": "0bcbe1fa-886d-4d15-8bee-dbed68f648fc", - "display_name": "ullrich-ritchie.example", - "groups": [], - "culled_timestamp": "2035-05-01T11:49:18.211Z", - "stale_timestamp": "2035-04-17T11:49:18.211Z", - "stale_warning_timestamp": "2035-04-24T11:49:18.211Z", - "updated": "2025-04-17T11:49:18.211Z", - "insights_id": null, - "tags": [ - { - "key": "protocol", - "value": "open-source", - "namespace": "calculating" - }, - { - "key": "matrix", - "value": "neural", - "namespace": "hacking" - }, - { - "key": "bus", - "value": "multi-byte", - "namespace": "calculating" - }, - { - "key": "capacitor", - "value": "multi-byte", - "namespace": "connecting" - }, - { - "key": "circuit", - "value": "optical", - "namespace": "bypassing" - } - ], - "type": "system", - "last_check_in": "2035-04-25T11:49:18.211Z", - "os_major_version": 8, - "os_minor_version": 0 - }, - { - "id": "13b2593c-3b11-48f9-8d07-e8c7c81a5902", - "display_name": "altenwerth-farrell.example", - "groups": [], - "culled_timestamp": "2035-05-01T11:49:18.333Z", - "stale_timestamp": "2035-04-17T11:49:18.333Z", - "stale_warning_timestamp": "2035-04-24T11:49:18.333Z", - "updated": "2025-04-17T11:49:18.333Z", - "insights_id": null, - "tags": [ - { - "key": "array", - "value": "wireless", - "namespace": "bypassing" - }, - { - "key": "circuit", - "value": "bluetooth", - "namespace": "copying" - }, - { - "key": "transmitter", - "value": "virtual", - "namespace": "parsing" - }, - { - "key": "microchip", - "value": "open-source", - "namespace": "transmitting" - }, - { - "key": "driver", - "value": "multi-byte", - "namespace": "generating" - } - ], - "type": "system", - "last_check_in": "2035-04-25T11:49:18.333Z", - "os_major_version": 8, - "os_minor_version": 0 - }, - { - "id": "20f39def-147f-4439-ab2d-655877978323", - "display_name": "quigley.example", - "groups": [], - "culled_timestamp": "2035-05-01T11:49:18.293Z", - "stale_timestamp": "2035-04-17T11:49:18.293Z", - "stale_warning_timestamp": "2035-04-24T11:49:18.293Z", - "updated": "2025-04-17T11:49:18.293Z", - "insights_id": null, - "tags": [ - { - "key": "capacitor", - "value": "redundant", - "namespace": "transmitting" - }, - { - "key": "application", - "value": "cross-platform", - "namespace": "calculating" - }, - { - "key": "feed", - "value": "cross-platform", - "namespace": "parsing" - }, - { - "key": "bandwidth", - "value": "virtual", - "namespace": "calculating" - }, - { - "key": "interface", - "value": "open-source", - "namespace": "generating" - } - ], - "type": "system", - "last_check_in": "2035-04-25T11:49:18.293Z", - "os_major_version": 8, - "os_minor_version": 0 - }, - { - "id": "422d3837-9ac7-4f6b-80a2-db0ffb629a12", - "display_name": "murray.test", - "groups": [], - "culled_timestamp": "2035-05-01T11:49:18.401Z", - "stale_timestamp": "2035-04-17T11:49:18.401Z", - "stale_warning_timestamp": "2035-04-24T11:49:18.401Z", - "updated": "2025-04-17T11:49:18.401Z", - "insights_id": null, - "tags": [ - { - "key": "port", - "value": "1080p", - "namespace": "connecting" - }, - { - "key": "firewall", - "value": "multi-byte", - "namespace": "indexing" - }, - { - "key": "transmitter", - "value": "solid state", - "namespace": "copying" - }, - { - "key": "protocol", - "value": "auxiliary", - "namespace": "copying" - }, - { - "key": "system", - "value": "multi-byte", - "namespace": "programming" - } - ], - "type": "system", - "last_check_in": "2035-04-25T11:49:18.401Z", - "os_major_version": 8, - "os_minor_version": 0 - }, - { - "id": "43269bf8-14b9-49cb-99e1-aa0b09407bfe", - "display_name": "conroy-hauck.test", - "groups": [], - "culled_timestamp": "2035-05-01T11:49:18.433Z", - "stale_timestamp": "2035-04-17T11:49:18.433Z", - "stale_warning_timestamp": "2035-04-24T11:49:18.433Z", - "updated": "2025-04-17T11:49:18.433Z", - "insights_id": null, - "tags": [ - { - "key": "bus", - "value": "mobile", - "namespace": "copying" - }, - { - "key": "monitor", - "value": "auxiliary", - "namespace": "connecting" - }, - { - "key": "circuit", - "value": "cross-platform", - "namespace": "generating" - }, - { - "key": "protocol", - "value": "wireless", - "namespace": "connecting" - }, - { - "key": "panel", - "value": "multi-byte", - "namespace": "connecting" - } - ], - "type": "system", - "last_check_in": "2035-04-25T11:49:18.433Z", - "os_major_version": 8, - "os_minor_version": 0 - }, - { - "id": "461bed03-bbb9-4b33-940d-23bebc3863f7", - "display_name": "lueilwitz.test", - "groups": [], - "culled_timestamp": "2035-05-01T11:49:18.363Z", - "stale_timestamp": "2035-04-17T11:49:18.363Z", - "stale_warning_timestamp": "2035-04-24T11:49:18.363Z", - "updated": "2025-04-17T11:49:18.363Z", - "insights_id": null, - "tags": [ - { - "key": "pixel", - "value": "solid state", - "namespace": "generating" - }, - { - "key": "transmitter", - "value": "redundant", - "namespace": "overriding" - }, - { - "key": "firewall", - "value": "back-end", - "namespace": "bypassing" - }, - { - "key": "firewall", - "value": "redundant", - "namespace": "indexing" - }, - { - "key": "system", - "value": "back-end", - "namespace": "hacking" - } - ], - "type": "system", - "last_check_in": "2035-04-25T11:49:18.363Z", - "os_major_version": 8, - "os_minor_version": 0 - }, - { - "id": "4930e30b-8728-4083-b503-df83e942b209", - "display_name": "gutkowski.test", - "groups": [], - "culled_timestamp": "2035-05-01T11:49:18.185Z", - "stale_timestamp": "2035-04-17T11:49:18.185Z", - "stale_warning_timestamp": "2035-04-24T11:49:18.185Z", - "updated": "2025-04-17T11:49:18.185Z", - "insights_id": null, - "tags": [ - { - "key": "sensor", - "value": "redundant", - "namespace": "transmitting" - }, - { - "key": "interface", - "value": "primary", - "namespace": "compressing" - }, - { - "key": "panel", - "value": "solid state", - "namespace": "backing up" - }, - { - "key": "monitor", - "value": "mobile", - "namespace": "generating" - }, - { - "key": "monitor", - "value": "solid state", - "namespace": "calculating" - } - ], - "type": "system", - "last_check_in": "2035-04-25T11:49:18.185Z", - "os_major_version": 8, - "os_minor_version": 0 - }, - { - "id": "5acff4fc-d626-4c4b-8774-03c97c8bb926", - "display_name": "murazik-kihn.test", - "groups": [], - "culled_timestamp": "2035-05-01T11:49:18.444Z", - "stale_timestamp": "2035-04-17T11:49:18.444Z", - "stale_warning_timestamp": "2035-04-24T11:49:18.444Z", - "updated": "2025-04-17T11:49:18.444Z", - "insights_id": null, - "tags": [ - { - "key": "sensor", - "value": "multi-byte", - "namespace": "parsing" - }, - { - "key": "driver", - "value": "auxiliary", - "namespace": "quantifying" - }, - { - "key": "circuit", - "value": "mobile", - "namespace": "navigating" - }, - { - "key": "card", - "value": "haptic", - "namespace": "hacking" - }, - { - "key": "protocol", - "value": "1080p", - "namespace": "connecting" - } - ], - "type": "system", - "last_check_in": "2035-04-25T11:49:18.444Z", - "os_major_version": 8, - "os_minor_version": 0 - }, - { - "id": "928f30a8-414b-4306-92a3-10032369bfb6", - "display_name": "stamm.test", - "groups": [], - "culled_timestamp": "2035-05-01T11:49:18.312Z", - "stale_timestamp": "2035-04-17T11:49:18.312Z", - "stale_warning_timestamp": "2035-04-24T11:49:18.312Z", - "updated": "2025-04-17T11:49:18.312Z", - "insights_id": null, - "tags": [ - { - "key": "bandwidth", - "value": "auxiliary", - "namespace": "transmitting" - }, - { - "key": "capacitor", - "value": "wireless", - "namespace": "generating" - }, - { - "key": "monitor", - "value": "open-source", - "namespace": "bypassing" - }, - { - "key": "sensor", - "value": "virtual", - "namespace": "calculating" - }, - { - "key": "capacitor", - "value": "optical", - "namespace": "quantifying" - } - ], - "type": "system", - "last_check_in": "2035-04-25T11:49:18.312Z", - "os_major_version": 8, - "os_minor_version": 0 - }, - { - "id": "94fbe75a-f03f-49b7-8d64-10d326c138bf", - "display_name": "hand.example", - "groups": [], - "culled_timestamp": "2035-05-01T11:49:18.303Z", - "stale_timestamp": "2035-04-17T11:49:18.303Z", - "stale_warning_timestamp": "2035-04-24T11:49:18.303Z", - "updated": "2025-04-17T11:49:18.303Z", - "insights_id": null, - "tags": [ - { - "key": "microchip", - "value": "1080p", - "namespace": "copying" - }, - { - "key": "capacitor", - "value": "redundant", - "namespace": "indexing" - }, - { - "key": "panel", - "value": "redundant", - "namespace": "connecting" - }, - { - "key": "monitor", - "value": "neural", - "namespace": "calculating" - }, - { - "key": "bus", - "value": "back-end", - "namespace": "connecting" - } - ], - "type": "system", - "last_check_in": "2035-04-25T11:49:18.303Z", - "os_major_version": 8, - "os_minor_version": 0 - } - ], - "meta": { - "total": 25, - "filter": "(os_minor_version=0)", - "tags": [], - "limit": 10, - "offset": 0 - }, - "links": { - "first": "/api/compliance/v2/policies/ad6deb96-eaf8-432d-a67a-e2250a6e8764/systems?filter=%28os_minor_version%3D0%29&limit=10&offset=0", - "last": "/api/compliance/v2/policies/ad6deb96-eaf8-432d-a67a-e2250a6e8764/systems?filter=%28os_minor_version%3D0%29&limit=10&offset=20", - "next": "/api/compliance/v2/policies/ad6deb96-eaf8-432d-a67a-e2250a6e8764/systems?filter=%28os_minor_version%3D0%29&limit=10&offset=10" - } - }, - "summary": "", - "description": "" - } - }, - "schema": { - "type": "object", - "properties": { - "meta": { - "$ref": "#/components/schemas/metadata" - }, - "links": { - "$ref": "#/components/schemas/links" - }, - "data": { - "type": "array", - "items": { - "properties": { - "schema": { - "$ref": "#/components/schemas/system" - } - } - } - } - } - } - } - } - }, - "422": { - "description": "Returns with Unprocessable Content", - "content": { - "application/vnd.api+json": { - "examples": { - "Description of an error when sorting by incorrect parameter": { - "value": { - "errors": [ - "Result cannot be sorted by the 'description' column." - ] - }, - "summary": "", - "description": "" - }, - "Description of an error when requesting higher limit than supported": { - "value": { - "errors": [ - "Invalid parameter: limit must be less than or equal to 100" - ] - }, - "summary": "", - "description": "" - } - }, - "schema": { - "$ref": "#/components/schemas/errors" - } - } - } - } - } - }, - "post": { - "summary": "Bulk assign Systems to a Policy", - "parameters": [ - { - "name": "X-RH-IDENTITY", - "in": "header", - "schema": { - "type": "string" - }, - "description": "For internal use only" - }, - { - "name": "policy_id", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - } - ], - "tags": [ - "Policies" - ], - "description": "This feature is exclusively used by the frontend", - "deprecated": true, - "operationId": "AssignSystems", - "responses": { - "202": { - "description": "Assigns all specified systems and unassigns the rest", - "content": { - "application/vnd.api+json": { - "examples": { - "List of assigned Systems": { - "value": { - "data": [ - { - "id": "0228f5d8-6c91-4f55-ad47-ff170ea9aa0e", - "display_name": "turcotte.example", - "groups": [], - "culled_timestamp": "2035-05-01T11:49:19.436Z", - "stale_timestamp": "2035-04-17T11:49:19.436Z", - "stale_warning_timestamp": "2035-04-24T11:49:19.436Z", - "updated": "2025-04-17T11:49:19.436Z", - "insights_id": null, - "tags": [ - { - "key": "panel", - "value": "wireless", - "namespace": "connecting" - }, - { - "key": "capacitor", - "value": "multi-byte", - "namespace": "indexing" - }, - { - "key": "pixel", - "value": "cross-platform", - "namespace": "navigating" - }, - { - "key": "interface", - "value": "redundant", - "namespace": "hacking" - }, - { - "key": "system", - "value": "haptic", - "namespace": "backing up" - } - ], - "type": "system", - "last_check_in": "2035-04-25T11:49:19.436Z", - "os_major_version": 8, - "os_minor_version": 0 - }, - { - "id": "0f051989-b696-48e7-a239-c22c640b98ac", - "display_name": "hirthe.example", - "groups": [], - "culled_timestamp": "2035-05-01T11:49:19.447Z", - "stale_timestamp": "2035-04-17T11:49:19.447Z", - "stale_warning_timestamp": "2035-04-24T11:49:19.447Z", - "updated": "2025-04-17T11:49:19.447Z", - "insights_id": null, - "tags": [ - { - "key": "interface", - "value": "primary", - "namespace": "hacking" - }, - { - "key": "hard drive", - "value": "solid state", - "namespace": "navigating" - }, - { - "key": "panel", - "value": "mobile", - "namespace": "bypassing" - }, - { - "key": "alarm", - "value": "solid state", - "namespace": "synthesizing" - }, - { - "key": "driver", - "value": "neural", - "namespace": "quantifying" - } - ], - "type": "system", - "last_check_in": "2035-04-25T11:49:19.447Z", - "os_major_version": 8, - "os_minor_version": 0 - }, - { - "id": "1dc4a86e-52ae-4228-b32f-692e696f974b", - "display_name": "goodwin-romaguera.test", - "groups": [], - "culled_timestamp": "2035-05-01T11:49:19.442Z", - "stale_timestamp": "2035-04-17T11:49:19.442Z", - "stale_warning_timestamp": "2035-04-24T11:49:19.442Z", - "updated": "2025-04-17T11:49:19.442Z", - "insights_id": null, - "tags": [ - { - "key": "feed", - "value": "cross-platform", - "namespace": "backing up" - }, - { - "key": "panel", - "value": "wireless", - "namespace": "navigating" - }, - { - "key": "circuit", - "value": "redundant", - "namespace": "backing up" - }, - { - "key": "hard drive", - "value": "back-end", - "namespace": "quantifying" - }, - { - "key": "capacitor", - "value": "optical", - "namespace": "copying" - } - ], - "type": "system", - "last_check_in": "2035-04-25T11:49:19.442Z", - "os_major_version": 8, - "os_minor_version": 0 - }, - { - "id": "2420b443-ea84-48e4-a058-622cb5aee1f0", - "display_name": "cole-williamson.example", - "groups": [], - "culled_timestamp": "2035-05-01T11:49:19.459Z", - "stale_timestamp": "2035-04-17T11:49:19.459Z", - "stale_warning_timestamp": "2035-04-24T11:49:19.459Z", - "updated": "2025-04-17T11:49:19.459Z", - "insights_id": null, - "tags": [ - { - "key": "monitor", - "value": "open-source", - "namespace": "overriding" - }, - { - "key": "monitor", - "value": "haptic", - "namespace": "generating" - }, - { - "key": "panel", - "value": "back-end", - "namespace": "parsing" - }, - { - "key": "monitor", - "value": "bluetooth", - "namespace": "connecting" - }, - { - "key": "port", - "value": "wireless", - "namespace": "synthesizing" - } - ], - "type": "system", - "last_check_in": "2035-04-25T11:49:19.459Z", - "os_major_version": 8, - "os_minor_version": 0 - }, - { - "id": "26de9105-8ddb-4cfa-bbb2-3863594058bb", - "display_name": "morar.example", - "groups": [], - "culled_timestamp": "2035-05-01T11:49:19.460Z", - "stale_timestamp": "2035-04-17T11:49:19.460Z", - "stale_warning_timestamp": "2035-04-24T11:49:19.460Z", - "updated": "2025-04-17T11:49:19.460Z", - "insights_id": null, - "tags": [ - { - "key": "monitor", - "value": "optical", - "namespace": "calculating" - }, - { - "key": "circuit", - "value": "multi-byte", - "namespace": "indexing" - }, - { - "key": "application", - "value": "haptic", - "namespace": "synthesizing" - }, - { - "key": "firewall", - "value": "auxiliary", - "namespace": "compressing" - }, - { - "key": "bus", - "value": "auxiliary", - "namespace": "compressing" - } - ], - "type": "system", - "last_check_in": "2035-04-25T11:49:19.460Z", - "os_major_version": 8, - "os_minor_version": 0 - }, - { - "id": "45c3d12d-983a-48df-b419-1c8ef50b4540", - "display_name": "fahey.test", - "groups": [], - "culled_timestamp": "2035-05-01T11:49:19.456Z", - "stale_timestamp": "2035-04-17T11:49:19.456Z", - "stale_warning_timestamp": "2035-04-24T11:49:19.456Z", - "updated": "2025-04-17T11:49:19.456Z", - "insights_id": null, - "tags": [ - { - "key": "microchip", - "value": "mobile", - "namespace": "connecting" - }, - { - "key": "bus", - "value": "primary", - "namespace": "programming" - }, - { - "key": "sensor", - "value": "redundant", - "namespace": "compressing" - }, - { - "key": "pixel", - "value": "wireless", - "namespace": "copying" - }, - { - "key": "matrix", - "value": "wireless", - "namespace": "quantifying" - } - ], - "type": "system", - "last_check_in": "2035-04-25T11:49:19.456Z", - "os_major_version": 8, - "os_minor_version": 0 - }, - { - "id": "4a465a58-c47e-481b-8251-9c1fefc9b89c", - "display_name": "stamm.test", - "groups": [], - "culled_timestamp": "2035-05-01T11:49:19.457Z", - "stale_timestamp": "2035-04-17T11:49:19.457Z", - "stale_warning_timestamp": "2035-04-24T11:49:19.457Z", - "updated": "2025-04-17T11:49:19.457Z", - "insights_id": null, - "tags": [ - { - "key": "monitor", - "value": "back-end", - "namespace": "transmitting" - }, - { - "key": "card", - "value": "optical", - "namespace": "calculating" - }, - { - "key": "card", - "value": "virtual", - "namespace": "quantifying" - }, - { - "key": "monitor", - "value": "back-end", - "namespace": "indexing" - }, - { - "key": "transmitter", - "value": "online", - "namespace": "programming" - } - ], - "type": "system", - "last_check_in": "2035-04-25T11:49:19.457Z", - "os_major_version": 8, - "os_minor_version": 0 - }, - { - "id": "4f202d7c-c552-4f89-97c0-931077adefe2", - "display_name": "rau-mitchell.example", - "groups": [], - "culled_timestamp": "2035-05-01T11:49:19.462Z", - "stale_timestamp": "2035-04-17T11:49:19.462Z", - "stale_warning_timestamp": "2035-04-24T11:49:19.462Z", - "updated": "2025-04-17T11:49:19.462Z", - "insights_id": null, - "tags": [ - { - "key": "panel", - "value": "bluetooth", - "namespace": "overriding" - }, - { - "key": "capacitor", - "value": "multi-byte", - "namespace": "programming" - }, - { - "key": "system", - "value": "wireless", - "namespace": "quantifying" - }, - { - "key": "port", - "value": "haptic", - "namespace": "indexing" - }, - { - "key": "sensor", - "value": "primary", - "namespace": "copying" - } - ], - "type": "system", - "last_check_in": "2035-04-25T11:49:19.462Z", - "os_major_version": 8, - "os_minor_version": 0 - }, - { - "id": "53281be1-2596-4434-a63b-c64ddd139b0e", - "display_name": "maggio-hamill.example", - "groups": [], - "culled_timestamp": "2035-05-01T11:49:19.434Z", - "stale_timestamp": "2035-04-17T11:49:19.434Z", - "stale_warning_timestamp": "2035-04-24T11:49:19.434Z", - "updated": "2025-04-17T11:49:19.434Z", - "insights_id": null, - "tags": [ - { - "key": "microchip", - "value": "haptic", - "namespace": "hacking" - }, - { - "key": "interface", - "value": "wireless", - "namespace": "programming" - }, - { - "key": "application", - "value": "mobile", - "namespace": "quantifying" - }, - { - "key": "transmitter", - "value": "online", - "namespace": "calculating" - }, - { - "key": "firewall", - "value": "redundant", - "namespace": "bypassing" - } - ], - "type": "system", - "last_check_in": "2035-04-25T11:49:19.434Z", - "os_major_version": 8, - "os_minor_version": 0 - }, - { - "id": "55bff9c6-ab8a-47de-a9c7-e677ac8acc38", - "display_name": "will.test", - "groups": [], - "culled_timestamp": "2035-05-01T11:49:19.432Z", - "stale_timestamp": "2035-04-17T11:49:19.432Z", - "stale_warning_timestamp": "2035-04-24T11:49:19.432Z", - "updated": "2025-04-17T11:49:19.432Z", - "insights_id": null, - "tags": [ - { - "key": "protocol", - "value": "1080p", - "namespace": "calculating" - }, - { - "key": "bus", - "value": "wireless", - "namespace": "calculating" - }, - { - "key": "protocol", - "value": "haptic", - "namespace": "backing up" - }, - { - "key": "microchip", - "value": "back-end", - "namespace": "parsing" - }, - { - "key": "bandwidth", - "value": "cross-platform", - "namespace": "parsing" - } - ], - "type": "system", - "last_check_in": "2035-04-25T11:49:19.432Z", - "os_major_version": 8, - "os_minor_version": 0 - } - ], - "meta": { - "total": 25, - "tags": [], - "limit": 10, - "offset": 0 - }, - "links": { - "first": "/api/compliance/v2/policies/aba5be64-ae18-4344-a5ae-8dedd795dc6b/systems?limit=10&offset=0", - "last": "/api/compliance/v2/policies/aba5be64-ae18-4344-a5ae-8dedd795dc6b/systems?limit=10&offset=20", - "next": "/api/compliance/v2/policies/aba5be64-ae18-4344-a5ae-8dedd795dc6b/systems?limit=10&offset=10" - } - }, - "summary": "", - "description": "" - } - }, - "schema": { - "type": "object", - "properties": { - "meta": { - "$ref": "#/components/schemas/metadata" - }, - "links": { - "$ref": "#/components/schemas/links" - }, - "data": { - "type": "array", - "items": { - "properties": { - "schema": { - "$ref": "#/components/schemas/system" - } - } - } - } - } - } - } - } - } - }, - "requestBody": { - "content": { - "application/vnd.api+json": { - "schema": { - "type": "object", - "properties": { - "ids": { - "type": "array", - "items": { - "type": "string", - "examples": [ - "565220d4-0a0e-424b-ae75-b48fc0e528a4" - ] - } - } - } - } - } - } - } - } - }, - "/policies/{policy_id}/systems/os_versions": { - "get": { - "summary": "Request the list of available OS versions", - "parameters": [ - { - "name": "X-RH-IDENTITY", - "in": "header", - "schema": { - "type": "string" - }, - "description": "For internal use only" - }, - { - "name": "filter", - "in": "query", - "required": false, - "description": "Query string to filter items by their attributes. Compliant with scoped_search query language. However, only `=` or `!=` (resp. `<>`) operators are supported.

Systems are searchable using attributes `display_name`, `os_version`, `os_major_version`, `os_minor_version`, `assigned_or_scanned`, `never_reported`, `group_name`, `policies`, and `profile_ref_id`

(e.g.: `(field_1=something AND field_2!=\"something else\") OR field_3>40`)", - "schema": { - "type": "string" - } - }, - { - "name": "policy_id", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - } - ], - "tags": [ - "Systems" - ], - "description": "This feature is exclusively used by the frontend", - "operationId": "PolicySystemsOS", - "deprecated": true, - "responses": { - "200": { - "description": "Lists available OS versions", - "content": { - "application/vnd.api+json": { - "examples": { - "List of available OS versions": { - "value": [ - "8.0" - ], - "summary": "", - "description": "" - } - }, - "schema": { - "type": "array", - "items": { - "type": "string" - } - } - } - } - } - } - } - }, - "/policies/{policy_id}/systems/{system_id}": { - "patch": { - "summary": "Assign a System to a Policy", - "parameters": [ - { - "name": "X-RH-IDENTITY", - "in": "header", - "schema": { - "type": "string" - }, - "description": "For internal use only" - }, - { - "name": "system_id", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "policy_id", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - } - ], - "tags": [ - "Policies" - ], - "description": "Assign a specific system to a specific policy.", - "operationId": "AssignSystem", - "responses": { - "202": { - "description": "Assigns a System to a Policy", - "content": { - "application/vnd.api+json": { - "examples": { - "Assigns a System to a Policy": { - "value": { - "data": { - "id": "a08e7c76-6046-49cf-99ae-7d40e6e8cf8b", - "display_name": "ruecker.test", - "groups": [], - "culled_timestamp": "2035-05-01T11:49:19.791Z", - "stale_timestamp": "2035-04-17T11:49:19.791Z", - "stale_warning_timestamp": "2035-04-24T11:49:19.791Z", - "updated": "2025-04-17T11:49:19.791Z", - "insights_id": null, - "tags": [ - { - "key": "interface", - "value": "open-source", - "namespace": "backing up" - }, - { - "key": "transmitter", - "value": "back-end", - "namespace": "indexing" - }, - { - "key": "alarm", - "value": "back-end", - "namespace": "transmitting" - }, - { - "key": "array", - "value": "haptic", - "namespace": "synthesizing" - }, - { - "key": "monitor", - "value": "online", - "namespace": "generating" - } - ], - "type": "system", - "last_check_in": "2035-04-25T11:49:19.791Z", - "os_major_version": 8, - "os_minor_version": 0 - } - }, - "summary": "", - "description": "" - } - }, - "schema": { - "type": "object", - "properties": { - "data": { - "type": "object", - "properties": { - "schema": { - "$ref": "#/components/schemas/system" - } - } - } - } - } - } - } - }, - "404": { - "description": "Returns with Not Found", - "content": { - "application/vnd.api+json": { - "examples": { - "Assigns a System to a Policy": { - "value": { - "errors": [ - "V2::System not found with ID a29428bc-2405-4513-9c80-c569aa93dffb" - ] - }, - "summary": "", - "description": "" - } - }, - "schema": { - "$ref": "#/components/schemas/errors" - } - } - } - } - } - }, - "delete": { - "summary": "Unassign a System from a Policy", - "parameters": [ - { - "name": "X-RH-IDENTITY", - "in": "header", - "schema": { - "type": "string" - }, - "description": "For internal use only" - }, - { - "name": "system_id", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "policy_id", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - } - ], - "tags": [ - "Policies" - ], - "description": "Remove a specific system from a specific policy.", - "operationId": "UnassignSystem", - "responses": { - "202": { - "description": "Unassigns a System from a Policy", - "content": { - "application/vnd.api+json": { - "examples": { - "Unassigns a System from a Policy": { - "value": { - "data": { - "id": "210f27db-3a51-4b33-9965-8b3f3ee53c19", - "display_name": "jakubowski.example", - "groups": [], - "culled_timestamp": "2035-05-01T11:49:19.861Z", - "stale_timestamp": "2035-04-17T11:49:19.861Z", - "stale_warning_timestamp": "2035-04-24T11:49:19.861Z", - "updated": "2025-04-17T11:49:19.861Z", - "insights_id": null, - "tags": [ - { - "key": "panel", - "value": "mobile", - "namespace": "overriding" - }, - { - "key": "feed", - "value": "1080p", - "namespace": "compressing" - }, - { - "key": "protocol", - "value": "virtual", - "namespace": "bypassing" - }, - { - "key": "array", - "value": "bluetooth", - "namespace": "synthesizing" - }, - { - "key": "sensor", - "value": "virtual", - "namespace": "compressing" - } - ], - "type": "system", - "last_check_in": "2035-04-25T11:49:19.861Z", - "os_major_version": 8, - "os_minor_version": 0 - } - }, - "summary": "", - "description": "" - } - }, - "schema": { - "type": "object", - "properties": { - "data": { - "type": "object", - "properties": { - "schema": { - "$ref": "#/components/schemas/system" - } - } - } - } - } - } - } - }, - "404": { - "description": "Returns with Not Found", - "content": { - "application/vnd.api+json": { - "examples": { - "Description of an error when unassigning a non-existing System": { - "value": { - "errors": [ - "V2::System not found with ID 9bf5cfd2-0d81-49b8-81b1-b4a537bcfce7" - ] - }, - "summary": "", - "description": "" - } - }, - "schema": { - "$ref": "#/components/schemas/errors" - } - } - } - } - } - } - }, - "/reports/{report_id}/systems": { - "get": { - "summary": "Request Systems assigned to a Report", - "parameters": [ - { - "name": "X-RH-IDENTITY", - "in": "header", - "schema": { - "type": "string" - }, - "description": "For internal use only" - }, - { - "name": "tags", - "in": "query", - "required": false, - "description": "An array of tags to narrow down the search results. In case the value contains symbols used for separators (`/` or `=`), they need to be encoded.
e.g.: `namespace/key=value`, `insights-client/selinux-config=SELINUX%3Denforcing`", - "schema": { - "type": "array", - "items": { - "type": "string" - } - } - }, - { - "name": "limit", - "in": "query", - "required": false, - "description": "Number of items to return per page", - "schema": { - "type": "number", - "maximum": 100, - "minimum": 1, - "default": 10 - } - }, - { - "name": "offset", - "in": "query", - "required": false, - "description": "Offset of first item of paginated response", - "schema": { - "type": "integer", - "minimum": 0, - "default": 0 - } - }, - { - "name": "ids_only", - "in": "query", - "required": false, - "description": "Indicates whether to return only resource IDs.", - "schema": { - "type": "boolean" - } - }, - { - "name": "sort_by", - "in": "query", - "required": false, - "description": "Attribute and direction to sort the items by. Represented by an array of fields with an optional direction (`:asc` or `:desc`).

If no direction is selected, `:asc` is used by default.", - "schema": { - "type": "array", - "items": { - "enum": [ - "display_name", - "os_minor_version", - "os_version", - "groups", - "display_name:asc", - "display_name:desc", - "os_minor_version:asc", - "os_minor_version:desc", - "os_version:asc", - "os_version:desc", - "groups:asc", - "groups:desc" - ] - } - } - }, - { - "name": "filter", - "in": "query", - "required": false, - "description": "Query string to filter items by their attributes. Compliant with scoped_search query language. However, only `=` or `!=` (resp. `<>`) operators are supported.

Systems are searchable using attributes `display_name`, `os_minor_version`, `never_reported`, and `group_name`

(e.g.: `(field_1=something AND field_2!=\"something else\") OR field_3>40`)", - "schema": { - "type": "string" - } - }, - { - "name": "report_id", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - } - ], - "tags": [ - "Reports" - ], - "description": "Retrieve all of the systems for a specific report.", - "operationId": "ReportSystems", - "responses": { - "200": { - "description": "Lists Systems assigned to a Report", - "content": { - "application/vnd.api+json": { - "examples": { - "List of Systems": { - "value": { - "data": [ - { - "id": "07d5071c-93fc-4cb0-bf93-971bd3b8ba60", - "display_name": "stoltenberg-mitchell.example", - "groups": [], - "culled_timestamp": "2035-05-01T11:49:20.307Z", - "stale_timestamp": "2035-04-17T11:49:20.307Z", - "stale_warning_timestamp": "2035-04-24T11:49:20.307Z", - "updated": "2025-04-17T11:49:20.307Z", - "insights_id": null, - "tags": [ - { - "key": "card", - "value": "wireless", - "namespace": "connecting" - }, - { - "key": "panel", - "value": "neural", - "namespace": "transmitting" - }, - { - "key": "pixel", - "value": "bluetooth", - "namespace": "hacking" - }, - { - "key": "firewall", - "value": "mobile", - "namespace": "navigating" - }, - { - "key": "capacitor", - "value": "digital", - "namespace": "navigating" - } - ], - "type": "system", - "last_check_in": "2035-04-25T11:49:20.307Z", - "os_major_version": 8, - "os_minor_version": 0, - "policies": [ - { - "id": "3a132f22-cee9-431c-9312-52be86f0f2b5", - "title": "Placeat consequatur in maiores." - } - ] - }, - { - "id": "0a3203ca-003c-419b-9d66-63b613e11d97", - "display_name": "schamberger.test", - "groups": [], - "culled_timestamp": "2035-05-01T11:49:20.287Z", - "stale_timestamp": "2035-04-17T11:49:20.287Z", - "stale_warning_timestamp": "2035-04-24T11:49:20.287Z", - "updated": "2025-04-17T11:49:20.287Z", - "insights_id": null, - "tags": [ - { - "key": "firewall", - "value": "bluetooth", - "namespace": "parsing" - }, - { - "key": "system", - "value": "virtual", - "namespace": "indexing" - }, - { - "key": "matrix", - "value": "cross-platform", - "namespace": "quantifying" - }, - { - "key": "application", - "value": "bluetooth", - "namespace": "generating" - }, - { - "key": "firewall", - "value": "redundant", - "namespace": "indexing" - } - ], - "type": "system", - "last_check_in": "2035-04-25T11:49:20.287Z", - "os_major_version": 8, - "os_minor_version": 0, - "policies": [ - { - "id": "3a132f22-cee9-431c-9312-52be86f0f2b5", - "title": "Placeat consequatur in maiores." - } - ] - }, - { - "id": "10305272-6038-4277-a7cf-db22ea111c6b", - "display_name": "mayer.example", - "groups": [], - "culled_timestamp": "2035-05-01T11:49:20.368Z", - "stale_timestamp": "2035-04-17T11:49:20.368Z", - "stale_warning_timestamp": "2035-04-24T11:49:20.368Z", - "updated": "2025-04-17T11:49:20.368Z", - "insights_id": null, - "tags": [ - { - "key": "transmitter", - "value": "primary", - "namespace": "connecting" - }, - { - "key": "protocol", - "value": "solid state", - "namespace": "programming" - }, - { - "key": "pixel", - "value": "back-end", - "namespace": "connecting" - }, - { - "key": "feed", - "value": "primary", - "namespace": "bypassing" - }, - { - "key": "bandwidth", - "value": "neural", - "namespace": "connecting" - } - ], - "type": "system", - "last_check_in": "2035-04-25T11:49:20.368Z", - "os_major_version": 8, - "os_minor_version": 0, - "policies": [ - { - "id": "3a132f22-cee9-431c-9312-52be86f0f2b5", - "title": "Placeat consequatur in maiores." - } - ] - }, - { - "id": "13045e5f-ccaa-4721-8488-938802281621", - "display_name": "dietrich-crona.test", - "groups": [], - "culled_timestamp": "2035-05-01T11:49:20.500Z", - "stale_timestamp": "2035-04-17T11:49:20.500Z", - "stale_warning_timestamp": "2035-04-24T11:49:20.500Z", - "updated": "2025-04-17T11:49:20.500Z", - "insights_id": null, - "tags": [ - { - "key": "microchip", - "value": "open-source", - "namespace": "quantifying" - }, - { - "key": "card", - "value": "virtual", - "namespace": "generating" - }, - { - "key": "firewall", - "value": "bluetooth", - "namespace": "parsing" - }, - { - "key": "application", - "value": "solid state", - "namespace": "quantifying" - }, - { - "key": "pixel", - "value": "primary", - "namespace": "backing up" - } - ], - "type": "system", - "last_check_in": "2035-04-25T11:49:20.500Z", - "os_major_version": 8, - "os_minor_version": 0, - "policies": [ - { - "id": "3a132f22-cee9-431c-9312-52be86f0f2b5", - "title": "Placeat consequatur in maiores." - } - ] - }, - { - "id": "2cf24058-09e4-4c03-a5a4-39965276666c", - "display_name": "abshire.example", - "groups": [], - "culled_timestamp": "2035-05-01T11:49:20.479Z", - "stale_timestamp": "2035-04-17T11:49:20.479Z", - "stale_warning_timestamp": "2035-04-24T11:49:20.479Z", - "updated": "2025-04-17T11:49:20.479Z", - "insights_id": null, - "tags": [ - { - "key": "protocol", - "value": "neural", - "namespace": "compressing" - }, - { - "key": "driver", - "value": "primary", - "namespace": "generating" - }, - { - "key": "application", - "value": "back-end", - "namespace": "bypassing" - }, - { - "key": "interface", - "value": "haptic", - "namespace": "overriding" - }, - { - "key": "card", - "value": "cross-platform", - "namespace": "calculating" - } - ], - "type": "system", - "last_check_in": "2035-04-25T11:49:20.479Z", - "os_major_version": 8, - "os_minor_version": 0, - "policies": [ - { - "id": "3a132f22-cee9-431c-9312-52be86f0f2b5", - "title": "Placeat consequatur in maiores." - } - ] - }, - { - "id": "3fe0f282-3a62-4851-a686-68e761be241d", - "display_name": "marquardt.test", - "groups": [], - "culled_timestamp": "2035-05-01T11:49:20.246Z", - "stale_timestamp": "2035-04-17T11:49:20.246Z", - "stale_warning_timestamp": "2035-04-24T11:49:20.246Z", - "updated": "2025-04-17T11:49:20.246Z", - "insights_id": null, - "tags": [ - { - "key": "port", - "value": "1080p", - "namespace": "overriding" - }, - { - "key": "driver", - "value": "virtual", - "namespace": "hacking" - }, - { - "key": "panel", - "value": "optical", - "namespace": "calculating" - }, - { - "key": "monitor", - "value": "cross-platform", - "namespace": "indexing" - }, - { - "key": "sensor", - "value": "online", - "namespace": "generating" - } - ], - "type": "system", - "last_check_in": "2035-04-25T11:49:20.246Z", - "os_major_version": 8, - "os_minor_version": 0, - "policies": [ - { - "id": "3a132f22-cee9-431c-9312-52be86f0f2b5", - "title": "Placeat consequatur in maiores." - } - ] - }, - { - "id": "528cc4b6-fc67-42ec-844b-557e26e3edcd", - "display_name": "labadie-waters.test", - "groups": [], - "culled_timestamp": "2035-05-01T11:49:20.418Z", - "stale_timestamp": "2035-04-17T11:49:20.418Z", - "stale_warning_timestamp": "2035-04-24T11:49:20.418Z", - "updated": "2025-04-17T11:49:20.418Z", - "insights_id": null, - "tags": [ - { - "key": "transmitter", - "value": "cross-platform", - "namespace": "overriding" - }, - { - "key": "system", - "value": "primary", - "namespace": "parsing" - }, - { - "key": "program", - "value": "bluetooth", - "namespace": "overriding" - }, - { - "key": "application", - "value": "auxiliary", - "namespace": "compressing" - }, - { - "key": "hard drive", - "value": "auxiliary", - "namespace": "overriding" - } - ], - "type": "system", - "last_check_in": "2035-04-25T11:49:20.418Z", - "os_major_version": 8, - "os_minor_version": 0, - "policies": [ - { - "id": "3a132f22-cee9-431c-9312-52be86f0f2b5", - "title": "Placeat consequatur in maiores." - } - ] - }, - { - "id": "58605dc6-8da7-498e-b4ed-910727493969", - "display_name": "huels-ernser.test", - "groups": [], - "culled_timestamp": "2035-05-01T11:49:20.337Z", - "stale_timestamp": "2035-04-17T11:49:20.337Z", - "stale_warning_timestamp": "2035-04-24T11:49:20.337Z", - "updated": "2025-04-17T11:49:20.337Z", - "insights_id": null, - "tags": [ - { - "key": "protocol", - "value": "1080p", - "namespace": "copying" - }, - { - "key": "card", - "value": "redundant", - "namespace": "programming" - }, - { - "key": "card", - "value": "wireless", - "namespace": "navigating" - }, - { - "key": "circuit", - "value": "redundant", - "namespace": "connecting" - }, - { - "key": "interface", - "value": "haptic", - "namespace": "generating" - } - ], - "type": "system", - "last_check_in": "2035-04-25T11:49:20.337Z", - "os_major_version": 8, - "os_minor_version": 0, - "policies": [ - { - "id": "3a132f22-cee9-431c-9312-52be86f0f2b5", - "title": "Placeat consequatur in maiores." - } - ] - }, - { - "id": "660ace40-8d0e-433d-b608-dd368547ffc6", - "display_name": "goodwin-marvin.example", - "groups": [], - "culled_timestamp": "2035-05-01T11:49:20.490Z", - "stale_timestamp": "2035-04-17T11:49:20.490Z", - "stale_warning_timestamp": "2035-04-24T11:49:20.490Z", - "updated": "2025-04-17T11:49:20.490Z", - "insights_id": null, - "tags": [ - { - "key": "circuit", - "value": "virtual", - "namespace": "programming" - }, - { - "key": "microchip", - "value": "solid state", - "namespace": "navigating" - }, - { - "key": "capacitor", - "value": "cross-platform", - "namespace": "hacking" - }, - { - "key": "matrix", - "value": "haptic", - "namespace": "backing up" - }, - { - "key": "driver", - "value": "multi-byte", - "namespace": "connecting" - } - ], - "type": "system", - "last_check_in": "2035-04-25T11:49:20.490Z", - "os_major_version": 8, - "os_minor_version": 0, - "policies": [ - { - "id": "3a132f22-cee9-431c-9312-52be86f0f2b5", - "title": "Placeat consequatur in maiores." - } - ] - }, - { - "id": "6bca070f-edf1-48e6-aaa1-f3ab40547a5a", - "display_name": "will.example", - "groups": [], - "culled_timestamp": "2035-05-01T11:49:20.469Z", - "stale_timestamp": "2035-04-17T11:49:20.469Z", - "stale_warning_timestamp": "2035-04-24T11:49:20.469Z", - "updated": "2025-04-17T11:49:20.469Z", - "insights_id": null, - "tags": [ - { - "key": "hard drive", - "value": "open-source", - "namespace": "connecting" - }, - { - "key": "driver", - "value": "online", - "namespace": "quantifying" - }, - { - "key": "bus", - "value": "online", - "namespace": "bypassing" - }, - { - "key": "driver", - "value": "mobile", - "namespace": "indexing" - }, - { - "key": "microchip", - "value": "online", - "namespace": "hacking" - } - ], - "type": "system", - "last_check_in": "2035-04-25T11:49:20.469Z", - "os_major_version": 8, - "os_minor_version": 0, - "policies": [ - { - "id": "3a132f22-cee9-431c-9312-52be86f0f2b5", - "title": "Placeat consequatur in maiores." - } - ] - } - ], - "meta": { - "total": 25, - "tags": [], - "limit": 10, - "offset": 0 - }, - "links": { - "first": "/api/compliance/v2/reports/3a132f22-cee9-431c-9312-52be86f0f2b5/systems?limit=10&offset=0", - "last": "/api/compliance/v2/reports/3a132f22-cee9-431c-9312-52be86f0f2b5/systems?limit=10&offset=20", - "next": "/api/compliance/v2/reports/3a132f22-cee9-431c-9312-52be86f0f2b5/systems?limit=10&offset=10" - } - }, - "summary": "", - "description": "" - }, - "List of Systems sorted by \"os_minor_version:asc\"": { - "value": { - "data": [ - { - "id": "23c858e8-d89e-4d80-8c14-eb44e30cfac1", - "display_name": "roob.example", - "groups": [], - "culled_timestamp": "2035-05-01T11:49:20.998Z", - "stale_timestamp": "2035-04-17T11:49:20.998Z", - "stale_warning_timestamp": "2035-04-24T11:49:20.998Z", - "updated": "2025-04-17T11:49:20.998Z", - "insights_id": null, - "tags": [ - { - "key": "array", - "value": "haptic", - "namespace": "synthesizing" - }, - { - "key": "microchip", - "value": "mobile", - "namespace": "parsing" - }, - { - "key": "sensor", - "value": "back-end", - "namespace": "programming" - }, - { - "key": "array", - "value": "haptic", - "namespace": "hacking" - }, - { - "key": "application", - "value": "wireless", - "namespace": "bypassing" - } - ], - "type": "system", - "last_check_in": "2035-04-25T11:49:20.998Z", - "os_major_version": 8, - "os_minor_version": 0, - "policies": [ - { - "id": "e812cc1e-8961-4232-aa1e-75d7204fe70f", - "title": "Et provident hic natus." - } - ] - }, - { - "id": "3baf6701-03d8-4855-9c6a-8e4885a1d70f", - "display_name": "barton.example", - "groups": [], - "culled_timestamp": "2035-05-01T11:49:21.074Z", - "stale_timestamp": "2035-04-17T11:49:21.074Z", - "stale_warning_timestamp": "2035-04-24T11:49:21.074Z", - "updated": "2025-04-17T11:49:21.074Z", - "insights_id": null, - "tags": [ - { - "key": "application", - "value": "redundant", - "namespace": "programming" - }, - { - "key": "capacitor", - "value": "primary", - "namespace": "calculating" - }, - { - "key": "circuit", - "value": "bluetooth", - "namespace": "bypassing" - }, - { - "key": "interface", - "value": "wireless", - "namespace": "navigating" - }, - { - "key": "panel", - "value": "virtual", - "namespace": "overriding" - } - ], - "type": "system", - "last_check_in": "2035-04-25T11:49:21.074Z", - "os_major_version": 8, - "os_minor_version": 0, - "policies": [ - { - "id": "e812cc1e-8961-4232-aa1e-75d7204fe70f", - "title": "Et provident hic natus." - } - ] - }, - { - "id": "3e7028b4-a0cb-4280-a0ca-2992541d6737", - "display_name": "turcotte.test", - "groups": [], - "culled_timestamp": "2035-05-01T11:49:21.092Z", - "stale_timestamp": "2035-04-17T11:49:21.092Z", - "stale_warning_timestamp": "2035-04-24T11:49:21.092Z", - "updated": "2025-04-17T11:49:21.092Z", - "insights_id": null, - "tags": [ - { - "key": "hard drive", - "value": "online", - "namespace": "bypassing" - }, - { - "key": "firewall", - "value": "multi-byte", - "namespace": "synthesizing" - }, - { - "key": "firewall", - "value": "redundant", - "namespace": "calculating" - }, - { - "key": "system", - "value": "cross-platform", - "namespace": "synthesizing" - }, - { - "key": "alarm", - "value": "cross-platform", - "namespace": "quantifying" - } - ], - "type": "system", - "last_check_in": "2035-04-25T11:49:21.092Z", - "os_major_version": 8, - "os_minor_version": 0, - "policies": [ - { - "id": "e812cc1e-8961-4232-aa1e-75d7204fe70f", - "title": "Et provident hic natus." - } - ] - }, - { - "id": "425c7cc9-31f1-4c44-ac65-435dc7f32f11", - "display_name": "gislason.test", - "groups": [], - "culled_timestamp": "2035-05-01T11:49:21.056Z", - "stale_timestamp": "2035-04-17T11:49:21.056Z", - "stale_warning_timestamp": "2035-04-24T11:49:21.056Z", - "updated": "2025-04-17T11:49:21.056Z", - "insights_id": null, - "tags": [ - { - "key": "interface", - "value": "mobile", - "namespace": "quantifying" - }, - { - "key": "pixel", - "value": "back-end", - "namespace": "overriding" - }, - { - "key": "bus", - "value": "open-source", - "namespace": "connecting" - }, - { - "key": "port", - "value": "online", - "namespace": "connecting" - }, - { - "key": "protocol", - "value": "digital", - "namespace": "calculating" - } - ], - "type": "system", - "last_check_in": "2035-04-25T11:49:21.056Z", - "os_major_version": 8, - "os_minor_version": 0, - "policies": [ - { - "id": "e812cc1e-8961-4232-aa1e-75d7204fe70f", - "title": "Et provident hic natus." - } - ] - }, - { - "id": "44094191-c7af-41bb-8564-f6796687fed3", - "display_name": "keebler.example", - "groups": [], - "culled_timestamp": "2035-05-01T11:49:21.045Z", - "stale_timestamp": "2035-04-17T11:49:21.045Z", - "stale_warning_timestamp": "2035-04-24T11:49:21.045Z", - "updated": "2025-04-17T11:49:21.045Z", - "insights_id": null, - "tags": [ - { - "key": "sensor", - "value": "wireless", - "namespace": "overriding" - }, - { - "key": "bus", - "value": "multi-byte", - "namespace": "transmitting" - }, - { - "key": "system", - "value": "digital", - "namespace": "hacking" - }, - { - "key": "alarm", - "value": "optical", - "namespace": "bypassing" - }, - { - "key": "hard drive", - "value": "optical", - "namespace": "parsing" - } - ], - "type": "system", - "last_check_in": "2035-04-25T11:49:21.045Z", - "os_major_version": 8, - "os_minor_version": 0, - "policies": [ - { - "id": "e812cc1e-8961-4232-aa1e-75d7204fe70f", - "title": "Et provident hic natus." - } - ] - }, - { - "id": "4f5996f9-9855-4e72-94b4-2ab0ddce2ef1", - "display_name": "jacobson.example", - "groups": [], - "culled_timestamp": "2035-05-01T11:49:21.142Z", - "stale_timestamp": "2035-04-17T11:49:21.142Z", - "stale_warning_timestamp": "2035-04-24T11:49:21.142Z", - "updated": "2025-04-17T11:49:21.142Z", - "insights_id": null, - "tags": [ - { - "key": "panel", - "value": "back-end", - "namespace": "programming" - }, - { - "key": "bandwidth", - "value": "solid state", - "namespace": "programming" - }, - { - "key": "program", - "value": "haptic", - "namespace": "compressing" - }, - { - "key": "program", - "value": "wireless", - "namespace": "copying" - }, - { - "key": "feed", - "value": "online", - "namespace": "calculating" - } - ], - "type": "system", - "last_check_in": "2035-04-25T11:49:21.142Z", - "os_major_version": 8, - "os_minor_version": 0, - "policies": [ - { - "id": "e812cc1e-8961-4232-aa1e-75d7204fe70f", - "title": "Et provident hic natus." - } - ] - }, - { - "id": "561b5192-dd81-4657-9230-d023e549d122", - "display_name": "roob.test", - "groups": [], - "culled_timestamp": "2035-05-01T11:49:21.036Z", - "stale_timestamp": "2035-04-17T11:49:21.036Z", - "stale_warning_timestamp": "2035-04-24T11:49:21.036Z", - "updated": "2025-04-17T11:49:21.036Z", - "insights_id": null, - "tags": [ - { - "key": "protocol", - "value": "1080p", - "namespace": "programming" - }, - { - "key": "interface", - "value": "redundant", - "namespace": "transmitting" - }, - { - "key": "protocol", - "value": "multi-byte", - "namespace": "connecting" - }, - { - "key": "transmitter", - "value": "solid state", - "namespace": "synthesizing" - }, - { - "key": "panel", - "value": "digital", - "namespace": "bypassing" - } - ], - "type": "system", - "last_check_in": "2035-04-25T11:49:21.036Z", - "os_major_version": 8, - "os_minor_version": 0, - "policies": [ - { - "id": "e812cc1e-8961-4232-aa1e-75d7204fe70f", - "title": "Et provident hic natus." - } - ] - }, - { - "id": "5ddfa11e-1583-4ea0-997d-09ceb85fec5e", - "display_name": "auer.test", - "groups": [], - "culled_timestamp": "2035-05-01T11:49:21.152Z", - "stale_timestamp": "2035-04-17T11:49:21.152Z", - "stale_warning_timestamp": "2035-04-24T11:49:21.152Z", - "updated": "2025-04-17T11:49:21.152Z", - "insights_id": null, - "tags": [ - { - "key": "transmitter", - "value": "neural", - "namespace": "programming" - }, - { - "key": "circuit", - "value": "primary", - "namespace": "copying" - }, - { - "key": "bandwidth", - "value": "1080p", - "namespace": "hacking" - }, - { - "key": "matrix", - "value": "primary", - "namespace": "indexing" - }, - { - "key": "monitor", - "value": "virtual", - "namespace": "bypassing" - } - ], - "type": "system", - "last_check_in": "2035-04-25T11:49:21.152Z", - "os_major_version": 8, - "os_minor_version": 0, - "policies": [ - { - "id": "e812cc1e-8961-4232-aa1e-75d7204fe70f", - "title": "Et provident hic natus." - } - ] - }, - { - "id": "60d4a6f2-3ddc-4eee-9eb6-47a51356e6e1", - "display_name": "pfeffer.example", - "groups": [], - "culled_timestamp": "2035-05-01T11:49:20.989Z", - "stale_timestamp": "2035-04-17T11:49:20.989Z", - "stale_warning_timestamp": "2035-04-24T11:49:20.989Z", - "updated": "2025-04-17T11:49:20.989Z", - "insights_id": null, - "tags": [ - { - "key": "transmitter", - "value": "cross-platform", - "namespace": "navigating" - }, - { - "key": "bandwidth", - "value": "back-end", - "namespace": "bypassing" - }, - { - "key": "sensor", - "value": "bluetooth", - "namespace": "synthesizing" - }, - { - "key": "bus", - "value": "multi-byte", - "namespace": "generating" - }, - { - "key": "system", - "value": "neural", - "namespace": "hacking" - } - ], - "type": "system", - "last_check_in": "2035-04-25T11:49:20.989Z", - "os_major_version": 8, - "os_minor_version": 0, - "policies": [ - { - "id": "e812cc1e-8961-4232-aa1e-75d7204fe70f", - "title": "Et provident hic natus." - } - ] - }, - { - "id": "71a957c0-ef33-4314-bd83-33a283cca843", - "display_name": "frami.example", - "groups": [], - "culled_timestamp": "2035-05-01T11:49:20.969Z", - "stale_timestamp": "2035-04-17T11:49:20.969Z", - "stale_warning_timestamp": "2035-04-24T11:49:20.969Z", - "updated": "2025-04-17T11:49:20.969Z", - "insights_id": null, - "tags": [ - { - "key": "port", - "value": "optical", - "namespace": "programming" - }, - { - "key": "interface", - "value": "haptic", - "namespace": "copying" - }, - { - "key": "hard drive", - "value": "haptic", - "namespace": "transmitting" - }, - { - "key": "hard drive", - "value": "mobile", - "namespace": "calculating" - }, - { - "key": "array", - "value": "cross-platform", - "namespace": "overriding" - } - ], - "type": "system", - "last_check_in": "2035-04-25T11:49:20.969Z", - "os_major_version": 8, - "os_minor_version": 0, - "policies": [ - { - "id": "e812cc1e-8961-4232-aa1e-75d7204fe70f", - "title": "Et provident hic natus." - } - ] - } - ], - "meta": { - "total": 25, - "tags": [], - "limit": 10, - "offset": 0, - "sort_by": "os_minor_version" - }, - "links": { - "first": "/api/compliance/v2/reports/e812cc1e-8961-4232-aa1e-75d7204fe70f/systems?limit=10&offset=0&sort_by=os_minor_version", - "last": "/api/compliance/v2/reports/e812cc1e-8961-4232-aa1e-75d7204fe70f/systems?limit=10&offset=20&sort_by=os_minor_version", - "next": "/api/compliance/v2/reports/e812cc1e-8961-4232-aa1e-75d7204fe70f/systems?limit=10&offset=10&sort_by=os_minor_version" - } - }, - "summary": "", - "description": "" - }, - "List of Systems filtered by \"(os_minor_version=0)\"": { - "value": { - "data": [ - { - "id": "05312f8b-3402-4599-b64d-9342d8807e82", - "display_name": "stiedemann-nolan.example", - "groups": [], - "culled_timestamp": "2035-05-01T11:49:21.663Z", - "stale_timestamp": "2035-04-17T11:49:21.663Z", - "stale_warning_timestamp": "2035-04-24T11:49:21.663Z", - "updated": "2025-04-17T11:49:21.663Z", - "insights_id": null, - "tags": [ - { - "key": "alarm", - "value": "primary", - "namespace": "connecting" - }, - { - "key": "bandwidth", - "value": "virtual", - "namespace": "programming" - }, - { - "key": "array", - "value": "digital", - "namespace": "bypassing" - }, - { - "key": "circuit", - "value": "online", - "namespace": "overriding" - }, - { - "key": "bandwidth", - "value": "multi-byte", - "namespace": "connecting" - } - ], - "type": "system", - "last_check_in": "2035-04-25T11:49:21.663Z", - "os_major_version": 8, - "os_minor_version": 0, - "policies": [ - { - "id": "4017f0d3-f8f8-46b6-8ba6-80c5d3866772", - "title": "Fugiat quo tempore ullam." - } - ] - }, - { - "id": "0d9e6920-7ee4-43af-9e2d-b5338f41916f", - "display_name": "pfeffer.test", - "groups": [], - "culled_timestamp": "2035-05-01T11:49:21.711Z", - "stale_timestamp": "2035-04-17T11:49:21.711Z", - "stale_warning_timestamp": "2035-04-24T11:49:21.711Z", - "updated": "2025-04-17T11:49:21.711Z", - "insights_id": null, - "tags": [ - { - "key": "microchip", - "value": "wireless", - "namespace": "connecting" - }, - { - "key": "transmitter", - "value": "auxiliary", - "namespace": "quantifying" - }, - { - "key": "application", - "value": "cross-platform", - "namespace": "synthesizing" - }, - { - "key": "bandwidth", - "value": "bluetooth", - "namespace": "transmitting" - }, - { - "key": "circuit", - "value": "online", - "namespace": "navigating" - } - ], - "type": "system", - "last_check_in": "2035-04-25T11:49:21.711Z", - "os_major_version": 8, - "os_minor_version": 0, - "policies": [ - { - "id": "4017f0d3-f8f8-46b6-8ba6-80c5d3866772", - "title": "Fugiat quo tempore ullam." - } - ] - }, - { - "id": "0dbbbbae-e3da-4533-9198-7f15484180cd", - "display_name": "runte.example", - "groups": [], - "culled_timestamp": "2035-05-01T11:49:21.653Z", - "stale_timestamp": "2035-04-17T11:49:21.653Z", - "stale_warning_timestamp": "2035-04-24T11:49:21.653Z", - "updated": "2025-04-17T11:49:21.653Z", - "insights_id": null, - "tags": [ - { - "key": "monitor", - "value": "bluetooth", - "namespace": "programming" - }, - { - "key": "transmitter", - "value": "solid state", - "namespace": "generating" - }, - { - "key": "alarm", - "value": "virtual", - "namespace": "programming" - }, - { - "key": "driver", - "value": "bluetooth", - "namespace": "quantifying" - }, - { - "key": "panel", - "value": "multi-byte", - "namespace": "bypassing" - } - ], - "type": "system", - "last_check_in": "2035-04-25T11:49:21.653Z", - "os_major_version": 8, - "os_minor_version": 0, - "policies": [ - { - "id": "4017f0d3-f8f8-46b6-8ba6-80c5d3866772", - "title": "Fugiat quo tempore ullam." - } - ] - }, - { - "id": "373e8824-fbc2-4694-85f8-7de77731f61b", - "display_name": "windler.test", - "groups": [], - "culled_timestamp": "2035-05-01T11:49:21.643Z", - "stale_timestamp": "2035-04-17T11:49:21.643Z", - "stale_warning_timestamp": "2035-04-24T11:49:21.643Z", - "updated": "2025-04-17T11:49:21.643Z", - "insights_id": null, - "tags": [ - { - "key": "array", - "value": "neural", - "namespace": "generating" - }, - { - "key": "circuit", - "value": "mobile", - "namespace": "calculating" - }, - { - "key": "matrix", - "value": "bluetooth", - "namespace": "backing up" - }, - { - "key": "transmitter", - "value": "cross-platform", - "namespace": "calculating" - }, - { - "key": "pixel", - "value": "wireless", - "namespace": "quantifying" - } - ], - "type": "system", - "last_check_in": "2035-04-25T11:49:21.643Z", - "os_major_version": 8, - "os_minor_version": 0, - "policies": [ - { - "id": "4017f0d3-f8f8-46b6-8ba6-80c5d3866772", - "title": "Fugiat quo tempore ullam." - } - ] - }, - { - "id": "3a0c34ba-72a9-43fb-bf4c-6a345dd7d72e", - "display_name": "connelly.test", - "groups": [], - "culled_timestamp": "2035-05-01T11:49:21.580Z", - "stale_timestamp": "2035-04-17T11:49:21.580Z", - "stale_warning_timestamp": "2035-04-24T11:49:21.580Z", - "updated": "2025-04-17T11:49:21.581Z", - "insights_id": null, - "tags": [ - { - "key": "sensor", - "value": "1080p", - "namespace": "overriding" - }, - { - "key": "panel", - "value": "online", - "namespace": "copying" - }, - { - "key": "pixel", - "value": "back-end", - "namespace": "copying" - }, - { - "key": "transmitter", - "value": "redundant", - "namespace": "connecting" - }, - { - "key": "card", - "value": "neural", - "namespace": "compressing" - } - ], - "type": "system", - "last_check_in": "2035-04-25T11:49:21.580Z", - "os_major_version": 8, - "os_minor_version": 0, - "policies": [ - { - "id": "4017f0d3-f8f8-46b6-8ba6-80c5d3866772", - "title": "Fugiat quo tempore ullam." - } - ] - }, - { - "id": "3bdfa7ce-c1cb-42f0-9529-874d6193991e", - "display_name": "stanton.example", - "groups": [], - "culled_timestamp": "2035-05-01T11:49:21.793Z", - "stale_timestamp": "2035-04-17T11:49:21.793Z", - "stale_warning_timestamp": "2035-04-24T11:49:21.793Z", - "updated": "2025-04-17T11:49:21.793Z", - "insights_id": null, - "tags": [ - { - "key": "matrix", - "value": "bluetooth", - "namespace": "programming" - }, - { - "key": "circuit", - "value": "virtual", - "namespace": "synthesizing" - }, - { - "key": "monitor", - "value": "optical", - "namespace": "navigating" - }, - { - "key": "monitor", - "value": "online", - "namespace": "compressing" - }, - { - "key": "monitor", - "value": "bluetooth", - "namespace": "navigating" - } - ], - "type": "system", - "last_check_in": "2035-04-25T11:49:21.793Z", - "os_major_version": 8, - "os_minor_version": 0, - "policies": [ - { - "id": "4017f0d3-f8f8-46b6-8ba6-80c5d3866772", - "title": "Fugiat quo tempore ullam." - } - ] - }, - { - "id": "44f86917-db1c-47a0-b7b1-667026248ced", - "display_name": "bayer-reynolds.example", - "groups": [], - "culled_timestamp": "2035-05-01T11:49:21.558Z", - "stale_timestamp": "2035-04-17T11:49:21.558Z", - "stale_warning_timestamp": "2035-04-24T11:49:21.558Z", - "updated": "2025-04-17T11:49:21.558Z", - "insights_id": null, - "tags": [ - { - "key": "microchip", - "value": "mobile", - "namespace": "quantifying" - }, - { - "key": "driver", - "value": "bluetooth", - "namespace": "calculating" - }, - { - "key": "circuit", - "value": "solid state", - "namespace": "connecting" - }, - { - "key": "capacitor", - "value": "auxiliary", - "namespace": "calculating" - }, - { - "key": "sensor", - "value": "mobile", - "namespace": "connecting" - } - ], - "type": "system", - "last_check_in": "2035-04-25T11:49:21.558Z", - "os_major_version": 8, - "os_minor_version": 0, - "policies": [ - { - "id": "4017f0d3-f8f8-46b6-8ba6-80c5d3866772", - "title": "Fugiat quo tempore ullam." - } - ] - }, - { - "id": "53c7fe23-c2f4-4354-b5bd-fe47567dae33", - "display_name": "tremblay-bogan.example", - "groups": [], - "culled_timestamp": "2035-05-01T11:49:21.673Z", - "stale_timestamp": "2035-04-17T11:49:21.673Z", - "stale_warning_timestamp": "2035-04-24T11:49:21.673Z", - "updated": "2025-04-17T11:49:21.673Z", - "insights_id": null, - "tags": [ - { - "key": "array", - "value": "optical", - "namespace": "generating" - }, - { - "key": "monitor", - "value": "wireless", - "namespace": "navigating" - }, - { - "key": "interface", - "value": "solid state", - "namespace": "parsing" - }, - { - "key": "alarm", - "value": "primary", - "namespace": "navigating" - }, - { - "key": "array", - "value": "auxiliary", - "namespace": "quantifying" - } - ], - "type": "system", - "last_check_in": "2035-04-25T11:49:21.673Z", - "os_major_version": 8, - "os_minor_version": 0, - "policies": [ - { - "id": "4017f0d3-f8f8-46b6-8ba6-80c5d3866772", - "title": "Fugiat quo tempore ullam." - } - ] - }, - { - "id": "58f5b724-26d7-4172-b64a-52c0aedd9d0f", - "display_name": "mann-leuschke.example", - "groups": [], - "culled_timestamp": "2035-05-01T11:49:21.683Z", - "stale_timestamp": "2035-04-17T11:49:21.683Z", - "stale_warning_timestamp": "2035-04-24T11:49:21.683Z", - "updated": "2025-04-17T11:49:21.683Z", - "insights_id": null, - "tags": [ - { - "key": "program", - "value": "optical", - "namespace": "navigating" - }, - { - "key": "transmitter", - "value": "multi-byte", - "namespace": "transmitting" - }, - { - "key": "bandwidth", - "value": "back-end", - "namespace": "connecting" - }, - { - "key": "firewall", - "value": "bluetooth", - "namespace": "synthesizing" - }, - { - "key": "firewall", - "value": "digital", - "namespace": "transmitting" - } - ], - "type": "system", - "last_check_in": "2035-04-25T11:49:21.683Z", - "os_major_version": 8, - "os_minor_version": 0, - "policies": [ - { - "id": "4017f0d3-f8f8-46b6-8ba6-80c5d3866772", - "title": "Fugiat quo tempore ullam." - } - ] - }, - { - "id": "5b9fbe75-8e9a-49dc-849f-5662590d18f8", - "display_name": "price.example", - "groups": [], - "culled_timestamp": "2035-05-01T11:49:21.771Z", - "stale_timestamp": "2035-04-17T11:49:21.771Z", - "stale_warning_timestamp": "2035-04-24T11:49:21.771Z", - "updated": "2025-04-17T11:49:21.771Z", - "insights_id": null, - "tags": [ - { - "key": "protocol", - "value": "back-end", - "namespace": "transmitting" - }, - { - "key": "array", - "value": "wireless", - "namespace": "quantifying" - }, - { - "key": "circuit", - "value": "redundant", - "namespace": "calculating" - }, - { - "key": "monitor", - "value": "virtual", - "namespace": "synthesizing" - }, - { - "key": "pixel", - "value": "optical", - "namespace": "hacking" - } - ], - "type": "system", - "last_check_in": "2035-04-25T11:49:21.771Z", - "os_major_version": 8, - "os_minor_version": 0, - "policies": [ - { - "id": "4017f0d3-f8f8-46b6-8ba6-80c5d3866772", - "title": "Fugiat quo tempore ullam." - } - ] - } - ], - "meta": { - "total": 25, - "filter": "(os_minor_version=0)", - "tags": [], - "limit": 10, - "offset": 0 - }, - "links": { - "first": "/api/compliance/v2/reports/4017f0d3-f8f8-46b6-8ba6-80c5d3866772/systems?filter=%28os_minor_version%3D0%29&limit=10&offset=0", - "last": "/api/compliance/v2/reports/4017f0d3-f8f8-46b6-8ba6-80c5d3866772/systems?filter=%28os_minor_version%3D0%29&limit=10&offset=20", - "next": "/api/compliance/v2/reports/4017f0d3-f8f8-46b6-8ba6-80c5d3866772/systems?filter=%28os_minor_version%3D0%29&limit=10&offset=10" - } - }, - "summary": "", - "description": "" - } - }, - "schema": { - "type": "object", - "properties": { - "meta": { - "$ref": "#/components/schemas/metadata" - }, - "links": { - "$ref": "#/components/schemas/links" - }, - "data": { - "type": "array", - "items": { - "properties": { - "schema": { - "$ref": "#/components/schemas/system" - } - } - } - } - } - } - } - } - }, - "422": { - "description": "Returns with Unprocessable Content", - "content": { - "application/vnd.api+json": { - "examples": { - "Description of an error when sorting by incorrect parameter": { - "value": { - "errors": [ - "Result cannot be sorted by the 'description' column." - ] - }, - "summary": "", - "description": "" - }, - "Description of an error when requesting higher limit than supported": { - "value": { - "errors": [ - "Invalid parameter: limit must be less than or equal to 100" - ] - }, - "summary": "", - "description": "" - } - }, - "schema": { - "$ref": "#/components/schemas/errors" - } - } - } - } - } - } - }, - "/reports/{report_id}/systems/os_versions": { - "get": { - "summary": "Request the list of available OS versions", - "parameters": [ - { - "name": "X-RH-IDENTITY", - "in": "header", - "schema": { - "type": "string" - }, - "description": "For internal use only" - }, - { - "name": "filter", - "in": "query", - "required": false, - "description": "Query string to filter items by their attributes. Compliant with scoped_search query language. However, only `=` or `!=` (resp. `<>`) operators are supported.

Systems are searchable using attributes `display_name`, `os_version`, `os_major_version`, `os_minor_version`, `assigned_or_scanned`, `never_reported`, `group_name`, `policies`, and `profile_ref_id`

(e.g.: `(field_1=something AND field_2!=\"something else\") OR field_3>40`)", - "schema": { - "type": "string" - } - }, - { - "name": "report_id", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - } - ], - "tags": [ - "Systems" - ], - "description": "This feature is exclusively used by the frontend", - "operationId": "ReportSystemsOS", - "deprecated": true, - "responses": { - "200": { - "description": "Lists available OS versions", - "content": { - "application/vnd.api+json": { - "examples": { - "List of available OS versions": { - "value": [ - "8.0" - ], - "summary": "", - "description": "" - } - }, - "schema": { - "type": "array", - "items": { - "type": "string" - } - } - } - } - } - } - } - }, - "/reports/{report_id}/systems/{system_id}": { - "get": { - "summary": "Request a System", - "parameters": [ - { - "name": "X-RH-IDENTITY", - "in": "header", - "schema": { - "type": "string" - }, - "description": "For internal use only" - }, - { - "name": "system_id", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "report_id", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - } - ], - "tags": [ - "Reports" - ], - "description": "Retrieve a specific system from a specific report.", - "operationId": "ReportSystem", - "responses": { - "200": { - "description": "Returns a System under a Report", - "content": { - "application/vnd.api+json": { - "examples": { - "Returns a System under a Report": { - "value": { - "data": { - "id": "d3ae7cc2-f9e1-4657-9354-1bad7cc57cec", - "display_name": "dibbert-smitham.example", - "groups": [], - "culled_timestamp": "2035-05-01T11:49:24.136Z", - "stale_timestamp": "2035-04-17T11:49:24.136Z", - "stale_warning_timestamp": "2035-04-24T11:49:24.136Z", - "updated": "2025-04-17T11:49:24.136Z", - "insights_id": null, - "tags": [ - { - "key": "driver", - "value": "auxiliary", - "namespace": "indexing" - }, - { - "key": "matrix", - "value": "primary", - "namespace": "transmitting" - }, - { - "key": "system", - "value": "1080p", - "namespace": "indexing" - }, - { - "key": "sensor", - "value": "1080p", - "namespace": "indexing" - }, - { - "key": "bandwidth", - "value": "digital", - "namespace": "generating" - } - ], - "type": "system", - "last_check_in": "2035-04-25T11:49:24.136Z", - "os_major_version": 8, - "os_minor_version": 0, - "policies": [ - { - "id": "c71a0ebc-513b-4181-bd57-a0cf2f7042c4", - "title": "Rem quam officiis ut." - } - ] - } - }, - "summary": "", - "description": "" - } - }, - "schema": { - "type": "object", - "properties": { - "data": { - "type": "object", - "properties": { - "schema": { - "$ref": "#/components/schemas/system" - } - } - } - } - } - } - } - }, - "404": { - "description": "Returns with Not Found", - "content": { - "application/vnd.api+json": { - "examples": { - "Description of an error when requesting a non-existing System": { - "value": { - "errors": [ - "V2::System not found with ID e9553558-9064-4d25-b613-e32ddd076cd0" - ] - }, - "summary": "", - "description": "" - } - }, - "schema": { - "$ref": "#/components/schemas/errors" - } - } - } - } - } - } - }, - "/policies/{policy_id}/tailorings": { - "get": { - "summary": "Request Tailorings", - "parameters": [ - { - "name": "X-RH-IDENTITY", - "in": "header", - "schema": { - "type": "string" - }, - "description": "For internal use only" - }, - { - "name": "limit", - "in": "query", - "required": false, - "description": "Number of items to return per page", - "schema": { - "type": "number", - "maximum": 100, - "minimum": 1, - "default": 10 - } - }, - { - "name": "offset", - "in": "query", - "required": false, - "description": "Offset of first item of paginated response", - "schema": { - "type": "integer", - "minimum": 0, - "default": 0 - } - }, - { - "name": "ids_only", - "in": "query", - "required": false, - "description": "Indicates whether to return only resource IDs.", - "schema": { - "type": "boolean" - } - }, - { - "name": "sort_by", - "in": "query", - "required": false, - "description": "Attribute and direction to sort the items by. Represented by an array of fields with an optional direction (`:asc` or `:desc`).

If no direction is selected, `:asc` is used by default.", - "schema": { - "type": "array", - "items": { - "enum": [ - "os_minor_version", - "os_minor_version:asc", - "os_minor_version:desc" - ] - } - } - }, - { - "name": "filter", - "in": "query", - "required": false, - "description": "Query string to filter items by their attributes. Compliant with scoped_search query language. However, only `=` or `!=` (resp. `<>`) operators are supported.

Tailorings are searchable using attributes `os_minor_version`

(e.g.: `(field_1=something AND field_2!=\"something else\") OR field_3>40`)", - "schema": { - "type": "string" - } - }, - { - "name": "policy_id", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - } - ], - "tags": [ - "Policies" - ], - "description": "Retrieve a list of all tailorings.", - "operationId": "Tailorings", - "responses": { - "200": { - "description": "Lists Tailorings", - "content": { - "application/vnd.api+json": { - "examples": { - "List of Tailorings": { - "value": { - "data": [ - { - "id": "02b710bd-746d-40f6-b9cb-c8a000dd592a", - "profile_id": "119853c5-7893-4149-9970-84c6884cbf3f", - "os_minor_version": 2, - "value_overrides": {}, - "type": "tailoring", - "os_major_version": 7, - "security_guide_id": "736a0eae-3eb2-4c9c-b5e1-7a7038d2a7ed", - "security_guide_version": "100.96.22" - }, - { - "id": "063364f6-161d-452a-9413-635e71a3909d", - "profile_id": "8bd5b376-a810-4cd7-8b4f-508f8291c135", - "os_minor_version": 10, - "value_overrides": {}, - "type": "tailoring", - "os_major_version": 7, - "security_guide_id": "b031c24e-42e0-4a4f-85d2-29049c2faae1", - "security_guide_version": "100.96.30" - }, - { - "id": "0b34aec0-d2c9-4b0b-9b01-768c70a82bec", - "profile_id": "6cc15abe-4b11-4db4-bf44-45ec843e6262", - "os_minor_version": 7, - "value_overrides": {}, - "type": "tailoring", - "os_major_version": 7, - "security_guide_id": "fdb7140c-b1c1-48bb-96c2-b6bde9887da5", - "security_guide_version": "100.96.27" - }, - { - "id": "17486379-b1f6-4b40-a8cf-8a03df40d1a3", - "profile_id": "b0b5571c-4de2-4d70-9e1a-32e3425fc576", - "os_minor_version": 6, - "value_overrides": {}, - "type": "tailoring", - "os_major_version": 7, - "security_guide_id": "43b0feca-f2ef-4299-b2c6-8e6dbc1e8bc0", - "security_guide_version": "100.96.26" - }, - { - "id": "19ae8bfb-b7ae-4b84-8fc0-27e734eb96ef", - "profile_id": "4a6c7063-b080-46a0-be7b-cee5e202b4bd", - "os_minor_version": 3, - "value_overrides": {}, - "type": "tailoring", - "os_major_version": 7, - "security_guide_id": "3ac3b2f9-1084-4f82-9136-a5622a4faa54", - "security_guide_version": "100.96.23" - }, - { - "id": "23ade012-9c40-4b6d-9286-fbc0c952e823", - "profile_id": "26431292-3f2a-48ad-b3a9-d6a7eae0455d", - "os_minor_version": 12, - "value_overrides": {}, - "type": "tailoring", - "os_major_version": 7, - "security_guide_id": "d927fd11-de88-4e8b-bb59-cc631c7032b7", - "security_guide_version": "100.96.32" - }, - { - "id": "25a5f011-f444-4970-8f25-1d73b7fb3a67", - "profile_id": "2eb0489d-4de0-40f8-af9a-9ae634e206f8", - "os_minor_version": 1, - "value_overrides": {}, - "type": "tailoring", - "os_major_version": 7, - "security_guide_id": "5827fa3f-762c-44cd-96fe-f5c825c74630", - "security_guide_version": "100.96.21" - }, - { - "id": "340a02cb-bee4-4d61-b75e-acee92ec999d", - "profile_id": "2cbba1e5-1b3d-4349-ac24-c4f3beffe1a2", - "os_minor_version": 15, - "value_overrides": {}, - "type": "tailoring", - "os_major_version": 7, - "security_guide_id": "dcb01c0f-ebf4-4027-8717-13b448a66f22", - "security_guide_version": "100.96.35" - }, - { - "id": "41da9a4e-b9a3-439d-98cc-ebac225b9564", - "profile_id": "f0634158-7ca6-4791-a9d0-0748ba11691e", - "os_minor_version": 9, - "value_overrides": {}, - "type": "tailoring", - "os_major_version": 7, - "security_guide_id": "2ab1cec4-abc1-4a99-9707-66e3456bce0b", - "security_guide_version": "100.96.29" - }, - { - "id": "48d79b76-8ed8-44a9-abd4-a95e60e0c1c1", - "profile_id": "ec16d9ee-1bd6-4fb7-8d6b-1e920081115a", - "os_minor_version": 13, - "value_overrides": {}, - "type": "tailoring", - "os_major_version": 7, - "security_guide_id": "2b24e482-2824-4532-8f0e-d4da66a1d160", - "security_guide_version": "100.96.33" - } - ], - "meta": { - "total": 25, - "limit": 10, - "offset": 0 - }, - "links": { - "first": "/api/compliance/v2/policies/43e1c6f8-9d92-46c6-82cd-2a1e32de5120/tailorings?limit=10&offset=0", - "last": "/api/compliance/v2/policies/43e1c6f8-9d92-46c6-82cd-2a1e32de5120/tailorings?limit=10&offset=20", - "next": "/api/compliance/v2/policies/43e1c6f8-9d92-46c6-82cd-2a1e32de5120/tailorings?limit=10&offset=10" - } - }, - "summary": "", - "description": "" - }, - "List of Tailorings sorted by \"os_minor_version:asc\"": { - "value": { - "data": [ - { - "id": "c83b5639-12aa-472d-9c43-ad6e32dad199", - "profile_id": "091d3c34-678f-4f40-88f6-e1fa27d2e7d6", - "os_minor_version": 0, - "value_overrides": {}, - "type": "tailoring", - "os_major_version": 7, - "security_guide_id": "cc012333-a47d-450d-8195-9e1b4b75974a", - "security_guide_version": "100.96.45" - }, - { - "id": "a6d2e236-ad66-422b-a68f-79fedecb49c0", - "profile_id": "74c98e9f-bccf-40a3-a18b-238af507b0b2", - "os_minor_version": 1, - "value_overrides": {}, - "type": "tailoring", - "os_major_version": 7, - "security_guide_id": "2bd4cfd7-9636-4814-bd1d-a3f7e730cf08", - "security_guide_version": "100.96.46" - }, - { - "id": "bb640746-cb4d-44c3-83ca-7f5408fa21e7", - "profile_id": "c0a7b6a2-5352-4c7c-9d02-eecd88598fad", - "os_minor_version": 2, - "value_overrides": {}, - "type": "tailoring", - "os_major_version": 7, - "security_guide_id": "2391df51-418d-4180-98b1-b741b6689fb6", - "security_guide_version": "100.96.47" - }, - { - "id": "b94b2cad-2207-490e-b3fe-2c43cde8ded3", - "profile_id": "22471e26-481c-407e-85bb-6527b3eae85f", - "os_minor_version": 3, - "value_overrides": {}, - "type": "tailoring", - "os_major_version": 7, - "security_guide_id": "f7d53201-531f-4129-8696-eb08305d0842", - "security_guide_version": "100.96.48" - }, - { - "id": "4b0a9db7-9cdb-4650-a50e-c1a7bcfb0bcc", - "profile_id": "139f3a5c-21c2-44bc-b0c4-35395d0af85e", - "os_minor_version": 4, - "value_overrides": {}, - "type": "tailoring", - "os_major_version": 7, - "security_guide_id": "b4ebdb39-640e-40ec-ab86-8fcdaac207d0", - "security_guide_version": "100.96.49" - }, - { - "id": "756038e5-1c8a-4da7-8317-07785640963c", - "profile_id": "05b921a9-6f0d-41b1-a8ea-49af941ede74", - "os_minor_version": 5, - "value_overrides": {}, - "type": "tailoring", - "os_major_version": 7, - "security_guide_id": "4f0879f2-941c-4f05-9375-db659ce1a0fe", - "security_guide_version": "100.97.0" - }, - { - "id": "0041d3c6-87cf-4aec-bca9-3aea8fac7bfe", - "profile_id": "4d8ef4e9-6fcf-475a-8be5-3b8ead923bf4", - "os_minor_version": 6, - "value_overrides": {}, - "type": "tailoring", - "os_major_version": 7, - "security_guide_id": "15861e94-5b17-4a5a-b1ce-4f38dbd54112", - "security_guide_version": "100.97.1" - }, - { - "id": "53af788b-0663-417d-8b6e-7eaffda45424", - "profile_id": "8d178059-e554-4a11-a5c5-e356fbb00ea0", - "os_minor_version": 7, - "value_overrides": {}, - "type": "tailoring", - "os_major_version": 7, - "security_guide_id": "90db5eaa-7f32-48dc-892c-8d61d1fc4dbc", - "security_guide_version": "100.97.2" - }, - { - "id": "610af76a-fc28-43b6-bd0f-16968cba4de0", - "profile_id": "dd7b7558-adcb-4cf3-a0d1-a07cdab06968", - "os_minor_version": 8, - "value_overrides": {}, - "type": "tailoring", - "os_major_version": 7, - "security_guide_id": "de65bc1e-601e-4100-9d7f-1529eac7928c", - "security_guide_version": "100.97.3" - }, - { - "id": "039d1e28-d351-46e9-b7ad-3c100abb9602", - "profile_id": "3d1fdcc0-932f-435c-ab76-336df9cc32af", - "os_minor_version": 9, - "value_overrides": {}, - "type": "tailoring", - "os_major_version": 7, - "security_guide_id": "5a7704ae-c3ac-4013-ad5f-2a8fbe4c4722", - "security_guide_version": "100.97.4" - } - ], - "meta": { - "total": 25, - "limit": 10, - "offset": 0, - "sort_by": "os_minor_version" - }, - "links": { - "first": "/api/compliance/v2/policies/acb098ee-ac97-4e37-a63e-40bece7ce1b1/tailorings?limit=10&offset=0&sort_by=os_minor_version", - "last": "/api/compliance/v2/policies/acb098ee-ac97-4e37-a63e-40bece7ce1b1/tailorings?limit=10&offset=20&sort_by=os_minor_version", - "next": "/api/compliance/v2/policies/acb098ee-ac97-4e37-a63e-40bece7ce1b1/tailorings?limit=10&offset=10&sort_by=os_minor_version" - } - }, - "summary": "", - "description": "" - }, - "List of Tailorings filtered by '(os_minor_version=22)'": { - "value": { - "data": [ - { - "id": "01f03819-c26e-4f55-b83a-dd7a37b4ba7a", - "profile_id": "763969f9-a7f4-44af-9894-3f0d6ce52977", - "os_minor_version": 22, - "value_overrides": {}, - "type": "tailoring", - "os_major_version": 7, - "security_guide_id": "979ce9da-0790-4bb8-935c-3381836cd1d7", - "security_guide_version": "100.97.42" - } - ], - "meta": { - "total": 1, - "filter": "(os_minor_version=22)", - "limit": 10, - "offset": 0 - }, - "links": { - "first": "/api/compliance/v2/policies/c8d24264-a043-4d77-b2cd-be9e73c84aa6/tailorings?filter=%28os_minor_version%3D22%29&limit=10&offset=0", - "last": "/api/compliance/v2/policies/c8d24264-a043-4d77-b2cd-be9e73c84aa6/tailorings?filter=%28os_minor_version%3D22%29&limit=10&offset=0" - } - }, - "summary": "", - "description": "" - } - }, - "schema": { - "type": "object", - "properties": { - "meta": { - "$ref": "#/components/schemas/metadata" - }, - "links": { - "$ref": "#/components/schemas/links" - }, - "data": { - "type": "array", - "items": { - "properties": { - "schema": { - "$ref": "#/components/schemas/tailoring" - } - } - } - } - } - } - } - } - }, - "422": { - "description": "Returns with Unprocessable Content", - "content": { - "application/vnd.api+json": { - "examples": { - "Description of an error when sorting by incorrect parameter": { - "value": { - "errors": [ - "Result cannot be sorted by the 'description' column." - ] - }, - "summary": "", - "description": "" - }, - "Description of an error when requesting higher limit than supported": { - "value": { - "errors": [ - "Invalid parameter: limit must be less than or equal to 100" - ] - }, - "summary": "", - "description": "" - } - }, - "schema": { - "$ref": "#/components/schemas/errors" - } - } - } - } - } - }, - "post": { - "summary": "Create a Tailoring", - "parameters": [ - { - "name": "X-RH-IDENTITY", - "in": "header", - "schema": { - "type": "string" - }, - "description": "For internal use only" - }, - { - "name": "policy_id", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - } - ], - "tags": [ - "Policies" - ], - "description": "Create a Tailoring with the provided attributes (for ImageBuilder only)", - "operationId": "CreateTailoring", - "deprecated": true, - "responses": { - "201": { - "description": "Creates a Tailoring", - "content": { - "application/vnd.api+json": { - "examples": { - "Response example": { - "value": { - "data": { - "id": "82a4a052-3e2e-47d5-9ca2-330085bf21ff", - "profile_id": "e6fa39ec-690f-4ec1-950b-51d879eb17bc", - "os_minor_version": 1, - "value_overrides": {}, - "type": "tailoring", - "os_major_version": 7, - "security_guide_id": "ebc7120c-44e7-4769-a0b0-dd1a8076ec6c", - "security_guide_version": "100.98.45" - } - }, - "summary": "", - "description": "" - } - }, - "schema": { - "type": "object", - "properties": { - "data": { - "type": "object", - "properties": { - "schema": { - "$ref": "#/components/schemas/tailoring" - } - } - } - } - } - } - } - } - }, - "requestBody": { - "content": { - "application/vnd.api+json": { - "schema": { - "$ref": "#/components/schemas/tailoring_create" - } - } - } - } - } - }, - "/policies/{policy_id}/tailorings/{tailoring_id}": { - "get": { - "summary": "Request a Tailoring", - "parameters": [ - { - "name": "X-RH-IDENTITY", - "in": "header", - "schema": { - "type": "string" - }, - "description": "For internal use only" - }, - { - "name": "policy_id", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "tailoring_id", - "in": "path", - "required": true, - "description": "UUID or OS minor version number", - "schema": { - "type": "string" - } - } - ], - "tags": [ - "Policies" - ], - "description": "Retrieve a specific tailoring.", - "operationId": "Tailoring", - "responses": { - "200": { - "description": "Returns a Tailoring", - "content": { - "application/vnd.api+json": { - "examples": { - "Returns a Tailoring": { - "value": { - "data": { - "id": "51296c4e-df01-4378-9e3a-940af1281c55", - "profile_id": "09ac1a78-f0ce-44db-a00a-7543e4dda2cc", - "os_minor_version": 1, - "value_overrides": {}, - "type": "tailoring", - "os_major_version": 7, - "security_guide_id": "b6840d89-3eab-4739-8d26-efc55fdaa049", - "security_guide_version": "100.98.46" - } - }, - "summary": "", - "description": "" - } - }, - "schema": { - "type": "object", - "properties": { - "data": { - "type": "object", - "properties": { - "schema": { - "$ref": "#/components/schemas/tailoring" - } - } - } - } - } - } - } - }, - "404": { - "description": "Returns with Not Found", - "content": { - "application/vnd.api+json": { - "examples": { - "Description of an error when requesting a non-existing Tailoring": { - "value": { - "errors": [ - "V2::Tailoring not found with ID 09b48253-de16-4740-80bc-74d6601cbf7f" - ] - }, - "summary": "", - "description": "" - } - }, - "schema": { - "$ref": "#/components/schemas/errors" - } - } - } - } - } - }, - "patch": { - "summary": "Update a Tailoring", - "parameters": [ - { - "name": "X-RH-IDENTITY", - "in": "header", - "schema": { - "type": "string" - }, - "description": "For internal use only" - }, - { - "name": "policy_id", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "tailoring_id", - "in": "path", - "required": true, - "description": "UUID or OS minor version number", - "schema": { - "type": "string" - } - } - ], - "tags": [ - "Policies" - ], - "description": "Edit or update an existing tailoring.", - "operationId": "UpdateTailoring", - "responses": { - "202": { - "description": "Updates a Tailoring", - "content": { - "application/vnd.api+json": { - "examples": { - "Returns the updated Tailoring": { - "value": { - "data": { - "id": "d246d700-62df-4175-8d3d-37ea363af80f", - "profile_id": "64751566-f9a7-4dfd-bf28-d33551f2b8da", - "os_minor_version": 1, - "value_overrides": { - "c2d68aa8-fc72-4c5a-9492-c92297f26dc5": "123" - }, - "type": "tailoring", - "os_major_version": 7, - "security_guide_id": "0112b166-5391-40b5-a277-d49bc216e534", - "security_guide_version": "100.98.47" - } - }, - "summary": "", - "description": "" - } - }, - "schema": { - "type": "object", - "properties": { - "data": { - "type": "object", - "properties": { - "schema": { - "$ref": "#/components/schemas/tailoring" - } - } - } - } - } - } - } - } - }, - "requestBody": { - "content": { - "application/vnd.api+json": { - "schema": { - "$ref": "#/components/schemas/tailoring" - } - } - } - } - } - }, - "/policies/{policy_id}/tailorings/{tailoring_id}/rule_tree": { - "get": { - "summary": "Request the Rule Tree of a Tailoring", - "parameters": [ - { - "name": "X-RH-IDENTITY", - "in": "header", - "schema": { - "type": "string" - }, - "description": "For internal use only" - }, - { - "name": "policy_id", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "tailoring_id", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - } - ], - "tags": [ - "Policies" - ], - "description": "Returns rule tree of a tailoring.", - "operationId": "TailoringRuleTree", - "deprecated": true, - "responses": { - "200": { - "description": "Returns the Rule Tree of a Tailoring", - "content": { - "application/vnd.api+json": { - "examples": { - "Returns the Rule Tree of a Tailoring": { - "value": [ - { - "id": "c145d4bc-de4e-4f70-92fc-c131b699a462", - "type": "rule_group", - "children": [ - { - "id": "1899da0a-1c6f-4516-bb73-a42825332de4", - "type": "rule" - } - ] - }, - { - "id": "fb6da019-c792-460d-8585-3340e67af609", - "type": "rule_group", - "children": [ - { - "id": "448049d3-b44a-4f62-b386-ec022075b421", - "type": "rule" - } - ] - }, - { - "id": "24e32286-0793-4657-91ec-7691964b0c45", - "type": "rule_group", - "children": [ - { - "id": "c40e1772-474f-4cd9-8042-a7b5ba00443e", - "type": "rule" - } - ] - }, - { - "id": "ef9b62c2-e4b8-4b70-83ef-4acea0420fbc", - "type": "rule_group", - "children": [ - { - "id": "2aff31eb-6edd-4121-a8bc-ec46959bb1d2", - "type": "rule" - } - ] - }, - { - "id": "54edc299-2e67-4fec-822f-0526780e3051", - "type": "rule_group", - "children": [ - { - "id": "5a6c276c-7d34-4f7c-a7a0-734de71c0c70", - "type": "rule" - } - ] - }, - { - "id": "2f2a218d-17af-4218-9fae-f0f515471342", - "type": "rule_group", - "children": [ - { - "id": "85b4fb87-4477-4f1f-a47d-970214bc80c0", - "type": "rule" - } - ] - }, - { - "id": "9a00fdac-86a9-4dd3-899d-18c2a37900c7", - "type": "rule_group", - "children": [ - { - "id": "82404904-5f2d-4f1c-af93-85524296f4da", - "type": "rule" - } - ] - }, - { - "id": "99033993-1934-4c8e-9ba9-5e91c81372df", - "type": "rule_group", - "children": [ - { - "id": "feb695ed-a723-4644-bd96-c7e689cb53ae", - "type": "rule" - } - ] - }, - { - "id": "6eb02c34-5afa-4052-9e39-0d194fe40e96", - "type": "rule_group", - "children": [ - { - "id": "7fff3879-2104-4783-8bde-951b89e50b2f", - "type": "rule" - } - ] - }, - { - "id": "7e9a95e6-934f-447a-9ea1-5b11f8cb6223", - "type": "rule_group", - "children": [ - { - "id": "0aff8b8a-452f-475b-877e-1a5b83bd626a", - "type": "rule" - } - ] - } - ], - "summary": "", - "description": "" - } - }, - "schema": { - "$ref": "#/components/schemas/rule_tree" - } - } - } - }, - "404": { - "description": "Returns with Not Found", - "content": { - "application/vnd.api+json": { - "examples": { - "Description of an error when requesting a non-existing Tailoring": { - "value": { - "errors": [ - "V2::Tailoring not found with ID a6cd5480-54cc-4184-bddb-ef48fc575792" - ] - }, - "summary": "", - "description": "" - } - }, - "schema": { - "$ref": "#/components/schemas/errors" - } - } - } - } - } - } - }, - "/policies/{policy_id}/tailorings/{tailoring_id}/tailoring_file.json": { - "get": { - "summary": "Request a Tailoring file", - "parameters": [ - { - "name": "X-RH-IDENTITY", - "in": "header", - "schema": { - "type": "string" - }, - "description": "For internal use only" - }, - { - "name": "policy_id", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "tailoring_id", - "in": "path", - "required": true, - "description": "UUID or OS minor version number", - "schema": { - "type": "string" - } - } - ], - "tags": [ - "Policies" - ], - "description": "Retrieve a tailoring file of a specific tailoring.", - "operationId": "TailoringFile", - "responses": { - "200": { - "description": "Returns a Tailoring File", - "content": { - "application/vnd.api+json": { - "examples": { - "Returns a Tailoring File": { - "value": { - "profiles": [ - { - "id": "xccdf_org.ssgproject.content_profile_4c6d0969f381d405c9fcc0bdccb00fb7", - "title": "Ex placeat in reiciendis.", - "groups": {}, - "rules": {}, - "variables": { - "foo_value_2f0456b1-940e-45ea-87f4-6844a1a5b622": { - "value": "755072" - }, - "foo_value_394ce4f1-5b99-43ae-baf0-fb9f3188d7b9": { - "value": "858842" - } - } - } - ] - }, - "summary": "", - "description": "" - } - }, - "schema": { - "$ref": "#/components/schemas/tailoring_file" - } - } - } - } - } - } - }, - "/reports/{report_id}/test_results": { - "get": { - "summary": "Request Test Results under a Report", - "parameters": [ - { - "name": "X-RH-IDENTITY", - "in": "header", - "schema": { - "type": "string" - }, - "description": "For internal use only" - }, - { - "name": "tags", - "in": "query", - "required": false, - "description": "An array of tags to narrow down the search results. In case the value contains symbols used for separators (`/` or `=`), they need to be encoded.
e.g.: `namespace/key=value`, `insights-client/selinux-config=SELINUX%3Denforcing`", - "schema": { - "type": "array", - "items": { - "type": "string" - } - } - }, - { - "name": "limit", - "in": "query", - "required": false, - "description": "Number of items to return per page", - "schema": { - "type": "number", - "maximum": 100, - "minimum": 1, - "default": 10 - } - }, - { - "name": "offset", - "in": "query", - "required": false, - "description": "Offset of first item of paginated response", - "schema": { - "type": "integer", - "minimum": 0, - "default": 0 - } - }, - { - "name": "ids_only", - "in": "query", - "required": false, - "description": "Indicates whether to return only resource IDs.", - "schema": { - "type": "boolean" - } - }, - { - "name": "sort_by", - "in": "query", - "required": false, - "description": "Attribute and direction to sort the items by. Represented by an array of fields with an optional direction (`:asc` or `:desc`).

If no direction is selected, `:asc` is used by default.", - "schema": { - "type": "array", - "items": { - "enum": [ - "display_name", - "security_guide_version", - "groups", - "score", - "end_time", - "failed_rule_count", - "display_name:asc", - "display_name:desc", - "security_guide_version:asc", - "security_guide_version:desc", - "groups:asc", - "groups:desc", - "score:asc", - "score:desc", - "end_time:asc", - "end_time:desc", - "failed_rule_count:asc", - "failed_rule_count:desc" - ] - } - } - }, - { - "name": "filter", - "in": "query", - "required": false, - "description": "Query string to filter items by their attributes. Compliant with scoped_search query language. However, only `=` or `!=` (resp. `<>`) operators are supported.

Test Results are searchable using attributes `score`, `supported`, `system_id`, `display_name`, `os_minor_version`, `security_guide_version`, `compliant`, `group_name`, and `failed_rule_severity`

(e.g.: `(field_1=something AND field_2!=\"something else\") OR field_3>40`)", - "schema": { - "type": "string" - } - }, - { - "name": "report_id", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - } - ], - "tags": [ - "Reports" - ], - "description": "Retrieve all of the test results for a specific report.", - "operationId": "ReportTestResults", - "responses": { - "200": { - "description": "Lists Test Results under a Report", - "content": { - "application/vnd.api+json": { - "examples": { - "List of Test Results": { - "value": { - "data": [ - { - "id": "07150f64-e0f7-4b48-b2f9-66f1ded37ee8", - "end_time": "2025-04-17T11:48:27.792Z", - "failed_rule_count": 0, - "supported": true, - "score": 7.942933803943008, - "type": "test_result", - "display_name": "kuhn.example", - "groups": [], - "tags": [ - { - "key": "matrix", - "value": "solid state", - "namespace": "navigating" - }, - { - "key": "matrix", - "value": "mobile", - "namespace": "synthesizing" - }, - { - "key": "array", - "value": "redundant", - "namespace": "indexing" - }, - { - "key": "port", - "value": "cross-platform", - "namespace": "transmitting" - }, - { - "key": "port", - "value": "back-end", - "namespace": "indexing" - } - ], - "os_major_version": 8, - "os_minor_version": 0, - "compliant": false, - "system_id": "fee61419-7fbc-49c0-8e2b-2ec711074d16", - "security_guide_version": "100.101.18" - }, - { - "id": "32b40af7-9eb9-47c3-93de-e6fe37d2dae1", - "end_time": "2025-04-17T11:48:27.861Z", - "failed_rule_count": 0, - "supported": true, - "score": 85.61426956214434, - "type": "test_result", - "display_name": "gerhold.example", - "groups": [], - "tags": [ - { - "key": "interface", - "value": "open-source", - "namespace": "programming" - }, - { - "key": "sensor", - "value": "digital", - "namespace": "quantifying" - }, - { - "key": "matrix", - "value": "bluetooth", - "namespace": "parsing" - }, - { - "key": "program", - "value": "1080p", - "namespace": "hacking" - }, - { - "key": "protocol", - "value": "neural", - "namespace": "overriding" - } - ], - "os_major_version": 8, - "os_minor_version": 0, - "compliant": false, - "system_id": "e595c0ed-bc17-4ca2-a2eb-b8371380b3f4", - "security_guide_version": "100.101.18" - }, - { - "id": "36256d2d-4161-44fb-9741-7de96427d935", - "end_time": "2025-04-17T11:48:27.689Z", - "failed_rule_count": 0, - "supported": true, - "score": 4.205883811246036, - "type": "test_result", - "display_name": "boyle-ferry.test", - "groups": [], - "tags": [ - { - "key": "application", - "value": "haptic", - "namespace": "parsing" - }, - { - "key": "bus", - "value": "auxiliary", - "namespace": "backing up" - }, - { - "key": "capacitor", - "value": "optical", - "namespace": "transmitting" - }, - { - "key": "sensor", - "value": "mobile", - "namespace": "overriding" - }, - { - "key": "driver", - "value": "mobile", - "namespace": "transmitting" - } - ], - "os_major_version": 8, - "os_minor_version": 0, - "compliant": false, - "system_id": "8f028ff4-33d8-4b8b-adea-51858fa3dcf2", - "security_guide_version": "100.101.18" - }, - { - "id": "3a31e93c-6adc-4ee6-ba80-b0cc32e28be9", - "end_time": "2025-04-17T11:48:27.745Z", - "failed_rule_count": 0, - "supported": true, - "score": 68.12744348799109, - "type": "test_result", - "display_name": "breitenberg.test", - "groups": [], - "tags": [ - { - "key": "transmitter", - "value": "online", - "namespace": "compressing" - }, - { - "key": "interface", - "value": "cross-platform", - "namespace": "programming" - }, - { - "key": "firewall", - "value": "open-source", - "namespace": "compressing" - }, - { - "key": "capacitor", - "value": "auxiliary", - "namespace": "calculating" - }, - { - "key": "capacitor", - "value": "optical", - "namespace": "compressing" - } - ], - "os_major_version": 8, - "os_minor_version": 0, - "compliant": false, - "system_id": "dc3e7f0f-3183-44a4-a490-647b93b394e7", - "security_guide_version": "100.101.18" - }, - { - "id": "51f731b4-82ab-4006-8c3a-903e23b19e93", - "end_time": "2025-04-17T11:48:27.667Z", - "failed_rule_count": 0, - "supported": true, - "score": 83.82241590383677, - "type": "test_result", - "display_name": "satterfield.test", - "groups": [], - "tags": [ - { - "key": "card", - "value": "optical", - "namespace": "synthesizing" - }, - { - "key": "driver", - "value": "mobile", - "namespace": "connecting" - }, - { - "key": "system", - "value": "primary", - "namespace": "navigating" - }, - { - "key": "capacitor", - "value": "digital", - "namespace": "copying" - }, - { - "key": "array", - "value": "multi-byte", - "namespace": "compressing" - } - ], - "os_major_version": 8, - "os_minor_version": 0, - "compliant": false, - "system_id": "a795e22c-cb04-4dc4-873a-fc6c9f71fad8", - "security_guide_version": "100.101.18" - }, - { - "id": "5b79b8be-1ef3-4b8c-ad86-bb7af1099378", - "end_time": "2025-04-17T11:48:27.757Z", - "failed_rule_count": 0, - "supported": true, - "score": 8.044548934234419, - "type": "test_result", - "display_name": "treutel.test", - "groups": [], - "tags": [ - { - "key": "program", - "value": "haptic", - "namespace": "copying" - }, - { - "key": "matrix", - "value": "wireless", - "namespace": "programming" - }, - { - "key": "program", - "value": "back-end", - "namespace": "quantifying" - }, - { - "key": "circuit", - "value": "primary", - "namespace": "calculating" - }, - { - "key": "monitor", - "value": "virtual", - "namespace": "navigating" - } - ], - "os_major_version": 8, - "os_minor_version": 0, - "compliant": false, - "system_id": "fade4033-b4b9-4fb7-98f9-88eb90819b40", - "security_guide_version": "100.101.18" - }, - { - "id": "6463fcb5-22a8-4136-b327-f6c4202ed93f", - "end_time": "2025-04-17T11:48:27.633Z", - "failed_rule_count": 0, - "supported": true, - "score": 28.0152666639477, - "type": "test_result", - "display_name": "kassulke.test", - "groups": [], - "tags": [ - { - "key": "hard drive", - "value": "wireless", - "namespace": "indexing" - }, - { - "key": "sensor", - "value": "1080p", - "namespace": "parsing" - }, - { - "key": "card", - "value": "online", - "namespace": "connecting" - }, - { - "key": "hard drive", - "value": "primary", - "namespace": "indexing" - }, - { - "key": "alarm", - "value": "optical", - "namespace": "programming" - } - ], - "os_major_version": 8, - "os_minor_version": 0, - "compliant": false, - "system_id": "cd0959d1-7e00-4679-a5d5-146ba9b797ed", - "security_guide_version": "100.101.18" - }, - { - "id": "677325f1-159b-4e7d-a63b-dcd5f308ed37", - "end_time": "2025-04-17T11:48:27.712Z", - "failed_rule_count": 0, - "supported": true, - "score": 66.8254138012402, - "type": "test_result", - "display_name": "fritsch-runolfsson.example", - "groups": [], - "tags": [ - { - "key": "circuit", - "value": "digital", - "namespace": "parsing" - }, - { - "key": "circuit", - "value": "redundant", - "namespace": "navigating" - }, - { - "key": "protocol", - "value": "solid state", - "namespace": "connecting" - }, - { - "key": "panel", - "value": "haptic", - "namespace": "hacking" - }, - { - "key": "bandwidth", - "value": "back-end", - "namespace": "overriding" - } - ], - "os_major_version": 8, - "os_minor_version": 0, - "compliant": false, - "system_id": "598f9576-b4d1-4cac-988d-78b78ca7caf3", - "security_guide_version": "100.101.18" - }, - { - "id": "7af38fa6-78f7-4acd-95c5-cb85fed1ec43", - "end_time": "2025-04-17T11:48:27.838Z", - "failed_rule_count": 0, - "supported": true, - "score": 47.06889881278796, - "type": "test_result", - "display_name": "lynch.example", - "groups": [], - "tags": [ - { - "key": "alarm", - "value": "auxiliary", - "namespace": "parsing" - }, - { - "key": "bandwidth", - "value": "online", - "namespace": "parsing" - }, - { - "key": "bus", - "value": "digital", - "namespace": "synthesizing" - }, - { - "key": "interface", - "value": "haptic", - "namespace": "navigating" - }, - { - "key": "hard drive", - "value": "wireless", - "namespace": "hacking" - } - ], - "os_major_version": 8, - "os_minor_version": 0, - "compliant": false, - "system_id": "49a55737-8bf0-4481-8a11-ffc1ee8867fd", - "security_guide_version": "100.101.18" - }, - { - "id": "862ab7d2-1984-460b-8087-d52f14af16b1", - "end_time": "2025-04-17T11:48:27.768Z", - "failed_rule_count": 0, - "supported": true, - "score": 1.771767249737466, - "type": "test_result", - "display_name": "fahey-crist.example", - "groups": [], - "tags": [ - { - "key": "port", - "value": "wireless", - "namespace": "programming" - }, - { - "key": "firewall", - "value": "redundant", - "namespace": "generating" - }, - { - "key": "transmitter", - "value": "back-end", - "namespace": "parsing" - }, - { - "key": "interface", - "value": "cross-platform", - "namespace": "synthesizing" - }, - { - "key": "panel", - "value": "auxiliary", - "namespace": "synthesizing" - } - ], - "os_major_version": 8, - "os_minor_version": 0, - "compliant": false, - "system_id": "1c9f10b9-afba-4751-a1dc-8a383b3a688a", - "security_guide_version": "100.101.18" - } - ], - "meta": { - "total": 25, - "tags": [], - "limit": 10, - "offset": 0 - }, - "links": { - "first": "/api/compliance/v2/reports/e3852aa4-7b5c-4769-8504-ee3a43d9b2f7/test_results?limit=10&offset=0", - "last": "/api/compliance/v2/reports/e3852aa4-7b5c-4769-8504-ee3a43d9b2f7/test_results?limit=10&offset=20", - "next": "/api/compliance/v2/reports/e3852aa4-7b5c-4769-8504-ee3a43d9b2f7/test_results?limit=10&offset=10" - } - }, - "summary": "", - "description": "" - }, - "List of Test Results sorted by \"score:asc\"": { - "value": { - "data": [ - { - "id": "58a84cc4-d531-4348-a002-685920624539", - "end_time": "2025-04-17T11:48:28.565Z", - "failed_rule_count": 0, - "supported": true, - "score": 0.18418392844598, - "type": "test_result", - "display_name": "ernser-lebsack.test", - "groups": [], - "tags": [ - { - "key": "bus", - "value": "digital", - "namespace": "compressing" - }, - { - "key": "system", - "value": "back-end", - "namespace": "compressing" - }, - { - "key": "bus", - "value": "bluetooth", - "namespace": "transmitting" - }, - { - "key": "pixel", - "value": "digital", - "namespace": "transmitting" - }, - { - "key": "program", - "value": "auxiliary", - "namespace": "quantifying" - } - ], - "os_major_version": 8, - "os_minor_version": 0, - "compliant": false, - "system_id": "c3327c2b-b97b-4e34-85bc-e1146ccae6ec", - "security_guide_version": "100.102.28" - }, - { - "id": "7fe2d894-914f-47ba-80bc-0475e77053cd", - "end_time": "2025-04-17T11:48:28.428Z", - "failed_rule_count": 0, - "supported": true, - "score": 10.41062429866279, - "type": "test_result", - "display_name": "daugherty-dare.test", - "groups": [], - "tags": [ - { - "key": "monitor", - "value": "bluetooth", - "namespace": "bypassing" - }, - { - "key": "sensor", - "value": "bluetooth", - "namespace": "parsing" - }, - { - "key": "bus", - "value": "optical", - "namespace": "calculating" - }, - { - "key": "feed", - "value": "virtual", - "namespace": "connecting" - }, - { - "key": "system", - "value": "digital", - "namespace": "synthesizing" - } - ], - "os_major_version": 8, - "os_minor_version": 0, - "compliant": false, - "system_id": "3b74ea2f-e6eb-429d-8521-f76a81b3c754", - "security_guide_version": "100.102.28" - }, - { - "id": "f4398c97-92a4-400c-a9c6-a3257330525e", - "end_time": "2025-04-17T11:48:28.541Z", - "failed_rule_count": 0, - "supported": true, - "score": 12.0856908804786, - "type": "test_result", - "display_name": "schneider.test", - "groups": [], - "tags": [ - { - "key": "array", - "value": "redundant", - "namespace": "quantifying" - }, - { - "key": "firewall", - "value": "multi-byte", - "namespace": "generating" - }, - { - "key": "interface", - "value": "primary", - "namespace": "quantifying" - }, - { - "key": "port", - "value": "wireless", - "namespace": "transmitting" - }, - { - "key": "bandwidth", - "value": "wireless", - "namespace": "synthesizing" - } - ], - "os_major_version": 8, - "os_minor_version": 0, - "compliant": false, - "system_id": "83fc3f1a-785f-411d-bee6-d5154436eae7", - "security_guide_version": "100.102.28" - }, - { - "id": "fa4e017f-becc-4a86-8125-1be814a42b58", - "end_time": "2025-04-17T11:48:28.528Z", - "failed_rule_count": 0, - "supported": true, - "score": 14.67878952432154, - "type": "test_result", - "display_name": "botsford.test", - "groups": [], - "tags": [ - { - "key": "matrix", - "value": "wireless", - "namespace": "synthesizing" - }, - { - "key": "system", - "value": "virtual", - "namespace": "quantifying" - }, - { - "key": "sensor", - "value": "mobile", - "namespace": "synthesizing" - }, - { - "key": "panel", - "value": "virtual", - "namespace": "connecting" - }, - { - "key": "driver", - "value": "redundant", - "namespace": "copying" - } - ], - "os_major_version": 8, - "os_minor_version": 0, - "compliant": false, - "system_id": "97c90349-999f-4de6-82bb-c914296035e4", - "security_guide_version": "100.102.28" - }, - { - "id": "1b8b7b72-9ad7-4ba3-a09b-ca375a586081", - "end_time": "2025-04-17T11:48:28.577Z", - "failed_rule_count": 0, - "supported": true, - "score": 15.16112296320871, - "type": "test_result", - "display_name": "huels.test", - "groups": [], - "tags": [ - { - "key": "protocol", - "value": "open-source", - "namespace": "hacking" - }, - { - "key": "card", - "value": "back-end", - "namespace": "compressing" - }, - { - "key": "feed", - "value": "open-source", - "namespace": "generating" - }, - { - "key": "array", - "value": "neural", - "namespace": "bypassing" - }, - { - "key": "driver", - "value": "optical", - "namespace": "connecting" - } - ], - "os_major_version": 8, - "os_minor_version": 0, - "compliant": false, - "system_id": "9a371b94-b743-49e4-9711-6f16450eb734", - "security_guide_version": "100.102.28" - }, - { - "id": "b2be27cc-92b9-4320-8479-0146ce129bf5", - "end_time": "2025-04-17T11:48:28.400Z", - "failed_rule_count": 0, - "supported": true, - "score": 19.91511615659336, - "type": "test_result", - "display_name": "streich.example", - "groups": [], - "tags": [ - { - "key": "driver", - "value": "auxiliary", - "namespace": "navigating" - }, - { - "key": "monitor", - "value": "open-source", - "namespace": "parsing" - }, - { - "key": "system", - "value": "online", - "namespace": "synthesizing" - }, - { - "key": "capacitor", - "value": "digital", - "namespace": "connecting" - }, - { - "key": "card", - "value": "bluetooth", - "namespace": "overriding" - } - ], - "os_major_version": 8, - "os_minor_version": 0, - "compliant": false, - "system_id": "edd4fd65-ffc3-4e78-b6e6-52b4fb9a5bc0", - "security_guide_version": "100.102.28" - }, - { - "id": "7c07bcb0-9557-4c69-a6d4-7918c4163783", - "end_time": "2025-04-17T11:48:28.455Z", - "failed_rule_count": 0, - "supported": true, - "score": 25.2676410138287, - "type": "test_result", - "display_name": "spencer-hoppe.example", - "groups": [], - "tags": [ - { - "key": "matrix", - "value": "redundant", - "namespace": "bypassing" - }, - { - "key": "array", - "value": "digital", - "namespace": "programming" - }, - { - "key": "bandwidth", - "value": "online", - "namespace": "generating" - }, - { - "key": "driver", - "value": "1080p", - "namespace": "generating" - }, - { - "key": "sensor", - "value": "redundant", - "namespace": "compressing" - } - ], - "os_major_version": 8, - "os_minor_version": 0, - "compliant": false, - "system_id": "6af74cd0-12c6-466a-b519-b080fed13c2e", - "security_guide_version": "100.102.28" - }, - { - "id": "e2a5839f-ed5c-49d8-9120-8bfecd43f078", - "end_time": "2025-04-17T11:48:28.478Z", - "failed_rule_count": 0, - "supported": true, - "score": 28.05846665632422, - "type": "test_result", - "display_name": "wilderman.test", - "groups": [], - "tags": [ - { - "key": "feed", - "value": "haptic", - "namespace": "indexing" - }, - { - "key": "panel", - "value": "haptic", - "namespace": "bypassing" - }, - { - "key": "matrix", - "value": "multi-byte", - "namespace": "backing up" - }, - { - "key": "application", - "value": "auxiliary", - "namespace": "programming" - }, - { - "key": "driver", - "value": "mobile", - "namespace": "connecting" - } - ], - "os_major_version": 8, - "os_minor_version": 0, - "compliant": false, - "system_id": "2c1c2c75-0eeb-4f45-a4d4-5951d4bba8f9", - "security_guide_version": "100.102.28" - }, - { - "id": "4d5a16d4-5592-46b1-8af1-e90e88ef5176", - "end_time": "2025-04-17T11:48:28.491Z", - "failed_rule_count": 0, - "supported": true, - "score": 30.22428256095794, - "type": "test_result", - "display_name": "torp-bauch.example", - "groups": [], - "tags": [ - { - "key": "bus", - "value": "bluetooth", - "namespace": "transmitting" - }, - { - "key": "firewall", - "value": "auxiliary", - "namespace": "backing up" - }, - { - "key": "system", - "value": "primary", - "namespace": "quantifying" - }, - { - "key": "bus", - "value": "open-source", - "namespace": "compressing" - }, - { - "key": "microchip", - "value": "open-source", - "namespace": "copying" - } - ], - "os_major_version": 8, - "os_minor_version": 0, - "compliant": false, - "system_id": "7c622478-05a3-4e4d-912e-11fb209474cd", - "security_guide_version": "100.102.28" - }, - { - "id": "16871757-5710-4974-b847-ad1d8f40cfa1", - "end_time": "2025-04-17T11:48:28.389Z", - "failed_rule_count": 0, - "supported": true, - "score": 32.53274996235959, - "type": "test_result", - "display_name": "trantow.example", - "groups": [], - "tags": [ - { - "key": "bandwidth", - "value": "multi-byte", - "namespace": "overriding" - }, - { - "key": "card", - "value": "open-source", - "namespace": "backing up" - }, - { - "key": "sensor", - "value": "open-source", - "namespace": "indexing" - }, - { - "key": "monitor", - "value": "neural", - "namespace": "indexing" - }, - { - "key": "pixel", - "value": "auxiliary", - "namespace": "bypassing" - } - ], - "os_major_version": 8, - "os_minor_version": 0, - "compliant": false, - "system_id": "475147e8-5e89-4362-9872-bb7b315d99d2", - "security_guide_version": "100.102.28" - } - ], - "meta": { - "total": 25, - "tags": [], - "limit": 10, - "offset": 0, - "sort_by": "score" - }, - "links": { - "first": "/api/compliance/v2/reports/800cea5c-8aa5-4e43-9446-4f4e188c0a72/test_results?limit=10&offset=0&sort_by=score", - "last": "/api/compliance/v2/reports/800cea5c-8aa5-4e43-9446-4f4e188c0a72/test_results?limit=10&offset=20&sort_by=score", - "next": "/api/compliance/v2/reports/800cea5c-8aa5-4e43-9446-4f4e188c0a72/test_results?limit=10&offset=10&sort_by=score" - } - }, - "summary": "", - "description": "" - }, - "List of Test Results filtered by \"(os_minor_version=8)\"": { - "value": { - "data": [], - "meta": { - "total": 0, - "filter": "(os_minor_version=8)", - "tags": [], - "limit": 10, - "offset": 0 - }, - "links": { - "first": "/api/compliance/v2/reports/d76e0a3b-2d6f-4243-a420-3e15bafdb9ff/test_results?filter=%28os_minor_version%3D8%29&limit=10&offset=0", - "last": "/api/compliance/v2/reports/d76e0a3b-2d6f-4243-a420-3e15bafdb9ff/test_results?filter=%28os_minor_version%3D8%29&limit=10&offset=0" - } - }, - "summary": "", - "description": "" - } - }, - "schema": { - "type": "object", - "properties": { - "meta": { - "$ref": "#/components/schemas/metadata" - }, - "links": { - "$ref": "#/components/schemas/links" - }, - "data": { - "type": "array", - "items": { - "properties": { - "schema": { - "$ref": "#/components/schemas/test_result" - } - } - } - } - } - } - } - } - }, - "422": { - "description": "Returns with Unprocessable Content", - "content": { - "application/vnd.api+json": { - "examples": { - "Description of an error when sorting by incorrect parameter": { - "value": { - "errors": [ - "Result cannot be sorted by the 'description' column." - ] - }, - "summary": "", - "description": "" - }, - "Description of an error when requesting higher limit than supported": { - "value": { - "errors": [ - "Invalid parameter: limit must be less than or equal to 100" - ] - }, - "summary": "", - "description": "" - } - }, - "schema": { - "$ref": "#/components/schemas/errors" - } - } - } - } - } - } - }, - "/reports/{report_id}/test_results/os_versions": { - "get": { - "summary": "Request the list of available OS versions", - "parameters": [ - { - "name": "X-RH-IDENTITY", - "in": "header", - "schema": { - "type": "string" - }, - "description": "For internal use only" - }, - { - "name": "filter", - "in": "query", - "required": false, - "description": "Query string to filter items by their attributes. Compliant with scoped_search query language. However, only `=` or `!=` (resp. `<>`) operators are supported.

Test Results are searchable using attributes `score`, `supported`, `system_id`, `display_name`, `os_minor_version`, `security_guide_version`, `compliant`, `group_name`, and `failed_rule_severity`

(e.g.: `(field_1=something AND field_2!=\"something else\") OR field_3>40`)", - "schema": { - "type": "string" - } - }, - { - "name": "report_id", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - } - ], - "tags": [ - "Reports" - ], - "description": "This feature is exclusively used by the frontend", - "operationId": "ReportTestResultsOS", - "deprecated": true, - "responses": { - "200": { - "description": "Lists available OS versions", - "content": { - "application/vnd.api+json": { - "examples": { - "List of available OS versions": { - "value": [ - "8.0" - ], - "summary": "", - "description": "" - } - }, - "schema": { - "type": "array", - "items": { - "type": "string" - } - } - } - } - } - } - } - }, - "/reports/{report_id}/test_results/security_guide_versions": { - "get": { - "summary": "Request the list of available Security Guide versions", - "parameters": [ - { - "name": "X-RH-IDENTITY", - "in": "header", - "schema": { - "type": "string" - }, - "description": "For internal use only" - }, - { - "name": "report_id", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - } - ], - "tags": [ - "Reports" - ], - "description": "This feature is exclusively used by the frontend", - "operationId": "ReportTestResultsSG", - "deprecated": true, - "responses": { - "200": { - "description": "Lists available Security Guide versions", - "content": { - "application/vnd.api+json": { - "examples": { - "List of available Security Guide versions": { - "value": [ - "100.108.20" - ], - "summary": "", - "description": "" - } - }, - "schema": { - "type": "array", - "items": { - "type": "string" - } - } - } - } - } - } - } - }, - "/reports/{report_id}/test_results/{test_result_id}": { - "get": { - "summary": "Request a Test Result", - "parameters": [ - { - "name": "X-RH-IDENTITY", - "in": "header", - "schema": { - "type": "string" - }, - "description": "For internal use only" - }, - { - "name": "test_result_id", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "report_id", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - } - ], - "tags": [ - "Reports" - ], - "description": "Retrieve a specific test result for a specific report.", - "operationId": "ReportTestResult", - "responses": { - "200": { - "description": "Returns a Test Result under a Report", - "content": { - "application/vnd.api+json": { - "examples": { - "Returns a Test Result under a Report": { - "value": { - "data": { - "id": "189f38b6-47df-42d3-bae0-e57714dd95c7", - "end_time": "2025-04-17T11:48:32.949Z", - "failed_rule_count": 0, - "supported": true, - "score": 4.572102569812841, - "type": "test_result", - "display_name": "streich.test", - "groups": [], - "tags": [ - { - "key": "system", - "value": "bluetooth", - "namespace": "navigating" - }, - { - "key": "microchip", - "value": "bluetooth", - "namespace": "synthesizing" - }, - { - "key": "program", - "value": "bluetooth", - "namespace": "overriding" - }, - { - "key": "circuit", - "value": "virtual", - "namespace": "overriding" - }, - { - "key": "card", - "value": "optical", - "namespace": "compressing" - } - ], - "os_major_version": 8, - "os_minor_version": 0, - "compliant": false, - "system_id": "6622b662-c9fd-46eb-a402-55b94481ba1b", - "security_guide_version": "100.109.36" - } - }, - "summary": "", - "description": "" - } - }, - "schema": { - "type": "object", - "properties": { - "data": { - "type": "object", - "properties": { - "schema": { - "$ref": "#/components/schemas/system" - } - } - } - } - } - } - } - }, - "404": { - "description": "Returns with Not Found", - "content": { - "application/vnd.api+json": { - "examples": { - "Description of an error when requesting a non-existing Test Result": { - "value": { - "errors": [ - "V2::TestResult not found with ID 159c5527-6232-482f-9a57-9fc93a29e4c7" - ] - }, - "summary": "", - "description": "" - } - }, - "schema": { - "$ref": "#/components/schemas/errors" - } - } - } - } - } - } - }, - "/security_guides/{security_guide_id}/value_definitions": { - "get": { - "summary": "Request Value Definitions", - "parameters": [ - { - "name": "X-RH-IDENTITY", - "in": "header", - "schema": { - "type": "string" - }, - "description": "For internal use only" - }, - { - "name": "limit", - "in": "query", - "required": false, - "description": "Number of items to return per page", - "schema": { - "type": "number", - "maximum": 100, - "minimum": 1, - "default": 10 - } - }, - { - "name": "offset", - "in": "query", - "required": false, - "description": "Offset of first item of paginated response", - "schema": { - "type": "integer", - "minimum": 0, - "default": 0 - } - }, - { - "name": "ids_only", - "in": "query", - "required": false, - "description": "Indicates whether to return only resource IDs.", - "schema": { - "type": "boolean" - } - }, - { - "name": "sort_by", - "in": "query", - "required": false, - "description": "Attribute and direction to sort the items by. Represented by an array of fields with an optional direction (`:asc` or `:desc`).

If no direction is selected, `:asc` is used by default.", - "schema": { - "type": "array", - "items": { - "enum": [ - "title", - "title:asc", - "title:desc" - ] - } - } - }, - { - "name": "filter", - "in": "query", - "required": false, - "description": "Query string to filter items by their attributes. Compliant with scoped_search query language. However, only `=` or `!=` (resp. `<>`) operators are supported.

Value Definitions are searchable using attributes `title` and `ref_id`

(e.g.: `(field_1=something AND field_2!=\"something else\") OR field_3>40`)", - "schema": { - "type": "string" - } - }, - { - "name": "security_guide_id", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - } - ], - "tags": [ - "Content" - ], - "description": "Retrieve a list of the fields which can be edited within a profile.", - "operationId": "ValueDefinitions", - "responses": { - "200": { - "description": "Lists Value Definitions", - "content": { - "application/vnd.api+json": { - "examples": { - "List of Value Definitions": { - "value": { - "data": [ - { - "id": "0520716a-ee31-4549-8431-e9d0fe8d7d1b", - "ref_id": "foo_value_800c458f-3b4d-4b92-bc14-59d34010fab4", - "title": "Quidem et accusamus sequi.", - "description": "Dolorem non neque. Et quaerat facilis. Iusto ut ex.", - "value_type": "number", - "default_value": "0.30564241140585313", - "type": "value_definition" - }, - { - "id": "0ebeefaf-862d-47c7-9b2c-e63efc6de835", - "ref_id": "foo_value_db36b895-ea81-4649-a57c-1524194b9f63", - "title": "Ut quia non ex.", - "description": "Magnam atque veritatis. Et rerum placeat. Velit minima ut.", - "value_type": "number", - "default_value": "0.11972968764362624", - "type": "value_definition" - }, - { - "id": "1367a267-fa7d-417f-b2f5-048a765352ef", - "ref_id": "foo_value_ad7cc9c5-c960-49b1-90bc-69284c958aa5", - "title": "Ex in commodi minus.", - "description": "Quidem voluptatem eius. Accusantium vitae est. Rerum aut itaque.", - "value_type": "number", - "default_value": "0.7598861441027798", - "type": "value_definition" - }, - { - "id": "15d754f0-9c0b-4536-9a1f-860f7b41c9c6", - "ref_id": "foo_value_7fd4c50b-5568-45db-9253-cfbcc8a9d42f", - "title": "Id dolor omnis ipsum.", - "description": "Ipsum illum exercitationem. Voluptatem ipsa voluptate. Quo beatae et.", - "value_type": "number", - "default_value": "0.18447449106790792", - "type": "value_definition" - }, - { - "id": "17cb7cbb-221f-436b-9c46-958f8f727708", - "ref_id": "foo_value_bf260328-174d-467a-af69-2d027c25ee05", - "title": "Voluptatibus doloribus qui pariatur.", - "description": "Unde ut quibusdam. Incidunt quia nisi. Vitae harum asperiores.", - "value_type": "number", - "default_value": "0.18627700715206041", - "type": "value_definition" - }, - { - "id": "1ad5157d-a329-4d56-b456-ed98e5813a85", - "ref_id": "foo_value_ba618376-ef4f-45f4-a76b-c4f09bfca36d", - "title": "Omnis cumque odit facilis.", - "description": "Totam doloremque quia. Culpa similique tempore. Amet deserunt est.", - "value_type": "number", - "default_value": "0.3623214604594782", - "type": "value_definition" - }, - { - "id": "21421231-1519-4b02-8ee6-fc4fa5648f10", - "ref_id": "foo_value_bd1c4239-7ede-43dc-826b-144712721e7e", - "title": "Quia neque error blanditiis.", - "description": "Quisquam sequi doloribus. Blanditiis voluptates ad. Quam provident aut.", - "value_type": "number", - "default_value": "0.8578627192053798", - "type": "value_definition" - }, - { - "id": "2bca6bdf-f3e3-4d26-8a1f-9b9a78d57b75", - "ref_id": "foo_value_3a063381-a6be-42f5-bd2b-1398b2e6c002", - "title": "Voluptates officiis et ea.", - "description": "Magni sit voluptates. Natus iusto et. Nisi dolor repellendus.", - "value_type": "number", - "default_value": "0.4442064226635942", - "type": "value_definition" - }, - { - "id": "305ba7d0-9799-4cde-ab7d-b1bd89967bd6", - "ref_id": "foo_value_afb0b435-4ba9-4794-a8db-387dd099e6d2", - "title": "Ut repellendus minus sit.", - "description": "Magnam quas nobis. Rerum facilis ad. Nisi vitae beatae.", - "value_type": "number", - "default_value": "0.7188821353015122", - "type": "value_definition" - }, - { - "id": "44b17131-9c32-4fcd-bfd2-9af577572c25", - "ref_id": "foo_value_346dbf1c-d530-433b-ab4e-37909c26f6a6", - "title": "Magni sit rem ab.", - "description": "Doloremque officia qui. Et ab reiciendis. Tempora et deserunt.", - "value_type": "number", - "default_value": "0.857276471247882", - "type": "value_definition" - } - ], - "meta": { - "total": 25, - "limit": 10, - "offset": 0 - }, - "links": { - "first": "/api/compliance/v2/security_guides/8c945a49-75c3-4dce-8a95-adce1008c6ed/value_definitions?limit=10&offset=0", - "last": "/api/compliance/v2/security_guides/8c945a49-75c3-4dce-8a95-adce1008c6ed/value_definitions?limit=10&offset=20", - "next": "/api/compliance/v2/security_guides/8c945a49-75c3-4dce-8a95-adce1008c6ed/value_definitions?limit=10&offset=10" - } - }, - "summary": "", - "description": "" - }, - "List of Value Definitions sorted by \"title:asc\"": { - "value": { - "data": [ - { - "id": "91d14507-40a8-4bfd-8395-3444ab676f40", - "ref_id": "foo_value_d713c08b-7981-4ade-83bc-bf03886ae21c", - "title": "At non qui non.", - "description": "Natus amet sapiente. Expedita omnis consectetur. Laudantium neque quibusdam.", - "value_type": "number", - "default_value": "0.2285234439975904", - "type": "value_definition" - }, - { - "id": "b1f9e129-8ef3-41e8-bfd0-8ff58dbc7cab", - "ref_id": "foo_value_6c9bf3a9-e377-46d6-8bc4-8a9e62da5aa2", - "title": "Commodi quibusdam dolores quo.", - "description": "Modi et praesentium. Exercitationem fugiat similique. At est aut.", - "value_type": "number", - "default_value": "0.6576561892131595", - "type": "value_definition" - }, - { - "id": "918fab2a-83de-4ecb-a6b1-fc7f8f36b05f", - "ref_id": "foo_value_7dc968bc-4a58-4286-a263-679846713cd9", - "title": "Consequuntur voluptas nostrum accusamus.", - "description": "Vero autem quod. Quis iste officia. Voluptatem ex aliquid.", - "value_type": "number", - "default_value": "0.9535744364447897", - "type": "value_definition" - }, - { - "id": "d8e1a022-dd17-4a74-9a39-28419d330f98", - "ref_id": "foo_value_7d022fb5-0ddd-4fc2-bb05-186834d0c1a2", - "title": "Debitis recusandae qui architecto.", - "description": "In natus iure. Iure ut nisi. Beatae est perferendis.", - "value_type": "number", - "default_value": "0.9539895247499673", - "type": "value_definition" - }, - { - "id": "35b00af9-c4d2-4b20-a711-c1bbb6b0a0de", - "ref_id": "foo_value_11cf3ee9-33ac-4a88-99a6-ab2332f7cbc1", - "title": "Distinctio earum et itaque.", - "description": "Porro sint molestias. Adipisci corrupti velit. Minima suscipit eius.", - "value_type": "number", - "default_value": "0.12355069585734524", - "type": "value_definition" - }, - { - "id": "3ba4e580-53f5-42a1-9381-5f3fbd2632ec", - "ref_id": "foo_value_5b2d6c30-06c3-40a9-9e73-2d865dfe96df", - "title": "Dolor molestiae modi sapiente.", - "description": "Consequatur repellendus mollitia. Perspiciatis tenetur sapiente. Ipsa ullam similique.", - "value_type": "number", - "default_value": "0.7244121372201825", - "type": "value_definition" - }, - { - "id": "6f4a2850-9d69-4f3a-8e2f-1af850d6e6ed", - "ref_id": "foo_value_85c188af-61ff-44f0-9ee0-afc6aae299cf", - "title": "Dolor quas et facilis.", - "description": "In rem voluptates. Quis quod mollitia. Sunt ut magni.", - "value_type": "number", - "default_value": "0.8104222252150413", - "type": "value_definition" - }, - { - "id": "e065bab4-5147-4720-b482-10571955bea8", - "ref_id": "foo_value_2f6dc9a6-489d-4616-a806-d117e2ab2796", - "title": "Dolore ad voluptate iure.", - "description": "Consequatur necessitatibus illum. Sed possimus autem. Minima qui et.", - "value_type": "number", - "default_value": "0.7478943286685453", - "type": "value_definition" - }, - { - "id": "ed440768-69a7-4180-82c0-b1819b010a7a", - "ref_id": "foo_value_05711f3a-b538-4bb6-9e66-1acfaba0b671", - "title": "Dolorem fuga magnam sed.", - "description": "Explicabo vitae et. Adipisci tempora amet. Consequatur unde non.", - "value_type": "number", - "default_value": "0.9600157457034818", - "type": "value_definition" - }, - { - "id": "f83451fb-7c39-4c85-964f-1575b60955cf", - "ref_id": "foo_value_72e4bda6-7c6f-4e73-95f9-ce128a63aab8", - "title": "Earum officia cum et.", - "description": "Sit ipsam enim. Eaque accusamus culpa. Dolor atque itaque.", - "value_type": "number", - "default_value": "0.03731280565415673", - "type": "value_definition" - } - ], - "meta": { - "total": 25, - "limit": 10, - "offset": 0, - "sort_by": "title" - }, - "links": { - "first": "/api/compliance/v2/security_guides/08549b82-399f-4373-91bd-4caf6e105440/value_definitions?limit=10&offset=0&sort_by=title", - "last": "/api/compliance/v2/security_guides/08549b82-399f-4373-91bd-4caf6e105440/value_definitions?limit=10&offset=20&sort_by=title", - "next": "/api/compliance/v2/security_guides/08549b82-399f-4373-91bd-4caf6e105440/value_definitions?limit=10&offset=10&sort_by=title" - } - }, - "summary": "", - "description": "" - }, - "List of Value Definitions filtered by '(title=Fuga natus exercitationem quasi.)'": { - "value": { - "data": [ - { - "id": "09ed409a-8dcb-47f3-be95-0fcafe273ffd", - "ref_id": "foo_value_0c94d000-67a7-4498-8004-49f55fb17668", - "title": "Fuga natus exercitationem quasi.", - "description": "Et eos enim. Recusandae eum quis. Aspernatur vel ipsam.", - "value_type": "number", - "default_value": "0.9432507446868649", - "type": "value_definition" - } - ], - "meta": { - "total": 1, - "filter": "(title=\"Fuga natus exercitationem quasi.\")", - "limit": 10, - "offset": 0 - }, - "links": { - "first": "/api/compliance/v2/security_guides/a5261732-5820-4c03-8f29-57b6d0d7b42e/value_definitions?filter=%28title%3D%22Fuga+natus+exercitationem+quasi.%22%29&limit=10&offset=0", - "last": "/api/compliance/v2/security_guides/a5261732-5820-4c03-8f29-57b6d0d7b42e/value_definitions?filter=%28title%3D%22Fuga+natus+exercitationem+quasi.%22%29&limit=10&offset=0" - } - }, - "summary": "", - "description": "" - } - }, - "schema": { - "type": "object", - "properties": { - "meta": { - "$ref": "#/components/schemas/metadata" - }, - "links": { - "$ref": "#/components/schemas/links" - }, - "data": { - "type": "array", - "items": { - "properties": { - "schema": { - "$ref": "#/components/schemas/value_definition" - } - } - } - } - } - } - } - } - }, - "422": { - "description": "Returns with Unprocessable Content", - "content": { - "application/vnd.api+json": { - "examples": { - "Description of an error when sorting by incorrect parameter": { - "value": { - "errors": [ - "Result cannot be sorted by the 'description' column." - ] - }, - "summary": "", - "description": "" - }, - "Description of an error when requesting higher limit than supported": { - "value": { - "errors": [ - "Invalid parameter: limit must be less than or equal to 100" - ] - }, - "summary": "", - "description": "" - } - }, - "schema": { - "$ref": "#/components/schemas/errors" - } - } - } - } - } - } - }, - "/security_guides/{security_guide_id}/value_definitions/{value_definition_id}": { - "get": { - "summary": "Request a Value Definition", - "parameters": [ - { - "name": "X-RH-IDENTITY", - "in": "header", - "schema": { - "type": "string" - }, - "description": "For internal use only" - }, - { - "name": "security_guide_id", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "value_definition_id", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - } - ], - "tags": [ - "Content" - ], - "description": "Retrieve a specific value definition.", - "operationId": "ValueDefinition", - "responses": { - "200": { - "description": "Returns a Value Definition", - "content": { - "application/vnd.api+json": { - "examples": { - "Returns a Value Definition": { - "value": { - "data": { - "id": "a4cb6aca-41bc-448a-9d9f-30768050ca96", - "ref_id": "foo_value_66053736-370d-4de6-a6a8-05fe41e86c2d", - "title": "Id est illum totam.", - "description": "Rerum sunt ex. Aliquid et necessitatibus. At et tempore.", - "value_type": "number", - "default_value": "0.23679280802456693", - "type": "value_definition" - } - }, - "summary": "", - "description": "" - } - }, - "schema": { - "type": "object", - "properties": { - "data": { - "type": "object", - "properties": { - "schema": { - "$ref": "#/components/schemas/value_definition" - } - } - } - } - } - } - } - }, - "404": { - "description": "Returns with Not Found", - "content": { - "application/vnd.api+json": { - "examples": { - "Description of an error when requesting a non-existing Value Definition": { - "value": { - "errors": [ - "V2::ValueDefinition not found with ID 5a8deb38-fa92-44c1-80ca-5f32e7b8793e" - ] - }, - "summary": "", - "description": "" - } - }, - "schema": { - "$ref": "#/components/schemas/errors" - } - } - } - } - } - } - } - }, - "components": { - "schemas": { - "errors": { - "type": "object", - "required": [ - "errors" - ], - "properties": { - "errors": { - "type": "array", - "items": { - "type": "string", - "examples": [ - "V2::SecurityGuide not found with ID a4708198-9d00-4035-bf57-1e7aaad217c5" - ] - } - } - } - }, - "id": { - "type": "string", - "format": "uuid", - "readOnly": true - }, - "links": { - "type": "object", - "properties": { - "first": { - "type": "string", - "format": "uri", - "readOnly": true, - "description": "Link to first page" - }, - "last": { - "type": "string", - "format": "uri", - "readOnly": true, - "description": "Link to last page" - }, - "previous": { - "type": "string", - "format": "uri", - "readOnly": true, - "description": "Link to previous page" - }, - "next": { - "type": "string", - "format": "uri", - "readOnly": true, - "description": "Link to next page" - } - } - }, - "metadata": { - "type": "object", - "properties": { - "total": { - "type": "number", - "examples": [ - 1, - 42, - 770 - ], - "readOnly": true, - "description": "Total number of items" - }, - "limit": { - "type": "number", - "maximum": 100, - "minimum": 1, - "default": 10, - "examples": [ - 10, - 100 - ], - "readOnly": true, - "description": "Number of items returned per page" - }, - "offset": { - "type": "number", - "minimum": 0, - "default": 0, - "examples": [ - 15, - 90 - ], - "readOnly": true, - "description": "Offset of the first item of paginated response" - }, - "sort_by": { - "type": "string", - "examples": [ - "version:asc" - ], - "description": "Attribute and direction the items are sorted by" - }, - "filter": { - "type": "string", - "default": "", - "examples": [ - "title='Standard System Security Profile for Fedora'" - ], - "description": "Query string used to filter items by their attributes" - } - } - }, - "policy": { - "type": "object", - "required": [ - "compliance_threshold", - "profile_id" - ], - "properties": { - "id": { - "$ref": "#/components/schemas/id" - }, - "type": { - "type": "string", - "enum": [ - "policy" - ], - "readOnly": true - }, - "title": { - "type": "string", - "examples": [ - "CIS Red Hat Enterprise Linux 7 Benchmark" - ], - "description": "Short title of the Policy" - }, - "description": { - "type": "string", - "examples": [ - "This profile defines a baseline that aligns to the Center for Internet Security®Red Hat Enterprise Linux 7 Benchmark™, v2.2.0, released 12-27-2017." - ], - "description": "Longer description of the Policy" - }, - "business_objective": { - "type": "string", - "examples": [ - "Guide to the Secure Configuration of Red Hat Enterprise Linux 7" - ], - "description": "The Business Objective associated to the Policy" - }, - "compliance_threshold": { - "type": "number", - "examples": [ - 90 - ], - "maximum": 100, - "minimum": 0, - "description": "The percentage above which the Policy meets compliance requirements" - }, - "profile_id": { - "type": "string", - "format": "uuid", - "writeOnly": true, - "examples": [ - "9c4bccad-eb1f-473f-bd3d-2de6e125f725" - ], - "description": "Identifier of the underlying Profile" - }, - "os_major_version": { - "type": "number", - "minimum": 6, - "examples": [ - 7 - ], - "description": "Major version of the Operating System that the Policy covers", - "readOnly": true - }, - "ref_id": { - "type": "string", - "examples": [ - "xccdf_org.ssgproject.content_profile_pci-dss" - ], - "description": "Identificator of the Profile", - "readOnly": true - }, - "profile_title": { - "type": "string", - "examples": [ - "CIS Red Hat Enterprise Linux 7 Benchmark" - ], - "description": "Title of the associated Policy", - "readOnly": true - }, - "total_system_count": { - "type": "number", - "minium": 0, - "examples": [ - 3 - ], - "description": "The number of Systems assigned to this Policy", - "readOnly": true - } - } - }, - "policy_update": { - "type": "object", - "properties": { - "description": { - "type": "string", - "examples": [ - "This profile defines a baseline that aligns to the Center for Internet Security®Red Hat Enterprise Linux 7 Benchmark™, v2.2.0, released 12-27-2017." - ], - "description": "Longer description of the Policy" - }, - "business_objective": { - "type": "string", - "examples": [ - "Guide to the Secure Configuration of Red Hat Enterprise Linux 7" - ], - "description": "The Business Objective associated to the Policy" - }, - "compliance_threshold": { - "type": "number", - "examples": [ - 90 - ], - "maximum": 100, - "minimum": 0, - "description": "The percentage above which the Policy meets compliance requirements" - } - } - }, - "profile": { - "type": "object", - "properties": { - "id": { - "$ref": "#/components/schemas/id" - }, - "type": { - "type": "string", - "readOnly": true, - "enum": [ - "profile" - ] - }, - "ref_id": { - "type": "string", - "examples": [ - "xccdf_org.ssgproject.content_profile_pci-dss" - ], - "readOnly": true, - "description": "Identificator of the Profile" - }, - "title": { - "type": "string", - "examples": [ - "CIS Red Hat Enterprise Linux 7 Benchmark" - ], - "readOnly": true, - "description": "Short title of the Profile" - }, - "description": { - "type": "string", - "examples": [ - "This profile defines a baseline that aligns to the Center for Internet Security®Red Hat Enterprise Linux 7 Benchmark™, v2.2.0, released 12-27-2017." - ], - "readOnly": true, - "description": "Longer description of the Profile" - }, - "value_overrides": { - "type": "object", - "readOnly": true, - "description": "Pair of keys and values for Value Definition customizations" - } - } - }, - "report": { - "type": "object", - "properties": { - "id": { - "$ref": "#/components/schemas/id" - }, - "type": { - "type": "string", - "enum": [ - "report" - ], - "readOnly": true - }, - "title": { - "type": "string", - "examples": [ - "CIS Red Hat Enterprise Linux 7 Benchmark" - ], - "description": "Short title of the Report", - "readOnly": true - }, - "business_objective": { - "type": "string", - "examples": [ - "Guide to the Secure Configuration of Red Hat Enterprise Linux 7" - ], - "description": "The Business Objective associated to the Policy", - "readOnly": true - }, - "compliance_threshold": { - "type": "number", - "examples": [ - 90 - ], - "maximum": 100, - "minimum": 0, - "description": "The percentage above which the Policy meets compliance requirements", - "readOnly": true - }, - "os_major_version": { - "type": "number", - "minimum": 6, - "examples": [ - 7 - ], - "description": "Major version of the Operating System that the Report covers", - "readOnly": true - }, - "ref_id": { - "type": "string", - "examples": [ - "xccdf_org.ssgproject.content_profile_pci-dss" - ], - "description": "Identificator of the Profile", - "readOnly": true - }, - "profile_title": { - "type": "string", - "examples": [ - "CIS Red Hat Enterprise Linux 7 Benchmark" - ], - "description": "Title of the associated Profile", - "readOnly": true - }, - "percent_compliant": { - "type": "number", - "minimum": 0, - "maximum": 100, - "examples": [ - 68 - ], - "description": "Describes percentage of compliant systems", - "readOnly": true - }, - "assigned_system_count": { - "type": "number", - "minium": 1, - "examples": [ - 42 - ], - "description": "The number of Systems assigned to this Report. Not visible under the Systems endpoint.", - "readOnly": true - }, - "compliant_system_count": { - "type": "number", - "minium": 0, - "examples": [ - 21 - ], - "description": "The number of compliant Systems in this Report. Inconsistent under the Systems endpoint.", - "readOnly": true - }, - "all_systems_exposed": { - "type": "boolean", - "description": "Informs if the user has access to all the Systems under the Report. \\\n Inconsistent under the Systems endpoint.", - "examples": [ - false - ], - "readOnly": true - }, - "unsupported_system_count": { - "type": "number", - "minium": 0, - "examples": [ - 3 - ], - "description": "The number of unsupported Systems in this Report. \\\n Inconsistent under the Systems endpoint.", - "readOnly": true - }, - "reported_system_count": { - "type": "number", - "minium": 0, - "examples": [ - 3 - ], - "description": "The number of Systems in this Report that have Test Results available. \\\n Inconsistent under the Systems endpoint.", - "readOnly": true - } - } - }, - "report_stats": { - "type": "array", - "items": { - "type": "object", - "properties": { - "title": { - "type": "string", - "examples": [ - "Remove tftp" - ], - "readOnly": true, - "description": "Short title of the Rule" - }, - "ref_id": { - "type": "string", - "examples": [ - "xccdf_org.ssgproject.content_rule_package_tftp_removed" - ], - "readOnly": true, - "description": "Identificator of the Rule" - }, - "identifier": { - "type": "object", - "readOnly": true, - "description": "Identifier of the Rule", - "properties": { - "label": { - "type": "string", - "readOnly": true, - "examples": [ - "CCE-80798-2" - ] - }, - "system": { - "type": "string", - "readOnly": true, - "examples": [ - "https://nvd.nist.gov/cce/index.cfm" - ] - } - }, - "examples": [ - "CEE-1234-123" - ] - }, - "severity": { - "type": "string", - "examples": [ - "low" - ], - "readOnly": true, - "description": "The severity of the Rule" - }, - "count": { - "type": "integer", - "examples": [ - 102 - ], - "readOnly": true, - "description": "Number of failures" - } - } - } - }, - "rule": { - "type": "object", - "properties": { - "id": { - "$ref": "#/components/schemas/id" - }, - "type": { - "type": "string", - "readOnly": true, - "enum": [ - "rule" - ] - }, - "ref_id": { - "type": "string", - "examples": [ - "xccdf_org.ssgproject.content_rule_package_tftp_removed" - ], - "readOnly": true, - "description": "Identificator of the Rule" - }, - "rule_group_id": { - "type": "string", - "format": "uuid", - "examples": [ - "cf50fd69-0205-49e8-8e12-c1b2a6291f1d" - ], - "readOnly": true, - "description": "UUID of the parent Rule Group" - }, - "title": { - "type": "string", - "examples": [ - "Remove tftp" - ], - "readOnly": true, - "description": "Short title of the Rule" - }, - "rationale": { - "type": "string", - "examples": [ - "It is recommended that TFTP be remvoed, unless there is a specific need for TFTP (such as a boot server). In that case, use extreme caution when configuring the services." - ], - "readOnly": true, - "description": "Rationale of the Rule" - }, - "description": { - "type": "string", - "examples": [ - "Trivial File Transfer Protocol (TFTP) is a simple file transfer protocol, typically used to automatically transfer configuration or boot files between machines. TFTP does not support authentication and can be easily hacked. The package tftp is a client program that allows for connections to a tftp server." - ], - "readOnly": true, - "description": "Longer description of the Rule" - }, - "precedence": { - "type": "integer", - "examples": [ - 3 - ], - "readOnly": true, - "description": "The original sorting precedence of the Rule in the Security Guide" - }, - "severity": { - "type": "string", - "examples": [ - "low" - ], - "readOnly": true, - "description": "The severity of the Rule" - }, - "identifier": { - "type": "object", - "readOnly": true, - "description": "Identifier of the Rule", - "properties": { - "label": { - "type": "string", - "readOnly": true, - "examples": [ - "CCE-80798-2" - ] - }, - "system": { - "type": "string", - "readOnly": true, - "examples": [ - "https://nvd.nist.gov/cce/index.cfm" - ] - } - }, - "examples": [ - "CEE-1234-123" - ] - }, - "references": { - "type": "array", - "items": { - "type": "object", - "readOnly": true, - "description": "List of Tags assigned to the System", - "properties": { - "label": { - "type": "string", - "readOnly": true, - "examples": [ - "APO01.06" - ] - }, - "href": { - "type": "string", - "readOnly": true, - "examples": [ - "https://www.isaca.org/resources/cobit" - ] - } - } - }, - "readOnly": true, - "description": "Array of the Rule References" - }, - "remediation_available": { - "type": "boolean", - "examples": [ - true, - false - ], - "readOnly": true, - "description": "Whether or not a remediation is available for the given rule." - }, - "remediation_issue_id": { - "type": [ - "string", - "null" - ], - "examples": [ - "ssg:xccdf_org.ssgproject.content_benchmark_RHEL-6|0.1.46|rht-ccp|xccdf_org.ssgproject.content_rule_sshd_disable_rhosts" - ], - "readOnly": true, - "description": "The idenfitier of the remediation associated to this rule, only available under profiles." - } - } - }, - "rule_group": { - "type": "object", - "properties": { - "id": { - "$ref": "#/components/schemas/id" - }, - "type": { - "type": "string", - "readOnly": true, - "enum": [ - "rule_group" - ] - }, - "ref_id": { - "type": "string", - "examples": [ - "xccdf_org.ssgproject.content_group_locking_out_password_attempts" - ], - "readOnly": true, - "description": "Identificator of the Rule Group" - }, - "title": { - "type": "string", - "examples": [ - "Set Lockouts for Failed Password Attempt" - ], - "readOnly": true, - "description": "Short title of the Rule Group" - }, - "rationale": { - "type": "string", - "examples": [ - "By limiting the number of failed logon attempts, the risk of unauthorized system access via user password guessing, otherwise known as brute-forcing, is reduced. Limits are imposed by locking the account." - ], - "readOnly": true, - "description": "Rationale of the Rule Group" - }, - "description": { - "type": "string", - "examples": [ - "The pam_faillock PAM module provides the capability to lock out user accounts after a number of failed login attempts. Its documentation is available in /usr/share/doc/pam-VERSION/txts/README.pam_faillock." - ], - "readOnly": true, - "description": "Longer description of the Rule Group" - }, - "precedence": { - "type": "integer", - "examples": [ - 3 - ], - "readOnly": true, - "description": "The original sorting precedence of the Rule Group in the Security Guide" - } - } - }, - "rule_result": { - "type": "object", - "properties": { - "id": { - "$ref": "#/components/schemas/id" - }, - "type": { - "type": "string", - "readOnly": true, - "enum": [ - "rule" - ] - }, - "result": { - "type": "string", - "enum": [ - "pass", - "fail", - "error", - "unknown", - "fixed", - "notapplicable", - "notchecked", - "informational", - "notselected" - ], - "readOnly": true, - "description": "Status of the Rule Result" - }, - "rule_id": { - "type": "string", - "format": "uuid", - "examples": [ - "ac0475d7-043c-439b-abef-606f02531e10" - ], - "readOnly": true, - "description": "UUID of the affected Rule" - }, - "system_id": { - "type": "string", - "format": "uuid", - "examples": [ - "e6ba5c79-48af-4899-bb1d-964116b58c7a" - ], - "readOnly": true, - "description": "UUID of the affected System" - }, - "ref_id": { - "type": "string", - "examples": [ - "xccdf_org.ssgproject.content_rule_package_tftp_removed" - ], - "readOnly": true, - "description": "Identificator of the Rule" - }, - "rule_group_id": { - "type": "string", - "format": "uuid", - "examples": [ - "cf50fd69-0205-49e8-8e12-c1b2a6291f1d" - ], - "readOnly": true, - "description": "UUID of the parent Rule Group" - }, - "title": { - "type": "string", - "examples": [ - "Remove tftp" - ], - "readOnly": true, - "description": "Short title of the Rule" - }, - "rationale": { - "type": "string", - "examples": [ - "It is recommended that TFTP be remvoed, unless there is a specific need for TFTP (such as a boot server). In that case, use extreme caution when configuring the services." - ], - "readOnly": true, - "description": "Rationale of the Rule" - }, - "description": { - "type": "string", - "examples": [ - "Trivial File Transfer Protocol (TFTP) is a simple file transfer protocol, typically used to automatically transfer configuration or boot files between machines. TFTP does not support authentication and can be easily hacked. The package tftp is a client program that allows for connections to a tftp server." - ], - "readOnly": true, - "description": "Longer description of the Rule" - }, - "precedence": { - "type": "integer", - "examples": [ - 3 - ], - "readOnly": true, - "description": "The original sorting precedence of the Rule in the Security Guide" - }, - "severity": { - "type": "string", - "examples": [ - "low" - ], - "readOnly": true, - "description": "The severity of the Rule" - }, - "remediation_issue_id": { - "type": [ - "string", - "null" - ], - "examples": [ - "ssg:xccdf_org.ssgproject.content_benchmark_RHEL-6|0.1.46|rht-ccp|xccdf_org.ssgproject.content_rule_sshd_disable_rhosts" - ], - "readOnly": true, - "description": "The idenfitier of the remediation associated to this rule, only available under profiles." - } - } - }, - "rule_tree": { - "type": "array", - "items": { - "oneOf": [ - { - "type": "object", - "properties": { - "id": { - "$ref": "#/components/schemas/id" - }, - "type": { - "type": "string", - "enum": [ - "rule_group" - ] - }, - "children": { - "$ref": "#/components/schemas/rule_tree" - } - } - }, - { - "type": "object", - "properties": { - "id": { - "$ref": "#/components/schemas/id" - }, - "type": { - "type": "string", - "enum": [ - "rule" - ] - } - } - } - ] - } - }, - "security_guide": { - "type": "object", - "properties": { - "id": { - "$ref": "#/components/schemas/id" - }, - "type": { - "type": "string", - "readOnly": true, - "enum": [ - "security_guide" - ] - }, - "ref_id": { - "type": "string", - "examples": [ - "xccdf_org.ssgproject.content_benchmark_RHEL-7" - ], - "readOnly": true, - "description": "Identificator of the Security Guide" - }, - "title": { - "type": "string", - "examples": [ - "Guide to the Secure Configuration of Red Hat Enterprise Linux 7" - ], - "readOnly": true, - "description": "Short title of the Security Guide" - }, - "version": { - "type": "string", - "examples": [ - "0.1.46" - ], - "readOnly": true, - "description": "Version of the Security Guide" - }, - "description": { - "type": "string", - "examples": [ - "This guide presents a catalog of security-relevant configuration settings for Red Hat Enterprise Linux 7." - ], - "readOnly": true, - "description": "Longer description of the Security Guide" - }, - "os_major_version": { - "type": "number", - "minimum": 6, - "examples": [ - 7 - ], - "readOnly": true, - "description": "Major version of the Operating System that the Security Guide covers" - } - } - }, - "supported_profile": { - "type": "object", - "properties": { - "id": { - "$ref": "#/components/schemas/id" - }, - "type": { - "type": "string", - "readOnly": true, - "enum": [ - "supported_profile" - ] - }, - "ref_id": { - "type": "string", - "examples": [ - "xccdf_org.ssgproject.content_profile_cis" - ], - "readOnly": true, - "description": "Identificator of the latest supported Profile" - }, - "title": { - "type": "string", - "examples": [ - "CIS Red Hat Enterprise Linux 7 Benchmark" - ], - "readOnly": true, - "description": "Short title of the Profile" - }, - "description": { - "type": "string", - "examples": [ - "This profile defines a baseline that aligns to the Center for Internet Security®Red Hat Enterprise Linux 7 Benchmark™, v2.2.0, released 12-27-2017." - ], - "readOnly": true, - "description": "Longer description of the Profile" - }, - "security_guide_id": { - "type": "string", - "format": "uuid", - "examples": [ - "e6ba5c79-48af-4899-bb1d-964116b58c7a" - ], - "readOnly": true, - "description": "UUID of the latest Security Guide supporting this Profile" - }, - "security_guide_version": { - "type": "string", - "examples": [ - "0.1.72" - ], - "readOnly": true, - "description": "Version of the latest Security Guide supporting this Profile" - }, - "os_major_version": { - "type": "number", - "examples": [ - 7 - ], - "readOnly": true, - "description": "Major version of the Operating System that the Profile covers" - }, - "os_minor_versions": { - "type": "array", - "items": { - "type": "number", - "examples": [ - 1 - ] - }, - "readOnly": true, - "description": "List of the supported Operating System minor versions that the Profile covers" - } - } - }, - "system": { - "type": "object", - "properties": { - "id": { - "$ref": "#/components/schemas/id" - }, - "type": { - "type": "string", - "enum": [ - "system" - ], - "readOnly": true - }, - "display_name": { - "type": "string", - "readOnly": true, - "examples": [ - "localhost" - ], - "description": "Display Name of the System" - }, - "groups": { - "type": "array", - "readOnly": true, - "items": { - "type": "object", - "description": "List of Inventory Groups the System belongs to", - "properties": { - "id": { - "$ref": "#/components/schemas/id" - }, - "name": { - "type": "string", - "readOnly": true, - "examples": [ - "production" - ] - } - } - } - }, - "culled_timestamp": { - "type": "string", - "readOnly": true, - "examples": [ - "2020-06-04T19:31:55Z" - ] - }, - "last_check_in": { - "type": "string", - "readOnly": true, - "examples": [ - "2020-06-04T19:31:55Z" - ] - }, - "stale_timestamp": { - "type": "string", - "readOnly": true, - "examples": [ - "2020-06-04T19:31:55Z" - ] - }, - "stale_warning_timestamp": { - "type": "string", - "readOnly": true, - "examples": [ - "2020-06-04T19:31:55Z" - ] - }, - "updated": { - "type": "string", - "readOnly": true, - "examples": [ - "2020-06-04T19:31:55Z" - ] - }, - "insights_id": { - "$ref": "#/components/schemas/id" - }, - "tags": { - "type": "array", - "readOnly": true, - "items": { - "type": "object", - "readOnly": true, - "description": "List of Tags assigned to the System", - "properties": { - "namespace": { - "type": "string", - "readOnly": true, - "examples": [ - "insights" - ] - }, - "key": { - "type": "string", - "readOnly": true, - "examples": [ - "environment" - ] - }, - "value": { - "type": "string", - "readOnly": true, - "examples": [ - "production" - ] - } - } - } - }, - "os_major_version": { - "type": "number", - "examples": [ - 7 - ], - "readOnly": true, - "description": "Major version of the Operating System" - }, - "os_minor_version": { - "type": "number", - "examples": [ - 1 - ], - "readOnly": true, - "description": "Minor version of the Operating System" - }, - "policies": { - "type": "array", - "readOnly": true, - "description": "List of Policies assigned to the System, visible only when not listing Systems under a given Policy", - "items": { - "type": "object", - "readOnly": true, - "properties": { - "id": { - "$ref": "#/components/schemas/id" - }, - "title": { - "type": "string", - "readOnly": true, - "examples": [ - "CIS Red Hat Enterprise Linux 7 Benchmark" - ], - "description": "Short title of the Policy" - } - } - } - } - } - }, - "tailoring": { - "type": "object", - "properties": { - "id": { - "$ref": "#/components/schemas/id" - }, - "type": { - "type": "string", - "readOnly": true, - "enum": [ - "tailoring" - ] - }, - "profile_id": { - "type": "string", - "examples": [ - "cde8be06-74bc-4a2d-9e7f-11d30c5ea588" - ], - "readOnly": true, - "description": "Identificator of the Profile from which the Tailoring was cloned" - }, - "security_guide_id": { - "type": "string", - "examples": [ - "8800e1d8-70da-4e62-8cf0-16e8cee784c7" - ], - "readOnly": true, - "description": "Identificator of the Security Guide that contains the parent Profile" - }, - "security_guide_version": { - "type": "string", - "examples": [ - "0.1.210" - ], - "readOnly": true, - "description": "Version of the Security Guide that contains the parent Profile" - }, - "os_major_version": { - "type": "number", - "examples": [ - 7 - ], - "readOnly": true, - "description": "Major version of the Operating System that the Tailoring covers" - }, - "os_minor_version": { - "type": "number", - "examples": [ - 1 - ], - "readOnly": true, - "description": "Minor version of the Operating System that the Tailoring covers" - }, - "value_overrides": { - "type": "object", - "description": "Pair of keys and values for Value Definition customizations", - "examples": [ - { - "f7ed6d40-d519-4033-8e2b-314dcab6f724": "foo", - "9c8bce0b-b9ac-4f1f-b600-9c7708a4e53c": "123", - "39f376e8-29b5-4d7b-95d7-59f057deb74a": "false" - } - ] - } - } - }, - "tailoring_create": { - "type": "object", - "required": [ - "os_minor_version" - ], - "properties": { - "os_minor_version": { - "type": "number", - "examples": [ - 1 - ], - "description": "Minor version of the Operating System that the Tailoring covers" - } - } - }, - "tailoring_file": { - "title": "Tailoring File", - "description": "Defines customizations of rules and variables for a set of profiles", - "type": "object", - "additionalProperties": true, - "properties": { - "profiles": { - "type": "array", - "items": { - "type": "object", - "title": "Profile", - "description": "A new tailored profile with modifications", - "additionalProperties": true, - "anyOf": [ - { - "required": [ - "id", - "base_profile_id" - ] - }, - { - "required": [ - "id", - "title" - ] - } - ], - "properties": { - "id": { - "type": "string", - "description": "New profile identifier, can be same as 'base_profile_id', to 'shadow' the origin" - }, - "base_profile_id": { - "type": "string", - "description": "Original profile identifier, the base for modifications" - }, - "title": { - "type": "string", - "description": "Title for the new profile, inherited from base profile if not given, required if there is no base profile" - }, - "groups": { - "type": "object", - "description": "Group modifications, keys are identifiers", - "additionalProperties": { - "type": "object", - "additionalProperties": true, - "anyOf": [ - { - "required": [ - "evaluate" - ] - } - ], - "properties": { - "evaluate": { - "type": "boolean", - "description": "Includes or excludes a group of rules from evaluation" - } - } - } - }, - "rules": { - "type": "object", - "description": "Rule modifications, keys are identifiers", - "additionalProperties": { - "type": "object", - "additionalProperties": true, - "anyOf": [ - { - "required": [ - "evaluate" - ] - }, - { - "required": [ - "severity" - ] - }, - { - "required": [ - "role" - ] - } - ], - "properties": { - "evaluate": { - "type": "boolean", - "description": "Includes or excludes a rule from evaluation" - }, - "severity": { - "type": "string", - "enum": [ - "unknown", - "info", - "low", - "medium", - "high" - ], - "description": "Overrides severity level of the rule" - }, - "role": { - "type": "string", - "enum": [ - "full", - "unscored", - "unchecked" - ], - "description": "Overrides role of the rule" - } - } - } - }, - "variables": { - "type": "object", - "description": "Variables modifications, keys are identifiers", - "additionalProperties": { - "type": "object", - "additionalProperties": true, - "oneOf": [ - { - "required": [ - "value" - ] - }, - { - "required": [ - "option_id" - ] - } - ], - "properties": { - "value": { - "type": [ - "string", - "integer", - "boolean" - ], - "description": "Directly overrides variable's value with a given value" - }, - "option_id": { - "type": "string", - "description": "Overrides variable's value with a predefined value identified by 'option_id'" - } - } - } - } - } - } - } - } - }, - "test_result": { - "type": "object", - "properties": { - "id": { - "$ref": "#/components/schemas/id" - }, - "type": { - "type": "string", - "enum": [ - "test_result" - ], - "readOnly": true - }, - "display_name": { - "type": "string", - "readOnly": true, - "examples": [ - "localhost" - ], - "description": "Display Name of the System" - }, - "groups": { - "type": "array", - "readOnly": true, - "items": { - "type": "object", - "description": "List of Inventory Groups the System belongs to", - "properties": { - "id": { - "$ref": "#/components/schemas/id" - }, - "name": { - "type": "string", - "readOnly": true, - "examples": [ - "production" - ] - } - } - } - }, - "tags": { - "type": "array", - "readOnly": true, - "items": { - "type": "object", - "readOnly": true, - "description": "List of Tags assigned to the System", - "properties": { - "namespace": { - "type": "string", - "readOnly": true, - "examples": [ - "insights" - ] - }, - "key": { - "type": "string", - "readOnly": true, - "examples": [ - "environment" - ] - }, - "value": { - "type": "string", - "readOnly": true, - "examples": [ - "production" - ] - } - } - } - }, - "system_id": { - "type": "string", - "format": "uuid", - "examples": [ - "e6ba5c79-48af-4899-bb1d-964116b58c7a" - ], - "readOnly": true, - "description": "UUID of the underlying System" - }, - "os_major_version": { - "type": "number", - "examples": [ - 7 - ], - "readOnly": true, - "description": "Major version of the Operating System" - }, - "os_minor_version": { - "type": "number", - "examples": [ - 1 - ], - "readOnly": true, - "description": "Minor version of the Operating System" - }, - "compliant": { - "type": [ - "boolean", - "null" - ], - "examples": [ - false, - true - ], - "readOnly": true, - "description": "Whether the Test Result is compliant or not within a given Report." - }, - "score": { - "type": "number", - "examples": [ - 99.99 - ], - "readOnly": true, - "description": "Compliance Score of the System within a given Report." - }, - "supported": { - "type": [ - "boolean", - "null" - ], - "examples": [ - false, - true - ], - "readOnly": true, - "description": "Whether the System is supported or not by a Profile within a given Policy." - }, - "failed_rule_count": { - "type": [ - "integer", - "null" - ], - "examples": [ - 3 - ], - "readOnly": true, - "description": "Number of failures, errors and unknown states for rules in the Test Result." - }, - "end_time": { - "type": "string", - "examples": [ - "2020-06-04T19:31:55Z" - ], - "readOnly": true, - "description": "The date when the System has been reported a Test Result for the last time." - } - } - }, - "value_definition": { - "type": "object", - "properties": { - "id": { - "$ref": "#/components/schemas/id" - }, - "type": { - "type": "string", - "enum": [ - "value_definition" - ] - }, - "ref_id": { - "type": "string", - "examples": [ - "xccdf_org.ssgproject.content_value_var_rekey_limit_size" - ], - "readOnly": true, - "description": "Identificator of the Value Definition" - }, - "title": { - "type": "string", - "examples": [ - "SSH RekeyLimit - size" - ], - "readOnly": true, - "description": "Short title of the Value Definition" - }, - "value_type": { - "type": "string", - "examples": [ - "string" - ], - "readOnly": true, - "description": "Type of the Value Definition" - }, - "description": { - "type": "string", - "examples": [ - "Specify the size component of the rekey limit." - ], - "readOnly": true, - "description": "Longer description of the Value Definition" - }, - "default_value": { - "type": "string", - "examples": [ - "512M" - ], - "readOnly": true, - "description": "Default value of the Value Definition" - } - } - } - } - }, - "tags": [ - { - "name": "Systems" - }, - { - "name": "Content" - }, - { - "name": "Policies" - }, - { - "name": "Reports" - } - ] -} \ No newline at end of file diff --git a/api/schema/composerCloudApi.v2.yaml b/api/schema/composerCloudApi.v2.yaml deleted file mode 100644 index 376ba03b..00000000 --- a/api/schema/composerCloudApi.v2.yaml +++ /dev/null @@ -1,2764 +0,0 @@ ---- -openapi: 3.0.1 -info: - version: '2' - title: OSBuild Composer cloud api - description: Service to build and install images. - license: - name: Apache 2.0 - url: https://www.apache.org/licenses/LICENSE-2.0.html - -servers: -- url: https://api.openshift.com/api/image-builder-composer/v2 - description: Main (production) server -- url: https://api.stage.openshift.com/api/image-builder-composer/v2 - description: Staging server -- url: /api/image-builder-composer/v2 - description: current domain - -paths: - /openapi: - get: - operationId: getOpenapi - summary: Get the openapi spec in json format - security: - - Bearer: [] - responses: - '200': - description: openapi spec in json format - content: - application/json: - schema: - type: object - '500': - description: Unexpected error occurred - content: - application/json: - schema: - $ref: '#/components/schemas/Error' - - /composes/: - get: - operationId: getComposeList - summary: The list of composes - security: - - Bearer: [] - description: |- - Get the list of composes. They may be completed, uploaded, - locally saved, or failed. - responses: - '200': - description: list of composes - content: - application/json: - schema: - $ref: '#/components/schemas/ComposeList' - '401': - description: Auth token is invalid - content: - application/json: - schema: - $ref: '#/components/schemas/Error' - '403': - description: Unauthorized to perform operation - content: - application/json: - schema: - $ref: '#/components/schemas/Error' - '404': - description: Unknown compose id - content: - application/json: - schema: - $ref: '#/components/schemas/Error' - '500': - description: Unexpected error occurred - content: - application/json: - schema: - $ref: '#/components/schemas/Error' - - /composes/{id}: - get: - operationId: getComposeStatus - summary: The status of a compose - security: - - Bearer: [] - parameters: - - in: path - name: id - schema: - type: string - format: uuid - example: '123e4567-e89b-12d3-a456-426655440000' - required: true - description: ID of compose status to get - description: |- - Get the status of a running or completed compose. - This includes whether or not the compose succeeded. - responses: - '200': - description: compose status - content: - application/json: - schema: - $ref: '#/components/schemas/ComposeStatus' - '400': - description: Invalid compose id - content: - application/json: - schema: - $ref: '#/components/schemas/Error' - '401': - description: Auth token is invalid - content: - application/json: - schema: - $ref: '#/components/schemas/Error' - '403': - description: Unauthorized to perform operation - content: - application/json: - schema: - $ref: '#/components/schemas/Error' - '404': - description: Unknown compose id - content: - application/json: - schema: - $ref: '#/components/schemas/Error' - '500': - description: Unexpected error occurred - content: - application/json: - schema: - $ref: '#/components/schemas/Error' - - /composes/{id}/metadata: - get: - operationId: getComposeMetadata - summary: Get the metadata for a compose. - security: - - Bearer: [] - parameters: - - in: path - name: id - schema: - type: string - format: uuid - example: 123e4567-e89b-12d3-a456-426655440000 - required: true - description: ID of compose status to get - description: |- - Get the metadata of a finished compose. - The exact information returned depends on the requested image type. - responses: - '200': - description: The metadata for the given compose. - content: - application/json: - schema: - $ref: '#/components/schemas/ComposeMetadata' - '400': - description: Invalid compose id - content: - application/json: - schema: - $ref: '#/components/schemas/Error' - '401': - description: Auth token is invalid - content: - application/json: - schema: - $ref: '#/components/schemas/Error' - '403': - description: Unauthorized to perform operation - content: - application/json: - schema: - $ref: '#/components/schemas/Error' - '404': - description: Unknown compose id - content: - application/json: - schema: - $ref: '#/components/schemas/Error' - '500': - description: Unexpected error occurred - content: - application/json: - schema: - $ref: '#/components/schemas/Error' - '/composes/{id}/logs': - get: - operationId: getComposeLogs - summary: Get logs for a compose. - parameters: - - in: path - name: id - schema: - type: string - format: uuid - example: 123e4567-e89b-12d3-a456-426655440000 - required: true - description: ID of compose status to get - description: 'Get the status of a running or finished compose. This includes whether or not it succeeded, and also meta information about the result.' - responses: - '200': - description: The logs for the given compose, in no particular format (though valid JSON). - content: - application/json: - schema: - $ref: '#/components/schemas/ComposeLogs' - '400': - description: Invalid compose id - content: - text/plain: - schema: - type: string - '404': - description: Unknown compose id - content: - text/plain: - schema: - type: string - '/composes/{id}/manifests': - get: - operationId: getComposeManifests - summary: Get the manifests for a compose. - parameters: - - in: path - name: id - schema: - type: string - format: uuid - example: 123e4567-e89b-12d3-a456-426655440000 - required: true - description: ID of compose status to get - description: 'Get the manifests of a running or finished compose. Returns one manifest for each image in the request. Each manifest conforms to the format defined at https://www.osbuild.org/man/osbuild-manifest.5' - responses: - '200': - description: The manifest for the given compose. - content: - application/json: - schema: - $ref: '#/components/schemas/ComposeManifests' - '400': - description: Invalid compose id - content: - text/plain: - schema: - type: string - '404': - description: Unknown compose id - content: - text/plain: - schema: - type: string - - '/composes/{id}/sboms': - get: - operationId: getComposeSBOMs - summary: Get the SBOMs for a compose. - parameters: - - in: path - name: id - schema: - type: string - format: uuid - example: 123e4567-e89b-12d3-a456-426655440000 - required: true - description: ID of compose for which to get SBOMs - description: |- - Returns a set of SBOM documents for each image in the request. - SBOM documents are in the SPDX format. - responses: - '200': - description: The SBOMs for the given compose. - content: - application/json: - schema: - $ref: '#/components/schemas/ComposeSBOMs' - '400': - description: Invalid compose id - content: - text/plain: - schema: - type: string - '404': - description: Unknown compose id - content: - text/plain: - schema: - type: string - - /composes/{id}/download: - get: - operationId: getComposeDownload - summary: Download the artifact for a compose. - security: - - Bearer: [] - parameters: - - in: path - name: id - schema: - type: string - format: uuid - example: 123e4567-e89b-12d3-a456-426655440000 - required: true - description: ID of compose to download - description: |- - Download the artifact of a finished compose. - responses: - '200': - description: The metadata for the given compose. - content: - application/octet-stream: - schema: - type: string - format: binary - '400': - description: Invalid compose id - content: - application/json: - schema: - $ref: '#/components/schemas/Error' - '401': - description: Auth token is invalid - content: - application/json: - schema: - $ref: '#/components/schemas/Error' - '403': - description: Unauthorized to perform operation - content: - application/json: - schema: - $ref: '#/components/schemas/Error' - '404': - description: Unknown compose id - content: - application/json: - schema: - $ref: '#/components/schemas/Error' - '500': - description: Unexpected error occurred - content: - application/json: - schema: - $ref: '#/components/schemas/Error' - - /composes/{id}/clone: - post: - operationId: postCloneCompose - summary: Clone an existing compose - parameters: - - in: path - name: id - schema: - type: string - format: uuid - example: 123e4567-e89b-12d3-a456-426655440000 - required: true - description: ID of the compose - requestBody: - required: true - content: - application/json: - schema: - $ref: '#/components/schemas/CloneComposeBody' - responses: - '201': - description: The new image is being created - content: - application/json: - schema: - $ref: '#/components/schemas/CloneComposeResponse' - '400': - description: Invalid compose id - content: - text/plain: - schema: - type: string - '404': - description: Unknown compose id - content: - text/plain: - schema: - type: string - - /clones/{id}: - get: - operationId: getCloneStatus - summary: The status of a cloned compose - security: - - Bearer: [] - parameters: - - in: path - name: id - schema: - type: string - format: uuid - example: '123e4567-e89b-12d3-a456-426655440000' - required: true - description: ID of image status to get - description: |- - Get the status of a running or completed image from a compose. - This includes whether or not the image creation succeeded. - responses: - '200': - description: image status - content: - application/json: - schema: - $ref: '#/components/schemas/CloneStatus' - '400': - description: Invalid compose id - content: - application/json: - schema: - $ref: '#/components/schemas/Error' - '401': - description: Auth token is invalid - content: - application/json: - schema: - $ref: '#/components/schemas/Error' - '403': - description: Unauthorized to perform operation - content: - application/json: - schema: - $ref: '#/components/schemas/Error' - '404': - description: Unknown compose id - content: - application/json: - schema: - $ref: '#/components/schemas/Error' - '500': - description: Unexpected error occurred - content: - application/json: - schema: - $ref: '#/components/schemas/Error' - - /compose: - post: - operationId: postCompose - summary: Create compose - description: Create a new compose, potentially consisting of several images and upload each to their destinations. - security: - - Bearer: [] - requestBody: - required: true - content: - application/json: - schema: - $ref: '#/components/schemas/ComposeRequest' - responses: - '201': - description: Compose has started - content: - application/json: - schema: - $ref: '#/components/schemas/ComposeId' - '400': - description: Invalid compose request - content: - application/json: - schema: - $ref: '#/components/schemas/Error' - '401': - description: Auth token is invalid - content: - application/json: - schema: - $ref: '#/components/schemas/Error' - '403': - description: Unauthorized to perform operation - content: - application/json: - schema: - $ref: '#/components/schemas/Error' - '404': - description: Unknown compose id - content: - application/json: - schema: - $ref: '#/components/schemas/Error' - '500': - description: Unexpected error occurred - content: - application/json: - schema: - $ref: '#/components/schemas/Error' - - /depsolve/blueprint: - post: - operationId: postDepsolveBlueprint - summary: Depsolve one or more blueprints - security: - - Bearer: [] - requestBody: - required: true - content: - application/json: - schema: - $ref: '#/components/schemas/DepsolveRequest' - responses: - '200': - description: Depsolved package list - content: - application/json: - schema: - $ref: '#/components/schemas/DepsolveResponse' - '400': - description: Invalid depsolve request - content: - application/json: - schema: - $ref: '#/components/schemas/Error' - '401': - description: Auth token is invalid - content: - application/json: - schema: - $ref: '#/components/schemas/Error' - '403': - description: Unauthorized to perform operation - content: - application/json: - schema: - $ref: '#/components/schemas/Error' - '500': - description: Unexpected error occurred - content: - application/json: - schema: - $ref: '#/components/schemas/Error' - - /search/packages: - post: - operationId: postSearchPackages - summary: Search for detailed information on a list of package names - security: - - Bearer: [] - requestBody: - required: true - content: - application/json: - schema: - $ref: '#/components/schemas/SearchPackagesRequest' - responses: - '200': - description: Search response with package details - content: - application/json: - schema: - $ref: '#/components/schemas/SearchPackagesResponse' - '400': - description: Invalid search request - content: - application/json: - schema: - $ref: '#/components/schemas/Error' - '401': - description: Auth token is invalid - content: - application/json: - schema: - $ref: '#/components/schemas/Error' - '403': - description: Unauthorized to perform operation - content: - application/json: - schema: - $ref: '#/components/schemas/Error' - '500': - description: Unexpected error occurred - content: - application/json: - schema: - $ref: '#/components/schemas/Error' - - /distributions: - get: - operationId: getDistributionList - summary: |- - Get all of the supported distribution repository details - security: - - Bearer: [] - responses: - '200': - description: Distribution repositories - content: - application/json: - schema: - $ref: '#/components/schemas/DistributionList' - '500': - description: Unexpected error occurred - content: - application/json: - schema: - $ref: '#/components/schemas/Error' - - /errors/{id}: - get: - operationId: getError - summary: Get error description - description: Get an instance of the error specified by id - security: - - Bearer: [] - parameters: - - in: path - name: id - schema: - type: string - example: '13' - required: true - description: ID of the error - responses: - '200': - description: Error description - content: - application/json: - schema: - $ref: '#/components/schemas/Error' - '401': - description: Auth token is invalid - content: - application/json: - schema: - $ref: '#/components/schemas/Error' - '403': - description: Unauthorized to perform operation - content: - application/json: - schema: - $ref: '#/components/schemas/Error' - '404': - description: Unknown error id - content: - application/json: - schema: - $ref: '#/components/schemas/Error' - '500': - description: Unexpected error occurred - content: - application/json: - schema: - $ref: '#/components/schemas/Error' - - /errors: - get: - operationId: getErrorList - summary: Get a list of all possible errors - security: - - Bearer: [] - parameters: - - $ref: '#/components/parameters/page' - - $ref: '#/components/parameters/size' - responses: - '200': - description: A list of errors - content: - application/json: - schema: - $ref: '#/components/schemas/ErrorList' - '401': - description: Auth token is invalid - content: - application/json: - schema: - $ref: '#/components/schemas/Error' - '403': - description: Unauthorized to perform operation - content: - application/json: - schema: - $ref: '#/components/schemas/Error' - '404': - description: Unknown error id - content: - application/json: - schema: - $ref: '#/components/schemas/Error' - '500': - description: Unexpected error occurred - content: - application/json: - schema: - $ref: '#/components/schemas/Error' - -components: - schemas: - ObjectReference: - type: object - required: - - id - - kind - - href - properties: - id: - type: string - kind: - type: string - href: - type: string - - List: - type: object - properties: - kind: - type: string - page: - type: integer - size: - type: integer - total: - type: integer - required: - - kind - - page - - size - - total - - items - - Error: - allOf: - - $ref: '#/components/schemas/ObjectReference' - - type: object - required: - - code - - reason - - operation_id - properties: - code: - type: string - reason: - type: string - operation_id: - type: string - details: {} - - ErrorList: - allOf: - - $ref: '#/components/schemas/List' - - type: object - required: - - items - properties: - items: - type: array - items: - $ref: '#/components/schemas/Error' - - ComposeList: - allOf: - - $ref: '#/components/schemas/List' - - type: object - required: - - items - properties: - items: - type: array - items: - $ref: '#/components/schemas/ComposeStatus' - - DistributionList: - type: object - description: | - Map of distributions to their architecture. - additionalProperties: - type: object - description: | - Map of architectures to their repositories. - additionalProperties: - type: array - description: Repository used for this distro:arch:image-type - items: - $ref: '#/components/schemas/BlueprintRepository' - - ComposeStatus: - allOf: - - $ref: '#/components/schemas/ObjectReference' - - type: object - required: - - status - - image_status - properties: - status: - $ref: '#/components/schemas/ComposeStatusValue' - image_status: - $ref: '#/components/schemas/ImageStatus' - image_statuses: - type: array - items: - $ref: '#/components/schemas/ImageStatus' - koji_status: - $ref: '#/components/schemas/KojiStatus' - ComposeStatusValue: - type: string - enum: - - success - - failure - - pending - example: success - ComposeLogs: - allOf: - - $ref: '#/components/schemas/ObjectReference' - - type: object - required: - - image_builds - properties: - image_builds: - type: array - items: - type: object - x-go-type: interface{} - koji: - $ref: '#/components/schemas/KojiLogs' - KojiLogs: - type: object - required: - - init - - import - properties: - init: {} - import: {} - ComposeManifests: - allOf: - - $ref: '#/components/schemas/ObjectReference' - - type: object - required: - - manifests - properties: - manifests: - type: array - items: - type: object - x-go-type: interface{} - ImageSBOM: - required: - - sbom - - sbom_type - - pipeline_name - - pipeline_purpose - properties: - sbom: - type: object - x-go-type: interface{} - description: |- - The SBOM document in the 'sbom_type' format. - sbom_type: - type: string - enum: ["spdx"] - description: |- - The type of the SBOM document. Currently only SPDX is supported. - pipeline_name: - type: string - description: |- - The name of the osbuild pipeline which has the packages described - in the SBOM installed. - pipeline_purpose: - type: string - enum: ["buildroot", "image"] - description: |- - The purpose of the pipeline. The `buildroot` pipeline was used for - the build environment dueing the image build. The `image` pipeline - represents the actual content of the image. Due to the nature of - some image types, there may be multiple pipelines of the same - purpose. - ComposeSBOMs: - allOf: - - $ref: '#/components/schemas/ObjectReference' - - type: object - required: - - items - properties: - items: - type: array - description: |- - The SBOM documents for each image built in the compose. - items: - type: array - description: |- - The SBOM documents for the given image. Each image usually has - at least two SBOMs, one for the build environment and one for the - actual content of the image. - items: - $ref: '#/components/schemas/ImageSBOM' - ImageStatus: - required: - - status - properties: - status: - $ref: '#/components/schemas/ImageStatusValue' - upload_status: - $ref: '#/components/schemas/UploadStatus' - upload_statuses: - type: array - items: - $ref: '#/components/schemas/UploadStatus' - error: - $ref: '#/components/schemas/ComposeStatusError' - ComposeStatusError: - required: - - id - - reason - properties: - id: - type: integer - reason: - type: string - details: {} - ImageStatusValue: - type: string - enum: ['success', 'failure', 'pending', 'building', 'uploading', 'registering'] - UploadStatus: - required: - - status - - type - - options - properties: - status: - $ref: '#/components/schemas/UploadStatusValue' - type: - $ref: '#/components/schemas/UploadTypes' - options: - oneOf: - - $ref: '#/components/schemas/AWSEC2UploadStatus' - - $ref: '#/components/schemas/AWSS3UploadStatus' - - $ref: '#/components/schemas/GCPUploadStatus' - - $ref: '#/components/schemas/AzureUploadStatus' - - $ref: '#/components/schemas/ContainerUploadStatus' - - $ref: '#/components/schemas/OCIUploadStatus' - - $ref: '#/components/schemas/PulpOSTreeUploadStatus' - - $ref: '#/components/schemas/LocalUploadStatus' - UploadStatusValue: - type: string - enum: ['success', 'failure', 'pending', 'running'] - UploadTypes: - type: string - enum: - - aws - - aws.s3 - - gcp - - azure - - container - - oci.objectstorage - - pulp.ostree - - local - AWSEC2UploadStatus: - type: object - required: - - ami - - region - properties: - ami: - type: string - example: 'ami-0c830793775595d4b' - region: - type: string - example: 'eu-west-1' - AWSS3UploadStatus: - type: object - required: - - url - properties: - url: - type: string - GCPUploadStatus: - type: object - required: - - project_id - - image_name - properties: - project_id: - type: string - example: 'ascendant-braid-303513' - image_name: - type: string - example: 'my-image' - AzureUploadStatus: - type: object - required: - - image_name - properties: - image_name: - type: string - example: 'my-image' - KojiStatus: - type: object - properties: - build_id: - type: integer - example: 42 - ContainerUploadStatus: - type: object - additionalProperties: false - required: - - url - - digest - properties: - url: - type: string - example: 'quay.io/myaccount/osbuild:latest' - description: | - FQDN of the uploaded image - digest: - type: string - description: | - Digest of the manifest of the uploaded container on the registry - OCIUploadStatus: - type: object - required: - - url - properties: - url: - type: string - PulpOSTreeUploadStatus: - type: object - required: - - repo_url - properties: - repo_url: - type: string - LocalUploadStatus: - type: object - required: - - artifact_path - properties: - artifact_path: - type: string - ComposeMetadata: - allOf: - - $ref: '#/components/schemas/ObjectReference' - - type: object - properties: - packages: - type: array - items: - $ref: '#/components/schemas/PackageMetadata' - description: 'Package list including NEVRA' - ostree_commit: - type: string - description: 'ID (hash) of the built commit' - request: - $ref: '#/components/schemas/ComposeRequest' - description: 'Original request to create this compose' - PackageMetadataCommon: - required: - - type - - name - - version - - release - - arch - - sigmd5 - properties: - type: - type: string - name: - type: string - version: - type: string - release: - type: string - epoch: - type: string - arch: - type: string - signature: - type: string - checksum: - type: string - description: 'Optional package checksum using ALGO:HASH form' - example: 'sha256:525788de3dd44497c27d4172568366b20380a6b6707f0a1970473e4d97046a4f' - PackageMetadata: - allOf: - - $ref: '#/components/schemas/PackageMetadataCommon' - - type: object - required: - - sigmd5 - properties: - sigmd5: - type: string - - ComposeRequest: - additionalProperties: false - required: - - distribution - not: {required: ['customizations', 'blueprint']} - properties: - distribution: - type: string - example: 'rhel-8' - image_request: - $ref: '#/components/schemas/ImageRequest' - image_requests: - type: array - items: - $ref: '#/components/schemas/ImageRequest' - customizations: - $ref: '#/components/schemas/Customizations' - koji: - $ref: '#/components/schemas/Koji' - blueprint: - $ref: '#/components/schemas/Blueprint' - ImageRequest: - additionalProperties: false - required: - - architecture - - image_type - - repositories - properties: - architecture: - type: string - example: 'x86_64' - image_type: - $ref: '#/components/schemas/ImageTypes' - repositories: - type: array - items: - $ref: '#/components/schemas/Repository' - ostree: - $ref: '#/components/schemas/OSTree' - upload_targets: - type: array - description: | - The type and options for multiple upload targets. Each item defines - a separate upload destination with its own options. Multiple - different targets as well as multiple targets of the same kind are - supported. - items: - $ref: '#/components/schemas/UploadTarget' - upload_options: - description: | - Top level upload options for a single upload target. If this is - defined, it is used with the default target type for the image type - and is combined with the targets defined in upload_targets. - $ref: '#/components/schemas/UploadOptions' - size: - x-go-type: uint64 - default: 0 - example: 4294967296 - description: | - Size of image, in bytes. When set to 0 the image size is a minimum - defined by the image type. - ImageTypes: - type: string - enum: - - aws - - aws-ha-rhui - - aws-rhui - - aws-sap-rhui - - azure - - azure-eap7-rhui - - azure-rhui - - azure-sap-rhui - - edge-commit - - edge-container - - edge-installer - - gcp - - gcp-rhui - - guest-image - - image-installer - - iot-bootable-container - - iot-commit - - iot-container - - iot-installer - - iot-raw-image - - iot-simplified-installer - - live-installer - - minimal-raw - - oci - - vsphere - - vsphere-ova - - wsl - Repository: - type: object - description: | - Repository configuration. - At least one of the 'baseurl', 'mirrorlist', 'metalink' properties must - be specified. If more of them are specified, the order of precedence is - the same as listed above. - properties: - rhsm: - type: boolean - default: false - description: 'Determines whether a valid subscription is required to access this repository.' - baseurl: - type: string - format: uri - example: 'https://cdn.redhat.com/content/dist/rhel8/8/x86_64/baseos/os/' - mirrorlist: - type: string - format: uri - example: 'http://mirrorlist.centos.org/?release=8-stream&arch=aarch64&repo=BaseOS' - metalink: - type: string - format: uri - example: 'https://mirrors.fedoraproject.org/metalink?repo=fedora-32&arch=x86_64' - gpgkey: - type: string - example: "-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBGAcScoBEADLf8YHkezJ6adlMYw7aGGIlJalt8Jj2x/B2K+hIfIuxGtpVj7e\nLRgDU76jaT5pVD5mFMJ3pkeneR/cTmqqQkNyQshX2oQXwEzUSb1CNMCfCGgkX8Q2\nzZkrIcCrF0Q2wrKblaudhU+iVanADsm18YEqsb5AU37dtUrM3QYdWg9R+XiPfV8R\nKBjT03vVBOdMSsY39LaCn6Ip1Ovp8IEo/IeEVY1qmCOPAaK0bJH3ufg4Cueks+TS\nwQWTeCLxuZL6OMXoOPKwvMQfxbg1XD8vuZ0Ktj/cNH2xau0xmsAu9HJpekvOPRxl\nyqtjyZfroVieFypwZgvQwtnnM8/gSEu/JVTrY052mEUT7Ccb74kcHFTFfMklnkG/\n0fU4ARa504H3xj0ktbe3vKcPXoPOuKBVsHSv00UGYAyPeuy+87cU/YEhM7k3SVKj\n6eIZgyiMO0wl1YGDRKculwks9A+ulkg1oTb4s3zmZvP07GoTxW42jaK5WS+NhZee\n860XoVhbc1KpS+jfZojsrEtZ8PbUZ+YvF8RprdWArjHbJk2JpRKAxThxsQAsBhG1\n0Lux2WaMB0g2I5PcMdJ/cqjo08ccrjBXuixWri5iu9MXp8qT/fSzNmsdIgn8/qZK\ni8Qulfu77uqhW/wt2btnitgRsqjhxMujYU4Zb4hktF8hKU/XX742qhL5KwARAQAB\ntDFGZWRvcmEgKDM1KSA8ZmVkb3JhLTM1LXByaW1hcnlAZmVkb3JhcHJvamVjdC5v\ncmc+iQJOBBMBCAA4FiEEeH6mrhFH7uVsQLMM20Y5cZhnxY8FAmAcScoCGw8FCwkI\nBwIGFQoJCAsCBBYCAwECHgECF4AACgkQ20Y5cZhnxY+NYA/7BYpglySAZYHhjyKh\n/+f6zPfVvbH20Eq3kI7OFBN0nLX+BU1muvS+qTuS3WLrB3m3GultpKREJKLtm5ED\n1rGzXAoT1yp9YI8LADdMCCOyjAjsoWU87YUuC+/bnjrTeR2LROCfyPC76W985iOV\nm5S+bsQDw7C2LrldAM4MDuoyZ1SitGaZ4KQLVt+TEa14isYSGCjzo7PY8V3JOk50\ngqWg82N/bm2EzS7T83WEDb1lvj4IlvxgIqKeg11zXYxmrYSZJJCfvzf+lNS6uxgH\njx/J0ylZ2LibGr6GAAyO9UWrAZSwSM0EcjT8wECnxkSDuyqmWwVvNBXuEIV8Oe3Y\nMiU1fJN8sd7DpsFx5M+XdnMnQS+HrjTPKD3mWrlAdnEThdYV8jZkpWhDys3/99eO\nhk0rLny0jNwkauf/iU8Oc6XvMkjLRMJg5U9VKyJuWWtzwXnjMN5WRFBqK4sZomMM\nftbTH1+5ybRW/A3vBbaxRW2t7UzNjczekSZEiaLN9L/HcJCIR1QF8682DdAlEF9d\nk2gQiYSQAaaJ0JJAzHvRkRJLLgK2YQYiHNVy2t3JyFfsram5wSCWOfhPeIyLBTZJ\nvrpNlPbefsT957Tf2BNIugzZrC5VxDSKkZgRh1VGvSIQnCyzkQy6EU2qPpiW59G/\nhPIXZrKocK3KLS9/izJQTRltjMA=\n=PfT7\n-----END PGP PUBLIC KEY BLOCK-----\n" - description: 'GPG key used to sign packages in this repository.' - check_gpg: - type: boolean - check_repo_gpg: - type: boolean - default: false - description: | - Enables gpg verification of the repository metadata - ignore_ssl: - type: boolean - module_hotfixes: - type: boolean - default: false - description: | - Disables modularity filtering for this repository. - package_sets: - type: array - example: ["build", "os"] - items: - type: string - description: | - Naming package sets for a repository assigns it to a specific part - (pipeline) of the build process. - CustomRepository: - type: object - required: - - id - properties: - id: - type: string - name: - type: string - filename: - type: string - baseurl: - type: array - items: - type: string - format: uri - example: 'https://cdn.redhat.com/content/dist/rhel8/8/x86_64/baseos/os/' - mirrorlist: - type: string - format: uri - example: 'http://mirrorlist.centos.org/?release=8-stream&arch=aarch64&repo=BaseOS' - metalink: - type: string - format: uri - example: 'https://mirrors.fedoraproject.org/metalink?repo=fedora-32&arch=x86_64' - enabled: - type: boolean - gpgkey: - type: array - items: - type: string - check_gpg: - type: boolean - check_repo_gpg: - type: boolean - ssl_verify: - type: boolean - priority: - type: integer - module_hotfixes: - type: boolean - BlueprintRepository: - type: object - required: - - id - properties: - id: - type: string - baseurls: - type: array - items: - type: string - format: uri - example: 'https://cdn.redhat.com/content/dist/rhel8/8/x86_64/baseos/os/' - gpgkeys: - type: array - items: - type: string - metalink: - type: string - format: uri - example: 'https://mirrors.fedoraproject.org/metalink?repo=fedora-32&arch=x86_64' - mirrorlist: - type: string - format: uri - example: 'http://mirrorlist.centos.org/?release=8-stream&arch=aarch64&repo=BaseOS' - name: - type: string - priority: - type: integer - enabled: - type: boolean - gpgcheck: - type: boolean - repo_gpgcheck: - type: boolean - sslverify: - type: boolean - filename: - type: string - module_hotfixes: - type: boolean - description: | - Disables modularity filtering for this repository. - OpenSCAP: - type: object - required: - - profile_id - properties: - policy_id: - type: string - format: uuid - description: | - Puts a specified policy ID in the RHSM facts, so that any instances registered to - insights will be automatically connected to the compliance policy in the console. - profile_id: - type: string - tailoring: - $ref: '#/components/schemas/OpenSCAPTailoring' - json_tailoring: - $ref: '#/components/schemas/OpenSCAPJSONTailoring' - BlueprintOpenSCAP: - type: object - required: - - profile_id - properties: - policy_id: - type: string - format: uuid - description: | - Puts a specified policy ID in the RHSM facts, so that any instances registered to - insights will be automatically connected to the compliance policy in the console. - profile_id: - type: string - datastream: - type: string - tailoring: - $ref: '#/components/schemas/OpenSCAPTailoring' - json_tailoring: - $ref: '#/components/schemas/OpenSCAPJSONTailoring' - OpenSCAPTailoring: - type: object - properties: - selected: - type: array - items: - type: string - unselected: - type: array - items: - type: string - OpenSCAPJSONTailoring: - type: object - required: - - profile_id - - filepath - properties: - profile_id: - type: string - filepath: - type: string - Installer: - type: object - properties: - unattended: - type: boolean - sudo-nopasswd: - type: array - items: - type: string - ImportKeys: - type: object - properties: - files: - type: array - items: - type: string - RPMCustomization: - type: object - properties: - import_keys: - $ref: '#/components/schemas/ImportKeys' - DNFPluginConfig: - type: object - properties: - enabled: - type: boolean - SubManDNFPluginsConfig: - type: object - properties: - product_id: - $ref: '#/components/schemas/DNFPluginConfig' - subscription_manager: - $ref: '#/components/schemas/DNFPluginConfig' - SubManRHSMConfig: - type: object - properties: - manage_repos: - type: boolean - auto_enable_yum_plugins: - type: boolean - SubManRHSMCertdConfig: - type: object - properties: - auto_registration: - type: boolean - SubManConfig: - type: object - properties: - rhsm: - $ref: '#/components/schemas/SubManRHSMConfig' - rhsmcertd: - $ref: '#/components/schemas/SubManRHSMCertdConfig' - RHSMConfig: - type: object - properties: - dnf_plugins: - $ref: '#/components/schemas/SubManDNFPluginsConfig' - subscription_manager: - $ref: '#/components/schemas/SubManConfig' - RHSMCustomization: - type: object - properties: - config: - $ref: '#/components/schemas/RHSMConfig' - CACertsCustomization: - type: object - additionalProperties: false - required: - - pem_certs - properties: - pem_certs: - type: array - example: ['---BEGIN CERTIFICATE---\nMIIC0DCCAbigAwIBAgIUI...\n---END CERTIFICATE---'] - items: - type: string - UploadTarget: - type: object - required: - - type - - upload_options - properties: - type: - $ref: '#/components/schemas/UploadTypes' - description: | - The name of the upload target that matches the upload_options. - upload_options: - $ref: '#/components/schemas/UploadOptions' - UploadOptions: - anyOf: - - $ref: '#/components/schemas/AWSEC2UploadOptions' - - $ref: '#/components/schemas/AWSS3UploadOptions' - - $ref: '#/components/schemas/GCPUploadOptions' - - $ref: '#/components/schemas/AzureUploadOptions' - - $ref: '#/components/schemas/ContainerUploadOptions' - - $ref: '#/components/schemas/LocalUploadOptions' - - $ref: '#/components/schemas/OCIUploadOptions' - - $ref: '#/components/schemas/PulpOSTreeUploadOptions' - description: | - Options for a given upload destination. - This should really be oneOf but AWSS3UploadOptions is a subset of - AWSEC2UploadOptions. This means that all AWSEC2UploadOptions objects - are also valid AWSS3UploadOptionas objects which violates the oneOf - rules. Therefore, we have to use anyOf here but be aware that it isn't - possible to mix and match more schemas together. - LocalUploadOptions: - type: object - additionalProperties: false - properties: {} - AWSEC2UploadOptions: - type: object - additionalProperties: false - required: - - region - - share_with_accounts - properties: - region: - type: string - example: 'eu-west-1' - snapshot_name: - type: string - example: 'my-snapshot' - share_with_accounts: - type: array - example: ['123456789012'] - items: - type: string - AWSS3UploadOptions: - type: object - additionalProperties: false - required: - - region - properties: - region: - type: string - example: 'eu-west-1' - public: - type: boolean - default: false - description: | - If set to false (the default value), a long, obfuscated URL - is returned. Its expiration might be sooner than for other upload - targets. - - If set to true, a shorter URL is returned and - its expiration is the same as for the other upload targets. - OCIUploadOptions: - type: object - additionalProperties: false - GCPUploadOptions: - type: object - additionalProperties: false - required: - - region - properties: - region: - type: string - example: 'eu' - description: | - The GCP region where the OS image will be imported to and shared from. - The value must be a valid GCP location. See https://cloud.google.com/storage/docs/locations. - If not specified, the multi-region location closest to the source - (source Storage Bucket location) is chosen automatically. - bucket: - type: string - example: 'my-example-bucket' - description: 'Name of an existing STANDARD Storage class Bucket.' -# don't expose the os type for now -# os: -# type: string -# example: 'rhel-8-byol' -# description: 'OS of the disk image being imported needed for installation of GCP guest tools.' - image_name: - type: string - example: 'my-image' - description: | - The name to use for the imported and shared Compute Engine image. - The image name must be unique within the GCP project, which is used - for the OS image upload and import. If not specified a random - 'composer-api-' string is used as the image name. - share_with_accounts: - type: array - example: [ - 'user:alice@example.com', - 'serviceAccount:my-other-app@appspot.gserviceaccount.com', - 'group:admins@example.com', - 'domain:example.com' - ] - description: | - List of valid Google accounts to share the imported Compute Engine image with. - Each string must contain a specifier of the account type. Valid formats are: - - 'user:{emailid}': An email address that represents a specific - Google account. For example, 'alice@example.com'. - - 'serviceAccount:{emailid}': An email address that represents a - service account. For example, 'my-other-app@appspot.gserviceaccount.com'. - - 'group:{emailid}': An email address that represents a Google group. - For example, 'admins@example.com'. - - 'domain:{domain}': The G Suite domain (primary) that represents all - the users of that domain. For example, 'google.com' or 'example.com'. - If not specified, the imported Compute Engine image is not shared with any - account. - items: - type: string - AzureUploadOptions: - type: object - additionalProperties: false - required: - - tenant_id - - subscription_id - - resource_group - properties: - tenant_id: - type: string - example: '5c7ef5b6-1c3f-4da0-a622-0b060239d7d7' - description: | - ID of the tenant where the image should be uploaded. - How to find it in the Azure Portal: - https://docs.microsoft.com/en-us/azure/active-directory/fundamentals/active-directory-how-to-find-tenant - subscription_id: - type: string - example: '4e5d8b2c-ab24-4413-90c5-612306e809e2' - description: | - ID of subscription where the image should be uploaded. - resource_group: - type: string - example: 'ToucanResourceGroup' - description: | - Name of the resource group where the image should be uploaded. - location: - type: string - example: 'westeurope' - description: | - Location of the provided resource_group, where the image should be uploaded and registered. - How to list all locations: - https://docs.microsoft.com/en-us/cli/azure/account?view=azure-cli-latest#az_account_list_locations' - If the location is not specified, it is deducted from the provided resource_group. - image_name: - type: string - example: 'my-image' - description: | - Name of the uploaded image. It must be unique in the given resource group. - If name is omitted from the request, a random one based on a UUID is - generated. - hyper_v_generation: - type: string - enum: - - V1 - - V2 - default: V1 - description: | - Choose the VM Image HyperV generation, different features on Azure are available - depending on the HyperV generation. - ContainerUploadOptions: - type: object - additionalProperties: false - properties: - name: - type: string - example: 'osbuild' - description: | - Name for the created container image - tag: - type: string - example: 'latest' - description: | - Tag for the created container image - PulpOSTreeUploadOptions: - type: object - additionalProperties: false - required: - - basepath - properties: - basepath: - type: string - description: 'Basepath for distributing the repository' - repository: - type: string - description: 'Repository to import the ostree commit to' - server_address: - type: string - format: uri - Blueprint: - type: object - required: - - name - additionalProperties: false - properties: - name: - type: string - description: - type: string - version: - type: string - example: '7.7.70' - description: A semver version number - distro: - type: string - example: 'fedora-39' - description: | - The distribution to use for the compose. If left empty the host - distro will be used. - packages: - type: array - description: Packages to be installed - items: - $ref: '#/components/schemas/Package' - modules: - type: array - description: | - An alias for packages, retained for backwards compatability - items: - $ref: '#/components/schemas/Package' - enabled_modules: - type: array - items: - $ref: '#/components/schemas/Module' - groups: - type: array - description: Package groups to be installed - items: - $ref: '#/components/schemas/PackageGroup' - containers: - type: array - description: Container images to embed into the final artfact - items: - $ref: '#/components/schemas/Container' - customizations: - $ref: '#/components/schemas/BlueprintCustomizations' - BlueprintCustomizations: - type: object - additionalProperties: false - properties: - hostname: - type: string - description: Configures the hostname - kernel: - $ref: '#/components/schemas/Kernel' - sshkey: - type: array - description: List of ssh keys - items: - $ref: '#/components/schemas/SSHKey' - user: - type: array - description: List of users to create - items: - $ref: '#/components/schemas/BlueprintUser' - group: - type: array - description: List of groups to create - items: - $ref: '#/components/schemas/Group' - timezone: - $ref: '#/components/schemas/Timezone' - locale: - $ref: '#/components/schemas/Locale' - firewall: - $ref: '#/components/schemas/BlueprintFirewall' - services: - $ref: '#/components/schemas/Services' - filesystem: - type: array - description: List of filesystem mountpoints to create - items: - $ref: '#/components/schemas/BlueprintFilesystem' - disk: - $ref: '#/components/schemas/Disk' - installation_device: - type: string - description: | - Name of the installation device, currently only useful for the edge-simplified-installer type - example: /dev/sda - partitioning_mode: - type: string - enum: - - raw - - lvm - - auto-lvm - default: auto-lvm - description: | - Select how the disk image will be partitioned. 'auto-lvm' will use raw unless - there are one or more mountpoints in which case it will use LVM. 'lvm' always - uses LVM, even when there are no extra mountpoints. 'raw' uses raw partitions - even when there are one or more mountpoints. - fdo: - $ref: '#/components/schemas/FDO' - openscap: - $ref: '#/components/schemas/BlueprintOpenSCAP' - ignition: - $ref: '#/components/schemas/Ignition' - directories: - type: array - description: Directories to create in the final artifact - items: - $ref: '#/components/schemas/Directory' - files: - type: array - description: Files to create in the final artifact - items: - $ref: '#/components/schemas/BlueprintFile' - repositories: - type: array - description: | - Repositories to write to /etc/yum.repos.d/ in the final image. Note - that these are not used at build time. - items: - $ref: '#/components/schemas/BlueprintRepository' - fips: - type: boolean - description: Enable FIPS mode - installer: - $ref: '#/components/schemas/Installer' - rpm: - $ref: '#/components/schemas/RPMCustomization' - rhsm: - $ref: '#/components/schemas/RHSMCustomization' - cacerts: - $ref: '#/components/schemas/CACertsCustomization' - SSHKey: - type: object - additionalProperties: false - required: - - user - - key - properties: - user: - type: string - description: User to configure the ssh key for - example: admin - key: - type: string - description: Adds the key to the user's authorized_keys file - example: | - ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIASWitkOH4U874EdsBUnytb3bwvRggHlQlbYXl7n10v9 - Package: - type: object - required: - - name - additionalProperties: false - properties: - name: - type: string - example: 'tmux' - description: | - Name of the package to install. File globbing is supported, - eg. 'openssh-*' - version: - type: string - example: '3.3a' - description: | - Optional version of the package to install. If left blank the - latest available version will be used. Wildcards are supported - eg. '4.11.*' - PackageGroup: - type: object - required: - - name - additionalProperties: false - properties: - name: - type: string - example: 'anaconda-tools' - description: Package group name - Module: - type: object - required: - - name - - stream - additionalProperties: false - properties: - name: - type: string - example: 'nodejs' - description: | - Name of the module to enable. - stream: - type: string - example: '22' - description: | - Stream to enable. - Customizations: - type: object - additionalProperties: false - properties: - containers: - type: array - items: - $ref: '#/components/schemas/Container' - description: Container images to embed into the final artfact - directories: - type: array - items: - $ref: '#/components/schemas/Directory' - description: Directories to create in the final artifact - files: - type: array - items: - $ref: '#/components/schemas/File' - description: Files to create in the final artifact - subscription: - $ref: '#/components/schemas/Subscription' - packages: - type: array - example: ['postgres'] - items: - type: string - enabled_modules: - type: array - items: - $ref: '#/components/schemas/Module' - users: - type: array - items: - $ref: '#/components/schemas/User' - payload_repositories: - type: array - items: - $ref: '#/components/schemas/Repository' - description: | - Extra repositories for packages specified in customizations. These - repositories will only be used to depsolve and retrieve packages - for the OS itself (they will not be available for the build root or - any other part of the build process). The package_sets field for these - repositories is ignored. - custom_repositories: - type: array - items: - $ref: '#/components/schemas/CustomRepository' - description: | - Extra repositories for packages specified in customizations. These - repositories will be used to depsolve and retrieve packages. Additionally, - these packages will be saved and imported to the `/etc/yum.repos.d/` directory - on the image - openscap: - $ref: '#/components/schemas/OpenSCAP' - filesystem: - type: array - items: - $ref: '#/components/schemas/Filesystem' - services: - $ref: '#/components/schemas/Services' - hostname: - type: string - description: Configures the hostname - example: myhostname - kernel: - $ref: '#/components/schemas/Kernel' - groups: - type: array - description: List of groups to create - items: - $ref: '#/components/schemas/Group' - timezone: - $ref: '#/components/schemas/Timezone' - locale: - $ref: '#/components/schemas/Locale' - firewall: - $ref: '#/components/schemas/FirewallCustomization' - installation_device: - type: string - description: | - Name of the installation device, currently only useful for the edge-simplified-installer type - example: /dev/sda - fdo: - $ref: '#/components/schemas/FDO' - ignition: - $ref: '#/components/schemas/Ignition' - partitioning_mode: - type: string - enum: - - raw - - lvm - - auto-lvm - default: auto-lvm - description: | - Select how the disk image will be partitioned. 'auto-lvm' will use raw unless - there are one or more mountpoints in which case it will use LVM. 'lvm' always - uses LVM, even when there are no extra mountpoints. 'raw' uses raw partitions - even when there are one or more mountpoints. - fips: - $ref: '#/components/schemas/FIPS' - installer: - $ref: '#/components/schemas/Installer' - rpm: - $ref: '#/components/schemas/RPMCustomization' - rhsm: - $ref: '#/components/schemas/RHSMCustomization' - cacerts: - $ref: '#/components/schemas/CACertsCustomization' - disk: - $ref: '#/components/schemas/Disk' - Container: - type: object - required: - - source - properties: - source: - type: string - description: Reference to the container to embed - example: 'registry.example.com/image:tag' - name: - type: string - description: Name to use for the container from the image - tls_verify: - type: boolean - description: Control TLS verifification - example: true - FirewallCustomization: - type: object - description: Firewalld configuration - additionalProperties: false - properties: - ports: - type: array - description: List of ports (or port ranges) and protocols to open - example: ["22:tcp", "80:tcp", "imap:tcp"] - items: - type: string - services: - $ref: '#/components/schemas/FirewallServices' - BlueprintFirewall: - type: object - description: Firewalld configuration - additionalProperties: false - properties: - ports: - type: array - description: List of ports (or port ranges) and protocols to open - example: ["22:tcp", "80:tcp", "imap:tcp"] - items: - type: string - services: - $ref: '#/components/schemas/FirewallServices' - zones: - type: array - items: - $ref: '#/components/schemas/FirewallZones' - FirewallServices: - type: object - description: Firewalld services to enable or disable - additionalProperties: false - properties: - enabled: - type: array - description: List of services to enable - example: ["ftp", "ntp"] - items: - type: string - disabled: - type: array - description: List of services to disable - example: ["telnet"] - items: - type: string - FirewallZones: - type: object - description: | - Bind a list of network sources to a zone to restrict traffic from - those sources based on the settings of the zone. - additionalProperties: false - properties: - name: - type: string - description: | - name of the zone, if left empty the sources will apply to - the default zone. - sources: - type: array - description: List of sources for the zone - items: - type: string - description: [/]||ipset: - Directory: - type: object - description: | - A custom directory to create in the final artifact. - required: - - path - properties: - path: - type: string - description: Path to the directory - example: '/etc/mydir' - mode: - type: string - description: Permissions string for the directory in octal format - example: "0755" - user: - oneOf: - - type: string - - type: integer - x-go-type: int64 - description: Owner of the directory as a user name or a uid - example: 'root' - group: - oneOf: - - type: string - - type: integer - x-go-type: int64 - description: Group of the directory as a group name or a gid - example: 'root' - ensure_parents: - type: boolean - description: Ensure that the parent directories exist - default: false - File: - type: object - description: | - A custom file to create in the final artifact. - required: - - path - properties: - path: - type: string - description: Path to the file - example: '/etc/myfile' - mode: - type: string - description: Permissions string for the file in octal format - example: "0644" - user: - oneOf: - - type: string - - type: integer - x-go-type: int64 - description: Owner of the file as a uid or a user name - example: 'root' - group: - oneOf: - - type: string - - type: integer - x-go-type: int64 - description: Group of the file as a gid or a group name - example: 'root' - data: - type: string - description: Contents of the file as plain text - ensure_parents: - type: boolean - description: Ensure that the parent directories exist - example: true - default: false - BlueprintFile: - type: object - description: | - A custom file to create in the final artifact. - required: - - path - properties: - path: - type: string - description: Path to the file - example: '/etc/myfile' - mode: - type: string - description: Permissions string for the file in octal format - example: "0644" - user: - oneOf: - - type: string - - type: integer - x-go-type: int64 - description: Owner of the file as a uid or a user name - example: 'root' - group: - oneOf: - - type: string - - type: integer - x-go-type: int64 - description: Group of the file as a gid or a group name - example: 'root' - data: - type: string - description: Contents of the file as plain text - Filesystem: - type: object - required: - - mountpoint - - min_size - properties: - mountpoint: - type: string - example: '/var' - min_size: - x-go-type: uint64 - example: 2147483648 - description: 'size of the filesystem in bytes' - BlueprintFilesystem: - type: object - required: - - mountpoint - - minsize - properties: - mountpoint: - type: string - example: '/var' - minsize: - $ref: '#/components/schemas/minsize' - OSTree: - type: object - properties: - url: - type: string - contenturl: - type: string - description: | - A URL which, if set, is used for fetching content. Implies that `url` is set as well, - which will be used for metadata only. - ref: - type: string - example: 'rhel/8/x86_64/edge' - parent: - type: string - description: > - Can be either a commit (example: - 02604b2da6e954bd34b8b82a835e5a77d2b60ffa), or a branch-like - reference (example: rhel/8/x86_64/edge) - example: 'rhel/8/x86_64/edge' - rhsm: - type: boolean - default: false - description: | - Determines whether a valid subscription manager (candlepin) identity is required to - access this repository. Consumer certificates will be used as client certificates when - fetching metadata and content. - Subscription: - type: object - required: - - organization - - activation_key - - server_url - - base_url - - insights - properties: - organization: - type: string - example: '2040324' - activation_key: - type: string - format: password - example: 'my-secret-key' - server_url: - type: string - format: uri - example: 'subscription.rhsm.redhat.com' - base_url: - type: string - format: uri - example: 'http://cdn.redhat.com/' - insights: - type: boolean - example: true - rhc: - type: boolean - default: false - example: true - description: | - Optional flag to use rhc to register the system, which also always enables Insights. - insights_client_proxy: - type: string - format: uri - description: | - Optional value to set proxy option when registering the system to Insights - template_uuid: - type: string - description: | - Optional value to register with a template when registering the system with Insights. - template_name: - type: string - description: | - Optional value to register with a template when using rhc to register the system with Insights. - User: - type: object - additionalProperties: false - required: - - name - properties: - name: - type: string - example: "user1" - groups: - type: array - items: - type: string - example: "group1" - key: - type: string - example: "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAINrGKErMYi+MMUwuHaRAJmRLoIzRf2qD2dD5z0BTx/6x" - password: - type: string - format: password - description: | - If the password starts with $6$, $5$, or $2b$ it will be stored as - an encrypted password. Otherwise it will be treated as a plain text - password. - BlueprintUser: - type: object - additionalProperties: false - required: - - name - properties: - name: - type: string - example: "user1" - description: - type: string - password: - type: string - description: | - If the password starts with $6$, $5$, or $2b$ it will be stored as - an encrypted password. Otherwise it will be treated as a plain text - password. - key: - type: string - description: ssh public key - example: "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAINrGKErMYi+MMUwuHaRAJmRLoIzRf2qD2dD5z0BTx/6x" - home: - type: string - description: The user's home directory - shell: - type: string - description: Login shell to use - groups: - type: array - items: - type: string - example: "group1" - description: A list of additional groups to add the user to - uid: - type: integer - description: User id to use instead of the default - gid: - type: integer - description: Group id to use instead of the default - Kernel: - type: object - additionalProperties: false - properties: - name: - type: string - description: Name of the kernel to use - example: kernel-debug - append: - type: string - description: Appends arguments to the bootloader kernel command line - example: nosmt=force - Services: - type: object - additionalProperties: false - properties: - enabled: - description: List of services to enable by default - type: array - minItems: 1 - items: - type: string - example: "nftables" - disabled: - description: List of services to disable by default - type: array - minItems: 1 - items: - type: string - example: "firewalld" - masked: - description: List of services to mask by default - type: array - minItems: 1 - items: - type: string - example: "telnetd" - Timezone: - type: object - description: Timezone configuration - additionalProperties: false - properties: - timezone: - type: string - description: Name of the timezone, defaults to UTC - example: US/Eastern - ntpservers: - type: array - description: List of ntp servers - example: ["0.north-america.pool.ntp.org", "1.north-america.pool.ntp.org"] - items: - type: string - Locale: - type: object - description: Locale configuration - additionalProperties: false - properties: - languages: - type: array - description: | - List of locales to be installed, the first one becomes primary, subsequent ones are secondary - example: ["en_US.UTF-8"] - items: - type: string - keyboard: - type: string - description: Sets the keyboard layout - example: us - FDO: - type: object - additionalProperties: false - description: FIDO device onboard configuration - properties: - manufacturing_server_url: - type: string - diun_pub_key_insecure: - type: string - diun_pub_key_hash: - type: string - diun_pub_key_root_certs: - type: string - di_mfg_string_type_mac_iface: - type: string - FIPS: - type: object - additionalProperties: false - description: System FIPS mode setup - properties: - enabled: - type: boolean - description: Enables the system FIPS mode - default: false - Ignition: - type: object - additionalProperties: false - description: Ignition configuration - properties: - embedded: - $ref: '#/components/schemas/IgnitionEmbedded' - firstboot: - $ref: '#/components/schemas/IgnitionFirstboot' - IgnitionEmbedded: - type: object - additionalProperties: false - required: - - config - properties: - config: - type: string - IgnitionFirstboot: - type: object - additionalProperties: false - required: - - url - properties: - url: - type: string - description: Provisioning URL - Group: - type: object - additionalProperties: false - required: - - name - properties: - name: - type: string - description: Name of the group to create - gid: - type: integer - description: Group id of the group to create (optional) - Koji: - type: object - additionalProperties: false - required: - - server - - task_id - - name - - version - - release - properties: - server: - type: string - format: uri - example: 'https://koji.fedoraproject.org/kojihub' - task_id: - type: integer - example: 42 - name: - type: string - example: Fedora-Cloud-Base - version: - type: string - example: '31' - release: - type: string - example: '20200907.0' - ComposeId: - allOf: - - $ref: '#/components/schemas/ObjectReference' - - type: object - required: - - id - properties: - id: - type: string - format: uuid - example: '123e4567-e89b-12d3-a456-426655440000' - - CloneComposeBody: - oneOf: - - $ref: '#/components/schemas/AWSEC2CloneCompose' - - AWSEC2CloneCompose: - type: object - additionalProperties: false - required: - - region - properties: - region: - type: string - share_with_accounts: - type: array - example: ['123456789012'] - items: - type: string - - CloneComposeResponse: - allOf: - - $ref: '#/components/schemas/ObjectReference' - - type: object - required: - - id - properties: - id: - type: string - format: uuid - example: '123e4567-e89b-12d3-a456-426655440000' - - CloneStatus: - allOf: - - $ref: '#/components/schemas/ObjectReference' - - $ref: '#/components/schemas/UploadStatus' - - DepsolveRequest: - additionalProperties: false - required: - - blueprint - - distribution - - architecture - properties: - repositories: - type: array - items: - $ref: '#/components/schemas/Repository' - distribution: - type: string - example: 'rhel-8' - architecture: - type: string - example: 'x86_64' - blueprint: - $ref: '#/components/schemas/Blueprint' - - DepsolveResponse: - type: object - required: - - packages - properties: - packages: - type: array - items: - $ref: '#/components/schemas/PackageMetadataCommon' - description: 'Package list including NEVRA' - - SearchPackagesRequest: - additionalProperties: false - required: - - packages - - distribution - - architecture - properties: - repositories: - type: array - items: - $ref: '#/components/schemas/Repository' - distribution: - type: string - example: 'rhel-8' - architecture: - type: string - example: 'x86_64' - packages: - type: array - description: | - Array of package names to search for. Supports * wildcards for - names, but not for versions. - items: - type: string - - SearchPackagesResponse: - type: object - required: - - packages - properties: - packages: - type: array - items: - $ref: '#/components/schemas/PackageDetails' - description: 'Detailed package information from DNF' - - PackageDetails: - type: object - required: - - name - - version - - release - - arch - properties: - name: - type: string - summary: - type: string - description: - type: string - url: - type: string - version: - type: string - release: - type: string - epoch: - type: string - arch: - type: string - buildtime: - type: string - license: - type: string - - Disk: - type: object - required: - - partitions - properties: - type: - type: string - enum: - - gpt - - dos - description: | - Type of the partition table - minsize: - $ref: '#/components/schemas/minsize' - partitions: - type: array - items: - $ref: '#/components/schemas/Partition' - Partition: - type: object - oneOf: - - $ref: '#/components/schemas/FilesystemTyped' - - $ref: '#/components/schemas/BtrfsVolume' - - $ref: '#/components/schemas/VolumeGroup' - FilesystemTyped: - type: object - required: - - mountpoint - properties: - type: - type: string - default: plain - enum: - - plain - part_type: - type: string - description: | - The partition type GUID for GPT partitions. For DOS partitions, this field can be used to set the (2 hex digit) partition type. If not set, the type will be automatically set based on the mountpoint or the payload type. - minsize: - $ref: '#/components/schemas/minsize' - mountpoint: - type: string - label: - type: string - fs_type: - type: string - enum: - - ext4 - - xfs - - vfat - description: | - The filesystem type - BtrfsVolume: - type: object - required: - - subvolumes - properties: - type: - type: string - enum: - - btrfs - part_type: - type: string - description: | - The partition type GUID for GPT partitions. For DOS partitions, this field can be used to set the (2 hex digit) partition type. If not set, the type will be automatically set based on the mountpoint or the payload type. - minsize: - $ref: '#/components/schemas/minsize' - subvolumes: - type: array - items: - $ref: '#/components/schemas/BtrfsSubvolume' - BtrfsSubvolume: - type: object - required: - - name - - mountpoint - properties: - name: - type: string - description: | - The name of the subvolume, which defines the location (path) on the root volume - mountpoint: - type: string - description: | - Mountpoint for the subvolume - VolumeGroup: - type: object - required: - - logical_volumes - properties: - type: - type: string - enum: - - lvm - part_type: - type: string - description: | - The partition type GUID for GPT partitions. For DOS partitions, this field can be used to set the (2 hex digit) partition type. If not set, the type will be automatically set based on the mountpoint or the payload type. - name: - type: string - description: | - Volume group name (will be automatically generated if omitted) - minsize: - $ref: '#/components/schemas/minsize' - logical_volumes: - type: array - items: - $ref: '#/components/schemas/LogicalVolume' - LogicalVolume: - type: object - required: - - mountpoint - properties: - name: - type: string - minsize: - $ref: '#/components/schemas/minsize' - mountpoint: - type: string - description: | - Mountpoint for the logical volume - label: - type: string - fs_type: - type: string - enum: - - ext4 - - xfs - - vfat - description: | - The filesystem type for the logical volume - minsize: - type: string - example: "2 GiB" - description: 'size with data units' - - parameters: - page: - name: page - in: query - description: Page index - required: false - schema: - type: string - examples: - page: - value: "1" - size: - name: size - in: query - description: Number of items in each page - required: false - schema: - type: string - examples: - size: - value: "100" - - securitySchemes: - Bearer: - scheme: bearer - bearerFormat: JWT - type: http diff --git a/api/schema/contentSources.json b/api/schema/contentSources.json deleted file mode 100644 index 13641c5b..00000000 --- a/api/schema/contentSources.json +++ /dev/null @@ -1,6657 +0,0 @@ -{ - "components": { - "schemas": { - "api.AddUploadsRequest": { - "properties": { - "artifacts": { - "description": "List of created artifacts", - "items": { - "$ref": "#/components/schemas/api.Artifact" - }, - "type": "array" - }, - "uploads": { - "description": "List of unfinished uploads", - "items": { - "$ref": "#/components/schemas/api.Upload" - }, - "type": "array" - } - }, - "type": "object" - }, - "api.Artifact": { - "properties": { - "href": { - "description": "HREF to the completed artifact", - "type": "string" - }, - "sha256": { - "description": "SHA256 sum of the completed artifact", - "type": "string" - } - }, - "type": "object" - }, - "api.ContentUnitSearchRequest": { - "properties": { - "exact_names": { - "description": "List of names to search using an exact match", - "items": { - "type": "string" - }, - "type": "array" - }, - "include_package_sources": { - "description": "Whether to include module information", - "type": "boolean" - }, - "limit": { - "description": "Maximum number of records to return for the search", - "type": "integer" - }, - "search": { - "description": "Search string to search content unit names", - "type": "string" - }, - "urls": { - "description": "URLs of repositories to search", - "items": { - "type": "string" - }, - "type": "array" - }, - "uuids": { - "description": "List of repository UUIDs to search", - "items": { - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - }, - "api.CreateUploadRequest": { - "properties": { - "chunk_size": { - "description": "Size of the chunk", - "type": "integer" - }, - "sha256": { - "description": "SHA-256 checksum of the file", - "type": "string" - }, - "size": { - "description": "Size of the upload in bytes", - "type": "integer" - } - }, - "required": [ - "chunk_size", - "sha256", - "size" - ], - "type": "object" - }, - "api.DetectRpmsRequest": { - "properties": { - "limit": { - "description": "Maximum number of records to return for the search", - "type": "integer" - }, - "rpm_names": { - "description": "List of rpm names to search", - "items": { - "type": "string" - }, - "type": "array" - }, - "urls": { - "description": "URLs of repositories to search", - "items": { - "type": "string" - }, - "type": "array" - }, - "uuids": { - "description": "List of repository UUIDs to search", - "items": { - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - }, - "api.DetectRpmsResponse": { - "properties": { - "found": { - "description": "List of rpm names found in given repositories", - "items": { - "type": "string" - }, - "type": "array" - }, - "missing": { - "description": "List of rpm names not found in given repositories", - "items": { - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - }, - "api.Feature": { - "properties": { - "accessible": { - "description": "Whether the current user can access the feature", - "type": "boolean" - }, - "enabled": { - "description": "Whether the feature is enabled on the running server", - "type": "boolean" - } - }, - "type": "object" - }, - "api.FeatureSet": { - "additionalProperties": { - "$ref": "#/components/schemas/api.Feature" - }, - "type": "object" - }, - "api.FetchGPGKeyRequest": { - "properties": { - "url": { - "description": "The url from which to download the GPG Key.", - "type": "string" - } - }, - "required": [ - "url" - ], - "type": "object" - }, - "api.FetchGPGKeyResponse": { - "properties": { - "gpg_key": { - "description": "The downloaded GPG Keys from the provided url.", - "type": "string" - } - }, - "type": "object" - }, - "api.GenericAttributeValidationResponse": { - "properties": { - "error": { - "description": "Error message if the attribute is not valid", - "type": "string" - }, - "skipped": { - "description": "Skipped if the attribute is not passed in for validation", - "type": "boolean" - }, - "valid": { - "description": "Valid if not skipped and the provided attribute is valid", - "type": "boolean" - } - }, - "type": "object" - }, - "api.Links": { - "properties": { - "first": { - "description": "Path to first page of results", - "type": "string" - }, - "last": { - "description": "Path to last page of results", - "type": "string" - }, - "next": { - "description": "Path to next page of results", - "type": "string" - }, - "prev": { - "description": "Path to previous page of results", - "type": "string" - } - }, - "type": "object" - }, - "api.ListSnapshotByDateRequest": { - "properties": { - "date": { - "description": "Exact date to search by.", - "type": "string" - }, - "repository_uuids": { - "description": "Repository UUIDs to find snapshots for", - "items": { - "type": "string" - }, - "type": "array" - } - }, - "required": [ - "date", - "repository_uuids" - ], - "type": "object" - }, - "api.ListSnapshotByDateResponse": { - "properties": { - "data": { - "description": "Requested Data", - "items": { - "$ref": "#/components/schemas/api.SnapshotForDate" - }, - "type": "array" - } - }, - "type": "object" - }, - "api.PackageSourcesResponse": { - "properties": { - "arch": { - "description": "Architecture of the module", - "type": "string" - }, - "context": { - "description": "Context of the module", - "type": "string" - }, - "description": { - "description": "Description of the module", - "type": "string" - }, - "end_date": { - "description": "End date of the lifecycle", - "type": "string" - }, - "name": { - "description": "Name of the module", - "type": "string" - }, - "start_date": { - "description": "Start date of the lifecycle", - "type": "string" - }, - "stream": { - "description": "Stream of the module", - "type": "string" - }, - "type": { - "description": "Type of rpm (can be either 'package' or 'module')", - "type": "string" - }, - "version": { - "description": "Version of the module", - "type": "string" - } - }, - "type": "object" - }, - "api.PopularRepositoriesCollectionResponse": { - "properties": { - "data": { - "items": { - "$ref": "#/components/schemas/api.PopularRepositoryResponse" - }, - "type": "array" - }, - "links": { - "$ref": "#/components/schemas/api.Links" - }, - "meta": { - "$ref": "#/components/schemas/api.ResponseMetadata" - } - }, - "type": "object" - }, - "api.PopularRepositoryResponse": { - "properties": { - "distribution_arch": { - "description": "Architecture to restrict client usage to", - "example": "x86_64", - "type": "string" - }, - "distribution_versions": { - "description": "Versions to restrict client usage to", - "example": [ - "7", - "8" - ], - "items": { - "type": "string" - }, - "type": "array" - }, - "existing_name": { - "description": "Existing reference name for repository", - "type": "string" - }, - "gpg_key": { - "description": "GPG key for repository", - "type": "string" - }, - "metadata_verification": { - "description": "Verify packages", - "type": "boolean" - }, - "suggested_name": { - "description": "Suggested name of the popular repository", - "type": "string" - }, - "url": { - "description": "URL of the remote yum repository", - "type": "string" - }, - "uuid": { - "description": "UUID of the repository if it exists for the user", - "type": "string" - } - }, - "type": "object" - }, - "api.PublicRepositoryCollectionResponse": { - "properties": { - "data": { - "items": { - "$ref": "#/components/schemas/api.PublicRepositoryResponse" - }, - "type": "array" - }, - "links": { - "$ref": "#/components/schemas/api.Links" - }, - "meta": { - "$ref": "#/components/schemas/api.ResponseMetadata" - } - }, - "type": "object" - }, - "api.PublicRepositoryResponse": { - "properties": { - "last_introspection_error": { - "description": "Error of last attempted introspection", - "type": "string" - }, - "last_introspection_status": { - "description": "Status of last introspection", - "type": "string" - }, - "last_introspection_time": { - "description": "Timestamp of last attempted introspection", - "type": "string" - }, - "last_success_introspection_time": { - "description": "Timestamp of last successful introspection", - "type": "string" - }, - "last_update_introspection_time": { - "description": "Timestamp of last introspection that had updates", - "type": "string" - }, - "package_count": { - "description": "Number of packages last read in the repository", - "type": "integer" - }, - "status": { - "description": "Combined introspection and snapshot status of the repository", - "type": "string" - }, - "url": { - "description": "URL of the remote yum repository", - "type": "string" - } - }, - "type": "object" - }, - "api.RepositoryCollectionResponse": { - "properties": { - "data": { - "description": "Requested Data", - "items": { - "$ref": "#/components/schemas/api.RepositoryResponse" - }, - "type": "array" - }, - "links": { - "$ref": "#/components/schemas/api.Links" - }, - "meta": { - "$ref": "#/components/schemas/api.ResponseMetadata" - } - }, - "type": "object" - }, - "api.RepositoryEnvironment": { - "properties": { - "description": { - "description": "The environment description", - "type": "string" - }, - "id": { - "description": "The environment ID", - "type": "string" - }, - "name": { - "description": "The environment name", - "type": "string" - }, - "uuid": { - "description": "Identifier of the environment", - "type": "string" - } - }, - "type": "object" - }, - "api.RepositoryEnvironmentCollectionResponse": { - "properties": { - "data": { - "description": "List of environments", - "items": { - "$ref": "#/components/schemas/api.RepositoryEnvironment" - }, - "type": "array" - }, - "links": { - "$ref": "#/components/schemas/api.Links" - }, - "meta": { - "$ref": "#/components/schemas/api.ResponseMetadata" - } - }, - "type": "object" - }, - "api.RepositoryExportRequest": { - "properties": { - "repository_uuids": { - "description": "List of repository uuids to export", - "items": { - "type": "string" - }, - "type": "array" - } - }, - "required": [ - "repository_uuids" - ], - "type": "object" - }, - "api.RepositoryExportResponse": { - "properties": { - "distribution_arch": { - "description": "Architecture to restrict client usage to", - "example": "x86_64", - "type": "string" - }, - "distribution_versions": { - "description": "Versions to restrict client usage to", - "example": [ - "8" - ], - "items": { - "type": "string" - }, - "type": "array" - }, - "gpg_key": { - "description": "GPG key for repository", - "type": "string" - }, - "metadata_verification": { - "description": "Verify packages", - "type": "boolean" - }, - "module_hotfixes": { - "description": "Disable modularity filtering on this repository", - "type": "boolean" - }, - "name": { - "description": "Name of the remote yum repository", - "type": "string" - }, - "origin": { - "description": "Origin of the repository", - "type": "string" - }, - "snapshot": { - "description": "Enable snapshotting and hosting of this repository", - "type": "boolean" - }, - "url": { - "description": "URL of the remote yum repository", - "type": "string" - } - }, - "type": "object" - }, - "api.RepositoryImportResponse": { - "properties": { - "account_id": { - "description": "Account ID of the owner", - "readOnly": true, - "type": "string" - }, - "content_type": { - "description": "Content Type (rpm) of the repository", - "type": "string" - }, - "distribution_arch": { - "description": "Architecture to restrict client usage to", - "example": "x86_64", - "type": "string" - }, - "distribution_versions": { - "description": "Versions to restrict client usage to", - "example": [ - "7", - "8" - ], - "items": { - "type": "string" - }, - "type": "array" - }, - "failed_introspections_count": { - "description": "Number of consecutive failed introspections", - "type": "integer" - }, - "failed_snapshot_count": { - "description": "Number of consecutive failed snapshots", - "type": "integer" - }, - "feature_name": { - "description": "The feature name this repo requires", - "type": "string" - }, - "gpg_key": { - "description": "GPG key for repository", - "type": "string" - }, - "label": { - "description": "Label used to configure the yum repository on clients", - "type": "string" - }, - "last_introspection_error": { - "description": "Error of last attempted introspection", - "type": "string" - }, - "last_introspection_status": { - "description": "Status of last introspection", - "type": "string" - }, - "last_introspection_time": { - "description": "Timestamp of last attempted introspection", - "type": "string" - }, - "last_snapshot": { - "$ref": "#/components/schemas/api.SnapshotResponse" - }, - "last_snapshot_task": { - "$ref": "#/components/schemas/api.TaskInfoResponse" - }, - "last_snapshot_task_uuid": { - "description": "UUID of the last snapshot task", - "type": "string" - }, - "last_snapshot_uuid": { - "description": "UUID of the last dao.Snapshot", - "type": "string" - }, - "last_success_introspection_time": { - "description": "Timestamp of last successful introspection", - "type": "string" - }, - "last_update_introspection_time": { - "description": "Timestamp of last introspection that had updates", - "type": "string" - }, - "latest_snapshot_url": { - "description": "Latest URL for the snapshot distribution", - "type": "string" - }, - "metadata_verification": { - "description": "Verify packages", - "type": "boolean" - }, - "module_hotfixes": { - "description": "Disable modularity filtering on this repository", - "type": "boolean" - }, - "name": { - "description": "Name of the remote yum repository", - "type": "string" - }, - "org_id": { - "description": "Organization ID of the owner", - "readOnly": true, - "type": "string" - }, - "origin": { - "description": "Origin of the repository", - "type": "string" - }, - "package_count": { - "description": "Number of packages last read in the repository", - "type": "integer" - }, - "snapshot": { - "description": "Enable snapshotting and hosting of this repository", - "type": "boolean" - }, - "status": { - "description": "Combined status of last introspection and snapshot of repository (Valid, Invalid, Unavailable, Pending)", - "type": "string" - }, - "url": { - "description": "URL of the remote yum repository", - "type": "string" - }, - "uuid": { - "description": "UUID of the object", - "readOnly": true, - "type": "string" - }, - "warnings": { - "description": "Warnings to alert user of mismatched fields if there is an existing repo with the same URL", - "items": { - "additionalProperties": true, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "api.RepositoryIntrospectRequest": { - "properties": { - "reset_count": { - "description": "Reset the failed introspections count", - "type": "boolean" - } - }, - "type": "object" - }, - "api.RepositoryPackageGroup": { - "properties": { - "description": { - "description": "The package group description", - "type": "string" - }, - "id": { - "description": "The package group ID", - "type": "string" - }, - "name": { - "description": "The package group name", - "type": "string" - }, - "packagelist": { - "description": "The list of packages in the package group", - "items": { - "type": "string" - }, - "type": "array" - }, - "uuid": { - "description": "Identifier of the package group", - "type": "string" - } - }, - "type": "object" - }, - "api.RepositoryPackageGroupCollectionResponse": { - "properties": { - "data": { - "description": "List of package groups", - "items": { - "$ref": "#/components/schemas/api.RepositoryPackageGroup" - }, - "type": "array" - }, - "links": { - "$ref": "#/components/schemas/api.Links" - }, - "meta": { - "$ref": "#/components/schemas/api.ResponseMetadata" - } - }, - "type": "object" - }, - "api.RepositoryParameterResponse": { - "properties": { - "distribution_arches": { - "description": "Architectures available for repository creation", - "items": { - "$ref": "#/components/schemas/config.DistributionArch" - }, - "type": "array" - }, - "distribution_versions": { - "description": "Versions available for repository creation", - "items": { - "$ref": "#/components/schemas/config.DistributionVersion" - }, - "type": "array" - } - }, - "type": "object" - }, - "api.RepositoryRequest": { - "properties": { - "distribution_arch": { - "description": "Architecture to restrict client usage to", - "example": "x86_64", - "type": "string" - }, - "distribution_versions": { - "description": "Versions to restrict client usage to", - "example": [ - "7", - "8" - ], - "items": { - "type": "string" - }, - "type": "array" - }, - "gpg_key": { - "description": "GPG key for repository", - "type": "string" - }, - "metadata_verification": { - "description": "Verify packages", - "type": "boolean" - }, - "module_hotfixes": { - "description": "Disable modularity filtering on this repository", - "type": "boolean" - }, - "name": { - "description": "Name of the remote yum repository", - "type": "string" - }, - "origin": { - "description": "Origin of the repository", - "readOnly": true, - "type": "string" - }, - "snapshot": { - "description": "Enable snapshotting and hosting of this repository", - "type": "boolean" - }, - "url": { - "description": "URL of the remote yum repository", - "type": "string" - } - }, - "required": [ - "name" - ], - "type": "object" - }, - "api.RepositoryResponse": { - "properties": { - "account_id": { - "description": "Account ID of the owner", - "readOnly": true, - "type": "string" - }, - "content_type": { - "description": "Content Type (rpm) of the repository", - "type": "string" - }, - "distribution_arch": { - "description": "Architecture to restrict client usage to", - "example": "x86_64", - "type": "string" - }, - "distribution_versions": { - "description": "Versions to restrict client usage to", - "example": [ - "7", - "8" - ], - "items": { - "type": "string" - }, - "type": "array" - }, - "failed_introspections_count": { - "description": "Number of consecutive failed introspections", - "type": "integer" - }, - "failed_snapshot_count": { - "description": "Number of consecutive failed snapshots", - "type": "integer" - }, - "feature_name": { - "description": "The feature name this repo requires", - "type": "string" - }, - "gpg_key": { - "description": "GPG key for repository", - "type": "string" - }, - "label": { - "description": "Label used to configure the yum repository on clients", - "type": "string" - }, - "last_introspection_error": { - "description": "Error of last attempted introspection", - "type": "string" - }, - "last_introspection_status": { - "description": "Status of last introspection", - "type": "string" - }, - "last_introspection_time": { - "description": "Timestamp of last attempted introspection", - "type": "string" - }, - "last_snapshot": { - "$ref": "#/components/schemas/api.SnapshotResponse" - }, - "last_snapshot_task": { - "$ref": "#/components/schemas/api.TaskInfoResponse" - }, - "last_snapshot_task_uuid": { - "description": "UUID of the last snapshot task", - "type": "string" - }, - "last_snapshot_uuid": { - "description": "UUID of the last dao.Snapshot", - "type": "string" - }, - "last_success_introspection_time": { - "description": "Timestamp of last successful introspection", - "type": "string" - }, - "last_update_introspection_time": { - "description": "Timestamp of last introspection that had updates", - "type": "string" - }, - "latest_snapshot_url": { - "description": "Latest URL for the snapshot distribution", - "type": "string" - }, - "metadata_verification": { - "description": "Verify packages", - "type": "boolean" - }, - "module_hotfixes": { - "description": "Disable modularity filtering on this repository", - "type": "boolean" - }, - "name": { - "description": "Name of the remote yum repository", - "type": "string" - }, - "org_id": { - "description": "Organization ID of the owner", - "readOnly": true, - "type": "string" - }, - "origin": { - "description": "Origin of the repository", - "type": "string" - }, - "package_count": { - "description": "Number of packages last read in the repository", - "type": "integer" - }, - "snapshot": { - "description": "Enable snapshotting and hosting of this repository", - "type": "boolean" - }, - "status": { - "description": "Combined status of last introspection and snapshot of repository (Valid, Invalid, Unavailable, Pending)", - "type": "string" - }, - "url": { - "description": "URL of the remote yum repository", - "type": "string" - }, - "uuid": { - "description": "UUID of the object", - "readOnly": true, - "type": "string" - } - }, - "type": "object" - }, - "api.RepositoryRpm": { - "properties": { - "arch": { - "description": "The architecture of the rpm", - "type": "string" - }, - "checksum": { - "description": "The checksum of the rpm", - "type": "string" - }, - "epoch": { - "description": "The epoch of the rpm", - "type": "integer" - }, - "name": { - "description": "The rpm package name", - "type": "string" - }, - "release": { - "description": "The release of the rpm", - "type": "string" - }, - "summary": { - "description": "The summary of the rpm", - "type": "string" - }, - "uuid": { - "description": "Identifier of the rpm", - "type": "string" - }, - "version": { - "description": "The version of the rpm", - "type": "string" - } - }, - "type": "object" - }, - "api.RepositoryRpmCollectionResponse": { - "properties": { - "data": { - "description": "List of rpms", - "items": { - "$ref": "#/components/schemas/api.RepositoryRpm" - }, - "type": "array" - }, - "links": { - "$ref": "#/components/schemas/api.Links" - }, - "meta": { - "$ref": "#/components/schemas/api.ResponseMetadata" - } - }, - "type": "object" - }, - "api.RepositoryUpdateRequest": { - "properties": { - "distribution_arch": { - "description": "Architecture to restrict client usage to", - "example": "x86_64", - "type": "string" - }, - "distribution_versions": { - "description": "Versions to restrict client usage to", - "example": [ - "7", - "8" - ], - "items": { - "type": "string" - }, - "type": "array" - }, - "gpg_key": { - "description": "GPG key for repository", - "type": "string" - }, - "metadata_verification": { - "description": "Verify packages", - "type": "boolean" - }, - "module_hotfixes": { - "description": "Disable modularity filtering on this repository", - "type": "boolean" - }, - "name": { - "description": "Name of the remote yum repository", - "type": "string" - }, - "snapshot": { - "description": "Enable snapshotting and hosting of this repository", - "type": "boolean" - }, - "url": { - "description": "URL of the remote yum repository", - "type": "string" - } - }, - "type": "object" - }, - "api.RepositoryValidationRequest": { - "properties": { - "gpg_key": { - "description": "GPGKey of the remote yum repository", - "type": "string" - }, - "metadata_verification": { - "description": "If set, attempt to validate the yum metadata with the specified GPG Key", - "type": "boolean" - }, - "name": { - "description": "Name of the remote yum repository", - "type": "string" - }, - "url": { - "description": "URL of the remote yum repository", - "type": "string" - }, - "uuid": { - "description": "If set, this is an \"Update\" validation", - "type": "string" - } - }, - "type": "object" - }, - "api.RepositoryValidationResponse": { - "properties": { - "gpg_key": { - "$ref": "#/components/schemas/api.GenericAttributeValidationResponse" - }, - "name": { - "$ref": "#/components/schemas/api.GenericAttributeValidationResponse" - }, - "url": { - "$ref": "#/components/schemas/api.UrlValidationResponse" - } - }, - "type": "object" - }, - "api.ResponseMetadata": { - "properties": { - "count": { - "description": "Total count of results", - "type": "integer" - }, - "limit": { - "description": "Limit of results used for the request", - "type": "integer" - }, - "offset": { - "description": "Offset into results used for the request", - "type": "integer" - } - }, - "type": "object" - }, - "api.SearchEnvironmentResponse": { - "properties": { - "description": { - "description": "Description of the environment found", - "type": "string" - }, - "environment_name": { - "description": "Environment found", - "type": "string" - }, - "id": { - "description": "ID of the environment found", - "type": "string" - } - }, - "type": "object" - }, - "api.SearchModuleStreams": { - "properties": { - "module_name": { - "description": "Module name", - "type": "string" - }, - "streams": { - "description": "A list of stream related information for the module", - "items": { - "$ref": "#/components/schemas/api.Stream" - }, - "type": "array" - } - }, - "type": "object" - }, - "api.SearchModuleStreamsRequest": { - "properties": { - "rpm_names": { - "description": "List of rpm names to search", - "items": { - "type": "string" - }, - "type": "array" - }, - "search": { - "description": "Search string to search rpm names", - "type": "string" - }, - "sort_by": { - "description": "SortBy sets the sort order of the result", - "type": "string" - }, - "urls": { - "description": "List of repository URLs to search", - "items": { - "type": "string" - }, - "type": "array" - }, - "uuids": { - "description": "List of repository UUIDs to search", - "items": { - "type": "string" - }, - "type": "array" - } - }, - "required": [ - "rpm_names", - "urls", - "uuids" - ], - "type": "object" - }, - "api.SearchPackageGroupResponse": { - "properties": { - "description": { - "description": "Description of the package group found", - "type": "string" - }, - "id": { - "description": "Package group ID", - "type": "string" - }, - "package_group_name": { - "description": "Name of package group found", - "type": "string" - }, - "package_list": { - "description": "Package list of the package group found", - "items": { - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - }, - "api.SearchRpmResponse": { - "properties": { - "package_name": { - "description": "Package name found", - "type": "string" - }, - "package_sources": { - "description": "List of the module streams for the package", - "items": { - "$ref": "#/components/schemas/api.PackageSourcesResponse" - }, - "type": "array" - }, - "summary": { - "description": "Summary of the package found", - "type": "string" - } - }, - "type": "object" - }, - "api.SearchSnapshotModuleStreamsRequest": { - "properties": { - "rpm_names": { - "description": "List of rpm names to restrict returned modules", - "items": { - "type": "string" - }, - "type": "array" - }, - "search": { - "description": "Search string to search module names", - "type": "string" - }, - "sort_by": { - "description": "SortBy sets the sort order of the result", - "type": "string" - }, - "uuids": { - "description": "List of snapshot UUIDs to search", - "items": { - "type": "string" - }, - "type": "array" - } - }, - "required": [ - "rpm_names", - "uuids" - ], - "type": "object" - }, - "api.SnapshotCollectionResponse": { - "properties": { - "data": { - "description": "Requested Data", - "items": { - "$ref": "#/components/schemas/api.SnapshotResponse" - }, - "type": "array" - }, - "links": { - "$ref": "#/components/schemas/api.Links" - }, - "meta": { - "$ref": "#/components/schemas/api.ResponseMetadata" - } - }, - "type": "object" - }, - "api.SnapshotErrata": { - "properties": { - "cves": { - "description": "List of CVEs", - "items": { - "type": "string" - }, - "type": "array" - }, - "description": { - "description": "Description of the errata", - "type": "string" - }, - "errata_id": { - "description": "ID of the errata", - "type": "string" - }, - "id": { - "type": "string" - }, - "issued_date": { - "description": "IssuedDate of the errata", - "type": "string" - }, - "reboot_suggested": { - "description": "Whether a reboot is suggested", - "type": "boolean" - }, - "severity": { - "description": "Severity of the errata", - "type": "string" - }, - "summary": { - "description": "Summary of the errata", - "type": "string" - }, - "title": { - "description": "Title of the errata", - "type": "string" - }, - "type": { - "description": "Type of the errata", - "type": "string" - }, - "updated_date": { - "description": "UpdateDate of the errata", - "type": "string" - } - }, - "type": "object" - }, - "api.SnapshotErrataCollectionResponse": { - "properties": { - "data": { - "description": "List of errata", - "items": { - "$ref": "#/components/schemas/api.SnapshotErrata" - }, - "type": "array" - }, - "links": { - "$ref": "#/components/schemas/api.Links" - }, - "meta": { - "$ref": "#/components/schemas/api.ResponseMetadata" - } - }, - "type": "object" - }, - "api.SnapshotForDate": { - "properties": { - "is_after": { - "description": "Is the snapshot after the specified date", - "type": "boolean" - }, - "match": { - "$ref": "#/components/schemas/api.SnapshotResponse" - }, - "repository_uuid": { - "description": "Repository uuid for associated snapshot", - "type": "string" - } - }, - "type": "object" - }, - "api.SnapshotResponse": { - "properties": { - "added_counts": { - "additionalProperties": { - "type": "integer" - }, - "description": "Count of each content type", - "type": "object" - }, - "content_counts": { - "additionalProperties": { - "type": "integer" - }, - "description": "Count of each content type", - "type": "object" - }, - "created_at": { - "description": "Datetime the snapshot was created", - "type": "string" - }, - "removed_counts": { - "additionalProperties": { - "type": "integer" - }, - "description": "Count of each content type", - "type": "object" - }, - "repository_name": { - "description": "Name of repository the snapshot belongs to", - "type": "string" - }, - "repository_path": { - "description": "Path to repository snapshot contents", - "type": "string" - }, - "repository_uuid": { - "description": "UUID of the repository the snapshot belongs to", - "type": "string" - }, - "url": { - "description": "URL to the snapshot's content", - "type": "string" - }, - "uuid": { - "type": "string" - } - }, - "type": "object" - }, - "api.SnapshotRpm": { - "properties": { - "arch": { - "description": "The architecture of the rpm", - "type": "string" - }, - "epoch": { - "description": "The epoch of the rpm", - "type": "string" - }, - "name": { - "description": "The rpm package name", - "type": "string" - }, - "release": { - "description": "The release of the rpm", - "type": "string" - }, - "summary": { - "description": "The summary of the rpm", - "type": "string" - }, - "version": { - "description": "The version of the rpm", - "type": "string" - } - }, - "type": "object" - }, - "api.SnapshotRpmCollectionResponse": { - "properties": { - "data": { - "description": "List of rpms", - "items": { - "$ref": "#/components/schemas/api.SnapshotRpm" - }, - "type": "array" - }, - "links": { - "$ref": "#/components/schemas/api.Links" - }, - "meta": { - "$ref": "#/components/schemas/api.ResponseMetadata" - } - }, - "type": "object" - }, - "api.SnapshotSearchRpmRequest": { - "properties": { - "include_package_sources": { - "description": "Whether to include module information", - "type": "boolean" - }, - "limit": { - "description": "Maximum number of records to return for the search", - "type": "integer" - }, - "search": { - "description": "Search string to search rpm names", - "type": "string" - }, - "uuids": { - "description": "List of Snapshot UUIDs to search", - "items": { - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - }, - "api.Stream": { - "properties": { - "arch": { - "description": "The Architecture of the rpm", - "type": "string" - }, - "context": { - "description": "Context of the module", - "type": "string" - }, - "description": { - "description": "Module description", - "type": "string" - }, - "name": { - "description": "Name of the module", - "type": "string" - }, - "profiles": { - "additionalProperties": { - "items": { - "type": "string" - }, - "type": "array" - }, - "description": "Module profile data", - "type": "object" - }, - "stream": { - "description": "Module stream version", - "type": "string" - }, - "version": { - "description": "The version of the rpm", - "type": "string" - } - }, - "type": "object" - }, - "api.TaskInfoCollectionResponse": { - "properties": { - "data": { - "description": "Requested Data", - "items": { - "$ref": "#/components/schemas/api.TaskInfoResponse" - }, - "type": "array" - }, - "links": { - "$ref": "#/components/schemas/api.Links" - }, - "meta": { - "$ref": "#/components/schemas/api.ResponseMetadata" - } - }, - "type": "object" - }, - "api.TaskInfoResponse": { - "properties": { - "created_at": { - "description": "Timestamp of task creation", - "type": "string" - }, - "dependencies": { - "description": "UUIDs of parent tasks", - "items": { - "type": "string" - }, - "type": "array" - }, - "dependents": { - "description": "UUIDs of child tasks", - "items": { - "type": "string" - }, - "type": "array" - }, - "ended_at": { - "description": "Timestamp task ended running at", - "type": "string" - }, - "error": { - "description": "Error thrown while running task", - "type": "string" - }, - "object_name": { - "description": "Name of the associated repository or template", - "type": "string" - }, - "object_type": { - "description": "Type of the associated object, either repository or template", - "type": "string" - }, - "object_uuid": { - "description": "UUID of the associated repository or template", - "type": "string" - }, - "org_id": { - "description": "Organization ID of the owner", - "type": "string" - }, - "status": { - "description": "Status of task (running, failed, completed, canceled, pending)", - "type": "string" - }, - "type": { - "description": "Type of task", - "type": "string" - }, - "uuid": { - "description": "UUID of the object", - "type": "string" - } - }, - "type": "object" - }, - "api.TemplateCollectionResponse": { - "properties": { - "data": { - "description": "Requested Data", - "items": { - "$ref": "#/components/schemas/api.TemplateResponse" - }, - "type": "array" - }, - "links": { - "$ref": "#/components/schemas/api.Links" - }, - "meta": { - "$ref": "#/components/schemas/api.ResponseMetadata" - } - }, - "type": "object" - }, - "api.TemplateRequest": { - "properties": { - "arch": { - "description": "Architecture of the template", - "type": "string" - }, - "date": { - "description": "Latest date to include snapshots for", - "type": "string" - }, - "description": { - "description": "Description of the template", - "type": "string" - }, - "name": { - "description": "Name of the template", - "type": "string" - }, - "repository_uuids": { - "description": "Repositories to add to the template", - "items": { - "type": "string" - }, - "type": "array" - }, - "use_latest": { - "description": "Use latest snapshot for all repositories in the template", - "type": "boolean" - }, - "version": { - "description": "Version of the template", - "type": "string" - } - }, - "required": [ - "arch", - "name", - "repository_uuids", - "version" - ], - "type": "object" - }, - "api.TemplateResponse": { - "properties": { - "arch": { - "description": "Architecture of the template", - "type": "string" - }, - "created_at": { - "description": "Datetime template was created", - "type": "string" - }, - "created_by": { - "description": "User that created the template", - "type": "string" - }, - "date": { - "description": "Latest date to include snapshots for", - "type": "string" - }, - "description": { - "description": "Description of the template", - "type": "string" - }, - "last_update_snapshot_error": { - "description": "Error of last update_latest_snapshot task that updated the template", - "type": "string" - }, - "last_update_task": { - "$ref": "#/components/schemas/api.TaskInfoResponse" - }, - "last_update_task_uuid": { - "description": "UUID of the last update_template_content task that updated the template", - "type": "string" - }, - "last_updated_by": { - "description": "User that most recently updated the template", - "type": "string" - }, - "name": { - "description": "Name of the template", - "type": "string" - }, - "org_id": { - "description": "Organization ID of the owner", - "type": "string" - }, - "repository_uuids": { - "description": "Repositories added to the template", - "items": { - "type": "string" - }, - "type": "array" - }, - "rhsm_environment_created": { - "description": "Whether the candlepin environment is created and systems can be added", - "readOnly": true, - "type": "boolean" - }, - "rhsm_environment_id": { - "description": "Environment ID used by subscription-manager and candlepin", - "type": "string" - }, - "snapshots": { - "description": "The list of snapshots in use by the template", - "items": { - "$ref": "#/components/schemas/api.SnapshotResponse" - }, - "readOnly": true, - "type": "array" - }, - "to_be_deleted_snapshots": { - "description": "List of snapshots used by this template which are going to be deleted soon", - "items": { - "$ref": "#/components/schemas/api.SnapshotResponse" - }, - "readOnly": true, - "type": "array" - }, - "updated_at": { - "description": "Datetime template was last updated", - "type": "string" - }, - "use_latest": { - "description": "Use latest snapshot for all repositories in the template", - "type": "boolean" - }, - "uuid": { - "readOnly": true, - "type": "string" - }, - "version": { - "description": "Version of the template", - "type": "string" - } - }, - "type": "object" - }, - "api.TemplateUpdateRequest": { - "properties": { - "date": { - "description": "Latest date to include snapshots for", - "type": "string" - }, - "description": { - "description": "Description of the template", - "type": "string" - }, - "name": { - "description": "Name of the template", - "type": "string" - }, - "repository_uuids": { - "description": "Repositories to add to the template", - "items": { - "type": "string" - }, - "type": "array" - }, - "use_latest": { - "description": "Use latest snapshot for all repositories in the template", - "type": "boolean" - } - }, - "type": "object" - }, - "api.UUIDListRequest": { - "properties": { - "uuids": { - "items": { - "type": "string" - }, - "type": "array" - } - }, - "required": [ - "uuids" - ], - "type": "object" - }, - "api.Upload": { - "properties": { - "href": { - "description": "HREF to the unfinished upload, use with internal API", - "type": "string" - }, - "sha256": { - "description": "SHA256 sum of the uploaded file", - "type": "string" - }, - "uuid": { - "description": "Upload UUID, use with public API", - "type": "string" - } - }, - "type": "object" - }, - "api.UploadResponse": { - "properties": { - "artifact_href": { - "description": "Artifact href if one exists (on create only)", - "type": "string" - }, - "completed": { - "description": "Timestamp when upload is committed", - "type": "string" - }, - "completed_checksums": { - "description": "A list of already completed checksums", - "items": { - "type": "string" - }, - "type": "array" - }, - "created": { - "description": "Timestamp of creation", - "type": "string" - }, - "last_updated": { - "description": "Timestamp of last update", - "type": "string" - }, - "size": { - "description": "Size of the upload in bytes", - "type": "integer" - }, - "upload_uuid": { - "description": "Upload UUID", - "type": "string" - } - }, - "type": "object" - }, - "api.UrlValidationResponse": { - "properties": { - "error": { - "description": "Error message if the attribute is not valid", - "type": "string" - }, - "http_code": { - "description": "If the metadata cannot be fetched successfully, the http code that is returned if the http request was completed", - "type": "integer" - }, - "metadata_present": { - "description": "True if the metadata can be fetched successfully", - "type": "boolean" - }, - "metadata_signature_present": { - "description": "True if a repomd.xml.sig file was found in the repository", - "type": "boolean" - }, - "skipped": { - "description": "Skipped if the URL is not passed in for validation", - "type": "boolean" - }, - "valid": { - "description": "Valid if not skipped and the provided attribute is valid", - "type": "boolean" - } - }, - "type": "object" - }, - "config.DistributionArch": { - "properties": { - "label": { - "description": "Static label of the architecture", - "type": "string" - }, - "name": { - "description": "Human-readable form of the architecture", - "type": "string" - } - }, - "type": "object" - }, - "config.DistributionVersion": { - "properties": { - "label": { - "description": "Static label of the version", - "type": "string" - }, - "name": { - "description": "Human-readable form of the version", - "type": "string" - } - }, - "type": "object" - }, - "errors.ErrorResponse": { - "properties": { - "errors": { - "items": { - "$ref": "#/components/schemas/errors.HandlerError" - }, - "type": "array" - } - }, - "type": "object" - }, - "errors.HandlerError": { - "properties": { - "detail": { - "description": "An explanation specific to the problem", - "type": "string" - }, - "status": { - "description": "HTTP status code applicable to the error", - "type": "integer" - }, - "title": { - "description": "A summary of the problem", - "type": "string" - } - }, - "type": "object" - } - }, - "securitySchemes": { - "RhIdentity": { - "in": "header", - "name": "x-rh-identity", - "type": "apiKey" - } - } - }, - "info": { - "contact": {}, - "description": "The API for the repositories of the content sources that you can use to create and manage repositories between third-party applications and the [Red Hat Hybrid Cloud Console](https://console.redhat.com). With these repositories, you can build and deploy images using Image Builder for Cloud, on-Premise, and Edge. You can handle tasks, search for required RPMs, fetch a GPGKey from the URL, and list the features within applications.\n", - "license": { - "name": "Apache 2.0", - "url": "https://www.apache.org/licenses/LICENSE-2.0" - }, - "title": "ContentSourcesBackend", - "version": "v1.0.0" - }, - "openapi": "3.0.3", - "paths": { - "/environments/names": { - "post": { - "description": "This enables users to search for environments in a given list of repositories.", - "operationId": "searchEnvironments", - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/api.ContentUnitSearchRequest" - } - } - }, - "description": "request body", - "required": true, - "x-originalParamName": "body" - }, - "responses": { - "200": { - "content": { - "application/json": { - "schema": { - "items": { - "$ref": "#/components/schemas/api.SearchEnvironmentResponse" - }, - "type": "array" - } - } - }, - "description": "OK" - }, - "400": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.ErrorResponse" - } - } - }, - "description": "Bad Request" - }, - "401": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.ErrorResponse" - } - } - }, - "description": "Unauthorized" - }, - "404": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.ErrorResponse" - } - } - }, - "description": "Not Found" - }, - "415": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.ErrorResponse" - } - } - }, - "description": "Unsupported Media Type" - }, - "500": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.ErrorResponse" - } - } - }, - "description": "Internal Server Error" - } - }, - "summary": "Search environments", - "tags": [ - "environments" - ] - } - }, - "/features/": { - "get": { - "description": "Get features enables retrieving information about the features within an application, regardless of their current status (enabled or disabled) and the user's access to them.", - "operationId": "listFeatures", - "responses": { - "200": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/api.FeatureSet" - } - } - }, - "description": "OK" - } - }, - "summary": "List Features within the application, whether they are enabled, and whether the requesting user can use them", - "tags": [ - "features" - ] - } - }, - "/module_streams/search": { - "post": { - "description": "List modules and their streams for repositories", - "operationId": "searchRepositoryModuleStreams", - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/api.SearchModuleStreamsRequest" - } - } - }, - "description": "request body", - "required": true, - "x-originalParamName": "body" - }, - "responses": { - "200": { - "content": { - "application/json": { - "schema": { - "items": { - "$ref": "#/components/schemas/api.SearchModuleStreams" - }, - "type": "array" - } - } - }, - "description": "OK" - }, - "400": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.ErrorResponse" - } - } - }, - "description": "Bad Request" - }, - "401": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.ErrorResponse" - } - } - }, - "description": "Unauthorized" - }, - "404": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.ErrorResponse" - } - } - }, - "description": "Not Found" - }, - "500": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.ErrorResponse" - } - } - }, - "description": "Internal Server Error" - } - }, - "summary": "List modules and their streams for repositories", - "tags": [ - "module_streams" - ] - } - }, - "/package_groups/names": { - "post": { - "description": "This enables users to search for package groups in a given list of repositories.", - "operationId": "searchPackageGroup", - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/api.ContentUnitSearchRequest" - } - } - }, - "description": "request body", - "required": true, - "x-originalParamName": "body" - }, - "responses": { - "200": { - "content": { - "application/json": { - "schema": { - "items": { - "$ref": "#/components/schemas/api.SearchPackageGroupResponse" - }, - "type": "array" - } - } - }, - "description": "OK" - }, - "400": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.ErrorResponse" - } - } - }, - "description": "Bad Request" - }, - "401": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.ErrorResponse" - } - } - }, - "description": "Unauthorized" - }, - "404": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.ErrorResponse" - } - } - }, - "description": "Not Found" - }, - "415": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.ErrorResponse" - } - } - }, - "description": "Unsupported Media Type" - }, - "500": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.ErrorResponse" - } - } - }, - "description": "Internal Server Error" - } - }, - "summary": "Search package groups", - "tags": [ - "packagegroups" - ] - } - }, - "/popular_repositories/": { - "get": { - "description": "This operation enables retrieving a paginated list of repository suggestions that are commonly used.", - "operationId": "listPopularRepositories", - "parameters": [ - { - "description": "Starting point for retrieving a subset of results. Determines how many items to skip from the beginning of the result set. Default value:`0`.", - "in": "query", - "name": "offset", - "schema": { - "type": "integer" - } - }, - { - "description": "Number of items to include in response. Use it to control the number of items, particularly when dealing with large datasets. Default value: `100`.", - "in": "query", - "name": "limit", - "schema": { - "type": "integer" - } - }, - { - "description": "Term to filter and retrieve items that match the specified search criteria. Search term can include name or URL.", - "in": "query", - "name": "search", - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/api.PopularRepositoriesCollectionResponse" - } - } - }, - "description": "OK" - }, - "400": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.ErrorResponse" - } - } - }, - "description": "Bad Request" - }, - "401": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.ErrorResponse" - } - } - }, - "description": "Unauthorized" - }, - "404": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.ErrorResponse" - } - } - }, - "description": "Not Found" - }, - "500": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.ErrorResponse" - } - } - }, - "description": "Internal Server Error" - } - }, - "summary": "List Popular Repositories", - "tags": [ - "popular_repositories" - ] - } - }, - "/public_repositories/": { - "get": { - "description": "Get public repositories.\nThis enables listing a set of pre-created entries that represent a base set of RPMs needed for image building. These repositories are defined and made available to all user accounts, enabling them to perform RPM name searches using URLs as search criteria. These public repositories are not listed by the normal repositories API.\nIt does not show up via the normal repositories API.", - "operationId": "listPublicRepositories", - "parameters": [ - { - "description": "Starting point for retrieving a subset of results. Determines how many items to skip from the beginning of the result set. Default value:`0`.", - "in": "query", - "name": "offset", - "schema": { - "type": "integer" - } - }, - { - "description": "Number of items to include in response. Use it to control the number of items, particularly when dealing with large datasets. Default value: `100`.", - "in": "query", - "name": "limit", - "schema": { - "type": "integer" - } - } - ], - "responses": { - "200": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/api.PublicRepositoryCollectionResponse" - } - } - }, - "description": "OK" - }, - "400": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.ErrorResponse" - } - } - }, - "description": "Bad Request" - }, - "401": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.ErrorResponse" - } - } - }, - "description": "Unauthorized" - }, - "404": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.ErrorResponse" - } - } - }, - "description": "Not Found" - }, - "500": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.ErrorResponse" - } - } - }, - "description": "Internal Server Error" - } - }, - "summary": "List Public Repositories", - "tags": [ - "public_repositories" - ] - } - }, - "/repositories/": { - "get": { - "description": "This operation enables users to retrieve a list of repositories.", - "operationId": "listRepositories", - "parameters": [ - { - "description": "Starting point for retrieving a subset of results. Determines how many items to skip from the beginning of the result set. Default value:`0`.", - "in": "query", - "name": "offset", - "schema": { - "type": "integer" - } - }, - { - "description": "Number of items to include in response. Use it to control the number of items, particularly when dealing with large datasets. Default value: `100`.", - "in": "query", - "name": "limit", - "schema": { - "type": "integer" - } - }, - { - "description": "A comma separated list of release versions to filter on. For example, `1,2` would return repositories with versions 1 or 2 only.", - "in": "query", - "name": "version", - "schema": { - "type": "string" - } - }, - { - "description": "A comma separated list of architectures or platforms for that you want to retrieve repositories. It controls responses where repositories support multiple architectures or platforms. For example, ‘x86_64,s390x' returns repositories with `x86_64` or `s390x` only.", - "in": "query", - "name": "arch", - "schema": { - "type": "string" - } - }, - { - "description": "Filter repositories by supported release version. For example, `1` returns repositories with the version `1` or where version is not set.", - "in": "query", - "name": "available_for_version", - "schema": { - "type": "string" - } - }, - { - "description": "Filter repositories by architecture. For example, `x86_64` returns repositories with the version `x86_64` or where architecture is not set.", - "in": "query", - "name": "available_for_arch", - "schema": { - "type": "string" - } - }, - { - "description": "Term to filter and retrieve items that match the specified search criteria. Search term can include name or URL.", - "in": "query", - "name": "search", - "schema": { - "type": "string" - } - }, - { - "description": "Filter repositories by name.", - "in": "query", - "name": "name", - "schema": { - "type": "string" - } - }, - { - "description": "A comma separated list of URLs to control api response.", - "in": "query", - "name": "url", - "schema": { - "type": "string" - } - }, - { - "description": "A comma separated list of UUIDs to control api response.", - "in": "query", - "name": "uuid", - "schema": { - "type": "string" - } - }, - { - "description": "Sort the response data based on specific repository parameters. Sort criteria can include `name`, `url`, `status`, and `package_count`.", - "in": "query", - "name": "sort_by", - "schema": { - "type": "string" - } - }, - { - "description": "A comma separated list of statuses to control api response. Statuses can include `Pending`, `Valid`, `Invalid`, `Unavailable`.", - "in": "query", - "name": "status", - "schema": { - "type": "string" - } - }, - { - "description": "A comma separated list of origins to filter api response. Origins can include `red_hat` and `external`.", - "in": "query", - "name": "origin", - "schema": { - "type": "string" - } - }, - { - "description": "content type of a repository to filter on (rpm)", - "in": "query", - "name": "content_type", - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/api.RepositoryCollectionResponse" - } - } - }, - "description": "OK" - }, - "400": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.ErrorResponse" - } - } - }, - "description": "Bad Request" - }, - "401": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.ErrorResponse" - } - } - }, - "description": "Unauthorized" - }, - "404": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.ErrorResponse" - } - } - }, - "description": "Not Found" - }, - "500": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.ErrorResponse" - } - } - }, - "description": "Internal Server Error" - } - }, - "summary": "List Repositories", - "tags": [ - "repositories" - ] - }, - "post": { - "description": "This operation enables creating custom repositories based on user preferences.", - "operationId": "createRepository", - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/api.RepositoryRequest" - } - } - }, - "description": "request body", - "required": true, - "x-originalParamName": "body" - }, - "responses": { - "201": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/api.RepositoryResponse" - } - } - }, - "description": "Created", - "headers": { - "Location": { - "description": "resource URL", - "schema": { - "type": "string" - } - } - } - }, - "400": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.ErrorResponse" - } - } - }, - "description": "Bad Request" - }, - "401": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.ErrorResponse" - } - } - }, - "description": "Unauthorized" - }, - "404": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.ErrorResponse" - } - } - }, - "description": "Not Found" - }, - "415": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.ErrorResponse" - } - } - }, - "description": "Unsupported Media Type" - }, - "500": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.ErrorResponse" - } - } - }, - "description": "Internal Server Error" - } - }, - "summary": "Create Repository", - "tags": [ - "repositories" - ] - } - }, - "/repositories/bulk_create/": { - "post": { - "description": "This enables creating multiple repositories in a single API. If a user encounters any error, none of the repositories will be created. The applicable error message will be returned.", - "operationId": "bulkCreateRepositories", - "requestBody": { - "content": { - "application/json": { - "schema": { - "items": { - "$ref": "#/components/schemas/api.RepositoryRequest" - }, - "type": "array" - } - } - }, - "description": "request body", - "required": true, - "x-originalParamName": "body" - }, - "responses": { - "201": { - "content": { - "application/json": { - "schema": { - "items": { - "$ref": "#/components/schemas/api.RepositoryResponse" - }, - "type": "array" - } - } - }, - "description": "Created", - "headers": { - "Location": { - "description": "resource URL", - "schema": { - "type": "string" - } - } - } - }, - "400": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.ErrorResponse" - } - } - }, - "description": "Bad Request" - }, - "401": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.ErrorResponse" - } - } - }, - "description": "Unauthorized" - }, - "404": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.ErrorResponse" - } - } - }, - "description": "Not Found" - }, - "415": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.ErrorResponse" - } - } - }, - "description": "Unsupported Media Type" - }, - "500": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.ErrorResponse" - } - } - }, - "description": "Internal Server Error" - } - }, - "summary": "Bulk create repositories", - "tags": [ - "repositories" - ] - } - }, - "/repositories/bulk_delete/": { - "post": { - "description": "This enables deleting multiple repositories.", - "operationId": "bulkDeleteRepositories", - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/api.UUIDListRequest" - } - } - }, - "description": "Identifiers of the repositories", - "required": true, - "x-originalParamName": "body" - }, - "responses": { - "204": { - "description": "Repositories were successfully deleted" - }, - "400": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.ErrorResponse" - } - } - }, - "description": "Bad Request" - }, - "401": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.ErrorResponse" - } - } - }, - "description": "Unauthorized" - }, - "404": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.ErrorResponse" - } - } - }, - "description": "Not Found" - }, - "415": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.ErrorResponse" - } - } - }, - "description": "Unsupported Media Type" - }, - "500": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.ErrorResponse" - } - } - }, - "description": "Internal Server Error" - } - }, - "summary": "Bulk delete repositories", - "tags": [ - "repositories" - ] - } - }, - "/repositories/bulk_export/": { - "post": { - "description": "Export multiple repositories.", - "operationId": "bulkExportRepositories", - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/api.RepositoryExportRequest" - } - } - }, - "description": "request body", - "required": true, - "x-originalParamName": "body" - }, - "responses": { - "201": { - "content": { - "application/json": { - "schema": { - "items": { - "$ref": "#/components/schemas/api.RepositoryExportResponse" - }, - "type": "array" - } - } - }, - "description": "Created", - "headers": { - "Location": { - "description": "resource URL", - "schema": { - "type": "string" - } - } - } - }, - "400": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.ErrorResponse" - } - } - }, - "description": "Bad Request" - }, - "401": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.ErrorResponse" - } - } - }, - "description": "Unauthorized" - }, - "404": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.ErrorResponse" - } - } - }, - "description": "Not Found" - }, - "415": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.ErrorResponse" - } - } - }, - "description": "Unsupported Media Type" - }, - "500": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.ErrorResponse" - } - } - }, - "description": "Internal Server Error" - } - }, - "summary": "Bulk export repositories", - "tags": [ - "repositories" - ] - } - }, - "/repositories/bulk_import/": { - "post": { - "description": "Import multiple repositories.", - "operationId": "bulkImportRepositories", - "requestBody": { - "content": { - "application/json": { - "schema": { - "items": { - "$ref": "#/components/schemas/api.RepositoryRequest" - }, - "type": "array" - } - } - }, - "description": "request body", - "required": true, - "x-originalParamName": "body" - }, - "responses": { - "201": { - "content": { - "application/json": { - "schema": { - "items": { - "$ref": "#/components/schemas/api.RepositoryImportResponse" - }, - "type": "array" - } - } - }, - "description": "Created", - "headers": { - "Location": { - "description": "resource URL", - "schema": { - "type": "string" - } - } - } - }, - "400": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.ErrorResponse" - } - } - }, - "description": "Bad Request" - }, - "401": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.ErrorResponse" - } - } - }, - "description": "Unauthorized" - }, - "404": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.ErrorResponse" - } - } - }, - "description": "Not Found" - }, - "415": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.ErrorResponse" - } - } - }, - "description": "Unsupported Media Type" - }, - "500": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.ErrorResponse" - } - } - }, - "description": "Internal Server Error" - } - }, - "summary": "Bulk import repositories", - "tags": [ - "repositories" - ] - } - }, - "/repositories/uploads/": { - "post": { - "description": "Create an upload.", - "operationId": "createUpload", - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/api.CreateUploadRequest" - } - } - }, - "description": "request body", - "required": true, - "x-originalParamName": "body" - }, - "responses": { - "200": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/api.UploadResponse" - } - } - }, - "description": "OK" - }, - "400": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.ErrorResponse" - } - } - }, - "description": "Bad Request" - }, - "404": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.ErrorResponse" - } - } - }, - "description": "Not Found" - }, - "500": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.ErrorResponse" - } - } - }, - "description": "Internal Server Error" - } - }, - "summary": "Create an upload", - "tags": [ - "repositories" - ] - } - }, - "/repositories/uploads/{upload_uuid}/upload_chunk/": { - "post": { - "description": "Upload a file chunk.", - "operationId": "uploadChunk", - "parameters": [ - { - "description": "Upload ID.", - "in": "path", - "name": "upload_uuid", - "required": true, - "schema": { - "type": "string" - } - }, - { - "description": "Content-Range header", - "in": "header", - "name": "Content-Range", - "required": true, - "schema": { - "type": "string" - } - } - ], - "requestBody": { - "content": { - "multipart/form-data": { - "schema": { - "properties": { - "file": { - "description": "file chunk", - "format": "binary", - "type": "string", - "x-formData-name": "file" - }, - "sha256": { - "description": "sha256", - "type": "string", - "x-formData-name": "sha256" - } - }, - "required": [ - "file", - "sha256" - ], - "type": "object" - } - } - } - }, - "responses": { - "200": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/api.UploadResponse" - } - } - }, - "description": "OK" - }, - "400": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.ErrorResponse" - } - } - }, - "description": "Bad Request" - }, - "404": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.ErrorResponse" - } - } - }, - "description": "Not Found" - }, - "500": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.ErrorResponse" - } - } - }, - "description": "Internal Server Error" - } - }, - "summary": "Upload a file chunk", - "tags": [ - "repositories" - ] - } - }, - "/repositories/{repo_uuid}/snapshots/bulk_delete/": { - "post": { - "description": "This enables deleting specified snapshots from a repository.", - "operationId": "bulkDeleteSnapshots", - "parameters": [ - { - "description": "Repository UUID.", - "in": "path", - "name": "repo_uuid", - "required": true, - "schema": { - "type": "string" - } - } - ], - "requestBody": { - "content": { - "*/*": { - "schema": { - "$ref": "#/components/schemas/api.UUIDListRequest" - } - } - }, - "description": "Identifiers of the snapshots", - "required": true, - "x-originalParamName": "body" - }, - "responses": { - "204": { - "description": "Snapshots were successfully deleted" - }, - "400": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.ErrorResponse" - } - } - }, - "description": "Bad Request" - }, - "401": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.ErrorResponse" - } - } - }, - "description": "Unauthorized" - }, - "404": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.ErrorResponse" - } - } - }, - "description": "Not Found" - }, - "500": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.ErrorResponse" - } - } - }, - "description": "Internal Server Error" - } - }, - "summary": "Bulk delete a snapshots", - "tags": [ - "snapshots" - ] - } - }, - "/repositories/{repo_uuid}/snapshots/{snapshot_uuid}": { - "delete": { - "description": "This enables deleting a specific snapshot.", - "operationId": "deleteSnapshot", - "parameters": [ - { - "description": "Repository UUID.", - "in": "path", - "name": "repo_uuid", - "required": true, - "schema": { - "type": "string" - } - }, - { - "description": "Snapshot UUID.", - "in": "path", - "name": "snapshot_uuid", - "required": true, - "schema": { - "type": "string" - } - } - ], - "responses": { - "204": { - "description": "Snapshot was successfully deleted" - }, - "400": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.ErrorResponse" - } - } - }, - "description": "Bad Request" - }, - "401": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.ErrorResponse" - } - } - }, - "description": "Unauthorized" - }, - "404": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.ErrorResponse" - } - } - }, - "description": "Not Found" - }, - "500": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.ErrorResponse" - } - } - }, - "description": "Internal Server Error" - } - }, - "summary": "Delete a snapshot", - "tags": [ - "snapshots" - ] - } - }, - "/repositories/{uuid}": { - "delete": { - "description": "This enables deleting a specific repository.", - "operationId": "deleteRepository", - "parameters": [ - { - "description": "Repository ID.", - "in": "path", - "name": "uuid", - "required": true, - "schema": { - "type": "string" - } - } - ], - "responses": { - "204": { - "description": "Repository was successfully deleted" - }, - "400": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.ErrorResponse" - } - } - }, - "description": "Bad Request" - }, - "401": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.ErrorResponse" - } - } - }, - "description": "Unauthorized" - }, - "404": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.ErrorResponse" - } - } - }, - "description": "Not Found" - }, - "500": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.ErrorResponse" - } - } - }, - "description": "Internal Server Error" - } - }, - "summary": "Delete a repository", - "tags": [ - "repositories" - ] - }, - "get": { - "description": "Get repository information.", - "operationId": "getRepository", - "parameters": [ - { - "description": "Repository ID.", - "in": "path", - "name": "uuid", - "required": true, - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/api.RepositoryResponse" - } - } - }, - "description": "OK" - }, - "400": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.ErrorResponse" - } - } - }, - "description": "Bad Request" - }, - "401": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.ErrorResponse" - } - } - }, - "description": "Unauthorized" - }, - "404": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.ErrorResponse" - } - } - }, - "description": "Not Found" - }, - "500": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.ErrorResponse" - } - } - }, - "description": "Internal Server Error" - } - }, - "summary": "Get Repository", - "tags": [ - "repositories" - ] - }, - "patch": { - "description": "Partially update a repository.", - "operationId": "partialUpdateRepository", - "parameters": [ - { - "description": "Repository ID.", - "in": "path", - "name": "uuid", - "required": true, - "schema": { - "type": "string" - } - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/api.RepositoryUpdateRequest" - } - } - }, - "description": "request body", - "required": true, - "x-originalParamName": "body" - }, - "responses": { - "200": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/api.RepositoryResponse" - } - } - }, - "description": "OK" - }, - "400": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.ErrorResponse" - } - } - }, - "description": "Bad Request" - }, - "401": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.ErrorResponse" - } - } - }, - "description": "Unauthorized" - }, - "404": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.ErrorResponse" - } - } - }, - "description": "Not Found" - }, - "415": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.ErrorResponse" - } - } - }, - "description": "Unsupported Media Type" - }, - "500": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.ErrorResponse" - } - } - }, - "description": "Internal Server Error" - } - }, - "summary": "Partial Update Repository", - "tags": [ - "repositories" - ] - }, - "put": { - "description": "Update a repository.", - "operationId": "fullUpdateRepository", - "parameters": [ - { - "description": "Repository ID.", - "in": "path", - "name": "uuid", - "required": true, - "schema": { - "type": "string" - } - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/api.RepositoryRequest" - } - } - }, - "description": "request body", - "required": true, - "x-originalParamName": "body" - }, - "responses": { - "200": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/api.RepositoryResponse" - } - } - }, - "description": "OK" - }, - "400": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.ErrorResponse" - } - } - }, - "description": "Bad Request" - }, - "401": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.ErrorResponse" - } - } - }, - "description": "Unauthorized" - }, - "404": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.ErrorResponse" - } - } - }, - "description": "Not Found" - }, - "415": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.ErrorResponse" - } - } - }, - "description": "Unsupported Media Type" - }, - "500": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.ErrorResponse" - } - } - }, - "description": "Internal Server Error" - } - }, - "summary": "Update Repository", - "tags": [ - "repositories" - ] - } - }, - "/repositories/{uuid}/add_uploads/": { - "post": { - "description": "Add uploads to a repository.", - "operationId": "add_upload", - "parameters": [ - { - "description": "Repository ID.", - "in": "path", - "name": "uuid", - "required": true, - "schema": { - "type": "string" - } - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/api.AddUploadsRequest" - } - } - }, - "description": "request body", - "required": true, - "x-originalParamName": "body" - }, - "responses": { - "200": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/api.TaskInfoResponse" - } - } - }, - "description": "OK" - }, - "400": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.ErrorResponse" - } - } - }, - "description": "Bad Request" - }, - "404": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.ErrorResponse" - } - } - }, - "description": "Not Found" - }, - "500": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.ErrorResponse" - } - } - }, - "description": "Internal Server Error" - } - }, - "summary": "Add uploads to a repository", - "tags": [ - "repositories" - ] - } - }, - "/repositories/{uuid}/config.repo": { - "get": { - "operationId": "getLatestRepoConfigurationFile", - "parameters": [ - { - "description": "Repository ID.", - "in": "path", - "name": "uuid", - "required": true, - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "content": { - "text/plain": { - "schema": { - "type": "string" - } - } - }, - "description": "OK" - }, - "400": { - "content": { - "text/plain": { - "schema": { - "$ref": "#/components/schemas/errors.ErrorResponse" - } - } - }, - "description": "Bad Request" - }, - "401": { - "content": { - "text/plain": { - "schema": { - "$ref": "#/components/schemas/errors.ErrorResponse" - } - } - }, - "description": "Unauthorized" - }, - "404": { - "content": { - "text/plain": { - "schema": { - "$ref": "#/components/schemas/errors.ErrorResponse" - } - } - }, - "description": "Not Found" - }, - "500": { - "content": { - "text/plain": { - "schema": { - "$ref": "#/components/schemas/errors.ErrorResponse" - } - } - }, - "description": "Internal Server Error" - } - }, - "summary": "Get latest configuration file for a repository", - "tags": [ - "repositories" - ] - } - }, - "/repositories/{uuid}/environments": { - "get": { - "description": "List environments in a repository.", - "operationId": "listRepositoriesEnvironments", - "parameters": [ - { - "description": "Repository ID.", - "in": "path", - "name": "uuid", - "required": true, - "schema": { - "type": "string" - } - }, - { - "description": "Number of items to include in response. Use it to control the number of items, particularly when dealing with large datasets. Default value: `100`.", - "in": "query", - "name": "limit", - "schema": { - "type": "integer" - } - }, - { - "description": "Starting point for retrieving a subset of results. Determines how many items to skip from the beginning of the result set. Default value:`0`.", - "in": "query", - "name": "offset", - "schema": { - "type": "integer" - } - }, - { - "description": "Term to filter and retrieve items that match the specified search criteria. Search term can include name.", - "in": "query", - "name": "search", - "schema": { - "type": "string" - } - }, - { - "description": "Sort the response based on specific repository parameters. Sort criteria can include `id`, `name`, and `description`.", - "in": "query", - "name": "sort_by", - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/api.RepositoryEnvironmentCollectionResponse" - } - } - }, - "description": "OK" - }, - "400": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.ErrorResponse" - } - } - }, - "description": "Bad Request" - }, - "401": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.ErrorResponse" - } - } - }, - "description": "Unauthorized" - }, - "404": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.ErrorResponse" - } - } - }, - "description": "Not Found" - }, - "500": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.ErrorResponse" - } - } - }, - "description": "Internal Server Error" - } - }, - "summary": "List Repositories Environments", - "tags": [ - "environments" - ] - } - }, - "/repositories/{uuid}/introspect/": { - "post": { - "description": "Check for repository updates.", - "operationId": "introspect", - "parameters": [ - { - "description": "Repository ID.", - "in": "path", - "name": "uuid", - "required": true, - "schema": { - "type": "string" - } - } - ], - "requestBody": { - "content": { - "*/*": { - "schema": { - "$ref": "#/components/schemas/api.RepositoryIntrospectRequest" - } - } - }, - "description": "request body", - "x-originalParamName": "body" - }, - "responses": { - "200": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/api.TaskInfoResponse" - } - } - }, - "description": "OK" - }, - "400": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.ErrorResponse" - } - } - }, - "description": "Bad Request" - }, - "404": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.ErrorResponse" - } - } - }, - "description": "Not Found" - }, - "500": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.ErrorResponse" - } - } - }, - "description": "Internal Server Error" - } - }, - "summary": "introspect a repository", - "tags": [ - "repositories" - ] - } - }, - "/repositories/{uuid}/package_groups": { - "get": { - "description": "List package groups in a repository.", - "operationId": "listRepositoriesPackageGroups", - "parameters": [ - { - "description": "Repository ID.", - "in": "path", - "name": "uuid", - "required": true, - "schema": { - "type": "string" - } - }, - { - "description": "Number of items to include in response. Use it to control the number of items, particularly when dealing with large datasets. Default value: `100`.", - "in": "query", - "name": "limit", - "schema": { - "type": "integer" - } - }, - { - "description": "Starting point for retrieving a subset of results. Determines how many items to skip from the beginning of the result set. Default value:`0`.", - "in": "query", - "name": "offset", - "schema": { - "type": "integer" - } - }, - { - "description": "Term to filter and retrieve items that match the specified search criteria. Search term can include name.", - "in": "query", - "name": "search", - "schema": { - "type": "string" - } - }, - { - "description": "Sort the response based on specific repository parameters. Sort criteria can include `id`, `name`, `description`, and `package_list`.", - "in": "query", - "name": "sort_by", - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/api.RepositoryPackageGroupCollectionResponse" - } - } - }, - "description": "OK" - }, - "400": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.ErrorResponse" - } - } - }, - "description": "Bad Request" - }, - "401": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.ErrorResponse" - } - } - }, - "description": "Unauthorized" - }, - "404": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.ErrorResponse" - } - } - }, - "description": "Not Found" - }, - "500": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.ErrorResponse" - } - } - }, - "description": "Internal Server Error" - } - }, - "summary": "List Repositories Package Groups", - "tags": [ - "packagegroups" - ] - } - }, - "/repositories/{uuid}/rpms": { - "get": { - "description": "List RPMs in a repository.", - "operationId": "listRepositoriesRpms", - "parameters": [ - { - "description": "Repository ID.", - "in": "path", - "name": "uuid", - "required": true, - "schema": { - "type": "string" - } - }, - { - "description": "Number of items to include in response. Use it to control the number of items, particularly when dealing with large datasets. Default value: `100`.", - "in": "query", - "name": "limit", - "schema": { - "type": "integer" - } - }, - { - "description": "Starting point for retrieving a subset of results. Determines how many items to skip from the beginning of the result set. Default value:`0`.", - "in": "query", - "name": "offset", - "schema": { - "type": "integer" - } - }, - { - "description": "Term to filter and retrieve items that match the specified search criteria. Search term can include name.", - "in": "query", - "name": "search", - "schema": { - "type": "string" - } - }, - { - "description": "Sort the response based on specific repository parameters. Sort criteria can include `name`, `url`, `status`, and `package_count`.", - "in": "query", - "name": "sort_by", - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/api.RepositoryRpmCollectionResponse" - } - } - }, - "description": "OK" - }, - "400": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.ErrorResponse" - } - } - }, - "description": "Bad Request" - }, - "401": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.ErrorResponse" - } - } - }, - "description": "Unauthorized" - }, - "404": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.ErrorResponse" - } - } - }, - "description": "Not Found" - }, - "500": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.ErrorResponse" - } - } - }, - "description": "Internal Server Error" - } - }, - "summary": "List Repositories RPMs", - "tags": [ - "rpms" - ] - } - }, - "/repositories/{uuid}/snapshot/": { - "post": { - "description": "Snapshot a repository if not already snapshotting", - "operationId": "createSnapshot", - "parameters": [ - { - "description": "Repository ID.", - "in": "path", - "name": "uuid", - "required": true, - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/api.TaskInfoResponse" - } - } - }, - "description": "OK" - }, - "400": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.ErrorResponse" - } - } - }, - "description": "Bad Request" - }, - "404": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.ErrorResponse" - } - } - }, - "description": "Not Found" - }, - "500": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.ErrorResponse" - } - } - }, - "description": "Internal Server Error" - } - }, - "summary": "snapshot a repository", - "tags": [ - "repositories" - ] - } - }, - "/repositories/{uuid}/snapshots/": { - "get": { - "description": "List snapshots of a repository.", - "operationId": "listSnapshotsForRepo", - "parameters": [ - { - "description": "Repository ID.", - "in": "path", - "name": "uuid", - "required": true, - "schema": { - "type": "string" - } - }, - { - "description": "Sort the response data based on specific repository parameters. Sort criteria can include `created_at`.", - "in": "query", - "name": "sort_by", - "schema": { - "type": "string" - } - }, - { - "description": "Starting point for retrieving a subset of results. Determines how many items to skip from the beginning of the result set. Default value:`0`.", - "in": "query", - "name": "offset", - "schema": { - "type": "integer" - } - }, - { - "description": "Number of items to include in response. Use it to control the number of items, particularly when dealing with large datasets. Default value: `100`.", - "in": "query", - "name": "limit", - "schema": { - "type": "integer" - } - } - ], - "responses": { - "200": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/api.SnapshotCollectionResponse" - } - } - }, - "description": "OK" - }, - "400": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.ErrorResponse" - } - } - }, - "description": "Bad Request" - }, - "401": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.ErrorResponse" - } - } - }, - "description": "Unauthorized" - }, - "404": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.ErrorResponse" - } - } - }, - "description": "Not Found" - }, - "500": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.ErrorResponse" - } - } - }, - "description": "Internal Server Error" - } - }, - "summary": "List snapshots of a repository", - "tags": [ - "snapshots" - ] - } - }, - "/repository_gpg_key/{uuid}": { - "get": { - "description": "Get the GPG key file for a repository.", - "operationId": "getGpgKeyFile", - "parameters": [ - { - "description": "Repository ID.", - "in": "path", - "name": "uuid", - "required": true, - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "content": { - "text/plain": { - "schema": { - "type": "string" - } - } - }, - "description": "OK" - }, - "400": { - "content": { - "text/plain": { - "schema": { - "$ref": "#/components/schemas/errors.ErrorResponse" - } - } - }, - "description": "Bad Request" - }, - "401": { - "content": { - "text/plain": { - "schema": { - "$ref": "#/components/schemas/errors.ErrorResponse" - } - } - }, - "description": "Unauthorized" - }, - "404": { - "content": { - "text/plain": { - "schema": { - "$ref": "#/components/schemas/errors.ErrorResponse" - } - } - }, - "description": "Not Found" - }, - "415": { - "content": { - "text/plain": { - "schema": { - "$ref": "#/components/schemas/errors.ErrorResponse" - } - } - }, - "description": "Unsupported Media Type" - }, - "500": { - "content": { - "text/plain": { - "schema": { - "$ref": "#/components/schemas/errors.ErrorResponse" - } - } - }, - "description": "Internal Server Error" - } - }, - "summary": "Get the GPG key file for a repository", - "tags": [ - "repositories" - ] - } - }, - "/repository_parameters/": { - "get": { - "description": "List repository parameters.", - "operationId": "listRepositoryParameters", - "responses": { - "200": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/api.RepositoryParameterResponse" - } - } - }, - "description": "OK" - }, - "400": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.ErrorResponse" - } - } - }, - "description": "Bad Request" - }, - "401": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.ErrorResponse" - } - } - }, - "description": "Unauthorized" - } - }, - "summary": "List Repository Parameters", - "tags": [ - "repositories" - ] - } - }, - "/repository_parameters/external_gpg_key/": { - "post": { - "description": "Fetch a gpgkey from a remote repo.", - "operationId": "fetchGpgKey", - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/api.FetchGPGKeyRequest" - } - } - }, - "description": "request body", - "required": true, - "x-originalParamName": "body" - }, - "responses": { - "200": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/api.FetchGPGKeyResponse" - } - } - }, - "description": "OK" - }, - "400": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.ErrorResponse" - } - } - }, - "description": "Bad Request" - }, - "401": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.ErrorResponse" - } - } - }, - "description": "Unauthorized" - }, - "404": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.ErrorResponse" - } - } - }, - "description": "Not Found" - }, - "415": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.ErrorResponse" - } - } - }, - "description": "Unsupported Media Type" - }, - "500": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.ErrorResponse" - } - } - }, - "description": "Internal Server Error" - } - }, - "summary": "Fetch gpgkey from URL", - "tags": [ - "gpgKey" - ] - } - }, - "/repository_parameters/validate/": { - "post": { - "description": "This validates the parameters before creating a repository. It provides a way to ensure the accuracy and validity of the provided parameters, including a check for the presence of remote yum metadata. Users can perform necessary checks before proceeding with the creation of a repository.", - "operationId": "validateRepositoryParameters", - "requestBody": { - "content": { - "application/json": { - "schema": { - "items": { - "$ref": "#/components/schemas/api.RepositoryValidationRequest" - }, - "type": "array" - } - } - }, - "description": "request body", - "required": true, - "x-originalParamName": "body" - }, - "responses": { - "200": { - "content": { - "application/json": { - "schema": { - "items": { - "$ref": "#/components/schemas/api.RepositoryValidationResponse" - }, - "type": "array" - } - } - }, - "description": "OK" - }, - "400": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.ErrorResponse" - } - } - }, - "description": "Bad Request" - }, - "401": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.ErrorResponse" - } - } - }, - "description": "Unauthorized" - }, - "404": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.ErrorResponse" - } - } - }, - "description": "Not Found" - }, - "415": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.ErrorResponse" - } - } - }, - "description": "Unsupported Media Type" - }, - "500": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.ErrorResponse" - } - } - }, - "description": "Internal Server Error" - } - }, - "summary": "Validate parameters prior to creating a repository", - "tags": [ - "repositories" - ] - } - }, - "/rpms/names": { - "post": { - "description": "This enables users to search for RPMs (Red Hat Package Manager) in a given list of repositories.", - "operationId": "searchRpm", - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/api.ContentUnitSearchRequest" - } - } - }, - "description": "request body", - "required": true, - "x-originalParamName": "body" - }, - "responses": { - "200": { - "content": { - "application/json": { - "schema": { - "items": { - "$ref": "#/components/schemas/api.SearchRpmResponse" - }, - "type": "array" - } - } - }, - "description": "OK" - }, - "400": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.ErrorResponse" - } - } - }, - "description": "Bad Request" - }, - "401": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.ErrorResponse" - } - } - }, - "description": "Unauthorized" - }, - "404": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.ErrorResponse" - } - } - }, - "description": "Not Found" - }, - "415": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.ErrorResponse" - } - } - }, - "description": "Unsupported Media Type" - }, - "500": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.ErrorResponse" - } - } - }, - "description": "Internal Server Error" - } - }, - "summary": "Search RPMs", - "tags": [ - "rpms" - ] - } - }, - "/rpms/presence": { - "post": { - "deprecated": true, - "description": "This enables users to detect presence of RPMs (Red Hat Package Manager) in a given list of repositories.", - "operationId": "detectRpm", - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/api.DetectRpmsRequest" - } - } - }, - "description": "request body", - "required": true, - "x-originalParamName": "body" - }, - "responses": { - "200": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/api.DetectRpmsResponse" - } - } - }, - "description": "OK" - }, - "400": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.ErrorResponse" - } - } - }, - "description": "Bad Request" - }, - "401": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.ErrorResponse" - } - } - }, - "description": "Unauthorized" - }, - "404": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.ErrorResponse" - } - } - }, - "description": "Not Found" - }, - "415": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.ErrorResponse" - } - } - }, - "description": "Unsupported Media Type" - }, - "500": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.ErrorResponse" - } - } - }, - "description": "Internal Server Error" - } - }, - "summary": "Detect RPMs presence", - "tags": [ - "rpms" - ] - } - }, - "/snapshots/environments/names": { - "post": { - "description": "This enables users to search for environments in a given list of snapshots.", - "operationId": "searchSnapshotEnvironments", - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/api.SnapshotSearchRpmRequest" - } - } - }, - "description": "request body", - "required": true, - "x-originalParamName": "body" - }, - "responses": { - "200": { - "content": { - "application/json": { - "schema": { - "items": { - "$ref": "#/components/schemas/api.SearchEnvironmentResponse" - }, - "type": "array" - } - } - }, - "description": "OK" - }, - "400": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.ErrorResponse" - } - } - }, - "description": "Bad Request" - }, - "401": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.ErrorResponse" - } - } - }, - "description": "Unauthorized" - }, - "404": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.ErrorResponse" - } - } - }, - "description": "Not Found" - }, - "415": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.ErrorResponse" - } - } - }, - "description": "Unsupported Media Type" - }, - "500": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.ErrorResponse" - } - } - }, - "description": "Internal Server Error" - } - }, - "summary": "Search environments within snapshots", - "tags": [ - "environments" - ] - } - }, - "/snapshots/for_date/": { - "post": { - "description": "Get nearest snapshot by date for a list of repositories.", - "operationId": "listSnapshotsByDate", - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/api.ListSnapshotByDateRequest" - } - } - }, - "description": "request body", - "required": true, - "x-originalParamName": "body" - }, - "responses": { - "200": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/api.ListSnapshotByDateResponse" - } - } - }, - "description": "OK" - }, - "400": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.ErrorResponse" - } - } - }, - "description": "Bad Request" - }, - "401": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.ErrorResponse" - } - } - }, - "description": "Unauthorized" - }, - "404": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.ErrorResponse" - } - } - }, - "description": "Not Found" - }, - "500": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.ErrorResponse" - } - } - }, - "description": "Internal Server Error" - } - }, - "summary": "Get nearest snapshot by date for a list of repositories.", - "tags": [ - "snapshots" - ] - } - }, - "/snapshots/module_streams/search": { - "post": { - "description": "List modules and their streams for snapshots", - "operationId": "searchSnapshotModuleStreams", - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/api.SearchSnapshotModuleStreamsRequest" - } - } - }, - "description": "request body", - "required": true, - "x-originalParamName": "body" - }, - "responses": { - "200": { - "content": { - "application/json": { - "schema": { - "items": { - "$ref": "#/components/schemas/api.SearchModuleStreams" - }, - "type": "array" - } - } - }, - "description": "OK" - }, - "400": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.ErrorResponse" - } - } - }, - "description": "Bad Request" - }, - "401": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.ErrorResponse" - } - } - }, - "description": "Unauthorized" - }, - "404": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.ErrorResponse" - } - } - }, - "description": "Not Found" - }, - "500": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.ErrorResponse" - } - } - }, - "description": "Internal Server Error" - } - }, - "summary": "List modules and their streams for snapshots", - "tags": [ - "module_streams" - ] - } - }, - "/snapshots/package_groups/names": { - "post": { - "description": "This enables users to search for package groups in a given list of snapshots.", - "operationId": "searchSnapshotPackageGroups", - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/api.SnapshotSearchRpmRequest" - } - } - }, - "description": "request body", - "required": true, - "x-originalParamName": "body" - }, - "responses": { - "200": { - "content": { - "application/json": { - "schema": { - "items": { - "$ref": "#/components/schemas/api.SearchPackageGroupResponse" - }, - "type": "array" - } - } - }, - "description": "OK" - }, - "400": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.ErrorResponse" - } - } - }, - "description": "Bad Request" - }, - "401": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.ErrorResponse" - } - } - }, - "description": "Unauthorized" - }, - "404": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.ErrorResponse" - } - } - }, - "description": "Not Found" - }, - "415": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.ErrorResponse" - } - } - }, - "description": "Unsupported Media Type" - }, - "500": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.ErrorResponse" - } - } - }, - "description": "Internal Server Error" - } - }, - "summary": "Search package groups within snapshots", - "tags": [ - "packagegroups" - ] - } - }, - "/snapshots/rpms/names": { - "post": { - "description": "This enables users to search for RPMs (Red Hat Package Manager) in a given list of snapshots.", - "operationId": "searchSnapshotRpms", - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/api.SnapshotSearchRpmRequest" - } - } - }, - "description": "request body", - "required": true, - "x-originalParamName": "body" - }, - "responses": { - "200": { - "content": { - "application/json": { - "schema": { - "items": { - "$ref": "#/components/schemas/api.SearchRpmResponse" - }, - "type": "array" - } - } - }, - "description": "OK" - }, - "400": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.ErrorResponse" - } - } - }, - "description": "Bad Request" - }, - "401": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.ErrorResponse" - } - } - }, - "description": "Unauthorized" - }, - "404": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.ErrorResponse" - } - } - }, - "description": "Not Found" - }, - "415": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.ErrorResponse" - } - } - }, - "description": "Unsupported Media Type" - }, - "500": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.ErrorResponse" - } - } - }, - "description": "Internal Server Error" - } - }, - "summary": "Search RPMs within snapshots", - "tags": [ - "rpms" - ] - } - }, - "/snapshots/{snapshot_uuid}/config.repo": { - "get": { - "operationId": "getRepoConfigurationFile", - "parameters": [ - { - "description": "Identifier of the snapshot", - "in": "path", - "name": "snapshot_uuid", - "required": true, - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "content": { - "text/plain": { - "schema": { - "type": "string" - } - } - }, - "description": "OK" - }, - "400": { - "content": { - "text/plain": { - "schema": { - "$ref": "#/components/schemas/errors.ErrorResponse" - } - } - }, - "description": "Bad Request" - }, - "401": { - "content": { - "text/plain": { - "schema": { - "$ref": "#/components/schemas/errors.ErrorResponse" - } - } - }, - "description": "Unauthorized" - }, - "404": { - "content": { - "text/plain": { - "schema": { - "$ref": "#/components/schemas/errors.ErrorResponse" - } - } - }, - "description": "Not Found" - }, - "500": { - "content": { - "text/plain": { - "schema": { - "$ref": "#/components/schemas/errors.ErrorResponse" - } - } - }, - "description": "Internal Server Error" - } - }, - "summary": "Get configuration file of a repository", - "tags": [ - "repositories" - ] - } - }, - "/snapshots/{uuid}/errata": { - "get": { - "description": "List errata in a repository snapshot.", - "operationId": "listSnapshotErrata", - "parameters": [ - { - "description": "Snapshot ID.", - "in": "path", - "name": "uuid", - "required": true, - "schema": { - "type": "string" - } - }, - { - "description": "Number of items to include in response. Use it to control the number of items, particularly when dealing with large datasets. Default value: `100`.", - "in": "query", - "name": "limit", - "schema": { - "type": "integer" - } - }, - { - "description": "Starting point for retrieving a subset of results. Determines how many items to skip from the beginning of the result set. Default value:`0`.", - "in": "query", - "name": "offset", - "schema": { - "type": "integer" - } - }, - { - "description": "Term to filter and retrieve items that match the specified search criteria. Search term can include name.", - "in": "query", - "name": "search", - "schema": { - "type": "string" - } - }, - { - "description": "A comma separated list of types to control api response. Type can include `security`, `enhancement`, `bugfix`, and `other`.", - "in": "query", - "name": "type", - "schema": { - "type": "string" - } - }, - { - "description": "A comma separated list of severities to control api response. Severity can include `Important`, `Critical`, `Moderate`, `Low`, and `Unknown`.", - "in": "query", - "name": "severity", - "schema": { - "type": "string" - } - }, - { - "description": "Sort the response based on specific parameters. Sort criteria can include `issued_date`, `updated_date`, `type`, and `severity`.", - "in": "query", - "name": "sort_by", - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/api.SnapshotErrataCollectionResponse" - } - } - }, - "description": "OK" - }, - "400": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.ErrorResponse" - } - } - }, - "description": "Bad Request" - }, - "401": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.ErrorResponse" - } - } - }, - "description": "Unauthorized" - }, - "404": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.ErrorResponse" - } - } - }, - "description": "Not Found" - }, - "500": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.ErrorResponse" - } - } - }, - "description": "Internal Server Error" - } - }, - "summary": "List Snapshot Errata", - "tags": [ - "rpms" - ] - } - }, - "/snapshots/{uuid}/rpms": { - "get": { - "description": "List RPMs in a repository snapshot.", - "operationId": "listSnapshotRpms", - "parameters": [ - { - "description": "Snapshot ID.", - "in": "path", - "name": "uuid", - "required": true, - "schema": { - "type": "string" - } - }, - { - "description": "Number of items to include in response. Use it to control the number of items, particularly when dealing with large datasets. Default value: `100`.", - "in": "query", - "name": "limit", - "schema": { - "type": "integer" - } - }, - { - "description": "Starting point for retrieving a subset of results. Determines how many items to skip from the beginning of the result set. Default value:`0`.", - "in": "query", - "name": "offset", - "schema": { - "type": "integer" - } - }, - { - "description": "Term to filter and retrieve items that match the specified search criteria. Search term can include name.", - "in": "query", - "name": "search", - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/api.SnapshotRpmCollectionResponse" - } - } - }, - "description": "OK" - }, - "400": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.ErrorResponse" - } - } - }, - "description": "Bad Request" - }, - "401": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.ErrorResponse" - } - } - }, - "description": "Unauthorized" - }, - "404": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.ErrorResponse" - } - } - }, - "description": "Not Found" - }, - "500": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.ErrorResponse" - } - } - }, - "description": "Internal Server Error" - } - }, - "summary": "List Snapshot RPMs", - "tags": [ - "rpms" - ] - } - }, - "/tasks/": { - "get": { - "description": "Get the list of tasks.", - "operationId": "listTasks", - "parameters": [ - { - "description": "Starting point for retrieving a subset of results. Determines how many items to skip from the beginning of the result set. Default value:`0`.", - "in": "query", - "name": "offset", - "schema": { - "type": "integer" - } - }, - { - "description": "Number of items to include in response. Use it to control the number of items, particularly when dealing with large datasets. Default value: `100`.", - "in": "query", - "name": "limit", - "schema": { - "type": "integer" - } - }, - { - "description": "A comma separated list of statuses to control response. Statuses can include `running`, `completed`, `failed`.", - "in": "query", - "name": "status", - "schema": { - "type": "string" - } - }, - { - "description": "Filter results based on a specific task types. Helps to narrow down the results to a specific type. Task types can be `snapshot` or `introspect`. ", - "in": "query", - "name": "type", - "schema": { - "type": "string" - } - }, - { - "description": "A unique identifier of a repository to filter the results.", - "in": "query", - "name": "repository_uuid", - "schema": { - "type": "string" - } - }, - { - "description": "A unique identifier of a template to filter the results.", - "in": "query", - "name": "template_uuid", - "schema": { - "type": "string" - } - }, - { - "description": "A flag to exclude tasks for the red hat org from the query.", - "in": "query", - "name": "exclude_red_hat_org", - "schema": { - "type": "boolean" - } - } - ], - "responses": { - "200": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/api.TaskInfoCollectionResponse" - } - } - }, - "description": "OK" - }, - "400": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.ErrorResponse" - } - } - }, - "description": "Bad Request" - }, - "401": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.ErrorResponse" - } - } - }, - "description": "Unauthorized" - }, - "404": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.ErrorResponse" - } - } - }, - "description": "Not Found" - }, - "500": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.ErrorResponse" - } - } - }, - "description": "Internal Server Error" - } - }, - "summary": "List Tasks", - "tags": [ - "tasks" - ] - } - }, - "/tasks/{uuid}": { - "get": { - "description": "Get information about a specific task.", - "operationId": "getTask", - "parameters": [ - { - "description": "Task ID.", - "in": "path", - "name": "uuid", - "required": true, - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/api.TaskInfoResponse" - } - } - }, - "description": "OK" - }, - "400": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.ErrorResponse" - } - } - }, - "description": "Bad Request" - }, - "401": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.ErrorResponse" - } - } - }, - "description": "Unauthorized" - }, - "404": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.ErrorResponse" - } - } - }, - "description": "Not Found" - }, - "500": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.ErrorResponse" - } - } - }, - "description": "Internal Server Error" - } - }, - "summary": "Get Task", - "tags": [ - "tasks" - ] - } - }, - "/templates/": { - "get": { - "description": "This operation enables users to retrieve a list of templates.", - "operationId": "listTemplates", - "parameters": [ - { - "description": "Starting point for retrieving a subset of results. Determines how many items to skip from the beginning of the result set. Default value:`0`.", - "in": "query", - "name": "offset", - "schema": { - "type": "integer" - } - }, - { - "description": "Number of items to include in response. Use it to control the number of items, particularly when dealing with large datasets. Default value: `100`.", - "in": "query", - "name": "limit", - "schema": { - "type": "integer" - } - }, - { - "description": "Filter templates by version.", - "in": "query", - "name": "version", - "schema": { - "type": "string" - } - }, - { - "description": "Filter templates by architecture.", - "in": "query", - "name": "arch", - "schema": { - "type": "string" - } - }, - { - "description": "Filter templates by name.", - "in": "query", - "name": "name", - "schema": { - "type": "string" - } - }, - { - "description": "Filter templates by associated repositories using a comma separated list of repository UUIDs", - "in": "query", - "name": "repository_uuids", - "schema": { - "type": "string" - } - }, - { - "description": "Filter templates by associated snapshots using a comma separated list of snapshot UUIDs", - "in": "query", - "name": "snapshot_uuids", - "schema": { - "type": "string" - } - }, - { - "description": "Sort the response data based on specific parameters. Sort criteria can include `name`, `arch`, and `version`.", - "in": "query", - "name": "sort_by", - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/api.TemplateCollectionResponse" - } - } - }, - "description": "OK" - }, - "400": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.ErrorResponse" - } - } - }, - "description": "Bad Request" - }, - "401": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.ErrorResponse" - } - } - }, - "description": "Unauthorized" - }, - "404": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.ErrorResponse" - } - } - }, - "description": "Not Found" - }, - "500": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.ErrorResponse" - } - } - }, - "description": "Internal Server Error" - } - }, - "summary": "List Templates", - "tags": [ - "templates" - ] - }, - "post": { - "description": "This operation enables creating templates based on user preferences.", - "operationId": "createTemplate", - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/api.TemplateRequest" - } - } - }, - "description": "request body", - "required": true, - "x-originalParamName": "body" - }, - "responses": { - "201": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/api.TemplateResponse" - } - } - }, - "description": "Created", - "headers": { - "Location": { - "description": "resource URL", - "schema": { - "type": "string" - } - } - } - }, - "400": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.ErrorResponse" - } - } - }, - "description": "Bad Request" - }, - "401": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.ErrorResponse" - } - } - }, - "description": "Unauthorized" - }, - "404": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.ErrorResponse" - } - } - }, - "description": "Not Found" - }, - "415": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.ErrorResponse" - } - } - }, - "description": "Unsupported Media Type" - }, - "500": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.ErrorResponse" - } - } - }, - "description": "Internal Server Error" - } - }, - "summary": "Create Template", - "tags": [ - "templates" - ] - } - }, - "/templates/{template_uuid}/config.repo": { - "get": { - "operationId": "getTemplateRepoConfigurationFile", - "parameters": [ - { - "description": "Identifier of the template", - "in": "path", - "name": "template_uuid", - "required": true, - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "content": { - "text/plain": { - "schema": { - "type": "string" - } - } - }, - "description": "OK" - }, - "400": { - "content": { - "text/plain": { - "schema": { - "$ref": "#/components/schemas/errors.ErrorResponse" - } - } - }, - "description": "Bad Request" - }, - "401": { - "content": { - "text/plain": { - "schema": { - "$ref": "#/components/schemas/errors.ErrorResponse" - } - } - }, - "description": "Unauthorized" - }, - "404": { - "content": { - "text/plain": { - "schema": { - "$ref": "#/components/schemas/errors.ErrorResponse" - } - } - }, - "description": "Not Found" - }, - "500": { - "content": { - "text/plain": { - "schema": { - "$ref": "#/components/schemas/errors.ErrorResponse" - } - } - }, - "description": "Internal Server Error" - } - }, - "summary": "Get configuration file for all repositories in a template", - "tags": [ - "templates" - ] - } - }, - "/templates/{uuid}": { - "delete": { - "description": "This enables deleting a specific template.", - "operationId": "deleteTemplate", - "parameters": [ - { - "description": "Template ID.", - "in": "path", - "name": "uuid", - "required": true, - "schema": { - "type": "string" - } - } - ], - "responses": { - "204": { - "description": "Template was successfully deleted" - }, - "400": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.ErrorResponse" - } - } - }, - "description": "Bad Request" - }, - "401": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.ErrorResponse" - } - } - }, - "description": "Unauthorized" - }, - "404": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.ErrorResponse" - } - } - }, - "description": "Not Found" - }, - "500": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.ErrorResponse" - } - } - }, - "description": "Internal Server Error" - } - }, - "summary": "Delete a template", - "tags": [ - "templates" - ] - }, - "get": { - "description": "Get template information.", - "operationId": "getTemplate", - "parameters": [ - { - "description": "Template ID.", - "in": "path", - "name": "uuid", - "required": true, - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/api.TemplateResponse" - } - } - }, - "description": "OK" - }, - "400": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.ErrorResponse" - } - } - }, - "description": "Bad Request" - }, - "401": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.ErrorResponse" - } - } - }, - "description": "Unauthorized" - }, - "404": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.ErrorResponse" - } - } - }, - "description": "Not Found" - }, - "500": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.ErrorResponse" - } - } - }, - "description": "Internal Server Error" - } - }, - "summary": "Get Template", - "tags": [ - "templates" - ] - }, - "patch": { - "description": "This operation enables updating some subset of attributes of a template", - "operationId": "partialUpdateTemplate", - "parameters": [ - { - "description": "Template ID.", - "in": "path", - "name": "uuid", - "required": true, - "schema": { - "type": "string" - } - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/api.TemplateUpdateRequest" - } - } - }, - "description": "request body", - "required": true, - "x-originalParamName": "body" - }, - "responses": { - "201": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/api.TemplateResponse" - } - } - }, - "description": "Created", - "headers": { - "Location": { - "description": "resource URL", - "schema": { - "type": "string" - } - } - } - }, - "400": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.ErrorResponse" - } - } - }, - "description": "Bad Request" - }, - "401": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.ErrorResponse" - } - } - }, - "description": "Unauthorized" - }, - "404": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.ErrorResponse" - } - } - }, - "description": "Not Found" - }, - "415": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.ErrorResponse" - } - } - }, - "description": "Unsupported Media Type" - }, - "500": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.ErrorResponse" - } - } - }, - "description": "Internal Server Error" - } - }, - "summary": "Update some attributes of a Template", - "tags": [ - "templates" - ] - }, - "put": { - "description": "This operation enables updating all attributes of a template", - "operationId": "fullUpdateTemplate", - "parameters": [ - { - "description": "Template ID.", - "in": "path", - "name": "uuid", - "required": true, - "schema": { - "type": "string" - } - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/api.TemplateUpdateRequest" - } - } - }, - "description": "request body", - "required": true, - "x-originalParamName": "body" - }, - "responses": { - "201": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/api.TemplateResponse" - } - } - }, - "description": "Created", - "headers": { - "Location": { - "description": "resource URL", - "schema": { - "type": "string" - } - } - } - }, - "400": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.ErrorResponse" - } - } - }, - "description": "Bad Request" - }, - "401": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.ErrorResponse" - } - } - }, - "description": "Unauthorized" - }, - "404": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.ErrorResponse" - } - } - }, - "description": "Not Found" - }, - "415": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.ErrorResponse" - } - } - }, - "description": "Unsupported Media Type" - }, - "500": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.ErrorResponse" - } - } - }, - "description": "Internal Server Error" - } - }, - "summary": "Fully update all attributes of a Template", - "tags": [ - "templates" - ] - } - }, - "/templates/{uuid}/errata": { - "get": { - "description": "List errata in a content template.", - "operationId": "listTemplateErrata", - "parameters": [ - { - "description": "Template ID.", - "in": "path", - "name": "uuid", - "required": true, - "schema": { - "type": "string" - } - }, - { - "description": "Number of items to include in response. Use it to control the number of items, particularly when dealing with large datasets. Default value: `100`.", - "in": "query", - "name": "limit", - "schema": { - "type": "integer" - } - }, - { - "description": "Starting point for retrieving a subset of results. Determines how many items to skip from the beginning of the result set. Default value:`0`.", - "in": "query", - "name": "offset", - "schema": { - "type": "integer" - } - }, - { - "description": "Term to filter and retrieve items that match the specified search criteria. Search term can include name.", - "in": "query", - "name": "search", - "schema": { - "type": "string" - } - }, - { - "description": "A comma separated list of types to control api response. Type can include `security`, `enhancement`, `bugfix`, and `other`.", - "in": "query", - "name": "type", - "schema": { - "type": "string" - } - }, - { - "description": "A comma separated list of severities to control api response. Severity can include `Important`, `Critical`, `Moderate`, `Low`, and `Unknown`.", - "in": "query", - "name": "severity", - "schema": { - "type": "string" - } - }, - { - "description": "Sort the response based on specific parameters. Sort criteria can include `issued_date`, `updated_date`, `type`, and `severity`.", - "in": "query", - "name": "sort_by", - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/api.SnapshotErrataCollectionResponse" - } - } - }, - "description": "OK" - }, - "400": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.ErrorResponse" - } - } - }, - "description": "Bad Request" - }, - "401": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.ErrorResponse" - } - } - }, - "description": "Unauthorized" - }, - "404": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.ErrorResponse" - } - } - }, - "description": "Not Found" - }, - "500": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.ErrorResponse" - } - } - }, - "description": "Internal Server Error" - } - }, - "summary": "List Template Errata", - "tags": [ - "templates" - ] - } - }, - "/templates/{uuid}/rpms": { - "get": { - "description": "List RPMs in a content template.", - "operationId": "listTemplateRpms", - "parameters": [ - { - "description": "Template ID.", - "in": "path", - "name": "uuid", - "required": true, - "schema": { - "type": "string" - } - }, - { - "description": "Number of items to include in response. Use it to control the number of items, particularly when dealing with large datasets. Default value: `100`.", - "in": "query", - "name": "limit", - "schema": { - "type": "integer" - } - }, - { - "description": "Starting point for retrieving a subset of results. Determines how many items to skip from the beginning of the result set. Default value:`0`.", - "in": "query", - "name": "offset", - "schema": { - "type": "integer" - } - }, - { - "description": "Term to filter and retrieve items that match the specified search criteria. Search term can include name.", - "in": "query", - "name": "search", - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/api.SnapshotRpmCollectionResponse" - } - } - }, - "description": "OK" - }, - "400": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.ErrorResponse" - } - } - }, - "description": "Bad Request" - }, - "401": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.ErrorResponse" - } - } - }, - "description": "Unauthorized" - }, - "404": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.ErrorResponse" - } - } - }, - "description": "Not Found" - }, - "500": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.ErrorResponse" - } - } - }, - "description": "Internal Server Error" - } - }, - "summary": "List Template RPMs", - "tags": [ - "rpms" - ] - } - }, - "/templates/{uuid}/snapshots/": { - "get": { - "description": "List snapshots for a template.", - "operationId": "listSnapshotsForTemplate", - "parameters": [ - { - "description": "Template ID.", - "in": "path", - "name": "uuid", - "required": true, - "schema": { - "type": "string" - } - }, - { - "description": "Search through snapshots by repository name.", - "in": "query", - "name": "repository_search", - "schema": { - "type": "string" - } - }, - { - "description": "Sort the response data based on specific snapshot parameters. Sort criteria can include `repository_name` or `created_at`.", - "in": "query", - "name": "sort_by", - "schema": { - "type": "string" - } - }, - { - "description": "Starting point for retrieving a subset of results. Determines how many items to skip from the beginning of the result set. Default value:`0`.", - "in": "query", - "name": "offset", - "schema": { - "type": "integer" - } - }, - { - "description": "Number of items to include in response. Use it to control the number of items, particularly when dealing with large datasets. Default value: `100`.", - "in": "query", - "name": "limit", - "schema": { - "type": "integer" - } - } - ], - "responses": { - "200": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/api.SnapshotCollectionResponse" - } - } - }, - "description": "OK" - }, - "400": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.ErrorResponse" - } - } - }, - "description": "Bad Request" - }, - "401": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.ErrorResponse" - } - } - }, - "description": "Unauthorized" - }, - "404": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.ErrorResponse" - } - } - }, - "description": "Not Found" - }, - "500": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.ErrorResponse" - } - } - }, - "description": "Internal Server Error" - } - }, - "summary": "List snapshots for a template", - "tags": [ - "snapshots" - ] - } - } - }, - "servers": [ - { - "url": "https://console.redhat.com/api/content-sources/v1.0/" - } - ] -} \ No newline at end of file diff --git a/api/schema/edge.json b/api/schema/edge.json deleted file mode 100644 index b9f5004c..00000000 --- a/api/schema/edge.json +++ /dev/null @@ -1,5722 +0,0 @@ -{ - "components": { - "schemas": { - "CheckThirdPartyRepoName": { - "properties": { - "data": { - "allOf": [ - { - "$ref": "#/components/schemas/CheckThirdPartyRepoNameData" - } - ], - "description": "The data of third party repository check name result" - } - }, - "type": "object" - }, - "CheckThirdPartyRepoNameData": { - "properties": { - "isValid": { - "description": "The indicator of third party repository name validity", - "example": false, - "type": "boolean" - } - }, - "type": "object" - }, - "Commit": { - "properties": { - "arch": { - "description": "The commit architecture", - "example": "x86_64", - "type": "string" - } - }, - "type": "object" - }, - "CreateImage": { - "type": "object" - }, - "CustomPackages": { - "properties": { - "name": { - "description": "Name of custom packages", - "example": "cat", - "type": "string" - } - }, - "type": "object" - }, - "DeviceNotification": { - "properties": { - "application": { - "description": "application name", - "example": "edge-management", - "type": "string" - }, - "bundle": { - "description": "bundle name", - "example": "rhel", - "type": "string" - }, - "context": { - "description": "notification context payload data", - "example": "{\"CommitID\":\"31581\",\"UpdateID\":\"34916\"}", - "type": "string" - }, - "event_type": { - "description": "event type", - "example": "update-devices", - "type": "string" - }, - "events": { - "description": "notification events", - "items": { - "$ref": "#/components/schemas/EventNotification" - }, - "type": "array" - }, - "org_id": { - "description": "notification organization id", - "example": "11111111", - "type": "string" - }, - "recipients": { - "description": "notification recipients", - "items": { - "$ref": "#/components/schemas/RecipientNotification" - }, - "type": "array" - }, - "timestamp": { - "description": "notification timestamp", - "example": "2023-07-06T11:15:04Z", - "type": "string" - }, - "version": { - "description": "notification version", - "example": "v1.1.0", - "type": "string" - } - }, - "type": "object" - }, - "DevicesUpdate": { - "properties": { - "CommitID": { - "description": "Optional: The unique ID of the target commit", - "example": 1026, - "type": "integer" - }, - "DevicesUUID": { - "description": "List of devices uuids to update", - "example": [ - "b579a578-1a6f-48d5-8a45-21f2a656a5d4", - "1abb288d-6d88-4e2d-bdeb-fcc536be58ec" - ], - "items": { - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - }, - "EventNotification": { - "properties": { - "payload": { - "description": "notification event payload", - "example": "{\"ID\":\"\"}", - "type": "string" - } - }, - "type": "object" - }, - "ImageResponse": { - "properties": { - "Account": { - "type": "string" - }, - "Commit": { - "$ref": "#/components/schemas/models.Commit" - }, - "CommitID": { - "type": "integer" - }, - "CreatedAt": { - "$ref": "#/components/schemas/models.EdgeAPITime" - }, - "CustomPackages": { - "items": { - "$ref": "#/components/schemas/models.Package" - }, - "type": "array" - }, - "DeletedAt": { - "$ref": "#/components/schemas/gorm.DeletedAt" - }, - "Description": { - "type": "string" - }, - "Distribution": { - "type": "string" - }, - "ID": { - "type": "integer" - }, - "ImageSetID": { - "description": "TODO: Wipe staging database and set to not nullable", - "type": "integer" - }, - "ImageType": { - "description": "TODO: Remove as soon as the frontend stops using", - "type": "string" - }, - "Installer": { - "$ref": "#/components/schemas/models.Installer" - }, - "InstallerID": { - "type": "integer" - }, - "Name": { - "type": "string" - }, - "OutputTypes": { - "items": { - "type": "string" - }, - "type": "array" - }, - "Packages": { - "items": { - "$ref": "#/components/schemas/models.Package" - }, - "type": "array" - }, - "Status": { - "type": "string" - }, - "SystemsRunning": { - "description": "only for forms", - "type": "integer" - }, - "ThirdPartyRepositories": { - "items": { - "$ref": "#/components/schemas/models.ThirdPartyRepo" - }, - "type": "array" - }, - "TotalPackages": { - "description": "only for forms", - "type": "integer" - }, - "UpdatedAt": { - "$ref": "#/components/schemas/models.EdgeAPITime" - }, - "Version": { - "type": "integer" - }, - "org_id": { - "type": "string" - }, - "request_id": { - "description": "storing for logging reference on resume", - "type": "string" - } - }, - "type": "object" - }, - "ImageValidationRequest": { - "properties": { - "ID": { - "description": "the unique ID of the image", - "example": 1029, - "type": "integer" - } - }, - "type": "object" - }, - "ImageValidationResponse": { - "properties": { - "UpdateValid": { - "example": true, - "type": "boolean" - } - }, - "type": "object" - }, - "RecipientNotification": { - "properties": { - "ignore_user_preferences": { - "description": "notification recipient to ignore user preferences", - "example": false, - "type": "boolean" - }, - "only_admins": { - "description": "notification recipient for only admins", - "example": false, - "type": "boolean" - }, - "users": { - "description": "notification recipient users", - "example": [ - "user-id" - ], - "items": { - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - }, - "ThirdPartyRepo": { - "properties": { - "Description": { - "description": "The description of the third party repository", - "example": "a repo for some utilities", - "type": "string" - }, - "ID": { - "description": "The unique ID of the third party repository", - "example": 1028, - "type": "integer" - }, - "Name": { - "description": "The name of the third party repository", - "example": "my_custom_repo", - "type": "string" - }, - "URL": { - "description": "The URL of the third party repository", - "example": "https://public.example.com/my_custom_repo", - "type": "string" - } - }, - "type": "object" - }, - "ThirdPartyRepoList": { - "properties": { - "count": { - "description": "The overall count of the stored third party repositories", - "example": 25, - "type": "integer" - }, - "data": { - "description": "The data list of the third party repositories", - "items": { - "$ref": "#/components/schemas/ThirdPartyRepo" - }, - "type": "array" - } - }, - "type": "object" - }, - "Update": { - "properties": { - "ChangesRefs": { - "description": "Whether this update is changing device ostree ref", - "example": false, - "type": "boolean" - }, - "Commit": { - "allOf": [ - { - "$ref": "#/components/schemas/models.UpdateCommitAPI" - } - ], - "description": "The device Update target commit" - }, - "Devices": { - "description": "The current devices to update", - "items": { - "$ref": "#/components/schemas/UpdateDevice" - }, - "type": "array" - }, - "DispatchRecords": { - "description": "The current update dispatcher records", - "items": { - "$ref": "#/components/schemas/UpdateDispatchRecord" - }, - "type": "array" - }, - "ID": { - "description": "The unique ID of device update", - "example": 1026, - "type": "integer" - }, - "OldCommits": { - "description": "The device alternate commits from current device commit to target commit", - "items": { - "$ref": "#/components/schemas/models.UpdateCommitAPI" - }, - "type": "array" - }, - "Repo": { - "allOf": [ - { - "$ref": "#/components/schemas/UpdateRepo" - } - ], - "description": "The current repository built from this update" - }, - "Status": { - "description": "the current devices update status", - "example": "BUILDING", - "type": "string" - } - }, - "type": "object" - }, - "UpdateDevice": { - "properties": { - "Connected": { - "description": "Is the device connected", - "example": true, - "type": "boolean" - }, - "CurrentHash": { - "description": "the current device loaded commit hash", - "example": "0bd8dfe9856aa5bb1683e85f123bfe7785d45fbdb6f10372ff2c80e703400446", - "type": "string" - }, - "ID": { - "description": "The unique ID of the device", - "example": 1096, - "type": "integer" - }, - "ImageID": { - "description": "The current related image ID", - "example": 10778, - "type": "integer" - }, - "Name": { - "description": "the device inventory name", - "example": "teat-host.example.com", - "type": "string" - }, - "RHCClientID": { - "description": "The device RHC client ID", - "example": "5f9ac7d3-2264-4dad-a5a0-39c91c071c8a", - "type": "string" - }, - "UUID": { - "description": "The device inventory uuid", - "example": "54880418-b7c2-402e-93e5-287e168de7a6", - "type": "string" - }, - "UpdateAvailable": { - "description": "Whether an update is available", - "example": true, - "type": "boolean" - } - }, - "type": "object" - }, - "UpdateDispatchRecord": { - "properties": { - "DeviceID": { - "description": "The unique ID of the device being updated", - "example": 12789, - "type": "integer" - }, - "ID": { - "description": "The unique ID of the DispatcherRecord", - "example": 1089, - "type": "integer" - }, - "PlaybookDispatcherID": { - "description": "The playbook dispatcher job id", - "example": "c84cfd11-745c-4ee3-b87d-057a96732415", - "type": "string" - }, - "PlaybookURL": { - "description": "The generated playbook url", - "example": "https://console.redhat.com/api/edge/v1/updates/1026/update-playbook.yml", - "type": "string" - }, - "Reason": { - "description": "In case of failure the error reason returned by the playbook-dispatcher service", - "example": "", - "type": "string" - }, - "Status": { - "description": "The status of device update", - "example": "BUILDING", - "type": "string" - } - }, - "type": "object" - }, - "UpdateRepo": { - "properties": { - "ID": { - "description": "The unique ID of the update repository", - "example": 53218, - "type": "integer" - }, - "RepoStatus": { - "description": "The status of the device update repository building", - "example": "SUCCESS", - "type": "string" - }, - "RepoURL": { - "description": "The url of the update ostree repository", - "example": "https://storage-host.example.com/53218/upd/53218/repo", - "type": "string" - } - }, - "type": "object" - }, - "errors.BadRequest": { - "properties": { - "Code": { - "type": "string" - }, - "Status": { - "type": "integer" - }, - "Title": { - "type": "string" - } - }, - "type": "object" - }, - "errors.InternalServerError": { - "properties": { - "Code": { - "type": "string" - }, - "Status": { - "type": "integer" - }, - "Title": { - "type": "string" - } - }, - "type": "object" - }, - "errors.NotFound": { - "properties": { - "Code": { - "type": "string" - }, - "Status": { - "type": "integer" - }, - "Title": { - "type": "string" - } - }, - "type": "object" - }, - "gorm.DeletedAt": { - "properties": { - "time": { - "type": "string" - }, - "valid": { - "description": "Valid is true if Time is not NULL", - "type": "boolean" - } - }, - "type": "object" - }, - "models.CheckGroupNameParamAPI": { - "properties": { - "Name": { - "description": "device group name", - "example": "my-device-group", - "type": "string" - } - }, - "type": "object" - }, - "models.Commit": { - "properties": { - "Account": { - "type": "string" - }, - "Arch": { - "type": "string" - }, - "BlueprintToml": { - "type": "string" - }, - "BuildDate": { - "type": "string" - }, - "BuildNumber": { - "type": "integer" - }, - "ChangesRefs": { - "type": "boolean" - }, - "ComposeJobID": { - "type": "string" - }, - "CreatedAt": { - "$ref": "#/components/schemas/models.EdgeAPITime" - }, - "DeletedAt": { - "$ref": "#/components/schemas/gorm.DeletedAt" - }, - "ID": { - "type": "integer" - }, - "ImageBuildHash": { - "type": "string" - }, - "ImageBuildParentHash": { - "type": "string" - }, - "ImageBuildTarURL": { - "type": "string" - }, - "InstalledPackages": { - "items": { - "$ref": "#/components/schemas/models.InstalledPackage" - }, - "type": "array" - }, - "OSTreeCommit": { - "type": "string" - }, - "OSTreeParentCommit": { - "type": "string" - }, - "OSTreeParentRef": { - "type": "string" - }, - "OSTreeRef": { - "type": "string" - }, - "Repo": { - "$ref": "#/components/schemas/models.Repo" - }, - "RepoID": { - "type": "integer" - }, - "Status": { - "type": "string" - }, - "UpdatedAt": { - "$ref": "#/components/schemas/models.EdgeAPITime" - }, - "external": { - "type": "boolean" - }, - "name": { - "type": "string" - }, - "org_id": { - "type": "string" - } - }, - "type": "object" - }, - "models.CreateDeviceGroupAPI": { - "properties": { - "DevicesAPI": { - "description": "Devices of group", - "items": { - "$ref": "#/components/schemas/models.DeviceForDeviceGroupAPI" - }, - "type": "array" - }, - "name": { - "description": "the device group name", - "example": "my-device-group", - "type": "string" - }, - "type": { - "description": "the device group type", - "example": "static", - "type": "string" - } - }, - "type": "object" - }, - "models.Device": { - "properties": { - "Account": { - "type": "string" - }, - "AvailableHash": { - "type": "string" - }, - "Connected": { - "type": "boolean" - }, - "CreatedAt": { - "$ref": "#/components/schemas/models.EdgeAPITime" - }, - "CurrentHash": { - "type": "string" - }, - "DeletedAt": { - "$ref": "#/components/schemas/gorm.DeletedAt" - }, - "DevicesGroups": { - "items": { - "$ref": "#/components/schemas/models.DeviceGroup" - }, - "type": "array" - }, - "ID": { - "type": "integer" - }, - "ImageID": { - "type": "integer" - }, - "LastSeen": { - "$ref": "#/components/schemas/models.EdgeAPITime" - }, - "Name": { - "type": "string" - }, - "RHCClientID": { - "type": "string" - }, - "UUID": { - "type": "string" - }, - "UpdateAvailable": { - "type": "boolean" - }, - "UpdateTransaction": { - "items": { - "$ref": "#/components/schemas/models.UpdateTransaction" - }, - "type": "array" - }, - "UpdatedAt": { - "$ref": "#/components/schemas/models.EdgeAPITime" - }, - "org_id": { - "type": "string" - } - }, - "type": "object" - }, - "models.DeviceAPI": { - "properties": { - "AvailableHash": { - "description": "Hash that available", - "example": "true", - "type": "string" - }, - "Connected": { - "description": "If Device connect of not", - "example": true, - "type": "boolean" - }, - "CurrentHash": { - "type": "string" - }, - "ImageID": { - "description": "image id of device`", - "example": 12834, - "type": "integer" - }, - "Name": { - "description": "Name of device", - "example": "device_name", - "type": "string" - }, - "RHCClientID": { - "description": "RHC Client ID", - "type": "string" - }, - "UUID": { - "description": "UUID of edge device", - "example": "ba-93ba-49a3-b4ae-a6c8acdc4736", - "type": "string" - }, - "UpdateAvailable": { - "description": "If there is Update available", - "example": true, - "type": "boolean" - }, - "UpdateTransaction": { - "items": { - "$ref": "#/components/schemas/models.UpdateTransaction" - }, - "type": "array" - }, - "booted": { - "description": "Booted status is referring to the LastDeployment of this device", - "example": true, - "type": "boolean" - }, - "deviceName": { - "type": "string" - }, - "devicesGroups": { - "description": "device groups", - "items": { - "$ref": "#/components/schemas/models.DeviceGroupAPI" - }, - "type": "array" - }, - "lastSeen": { - "description": "Last datetime that device updated", - "type": "string" - } - }, - "type": "object" - }, - "models.DeviceDetailsAPI": { - "properties": { - "Device": { - "allOf": [ - { - "$ref": "#/components/schemas/models.EdgeDeviceAPI" - } - ], - "description": "Details of device like name, LastSeen and more" - }, - "DeviceUpdating": { - "description": "If there is update to device", - "example": true, - "type": "boolean" - }, - "DevicesGroups": { - "description": "Device's groups", - "items": { - "$ref": "#/components/schemas/models.DeviceGroupAPI" - }, - "type": "array" - }, - "ImageInfo": { - "allOf": [ - { - "$ref": "#/components/schemas/models.ImageInfo" - } - ], - "description": "Information of device's image" - }, - "UpdateTransactions": { - "items": { - "$ref": "#/components/schemas/models.UpdateTransactionAPI" - }, - "type": "array" - } - }, - "type": "object" - }, - "models.DeviceDetailsListAPI": { - "properties": { - "count": { - "description": "total number of device", - "example": 40, - "type": "integer" - }, - "data": { - "description": "List of Devices", - "items": { - "$ref": "#/components/schemas/models.DeviceDetailsAPI" - }, - "type": "array" - }, - "total": { - "description": "total number of device", - "example": 40, - "type": "integer" - } - }, - "type": "object" - }, - "models.DeviceForDeviceGroupAPI": { - "properties": { - "UUID": { - "description": "device uuid", - "example": "68485bb8-6427-40ad-8711-93b6a5b4deac", - "type": "string" - } - }, - "type": "object" - }, - "models.DeviceGroup": { - "properties": { - "Account": { - "type": "string" - }, - "CreatedAt": { - "$ref": "#/components/schemas/models.EdgeAPITime" - }, - "DeletedAt": { - "$ref": "#/components/schemas/gorm.DeletedAt" - }, - "Devices": { - "items": { - "$ref": "#/components/schemas/models.Device" - }, - "type": "array" - }, - "ID": { - "type": "integer" - }, - "Name": { - "type": "string" - }, - "Type": { - "type": "string" - }, - "UpdatedAt": { - "$ref": "#/components/schemas/models.EdgeAPITime" - }, - "ValidUpdate": { - "type": "boolean" - }, - "org_id": { - "type": "string" - } - }, - "type": "object" - }, - "models.DeviceGroupAPI": { - "properties": { - "Devices": { - "description": "Devices that belong to the group", - "items": { - "$ref": "#/components/schemas/models.DeviceAPI" - }, - "type": "array" - }, - "Name": { - "description": "The device group name`", - "example": "device_group name", - "type": "string" - }, - "Type": { - "description": "The device group type``", - "example": "static", - "type": "string" - }, - "ValidUpdate": { - "description": "indicate if the update is valid", - "example": true, - "type": "boolean" - } - }, - "type": "object" - }, - "models.DeviceGroupViewAPI": { - "properties": { - "DeviceGroup": { - "allOf": [ - { - "$ref": "#/components/schemas/models.DeviceGroup" - } - ], - "description": "device group data" - }, - "DevicesView": { - "allOf": [ - { - "$ref": "#/components/schemas/models.DeviceGroupViewResponseAPI" - } - ], - "description": "device group detail" - } - }, - "type": "object" - }, - "models.DeviceGroupViewResponseAPI": { - "properties": { - "Devices": { - "allOf": [ - { - "$ref": "#/components/schemas/models.ImageSetImagePackagesAPI" - } - ], - "description": "all devices in a group" - }, - "Total": { - "description": "count of devices", - "example": 10, - "type": "integer" - } - }, - "type": "object" - }, - "models.DeviceViewAPI": { - "properties": { - "DeviceGroups": { - "description": "Device's groups", - "items": { - "$ref": "#/components/schemas/models.DeviceGroupAPI" - }, - "type": "array" - }, - "DeviceID": { - "description": "ID of device", - "example": 1913277, - "type": "integer" - }, - "DeviceName": { - "description": "Name of device", - "example": "device_name", - "type": "string" - }, - "DeviceUUID": { - "description": "UUID of Device", - "example": "a-8bdf-a21accb24925", - "type": "string" - }, - "DispatcherReason": { - "description": "Reason of Dispatch", - "type": "string" - }, - "DispatcherStatus": { - "description": "Status of Dispatch", - "type": "string" - }, - "ImageID": { - "description": "ID of image", - "example": 323241, - "type": "integer" - }, - "ImageName": { - "description": "Name of image", - "example": "image_name", - "type": "string" - }, - "ImageSetID": { - "description": "ID of image set", - "example": 33341, - "type": "integer" - }, - "LastSeen": { - "allOf": [ - { - "$ref": "#/components/schemas/models.EdgeAPITime" - } - ], - "description": "Last datetime that device updated" - }, - "Status": { - "description": "Status of device", - "example": "SUCCESS", - "type": "string" - }, - "UpdateAvailable": { - "description": "indicate if there is update to device", - "example": true, - "type": "boolean" - } - }, - "type": "object" - }, - "models.DeviceViewListAPI": { - "properties": { - "devices": { - "description": "List of Devices", - "items": { - "$ref": "#/components/schemas/models.DeviceViewAPI" - }, - "type": "array" - }, - "total": { - "description": "Total number of device", - "example": 40, - "type": "integer" - } - }, - "type": "object" - }, - "models.DispatchRecord": { - "properties": { - "CreatedAt": { - "$ref": "#/components/schemas/models.EdgeAPITime" - }, - "DeletedAt": { - "$ref": "#/components/schemas/gorm.DeletedAt" - }, - "Device": { - "$ref": "#/components/schemas/models.Device" - }, - "DeviceID": { - "type": "integer" - }, - "ID": { - "type": "integer" - }, - "PlaybookDispatcherID": { - "type": "string" - }, - "PlaybookURL": { - "type": "string" - }, - "Reason": { - "type": "string" - }, - "Status": { - "type": "string" - }, - "UpdatedAt": { - "$ref": "#/components/schemas/models.EdgeAPITime" - } - }, - "type": "object" - }, - "models.DispatchRecordAPI": { - "properties": { - "Device": { - "$ref": "#/components/schemas/models.DeviceAPI" - }, - "DeviceID": { - "description": "ID of device", - "example": 1913277, - "type": "integer" - }, - "PlaybookDispatcherID": { - "type": "string" - }, - "PlaybookURL": { - "type": "string" - }, - "Reason": { - "type": "string" - }, - "Status": { - "description": "Status of device", - "example": "SUCCESS", - "type": "string" - } - }, - "type": "object" - }, - "models.EdgeAPITime": { - "properties": { - "time": { - "type": "string" - }, - "valid": { - "description": "Valid is true if Time is not NULL", - "type": "boolean" - } - }, - "type": "object" - }, - "models.EdgeDeviceAPI": { - "properties": { - "AvailableHash": { - "description": "Hash that available", - "example": "true", - "type": "string" - }, - "Connected": { - "description": "If Device connect of not", - "example": true, - "type": "boolean" - }, - "CurrentHash": { - "type": "string" - }, - "DevicesGroups": { - "description": "device groups", - "items": { - "$ref": "#/components/schemas/models.DeviceGroupAPI" - }, - "type": "array" - }, - "ImageID": { - "description": "image id of device", - "example": 12834, - "type": "integer" - }, - "LastSeen": { - "allOf": [ - { - "$ref": "#/components/schemas/models.EdgeAPITime" - } - ], - "description": "Last datetime that device updated" - }, - "Name": { - "description": "Name of Edge Device", - "type": "string" - }, - "RHCClientID": { - "description": "RHC Client ID", - "type": "string" - }, - "UUID": { - "description": "UUID of edge device", - "example": "ba-93ba-49a3-b4ae-a6c8acdc4736", - "type": "string" - }, - "UpdateAvailable": { - "description": "If there is update available", - "example": true, - "type": "boolean" - }, - "UpdateTransaction": { - "items": { - "$ref": "#/components/schemas/models.UpdateTransaction" - }, - "type": "array" - }, - "booted": { - "description": "Booted status is referring to the LastDeployment of this device", - "example": true, - "type": "boolean" - }, - "deviceName": { - "description": "The device name", - "example": "test_device_api_static", - "type": "string" - } - }, - "type": "object" - }, - "models.FilterByDevicesAPI": { - "properties": { - "devices_uuid": { - "description": "Devices UUID", - "items": { - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - }, - "models.Image": { - "properties": { - "Account": { - "type": "string" - }, - "Commit": { - "$ref": "#/components/schemas/models.Commit" - }, - "CommitID": { - "type": "integer" - }, - "CreatedAt": { - "$ref": "#/components/schemas/models.EdgeAPITime" - }, - "CustomPackages": { - "items": { - "$ref": "#/components/schemas/models.Package" - }, - "type": "array" - }, - "DeletedAt": { - "$ref": "#/components/schemas/gorm.DeletedAt" - }, - "Description": { - "type": "string" - }, - "Distribution": { - "type": "string" - }, - "ID": { - "type": "integer" - }, - "ImageSetID": { - "description": "TODO: Wipe staging database and set to not nullable", - "type": "integer" - }, - "ImageType": { - "description": "TODO: Remove as soon as the frontend stops using", - "type": "string" - }, - "Installer": { - "$ref": "#/components/schemas/models.Installer" - }, - "InstallerID": { - "type": "integer" - }, - "Name": { - "type": "string" - }, - "OutputTypes": { - "items": { - "type": "string" - }, - "type": "array" - }, - "Packages": { - "items": { - "$ref": "#/components/schemas/models.Package" - }, - "type": "array" - }, - "Status": { - "type": "string" - }, - "SystemsRunning": { - "description": "only for forms", - "type": "integer" - }, - "ThirdPartyRepositories": { - "items": { - "$ref": "#/components/schemas/models.ThirdPartyRepo" - }, - "type": "array" - }, - "TotalPackages": { - "description": "only for forms", - "type": "integer" - }, - "UpdatedAt": { - "$ref": "#/components/schemas/models.EdgeAPITime" - }, - "Version": { - "type": "integer" - }, - "org_id": { - "type": "string" - }, - "request_id": { - "description": "storing for logging reference on resume", - "type": "string" - } - }, - "type": "object" - }, - "models.ImageDetailAPI": { - "properties": { - "additional_packages": { - "description": "Number of additional packages", - "example": 3, - "type": "integer" - }, - "image": { - "$ref": "#/components/schemas/models.Image" - }, - "packages": { - "description": "Number of packages", - "example": 3, - "type": "integer" - }, - "update_added": { - "description": "Number of added update", - "example": 3, - "type": "integer" - }, - "update_removed": { - "description": "Number of removed update", - "example": 2, - "type": "integer" - }, - "update_updated": { - "description": "Number of updated update", - "example": 3, - "type": "integer" - } - }, - "type": "object" - }, - "models.ImageInfo": { - "properties": { - "Count": { - "type": "integer" - }, - "Image": { - "$ref": "#/components/schemas/models.Image" - }, - "RollbackImage": { - "$ref": "#/components/schemas/models.Image" - }, - "UpdatesAvailable": { - "items": { - "$ref": "#/components/schemas/models.ImageUpdateAvailable" - }, - "type": "array" - } - }, - "type": "object" - }, - "models.ImageSetAPI": { - "properties": { - "CreatedAt": { - "$ref": "#/components/schemas/models.EdgeAPITime" - }, - "DeletedAt": { - "$ref": "#/components/schemas/gorm.DeletedAt" - }, - "ID": { - "type": "integer" - }, - "Images": { - "description": "images of image set", - "items": { - "$ref": "#/components/schemas/models.Image" - }, - "type": "array" - }, - "UpdatedAt": { - "$ref": "#/components/schemas/models.EdgeAPITime" - }, - "name": { - "description": "the image set name", - "example": "my-edge-image", - "type": "string" - }, - "version": { - "description": "the image set version", - "example": 1, - "type": "integer" - } - }, - "type": "object" - }, - "models.ImageSetDetailsResponseAPI": { - "properties": { - "Count": { - "description": "count of image-sets", - "example": 10, - "type": "integer" - }, - "Data": { - "allOf": [ - { - "$ref": "#/components/schemas/models.ImageSetImagePackagesAPI" - } - ], - "description": "all data of image-sets" - } - }, - "type": "object" - }, - "models.ImageSetDevicesAPI": { - "properties": { - "Count": { - "description": "count of image-set's devices", - "example": 10, - "type": "integer" - }, - "Data": { - "description": "Data of image set's devices", - "items": { - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - }, - "models.ImageSetIDViewAPI": { - "properties": { - "ImageBuildIsoURL": { - "description": "The image-set latest available image ISO", - "example": "/api/edge/v1/storage/isos/432", - "type": "string" - }, - "ImageSet": { - "allOf": [ - { - "$ref": "#/components/schemas/models.ImageSetAPI" - } - ], - "description": "image set data" - }, - "LastImageDetails": { - "allOf": [ - { - "$ref": "#/components/schemas/models.ImageDetailAPI" - } - ], - "description": "The image-set latest image details" - } - }, - "type": "object" - }, - "models.ImageSetImageIDViewAPI": { - "properties": { - "ImageBuildIsoURL": { - "description": "The image-set latest available image ISO", - "example": "/api/edge/v1/storage/isos/432", - "type": "string" - }, - "ImageDetails": { - "allOf": [ - { - "$ref": "#/components/schemas/models.ImageDetailAPI" - } - ], - "description": "the requested image details" - }, - "ImageSet": { - "allOf": [ - { - "$ref": "#/components/schemas/models.ImageSetAPI" - } - ], - "description": "image set data" - } - }, - "type": "object" - }, - "models.ImageSetImagePackagesAPI": { - "properties": { - "image_build_iso_url": { - "description": "The image-set latest available image ISO", - "example": "/api/edge/v1/storage/isos/432", - "type": "string" - }, - "image_set": { - "allOf": [ - { - "$ref": "#/components/schemas/models.ImageSetAPI" - } - ], - "description": "image set data" - }, - "images": { - "description": "image detail", - "items": { - "$ref": "#/components/schemas/models.ImageDetailAPI" - }, - "type": "array" - } - }, - "type": "object" - }, - "models.ImageSetInstallerURLAPI": { - "properties": { - "image_build_iso_url": { - "description": "The image-set latest available image ISO", - "example": "/api/edge/v1/storage/isos/432", - "type": "string" - }, - "image_set": { - "allOf": [ - { - "$ref": "#/components/schemas/models.ImageSetAPI" - } - ], - "description": "image set data" - } - }, - "type": "object" - }, - "models.ImageSetView": { - "properties": { - "Distribution": { - "type": "string" - }, - "ID": { - "type": "integer" - }, - "ImageBuildIsoURL": { - "type": "string" - }, - "ImageID": { - "type": "integer" - }, - "Name": { - "type": "string" - }, - "OutputTypes": { - "items": { - "type": "string" - }, - "type": "array" - }, - "Status": { - "type": "string" - }, - "UpdatedAt": { - "$ref": "#/components/schemas/models.EdgeAPITime" - }, - "Version": { - "type": "integer" - } - }, - "type": "object" - }, - "models.ImageSetsResponseAPI": { - "properties": { - "Count": { - "description": "count of image-sets", - "example": 10, - "type": "integer" - }, - "Data": { - "description": "all data of image-sets", - "items": { - "$ref": "#/components/schemas/models.ImageSetInstallerURLAPI" - }, - "type": "array" - } - }, - "type": "object" - }, - "models.ImageSetsViewResponseAPI": { - "properties": { - "count": { - "description": "count of image-sets", - "example": 10, - "type": "integer" - }, - "data": { - "description": "data of image set view", - "items": { - "$ref": "#/components/schemas/models.ImageSetView" - }, - "type": "array" - } - }, - "type": "object" - }, - "models.ImageUpdateAvailable": { - "properties": { - "CanUpdate": { - "type": "boolean" - }, - "Image": { - "$ref": "#/components/schemas/models.Image" - }, - "PackageDiff": { - "$ref": "#/components/schemas/models.PackageDiff" - } - }, - "type": "object" - }, - "models.ImageView": { - "properties": { - "CommitCheckSum": { - "type": "string" - }, - "CreatedAt": { - "$ref": "#/components/schemas/models.EdgeAPITime" - }, - "ID": { - "type": "integer" - }, - "ImageBuildIsoURL": { - "type": "string" - }, - "ImageType": { - "type": "string" - }, - "Name": { - "type": "string" - }, - "OutputTypes": { - "items": { - "type": "string" - }, - "type": "array" - }, - "Status": { - "type": "string" - }, - "Version": { - "type": "integer" - } - }, - "type": "object" - }, - "models.ImagesViewDataAPI": { - "properties": { - "count": { - "description": "total number of image view data", - "example": 100, - "type": "integer" - }, - "data": { - "items": { - "$ref": "#/components/schemas/models.ImageView" - }, - "type": "array" - } - }, - "type": "object" - }, - "models.InstalledPackage": { - "properties": { - "CreatedAt": { - "$ref": "#/components/schemas/models.EdgeAPITime" - }, - "DeletedAt": { - "$ref": "#/components/schemas/gorm.DeletedAt" - }, - "ID": { - "type": "integer" - }, - "UpdatedAt": { - "$ref": "#/components/schemas/models.EdgeAPITime" - }, - "arch": { - "type": "string" - }, - "commits": { - "items": { - "$ref": "#/components/schemas/models.Commit" - }, - "type": "array" - }, - "epoch": { - "type": "string" - }, - "name": { - "type": "string" - }, - "release": { - "type": "string" - }, - "sigmd5": { - "type": "string" - }, - "signature": { - "type": "string" - }, - "type": { - "type": "string" - }, - "version": { - "type": "string" - } - }, - "type": "object" - }, - "models.Installer": { - "properties": { - "Account": { - "type": "string" - }, - "Checksum": { - "type": "string" - }, - "ComposeJobID": { - "type": "string" - }, - "CreatedAt": { - "$ref": "#/components/schemas/models.EdgeAPITime" - }, - "DeletedAt": { - "$ref": "#/components/schemas/gorm.DeletedAt" - }, - "ID": { - "type": "integer" - }, - "ImageBuildISOURL": { - "type": "string" - }, - "SshKey": { - "type": "string" - }, - "Status": { - "type": "string" - }, - "UpdatedAt": { - "$ref": "#/components/schemas/models.EdgeAPITime" - }, - "Username": { - "type": "string" - }, - "org_id": { - "type": "string" - } - }, - "type": "object" - }, - "models.Package": { - "properties": { - "CreatedAt": { - "$ref": "#/components/schemas/models.EdgeAPITime" - }, - "DeletedAt": { - "$ref": "#/components/schemas/gorm.DeletedAt" - }, - "ID": { - "type": "integer" - }, - "Name": { - "type": "string" - }, - "UpdatedAt": { - "$ref": "#/components/schemas/models.EdgeAPITime" - } - }, - "type": "object" - }, - "models.PackageDiff": { - "properties": { - "Added": { - "items": { - "$ref": "#/components/schemas/models.InstalledPackage" - }, - "type": "array" - }, - "Removed": { - "items": { - "$ref": "#/components/schemas/models.InstalledPackage" - }, - "type": "array" - }, - "Upgraded": { - "items": { - "$ref": "#/components/schemas/models.InstalledPackage" - }, - "type": "array" - } - }, - "type": "object" - }, - "models.PostDeviceForDeviceGroupAPI": { - "properties": { - "Name": { - "description": "device name", - "example": "localhost", - "type": "string" - }, - "UUID": { - "description": "device uuid", - "example": "68485bb8-6427-40ad-8711-93b6a5b4deac", - "type": "string" - } - }, - "type": "object" - }, - "models.PutGroupNameParamAPI": { - "properties": { - "Name": { - "description": "device group name", - "example": "my-device-group", - "type": "string" - }, - "Type": { - "description": "device group type", - "example": "static", - "type": "string" - } - }, - "type": "object" - }, - "models.Repo": { - "properties": { - "CreatedAt": { - "$ref": "#/components/schemas/models.EdgeAPITime" - }, - "DeletedAt": { - "$ref": "#/components/schemas/gorm.DeletedAt" - }, - "ID": { - "type": "integer" - }, - "RepoStatus": { - "type": "string" - }, - "RepoURL": { - "type": "string" - }, - "UpdatedAt": { - "$ref": "#/components/schemas/models.EdgeAPITime" - } - }, - "type": "object" - }, - "models.SuccessPlaceholderResponse": { - "type": "object" - }, - "models.ThirdPartyRepo": { - "properties": { - "CreatedAt": { - "$ref": "#/components/schemas/models.EdgeAPITime" - }, - "DeletedAt": { - "$ref": "#/components/schemas/gorm.DeletedAt" - }, - "Description": { - "type": "string" - }, - "ID": { - "type": "integer" - }, - "Images": { - "items": { - "$ref": "#/components/schemas/models.Image" - }, - "type": "array" - }, - "Name": { - "type": "string" - }, - "URL": { - "type": "string" - }, - "UpdatedAt": { - "$ref": "#/components/schemas/models.EdgeAPITime" - }, - "account": { - "type": "string" - }, - "distribution_arch": { - "type": "string" - }, - "distribution_version": { - "items": { - "type": "string" - }, - "type": "array" - }, - "gpg_key": { - "type": "string" - }, - "org_id": { - "type": "string" - }, - "package_count": { - "type": "integer" - }, - "uuid": { - "type": "string" - } - }, - "type": "object" - }, - "models.UpdateCommitAPI": { - "properties": { - "ID": { - "description": "The unique ID of the commit", - "example": 1056, - "type": "integer" - }, - "ImageBuildTarURL": { - "description": "The commit tar url", - "example": "https://storage-host.example.com/v2/99999999/tar/59794/tmp/repos/59794/repo.tar", - "type": "string" - }, - "OSTreeCommit": { - "description": "The ostree commit hash", - "example": "9bd8dfe9856aa5bb1683e85f123bfe7785d45fbdb6f10372ff2c80e703400999", - "type": "string" - }, - "OSTreeRef": { - "description": "The commit ostree ref", - "example": "rhel/9/x86_64/edge", - "type": "string" - } - }, - "type": "object" - }, - "models.UpdateTransaction": { - "properties": { - "Account": { - "type": "string" - }, - "ChangesRefs": { - "type": "boolean" - }, - "Commit": { - "$ref": "#/components/schemas/models.Commit" - }, - "CommitID": { - "type": "integer" - }, - "CreatedAt": { - "$ref": "#/components/schemas/models.EdgeAPITime" - }, - "DeletedAt": { - "$ref": "#/components/schemas/gorm.DeletedAt" - }, - "Devices": { - "items": { - "$ref": "#/components/schemas/models.Device" - }, - "type": "array" - }, - "DispatchRecords": { - "items": { - "$ref": "#/components/schemas/models.DispatchRecord" - }, - "type": "array" - }, - "ID": { - "type": "integer" - }, - "OldCommits": { - "items": { - "$ref": "#/components/schemas/models.Commit" - }, - "type": "array" - }, - "Repo": { - "$ref": "#/components/schemas/models.Repo" - }, - "RepoID": { - "type": "integer" - }, - "Status": { - "type": "string" - }, - "Tag": { - "type": "string" - }, - "UpdatedAt": { - "$ref": "#/components/schemas/models.EdgeAPITime" - }, - "org_id": { - "type": "string" - } - }, - "type": "object" - }, - "models.UpdateTransactionAPI": { - "properties": { - "ChangesRefs": { - "example": false, - "type": "boolean" - }, - "Commit": { - "$ref": "#/components/schemas/models.Commit" - }, - "CommitID": { - "description": "Commit ID of device", - "example": 1754, - "type": "integer" - }, - "Devices": { - "description": "List of Devices", - "items": { - "$ref": "#/components/schemas/models.DeviceAPI" - }, - "type": "array" - }, - "DispatchRecords": { - "items": { - "$ref": "#/components/schemas/models.DispatchRecordAPI" - }, - "type": "array" - }, - "OldCommits": { - "description": "Old Commit ID if the device has one", - "items": { - "$ref": "#/components/schemas/models.Commit" - }, - "type": "array" - }, - "Repo": { - "$ref": "#/components/schemas/models.Repo" - }, - "RepoID": { - "description": "Repo ID", - "example": 2256, - "type": "integer" - }, - "Status": { - "description": "Status of device", - "example": "SUCCESS", - "type": "string" - }, - "Tag": { - "description": "Tag og Device if device has one", - "example": "device_tag", - "type": "string" - } - }, - "type": "object" - } - } - }, - "info": { - "contact": {}, - "description": "API of the Edge Management application on [console.redhat.com](https://console.redhat.com)", - "license": { - "name": "MIT" - }, - "title": "Edge API", - "version": "1.0" - }, - "openapi": "3.0.3", - "paths": { - "/device-groups": { - "get": { - "description": "Returns device groups for an orgID", - "parameters": [ - { - "description": "Define sort fields: created_at, updated_at, name. To sort DESC use -", - "in": "query", - "name": "sort_by", - "schema": { - "type": "string" - } - }, - { - "description": "field: filter by name", - "in": "query", - "name": "name", - "schema": { - "type": "string" - } - }, - { - "description": "field: return number of image-set view until limit is reached. Default is 100.", - "in": "query", - "name": "limit", - "schema": { - "type": "integer" - } - }, - { - "description": "field: return number of image-set view beginning at the offset.", - "in": "query", - "name": "offset", - "schema": { - "type": "integer" - } - } - ], - "responses": { - "200": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/models.DeviceGroup" - } - } - }, - "description": "OK" - }, - "400": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.BadRequest" - } - } - }, - "description": "Bad Request" - }, - "500": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.InternalServerError" - } - } - }, - "description": "Internal Server Error" - } - }, - "summary": "Returns device groups for an orgID", - "tags": [ - "Device Groups" - ] - }, - "post": { - "description": "Creates a Device Group for an account.", - "operationId": "CreateDeviceGroup", - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/models.CreateDeviceGroupAPI" - } - } - }, - "description": "request body", - "required": true, - "x-originalParamName": "body" - }, - "responses": { - "200": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/models.DeviceGroupAPI" - } - } - }, - "description": "The created device groups" - }, - "400": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.BadRequest" - } - } - }, - "description": "The request sent couldn't be processed." - }, - "500": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.InternalServerError" - } - } - }, - "description": "There was an internal server error." - } - }, - "summary": "Creates a Device Group for an account.", - "tags": [ - "Device Groups" - ] - } - }, - "/device-groups/checkName/{name}": { - "get": { - "description": "Validates if a group name already exists", - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/models.CheckGroupNameParamAPI" - } - } - }, - "description": "request body", - "required": true, - "x-originalParamName": "body" - }, - "responses": { - "200": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/models.SuccessPlaceholderResponse" - } - } - }, - "description": "OK" - }, - "400": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.BadRequest" - } - } - }, - "description": "Bad Request" - }, - "500": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.InternalServerError" - } - } - }, - "description": "Internal Server Error" - } - }, - "summary": "Validates if a group name already exists", - "tags": [ - "Device Groups" - ] - } - }, - "/device-groups/{ID}": { - "delete": { - "description": "Deletes an existing device group", - "parameters": [ - { - "description": "A unique existing Device Group", - "in": "query", - "name": "required_param", - "required": true, - "schema": { - "type": "integer" - } - } - ], - "responses": { - "200": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/models.SuccessPlaceholderResponse" - } - } - }, - "description": "OK" - }, - "400": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.BadRequest" - } - } - }, - "description": "Bad Request" - }, - "500": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.InternalServerError" - } - } - }, - "description": "Internal Server Error" - } - }, - "summary": "Deletes an existing device group", - "tags": [ - "Device Groups" - ] - }, - "get": { - "description": "Returns devices groups for group identified by ID", - "parameters": [ - { - "description": "device group ID", - "in": "query", - "name": "required_param", - "schema": { - "type": "integer" - } - } - ], - "responses": { - "200": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/models.DeviceGroup" - } - } - }, - "description": "OK" - }, - "400": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.BadRequest" - } - } - }, - "description": "Bad Request" - }, - "500": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.InternalServerError" - } - } - }, - "description": "Internal Server Error" - } - }, - "summary": "Returns devices groups for group identified by ID", - "tags": [ - "Device Groups" - ] - }, - "put": { - "description": "Updates the existing device group", - "parameters": [ - { - "description": "An unique existing Device Group", - "in": "query", - "name": "required_param", - "required": true, - "schema": { - "type": "integer" - } - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/models.PutGroupNameParamAPI" - } - } - }, - "description": "request body", - "required": true, - "x-originalParamName": "body" - }, - "responses": { - "200": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/models.DeviceGroup" - } - } - }, - "description": "OK" - }, - "400": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.BadRequest" - } - } - }, - "description": "Bad Request" - }, - "500": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.InternalServerError" - } - } - }, - "description": "Internal Server Error" - } - }, - "summary": "Updates the existing device group", - "tags": [ - "Device Groups" - ] - } - }, - "/device-groups/{ID}/details": { - "get": { - "description": "Returns details for group identified by ID", - "parameters": [ - { - "description": "device group ID", - "in": "query", - "name": "required_param", - "required": true, - "schema": { - "type": "integer" - } - } - ], - "responses": { - "200": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/models.DeviceGroup" - } - } - }, - "description": "OK" - }, - "400": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.BadRequest" - } - } - }, - "description": "Bad Request" - }, - "500": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.InternalServerError" - } - } - }, - "description": "Internal Server Error" - } - }, - "summary": "Returns details for group identified by ID", - "tags": [ - "Device Groups" - ] - } - }, - "/device-groups/{ID}/devices": { - "delete": { - "description": "Deletes the requested devices from device-group", - "parameters": [ - { - "description": "Identifier of the DeviceGroup", - "in": "path", - "name": "DeviceGroupID", - "required": true, - "schema": { - "type": "integer" - } - } - ], - "responses": { - "200": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/models.SuccessPlaceholderResponse" - } - } - }, - "description": "OK" - }, - "400": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.BadRequest" - } - } - }, - "description": "Bad Request" - }, - "500": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.InternalServerError" - } - } - }, - "description": "Internal Server Error" - } - }, - "summary": "Deletes the requested devices from device-group", - "tags": [ - "Device Groups" - ] - }, - "post": { - "description": "Adds devices to device group", - "parameters": [ - { - "description": "An unique existing Device Group", - "in": "query", - "name": "required_param", - "required": true, - "schema": { - "type": "integer" - } - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/models.PostDeviceForDeviceGroupAPI" - } - } - }, - "description": "request body", - "required": true, - "x-originalParamName": "body" - }, - "responses": { - "200": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/models.SuccessPlaceholderResponse" - } - } - }, - "description": "OK" - }, - "400": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.BadRequest" - } - } - }, - "description": "Bad Request" - }, - "500": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.InternalServerError" - } - } - }, - "description": "Internal Server Error" - } - }, - "summary": "Adds devices to device group", - "tags": [ - "Device Groups" - ] - } - }, - "/device-groups/{ID}/devices/{deviceID}": { - "delete": { - "description": "Deletes the requested device from the device-group", - "parameters": [ - { - "description": "Identifier of the Device Group", - "in": "path", - "name": "DeviceGroupId", - "required": true, - "schema": { - "type": "integer" - } - }, - { - "description": "Identifier of the Device in a Device Group", - "in": "path", - "name": "DeviceId", - "required": true, - "schema": { - "type": "integer" - } - } - ], - "responses": { - "200": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/models.SuccessPlaceholderResponse" - } - } - }, - "description": "OK" - }, - "400": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.BadRequest" - } - } - }, - "description": "Bad Request" - }, - "500": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.InternalServerError" - } - } - }, - "description": "Internal Server Error" - } - }, - "summary": "Deletes the requested device from the device-group", - "tags": [ - "Device Groups" - ] - } - }, - "/device-groups/{ID}/updateDevices": { - "post": { - "description": "Updates all devices that belong to a group", - "parameters": [ - { - "description": "Identifier of the DeviceGroup", - "in": "query", - "name": "required_param", - "required": true, - "schema": { - "type": "integer" - } - } - ], - "responses": { - "200": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/models.SuccessPlaceholderResponse" - } - } - }, - "description": "OK" - }, - "400": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.BadRequest" - } - } - }, - "description": "Bad Request" - }, - "500": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.InternalServerError" - } - } - }, - "description": "Internal Server Error" - } - }, - "summary": "Updates all devices that belong to a group", - "tags": [ - "Device Groups" - ] - } - }, - "/device-groups/{ID}/view": { - "get": { - "description": "Returns device groups view for group identified by ID", - "parameters": [ - { - "description": "device group ID", - "in": "query", - "name": "required_param", - "schema": { - "type": "integer" - } - } - ], - "responses": { - "200": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/models.DeviceGroupViewAPI" - } - } - }, - "description": "OK" - }, - "400": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.BadRequest" - } - } - }, - "description": "Bad Request" - }, - "500": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.InternalServerError" - } - } - }, - "description": "Internal Server Error" - } - }, - "summary": "Returns device groups view for group identified by ID", - "tags": [ - "Device Groups" - ] - } - }, - "/devices": { - "get": { - "description": "Get combined system data from Edge API and Inventory API", - "operationId": "GetDevices", - "parameters": [ - { - "description": "field: maximum devices per page", - "in": "query", - "name": "per_page", - "schema": { - "type": "integer" - } - }, - { - "description": "field: which page to query from", - "in": "query", - "name": "page", - "schema": { - "type": "integer" - } - }, - { - "description": "field: order by display_name, updated or operating_system", - "in": "query", - "name": "order_by", - "schema": { - "type": "string" - } - }, - { - "description": "field: choose to order ASC or DESC when order_by is being used", - "in": "query", - "name": "order_how", - "schema": { - "type": "string" - } - }, - { - "description": "field: filter by hostname_or_id", - "in": "query", - "name": "hostname_or_id", - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/models.DeviceDetailsListAPI" - } - } - }, - "description": "OK" - }, - "500": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.InternalServerError" - } - } - }, - "description": "There was an internal server error." - } - }, - "summary": "Get All Devices.", - "tags": [ - "Devices (Systems)" - ] - } - }, - "/devices/devicesview": { - "get": { - "description": "Return all data of Devices.", - "operationId": "GetDevicesView", - "parameters": [ - { - "description": "fields: name, uuid, update_available, image_id. To sort DESC use - before the fields.", - "in": "query", - "name": "sort_by", - "schema": { - "type": "string" - } - }, - { - "description": "field: filter by name", - "in": "query", - "name": "name", - "schema": { - "type": "string" - } - }, - { - "description": "field: filter by update_available", - "in": "query", - "name": "update_available", - "schema": { - "type": "boolean" - } - }, - { - "description": "field: filter by uuid", - "in": "query", - "name": "uuid", - "schema": { - "type": "string" - } - }, - { - "description": "field: filter by creation date", - "in": "query", - "name": "created_at", - "schema": { - "type": "string" - } - }, - { - "description": "field: filter by image id", - "in": "query", - "name": "image_id", - "schema": { - "type": "integer" - } - }, - { - "description": "field: return number of devices until limit is reached. Default is 100.", - "in": "query", - "name": "limit", - "schema": { - "type": "integer" - } - }, - { - "description": "field: return number of devices begining at the offset.", - "in": "query", - "name": "offset", - "schema": { - "type": "integer" - } - } - ], - "responses": { - "200": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/models.DeviceViewListAPI" - } - } - }, - "description": "OK" - }, - "500": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.InternalServerError" - } - } - }, - "description": "There was an internal server error." - } - }, - "summary": "Return all data of Devices.", - "tags": [ - "Devices (Systems)" - ] - }, - "post": { - "description": "Return all data of Devices.", - "operationId": "GetDevicesViewWithinDevices", - "parameters": [ - { - "description": "fields: name, uuid, update_available, image_id. To sort DESC use - before the fields.", - "in": "query", - "name": "sort_by", - "schema": { - "type": "string" - } - }, - { - "description": "field: filter by name", - "in": "query", - "name": "name", - "schema": { - "type": "string" - } - }, - { - "description": "field: filter by update_available", - "in": "query", - "name": "update_available", - "schema": { - "type": "boolean" - } - }, - { - "description": "field: filter by uuid", - "in": "query", - "name": "uuid", - "schema": { - "type": "string" - } - }, - { - "description": "field: filter by creation date", - "in": "query", - "name": "created_at", - "schema": { - "type": "string" - } - }, - { - "description": "field: filter by image id", - "in": "query", - "name": "image_id", - "schema": { - "type": "integer" - } - }, - { - "description": "field: return number of devices until limit is reached. Default is 100.", - "in": "query", - "name": "limit", - "schema": { - "type": "integer" - } - }, - { - "description": "field: return number of devices beginning at the offset.", - "in": "query", - "name": "offset", - "schema": { - "type": "integer" - } - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/models.FilterByDevicesAPI" - } - } - }, - "description": "request body", - "required": true, - "x-originalParamName": "body" - }, - "responses": { - "200": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/models.DeviceViewListAPI" - } - } - }, - "description": "OK" - }, - "500": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.InternalServerError" - } - } - }, - "description": "There was an internal server error." - } - }, - "summary": "Return all data of Devices.", - "tags": [ - "Devices (Systems)" - ] - } - }, - "/devices/{DeviceUUID}": { - "get": { - "description": "Get a device by UUID.", - "operationId": "GetDevice", - "parameters": [ - { - "description": "DeviceUUID", - "in": "path", - "name": "DeviceUUID", - "required": true, - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/models.DeviceDetailsAPI" - } - } - }, - "description": "OK" - }, - "400": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.BadRequest" - } - } - }, - "description": "The request sent couldn't be processed." - }, - "404": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.NotFound" - } - } - }, - "description": "The device was not found." - }, - "500": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.InternalServerError" - } - } - }, - "description": "There was an internal server error." - } - }, - "summary": "Get a device by UUID.", - "tags": [ - "Devices (Systems)" - ] - } - }, - "/image-sets": { - "get": { - "description": "Return the list of image sets.", - "operationId": "ListAllImageSets", - "parameters": [ - { - "description": "Define sort fields: created_at, updated_at, name. To sort DESC use -", - "in": "query", - "name": "sort_by", - "schema": { - "type": "string" - } - }, - { - "description": "field: filter by name", - "in": "query", - "name": "name", - "schema": { - "type": "string" - } - }, - { - "description": "field: filter by status", - "in": "query", - "name": "status", - "schema": { - "type": "string" - } - }, - { - "description": "field: return number of image-set view until limit is reached. Default is 100.", - "in": "query", - "name": "limit", - "schema": { - "type": "integer" - } - }, - { - "description": "field: return number of image-set view beginning at the offset.", - "in": "query", - "name": "offset", - "schema": { - "type": "integer" - } - } - ], - "responses": { - "200": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/models.ImageSetsResponseAPI" - } - } - }, - "description": "OK" - }, - "400": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.BadRequest" - } - } - }, - "description": "The request sent couldn't be processed." - }, - "404": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.NotFound" - } - } - }, - "description": "The Image Set was not found." - }, - "500": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.InternalServerError" - } - } - }, - "description": "There was an internal server error." - } - }, - "summary": "Return the list of image sets.", - "tags": [ - "Image-Sets" - ] - } - }, - "/image-sets/view": { - "get": { - "description": "Return the list of image set view.", - "parameters": [ - { - "description": "Define sort fields: created_at, updated_at, name. To sort DESC use -", - "in": "query", - "name": "sort_by", - "schema": { - "type": "string" - } - }, - { - "description": "field: filter by name", - "in": "query", - "name": "name", - "schema": { - "type": "string" - } - }, - { - "description": "field: filter by status", - "in": "query", - "name": "status", - "schema": { - "type": "string" - } - }, - { - "description": "field: filter by id", - "in": "query", - "name": "id", - "schema": { - "type": "integer" - } - }, - { - "description": "field: return number of image-set view until limit is reached. Default is 30.", - "in": "query", - "name": "limit", - "schema": { - "type": "integer" - } - }, - { - "description": "field: return number of image-set view beginning at the offset.", - "in": "query", - "name": "offset", - "schema": { - "type": "integer" - } - } - ], - "responses": { - "200": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/models.ImageSetsViewResponseAPI" - } - } - }, - "description": "OK" - }, - "500": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.InternalServerError" - } - } - }, - "description": "There was an internal server error." - } - }, - "summary": "Return the list of image set view.", - "tags": [ - "Image-Sets" - ] - } - }, - "/image-sets/view/{imageSetID}/versions/{imageID}": { - "get": { - "description": "Return the image-set images view list.", - "operationId": "GetImageSetImageView", - "parameters": [ - { - "description": "the image set id", - "in": "path", - "name": "imageSetID", - "required": true, - "schema": { - "type": "integer" - } - }, - { - "description": "the image id", - "in": "path", - "name": "imageID", - "required": true, - "schema": { - "type": "integer" - } - } - ], - "responses": { - "200": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/models.ImageSetImageIDViewAPI" - } - } - }, - "description": "OK" - }, - "400": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.BadRequest" - } - } - }, - "description": "The request sent couldn't be processed." - }, - "404": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.NotFound" - } - } - }, - "description": "The Image-Set or Image was not found." - }, - "500": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.InternalServerError" - } - } - }, - "description": "There was an internal server error." - } - }, - "summary": "Return the image-set images view list.", - "tags": [ - "Image-Sets" - ] - } - }, - "/image-sets/view/{image_set_id}": { - "get": { - "description": "Return the image-set description view.", - "operationId": "GetImageSetViewByID", - "parameters": [ - { - "description": "the image-set id", - "in": "path", - "name": "image_set_id", - "required": true, - "schema": { - "type": "integer" - } - } - ], - "responses": { - "200": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/models.ImageSetIDViewAPI" - } - } - }, - "description": "OK" - }, - "400": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.BadRequest" - } - } - }, - "description": "The request sent couldn't be processed." - }, - "404": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.NotFound" - } - } - }, - "description": "The Image-Set was not found." - }, - "500": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.InternalServerError" - } - } - }, - "description": "There was an internal server error." - } - }, - "summary": "Return the image-set description view.", - "tags": [ - "Image-Sets" - ] - } - }, - "/image-sets/view/{image_set_id}/versions": { - "get": { - "description": "Return the image-set images view list.", - "operationId": "GetAllImageSetImagesView", - "parameters": [ - { - "description": "the image-set id", - "in": "path", - "name": "image_set_id", - "required": true, - "schema": { - "type": "integer" - } - }, - { - "description": "Define sort fields: created_at, version, To sort DESC use -", - "in": "query", - "name": "sort_by", - "schema": { - "type": "string" - } - }, - { - "description": "field: filter by status", - "in": "query", - "name": "status", - "schema": { - "type": "string" - } - }, - { - "description": "field: filter by version", - "in": "query", - "name": "version", - "schema": { - "type": "string" - } - }, - { - "description": "field: return number of images until limit is reached. Default is 100.", - "in": "query", - "name": "limit", - "schema": { - "type": "integer" - } - }, - { - "description": "field: return number of images beginning at the offset.", - "in": "query", - "name": "offset", - "schema": { - "type": "integer" - } - } - ], - "responses": { - "200": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/models.ImagesViewDataAPI" - } - } - }, - "description": "OK" - }, - "400": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.BadRequest" - } - } - }, - "description": "The request sent couldn't be processed." - }, - "404": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.NotFound" - } - } - }, - "description": "The Image-Set was not found." - }, - "500": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.InternalServerError" - } - } - }, - "description": "There was an internal server error." - } - }, - "summary": "Return the image-set images view list.", - "tags": [ - "Image-Sets" - ] - } - }, - "/image-sets/{imageSetID}": { - "delete": { - "description": "Delete Image Set", - "operationId": "DeleteImageSet", - "parameters": [ - { - "description": "Identifier of the ImageSet", - "in": "path", - "name": "imageSetID", - "required": true, - "schema": { - "type": "integer" - } - } - ], - "responses": { - "200": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/models.ImageSetAPI" - } - } - }, - "description": "OK" - }, - "400": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.BadRequest" - } - } - }, - "description": "The request sent couldn't be processed." - }, - "404": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.NotFound" - } - } - }, - "description": "image-set was not found." - }, - "500": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.InternalServerError" - } - } - }, - "description": "There was an internal server error." - } - }, - "summary": "Delete Image Set", - "tags": [ - "Image-Sets" - ] - } - }, - "/image-sets/{imageSetID}/": { - "get": { - "description": "Get image set by ID", - "operationId": "GetImageSetsByID", - "parameters": [ - { - "description": "Image Set ID", - "in": "path", - "name": "imageSetID", - "required": true, - "schema": { - "type": "integer" - } - }, - { - "description": "Define sort fields: created_at, updated_at, name. To sort DESC use -", - "in": "query", - "name": "sort_by", - "schema": { - "type": "string" - } - }, - { - "description": "field: filter by name", - "in": "query", - "name": "name", - "schema": { - "type": "string" - } - }, - { - "description": "field: filter by status", - "in": "query", - "name": "status", - "schema": { - "type": "string" - } - }, - { - "description": "field: filter by version", - "in": "query", - "name": "version", - "schema": { - "type": "string" - } - }, - { - "description": "field: return number of image-set view until limit is reached. Default is 100.", - "in": "query", - "name": "limit", - "schema": { - "type": "integer" - } - }, - { - "description": "field: return number of image-set view beginning at the offset.", - "in": "query", - "name": "offset", - "schema": { - "type": "integer" - } - } - ], - "responses": { - "200": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/models.ImageSetDetailsResponseAPI" - } - } - }, - "description": "OK" - }, - "400": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.BadRequest" - } - } - }, - "description": "The request sent couldn't be processed." - }, - "404": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.NotFound" - } - } - }, - "description": "image-set was not found." - }, - "500": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.InternalServerError" - } - } - }, - "description": "There was an internal server error." - } - }, - "summary": "Get an image-set", - "tags": [ - "Image-Sets" - ] - } - }, - "/image-sets/{imageSetID}/devices": { - "get": { - "description": "Return device ids for an image set.", - "operationId": "GetImageSetsDevicesByID", - "parameters": [ - { - "description": "Identifier of the ImageSet", - "in": "path", - "name": "ImageSetId", - "required": true, - "schema": { - "type": "integer" - } - } - ], - "responses": { - "200": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/models.ImageSetDevicesAPI" - } - } - }, - "description": "OK" - }, - "400": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.BadRequest" - } - } - }, - "description": "The request sent couldn't be processed." - }, - "404": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.NotFound" - } - } - }, - "description": "The Image Set ID was not found." - }, - "500": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.InternalServerError" - } - } - }, - "description": "There was an internal server error." - } - }, - "summary": "Return device ids for an image set.", - "tags": [ - "Image-Sets" - ] - } - }, - "/images": { - "get": { - "description": "This is a placeholder description", - "operationId": "GetAllImages", - "parameters": [ - { - "description": "Return number of images until limit is reached.", - "in": "query", - "name": "limit", - "schema": { - "type": "integer" - } - }, - { - "description": "Return number of images beginning at the offset", - "in": "query", - "name": "offset", - "schema": { - "type": "integer" - } - }, - { - "description": "created_at, distribution, name,status. To sort DESC use -before the fields", - "in": "query", - "name": "sort_by", - "schema": { - "type": "string" - } - }, - { - "description": "Filter by name.", - "in": "query", - "name": "name", - "schema": { - "type": "string" - } - }, - { - "description": "Filter by status.", - "in": "query", - "name": "status", - "schema": { - "type": "string" - } - }, - { - "description": "Filter by distribution.", - "in": "query", - "name": "distribution", - "schema": { - "type": "string" - } - }, - { - "description": "Filter by creation date.", - "in": "query", - "name": "created_at", - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/models.SuccessPlaceholderResponse" - } - } - }, - "description": "OK" - }, - "400": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.BadRequest" - } - } - }, - "description": " The request sent couldn't be processed." - }, - "500": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.InternalServerError" - } - } - }, - "description": "There was an internal server error." - } - }, - "summary": "Placeholder summary", - "tags": [ - "Images" - ] - }, - "post": { - "description": "Create an ostree commit and/or installer ISO", - "operationId": "createImage", - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/CreateImage" - } - } - }, - "description": "request body", - "required": true, - "x-originalParamName": "body" - }, - "responses": { - "200": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ImageResponse" - } - } - }, - "description": "OK" - }, - "400": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.BadRequest" - } - } - }, - "description": "The request sent couldn't be processed." - }, - "500": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.InternalServerError" - } - } - }, - "description": "There was an internal server error." - } - }, - "summary": "Create an image", - "tags": [ - "Images" - ] - } - }, - "/images/checkImageName": { - "post": { - "description": "Create an updated ostree commit", - "operationId": "CheckImageName", - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/CreateImage" - } - } - }, - "description": "request body", - "required": true, - "x-originalParamName": "body" - }, - "responses": { - "200": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/models.SuccessPlaceholderResponse" - } - } - }, - "description": "OK" - }, - "400": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.BadRequest" - } - } - }, - "description": "The request sent couldn't be processed." - }, - "500": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.InternalServerError" - } - } - }, - "description": "There was an internal server error." - } - }, - "summary": "Update an image", - "tags": [ - "Images" - ] - } - }, - "/images/{imageId}": { - "delete": { - "description": "This is a placeholder description", - "operationId": "DeleteImage", - "parameters": [ - { - "description": "Identifier of the ImageSet", - "in": "path", - "name": "imageSetID", - "required": true, - "schema": { - "type": "integer" - } - } - ], - "responses": { - "200": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/models.SuccessPlaceholderResponse" - } - } - }, - "description": "OK" - }, - "400": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.BadRequest" - } - } - }, - "description": "The request sent couldn't be processed." - }, - "500": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.InternalServerError" - } - } - }, - "description": "There was an internal server error." - } - }, - "summary": "Placeholder summary", - "tags": [ - "Images" - ] - }, - "get": { - "description": "This is a placeholder description", - "operationId": "GetImageByID", - "parameters": [ - { - "description": "Image ID", - "in": "path", - "name": "imageId", - "required": true, - "schema": { - "type": "integer" - } - } - ], - "responses": { - "200": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/models.SuccessPlaceholderResponse" - } - } - }, - "description": "OK" - }, - "400": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.BadRequest" - } - } - }, - "description": "The request sent couldn't be processed." - }, - "500": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.InternalServerError" - } - } - }, - "description": "There was an internal server error." - } - }, - "summary": "Placeholder summary", - "tags": [ - "Images" - ] - } - }, - "/images/{imageId}/details": { - "get": { - "description": "This is a placeholder description", - "operationId": "GetImageDetailsByID", - "parameters": [ - { - "description": "Image ID", - "in": "path", - "name": "imageId", - "required": true, - "schema": { - "type": "integer" - } - } - ], - "responses": { - "200": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/models.SuccessPlaceholderResponse" - } - } - }, - "description": "OK" - }, - "400": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.BadRequest" - } - } - }, - "description": "The request sent couldn't be processed." - }, - "500": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.InternalServerError" - } - } - }, - "description": "There was an internal server error." - } - }, - "summary": "Placeholder summary", - "tags": [ - "Images" - ] - } - }, - "/images/{imageId}/installer": { - "post": { - "description": "This is a placeholder description", - "operationId": "CreateInstallerForImage", - "parameters": [ - { - "description": "Image ID", - "in": "path", - "name": "imageId", - "required": true, - "schema": { - "type": "integer" - } - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/CreateImage" - } - } - }, - "description": "request body", - "required": true, - "x-originalParamName": "body" - }, - "responses": { - "200": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/models.SuccessPlaceholderResponse" - } - } - }, - "description": "OK" - }, - "400": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.BadRequest" - } - } - }, - "description": "The request sent couldn't be processed." - }, - "500": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.InternalServerError" - } - } - }, - "description": "There was an internal server error." - } - }, - "summary": "Placeholder summary", - "tags": [ - "Images" - ] - } - }, - "/images/{imageId}/kickstart": { - "post": { - "description": "This is a placeholder description", - "operationId": "CreateKickStartForImage", - "parameters": [ - { - "description": "Image ID", - "in": "path", - "name": "imageId", - "required": true, - "schema": { - "type": "integer" - } - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/CreateImage" - } - } - }, - "description": "request body", - "required": true, - "x-originalParamName": "body" - }, - "responses": { - "200": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/models.SuccessPlaceholderResponse" - } - } - }, - "description": "OK" - }, - "400": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.BadRequest" - } - } - }, - "description": "The request sent couldn't be processed." - }, - "500": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.InternalServerError" - } - } - }, - "description": "There was an internal server error." - } - }, - "summary": "Placeholder summary", - "tags": [ - "Images" - ] - } - }, - "/images/{imageId}/metadata": { - "get": { - "description": "This is a placeholder description", - "operationId": "GetMetadataForImage", - "parameters": [ - { - "description": "Image ID", - "in": "path", - "name": "imageId", - "required": true, - "schema": { - "type": "integer" - } - } - ], - "responses": { - "200": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/models.SuccessPlaceholderResponse" - } - } - }, - "description": "OK" - }, - "400": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.BadRequest" - } - } - }, - "description": "The request sent couldn't be processed." - }, - "500": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.InternalServerError" - } - } - }, - "description": "There was an internal server error." - } - }, - "summary": "Placeholder summary", - "tags": [ - "Images" - ] - } - }, - "/images/{imageId}/repo": { - "get": { - "description": "This is a placeholder description", - "operationId": "GetRepoForImage", - "parameters": [ - { - "description": "Image ID", - "in": "path", - "name": "imageId", - "required": true, - "schema": { - "type": "integer" - } - } - ], - "responses": { - "200": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/models.SuccessPlaceholderResponse" - } - } - }, - "description": "OK" - }, - "400": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.BadRequest" - } - } - }, - "description": "The request sent couldn't be processed." - }, - "500": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.InternalServerError" - } - } - }, - "description": "There was an internal server error." - } - }, - "summary": "Placeholder summary", - "tags": [ - "Images" - ] - } - }, - "/images/{imageId}/retry": { - "post": { - "description": "Create an updated ostree commit", - "operationId": "RetryCreateImage", - "parameters": [ - { - "description": "Image ID", - "in": "path", - "name": "imageId", - "required": true, - "schema": { - "type": "integer" - } - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/CreateImage" - } - } - }, - "description": "request body", - "required": true, - "x-originalParamName": "body" - }, - "responses": { - "201": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/models.SuccessPlaceholderResponse" - } - } - }, - "description": "Retry is being processed" - }, - "500": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.InternalServerError" - } - } - }, - "description": "There was an internal server error." - } - }, - "summary": "Retries building an image from scratch", - "tags": [ - "Images" - ] - } - }, - "/images/{imageId}/status": { - "get": { - "description": "This is a placeholder description", - "operationId": "GetImageStatusByID", - "parameters": [ - { - "description": "Image Identifier", - "in": "path", - "name": "imageId", - "required": true, - "schema": { - "type": "integer" - } - } - ], - "responses": { - "200": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/models.SuccessPlaceholderResponse" - } - } - }, - "description": "OK" - }, - "400": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.BadRequest" - } - } - }, - "description": "The request sent couldn't be processed." - }, - "500": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.InternalServerError" - } - } - }, - "description": "There was an internal server error." - } - }, - "summary": "Placeholder summary", - "tags": [ - "Images" - ] - } - }, - "/images/{imageId}/update": { - "post": { - "description": "Create an updated ostree commit", - "operationId": "CreateImageUpdate", - "parameters": [ - { - "description": "Image ID", - "in": "path", - "name": "imageId", - "required": true, - "schema": { - "type": "integer" - } - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/CreateImage" - } - } - }, - "description": "request body", - "required": true, - "x-originalParamName": "body" - }, - "responses": { - "200": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/models.SuccessPlaceholderResponse" - } - } - }, - "description": "OK" - }, - "400": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.BadRequest" - } - } - }, - "description": "The request sent couldn't be processed." - }, - "500": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.InternalServerError" - } - } - }, - "description": "There was an internal server error." - } - }, - "summary": "Update an image", - "tags": [ - "Images" - ] - } - }, - "/images/{ostreeCommitHash}/info": { - "get": { - "description": "This is a placeholder description", - "operationId": "GetImageByOstree", - "parameters": [ - { - "description": "Ostree Commit Hash", - "in": "path", - "name": "ostreeCommitHash", - "required": true, - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/models.SuccessPlaceholderResponse" - } - } - }, - "description": "OK" - }, - "400": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.BadRequest" - } - } - }, - "description": "The request sent couldn't be processed." - }, - "500": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.InternalServerError" - } - } - }, - "description": "There was an internal server error." - } - }, - "summary": "Placeholder summary", - "tags": [ - "Images" - ] - } - }, - "/storage/images-repos/{imageID}/content/{repoFilePath}": { - "get": { - "description": "Redirect request to a signed and valid url for an image commit repository from the path content", - "operationId": "RedirectSignedImageCommitRepository", - "parameters": [ - { - "description": "Id to identify Image", - "in": "path", - "name": "imageID", - "required": true, - "schema": { - "type": "string" - } - }, - { - "description": "path to file repository", - "in": "path", - "name": "repoFilePath", - "required": true, - "schema": { - "type": "string" - } - } - ], - "responses": { - "303": { - "content": { - "application/json": { - "schema": { - "type": "string" - } - } - }, - "description": "See Other" - }, - "400": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.BadRequest" - } - } - }, - "description": "Bad Request" - }, - "404": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.NotFound" - } - } - }, - "description": "Not Found" - }, - "500": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.InternalServerError" - } - } - }, - "description": "Internal Server Error" - } - }, - "summary": "redirect to a signed url of an image commit repository path content", - "tags": [ - "Storage" - ] - } - }, - "/storage/images-repos/{imageID}/{repoFilePath}": { - "get": { - "description": "Bring the content for a image commit in a repository path", - "operationId": "ContentImageCommitRepositoryPath", - "parameters": [ - { - "description": "Id to identify Image", - "in": "path", - "name": "imageID", - "required": true, - "schema": { - "type": "string" - } - }, - { - "description": "path to file repository", - "in": "path", - "name": "repoFilePath", - "required": true, - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "content": { - "application/octet-stream": { - "schema": { - "type": "string" - } - } - }, - "description": "Stream object from file content" - }, - "400": { - "content": { - "application/octet-stream": { - "schema": { - "$ref": "#/components/schemas/errors.BadRequest" - } - } - }, - "description": "Bad Request" - }, - "404": { - "content": { - "application/octet-stream": { - "schema": { - "$ref": "#/components/schemas/errors.NotFound" - } - } - }, - "description": "Not Found" - }, - "500": { - "content": { - "application/octet-stream": { - "schema": { - "$ref": "#/components/schemas/errors.InternalServerError" - } - } - }, - "description": "Internal Server Error" - } - }, - "summary": "return the content of an image commit repository path", - "tags": [ - "Storage" - ] - } - }, - "/storage/isos/{installerID}/": { - "get": { - "description": "This method will redirect request to a signed installer iso url", - "operationId": "RedirectSignedInstaller", - "parameters": [ - { - "description": "Installer ID", - "in": "path", - "name": "installerID", - "required": true, - "schema": { - "type": "string" - } - } - ], - "responses": { - "303": { - "content": { - "application/octet-stream": { - "schema": { - "type": "string" - } - } - }, - "description": "URL to redirect" - }, - "400": { - "content": { - "application/octet-stream": { - "schema": { - "$ref": "#/components/schemas/errors.BadRequest" - } - } - }, - "description": "The request send couln't be processed." - }, - "404": { - "content": { - "application/octet-stream": { - "schema": { - "$ref": "#/components/schemas/errors.NotFound" - } - } - }, - "description": "installer not found." - }, - "500": { - "content": { - "application/octet-stream": { - "schema": { - "$ref": "#/components/schemas/errors.InternalServerError" - } - } - }, - "description": "Internal Server Error" - } - }, - "summary": "Redirect to a signed installer", - "tags": [ - "Storage" - ] - } - }, - "/storage/update-repos/{updateTransactionID}/content/{repoFilePath}": { - "get": { - "description": "Method will redirect to asigned url of an update-transaction based on repository content", - "operationId": "RedirectUpdateTransactionRepositoryPath", - "parameters": [ - { - "description": "id for update transaction id", - "in": "path", - "name": "updateTransactionID", - "required": true, - "schema": { - "type": "integer" - } - }, - { - "description": "path to repository to be checked", - "in": "path", - "name": "repoFilePath", - "required": true, - "schema": { - "type": "string" - } - } - ], - "responses": { - "303": { - "content": { - "application/octet-stream": { - "schema": { - "type": "string" - } - } - }, - "description": "URL signed to be redirect" - }, - "400": { - "content": { - "application/octet-stream": { - "schema": { - "$ref": "#/components/schemas/errors.BadRequest" - } - } - }, - "description": "Bad Request" - }, - "404": { - "content": { - "application/octet-stream": { - "schema": { - "$ref": "#/components/schemas/errors.NotFound" - } - } - }, - "description": "Not Found" - }, - "500": { - "content": { - "application/octet-stream": { - "schema": { - "$ref": "#/components/schemas/errors.InternalServerError" - } - } - }, - "description": "Internal Server Error" - } - }, - "summary": "redirect to a signed url of an update-transaction repository path content", - "tags": [ - "Storage" - ] - } - }, - "/storage/update-repos/{updateTransactionID}/{repoFilePath}": { - "get": { - "description": "Request will get access to content of an update-transaction file based on the path", - "operationId": "RedirectUpdateTransactionRepositoryContent", - "parameters": [ - { - "description": "Update Transaction Id", - "in": "path", - "name": "updateTransactionID", - "required": true, - "schema": { - "type": "integer" - } - }, - { - "description": "path for repository file", - "in": "path", - "name": "repoFilePath", - "required": true, - "schema": { - "type": "integer" - } - } - ], - "responses": { - "200": { - "content": { - "application/octet-stream": { - "schema": { - "type": "string" - } - } - }, - "description": "Stream object from file content" - }, - "400": { - "content": { - "application/octet-stream": { - "schema": { - "$ref": "#/components/schemas/errors.BadRequest" - } - } - }, - "description": "Bad Request" - }, - "404": { - "content": { - "application/octet-stream": { - "schema": { - "$ref": "#/components/schemas/errors.NotFound" - } - } - }, - "description": "Not Found" - }, - "500": { - "content": { - "application/octet-stream": { - "schema": { - "$ref": "#/components/schemas/errors.InternalServerError" - } - } - }, - "description": "Internal Server Error" - } - }, - "summary": "Return the content od an update-transaction repository path", - "tags": [ - "Storage" - ] - } - }, - "/thirdpartyrepo": { - "get": { - "description": "Lists all Third Party Repository for an account.", - "operationId": "GetAllThirdPartyRepo", - "parameters": [ - { - "description": "fields: created_at, name, updated_at. To sort DESC use - before the fields.", - "in": "query", - "name": "sort_by", - "schema": { - "type": "string" - } - }, - { - "description": "field: filter by name", - "in": "query", - "name": "name", - "schema": { - "type": "string" - } - }, - { - "description": "field: filter by creation date", - "in": "query", - "name": "created_at", - "schema": { - "type": "string" - } - }, - { - "description": "field: filter by update date", - "in": "query", - "name": "updated_at", - "schema": { - "type": "string" - } - }, - { - "description": "field: return number of repositories until limit is reached.", - "in": "query", - "name": "limit", - "schema": { - "type": "integer" - } - }, - { - "description": "field: return number of repositories beginning at the offset.", - "in": "query", - "name": "offset", - "schema": { - "type": "integer" - } - } - ], - "responses": { - "200": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ThirdPartyRepoList" - } - } - }, - "description": "The list of third party repositories response" - }, - "400": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.BadRequest" - } - } - }, - "description": "The request sent couldn't be processed." - }, - "500": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.InternalServerError" - } - } - }, - "description": "There was an internal server error." - } - }, - "summary": "Lists all Third Party Repository for an account.", - "tags": [ - "Third Party Repo" - ] - }, - "post": { - "description": "Create Third Party Repository for an account.", - "operationId": "CreateThirdPartyRepo", - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ThirdPartyRepo" - } - } - }, - "description": "the third party repository to create", - "required": true, - "x-originalParamName": "body" - }, - "responses": { - "200": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ThirdPartyRepo" - } - } - }, - "description": "The created third party repository" - }, - "400": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.BadRequest" - } - } - }, - "description": "The request sent couldn't be processed." - }, - "500": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.InternalServerError" - } - } - }, - "description": "There was an internal server error." - } - }, - "summary": "Create Third Party Repository for an account.", - "tags": [ - "Third Party Repo" - ] - } - }, - "/thirdpartyrepo/checkName/{name}": { - "get": { - "description": "Checks to see if a ThirdParty repo Name exists.", - "operationId": "CheckThirdPartyRepoName", - "parameters": [ - { - "description": "ThirdParty repo Name", - "in": "path", - "name": "name", - "required": true, - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/CheckThirdPartyRepoName" - } - } - }, - "description": "The third party repository name check result" - }, - "400": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.BadRequest" - } - } - }, - "description": "The request sent couldn't be processed." - }, - "500": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.InternalServerError" - } - } - }, - "description": "There was an internal server error." - } - }, - "summary": "Checks to see if a ThirdParty repo Name exists.", - "tags": [ - "Third Party Repo" - ] - } - }, - "/thirdpartyrepo/{ID}": { - "delete": { - "description": "Delete third party repository using id.", - "operationId": "DeleteThirdPartyRepoByID", - "parameters": [ - { - "description": "An unique existing third party repository id.", - "in": "query", - "name": "ID", - "required": true, - "schema": { - "type": "integer" - } - } - ], - "responses": { - "200": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ThirdPartyRepo" - } - } - }, - "description": "The deleted third party repository." - }, - "400": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.BadRequest" - } - } - }, - "description": "The request sent couldn't be processed." - }, - "404": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.NotFound" - } - } - }, - "description": "The third party repository was not found." - }, - "500": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.InternalServerError" - } - } - }, - "description": "There was an internal server error." - } - }, - "summary": "Delete third party repository using id.", - "tags": [ - "Third Party Repo" - ] - }, - "get": { - "description": "Get third party repository by id.", - "operationId": "GetThirdPartyRepoByID", - "parameters": [ - { - "description": "An unique existing third party repository id.", - "in": "query", - "name": "ID", - "required": true, - "schema": { - "type": "integer" - } - } - ], - "responses": { - "200": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ThirdPartyRepo" - } - } - }, - "description": "The requested third party repository." - }, - "400": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.BadRequest" - } - } - }, - "description": "The request sent couldn't be processed." - }, - "404": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.NotFound" - } - } - }, - "description": "The third party repository was not found." - }, - "500": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.InternalServerError" - } - } - }, - "description": "There was an internal server error." - } - }, - "summary": "Get third party repository by id.", - "tags": [ - "Third Party Repo" - ] - }, - "put": { - "description": "Creates an Update for third party repository", - "operationId": "CreateThirdPartyRepoUpdate", - "parameters": [ - { - "description": "An unique existing third party repository id.", - "in": "query", - "name": "ID", - "required": true, - "schema": { - "type": "integer" - } - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ThirdPartyRepo" - } - } - }, - "description": "The third party repository update data", - "required": true, - "x-originalParamName": "body" - }, - "responses": { - "200": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ThirdPartyRepo" - } - } - }, - "description": "The updated third party repository." - }, - "400": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.BadRequest" - } - } - }, - "description": "The request sent couldn't be processed." - }, - "404": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.NotFound" - } - } - }, - "description": "The third party repository was not found." - }, - "500": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.InternalServerError" - } - } - }, - "description": "There was an internal server error." - } - }, - "summary": "Creates an Update for third party repository", - "tags": [ - "Third Party Repo" - ] - } - }, - "/updates": { - "get": { - "description": "Gets all device updates", - "operationId": "ListUpdates", - "parameters": [ - { - "description": "field: return number of updates until limit is reached. Default is 30.", - "in": "query", - "name": "limit", - "schema": { - "type": "integer" - } - }, - { - "description": "field: return updates beginning at the given offset.", - "in": "query", - "name": "offset", - "schema": { - "type": "integer" - } - }, - { - "description": "fields: created_at, updated_at. To sort DESC use - before the fields.", - "in": "query", - "name": "sort_by", - "schema": { - "type": "string" - } - }, - { - "description": "field: filter by status", - "in": "query", - "name": "status", - "schema": { - "type": "string" - } - }, - { - "description": "field: filter by creation date", - "in": "query", - "name": "created_at", - "schema": { - "type": "string" - } - }, - { - "description": "field: filter by update date", - "in": "query", - "name": "updated_at", - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "content": { - "application/json": { - "schema": { - "items": { - "$ref": "#/components/schemas/Update" - }, - "type": "array" - } - } - }, - "description": "List of devices updates" - }, - "400": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.BadRequest" - } - } - }, - "description": "The request sent couldn't be processed." - }, - "500": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.InternalServerError" - } - } - }, - "description": "There was an internal server error." - } - }, - "summary": "Gets all device updates", - "tags": [ - "Updates (Systems)" - ] - }, - "post": { - "description": "Executes a device update", - "operationId": "UpdateDevice", - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/DevicesUpdate" - } - } - }, - "description": "devices uuids to update and optional target commit id", - "required": true, - "x-originalParamName": "body" - }, - "responses": { - "200": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Update" - } - } - }, - "description": "The created device update" - }, - "400": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.BadRequest" - } - } - }, - "description": "The request sent couldn't be processed" - }, - "500": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.InternalServerError" - } - } - }, - "description": "There was an internal server error" - } - }, - "summary": "Executes a device update", - "tags": [ - "Updates (Systems)" - ] - } - }, - "/updates/device/{DeviceUUID}/updates": { - "get": { - "description": "Return list of available updates for a device.", - "operationId": "GetUpdateAvailableForDevice", - "parameters": [ - { - "description": "DeviceUUID", - "in": "path", - "name": "DeviceUUID", - "required": true, - "schema": { - "type": "string" - } - }, - { - "description": "query the latest or all updates", - "in": "query", - "name": "latest", - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/models.Image" - } - } - }, - "description": "OK" - }, - "400": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.BadRequest" - } - } - }, - "description": "The request sent couldn't be processed." - }, - "500": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.InternalServerError" - } - } - }, - "description": "There was an internal server error." - } - }, - "summary": "Return list of available updates for a device.", - "tags": [ - "Devices (Systems)" - ] - } - }, - "/updates/validate": { - "post": { - "description": "Validate if the images selection could be updated", - "operationId": "PostValidateUpdate", - "requestBody": { - "content": { - "application/json": { - "schema": { - "items": { - "$ref": "#/components/schemas/ImageValidationRequest" - }, - "type": "array" - } - } - }, - "description": "request body", - "required": true, - "x-originalParamName": "body" - }, - "responses": { - "200": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ImageValidationResponse" - } - } - }, - "description": "the validation result" - }, - "400": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.BadRequest" - } - } - }, - "description": "The request sent couldn't be processed" - }, - "500": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.InternalServerError" - } - } - }, - "description": "There was an internal server error" - } - }, - "summary": "Validate if the images selection could be updated", - "tags": [ - "Updates (Systems)" - ] - } - }, - "/updates/{updateID}": { - "get": { - "description": "Gets a single requested update.", - "operationId": "GetUpdate", - "parameters": [ - { - "description": "a unique ID to identify the update", - "in": "path", - "name": "updateID", - "required": true, - "schema": { - "type": "integer" - } - } - ], - "responses": { - "200": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Update" - } - } - }, - "description": "The requested update" - }, - "400": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.BadRequest" - } - } - }, - "description": "The request sent couldn't be processed" - }, - "404": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.NotFound" - } - } - }, - "description": "The requested update was not found" - }, - "500": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.InternalServerError" - } - } - }, - "description": "There was an internal server error" - } - }, - "summary": "Gets a single requested update", - "tags": [ - "Updates (Systems)" - ] - } - }, - "/updates/{updateID}/notify": { - "get": { - "description": "Send a notification for a device update", - "operationId": "SendNotificationForDevice", - "parameters": [ - { - "description": "a unique ID to identify the update", - "in": "path", - "name": "updateID", - "required": true, - "schema": { - "type": "integer" - } - } - ], - "responses": { - "200": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/DeviceNotification" - } - } - }, - "description": "The notification payload" - }, - "400": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.BadRequest" - } - } - }, - "description": "The request sent couldn't be processed" - }, - "404": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.NotFound" - } - } - }, - "description": "The requested update was not found" - }, - "500": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/errors.InternalServerError" - } - } - }, - "description": "There was an internal server error" - } - }, - "summary": "Send a notification for a device update", - "tags": [ - "Updates (Systems)" - ] - } - }, - "/updates/{updateID}/update-playbook.yml": { - "get": { - "description": "returns the update transaction playbook used for system update", - "operationId": "GetUpdatePlaybook", - "parameters": [ - { - "description": "a unique ID to identify the update the playbook belongs to", - "in": "path", - "name": "updateID", - "required": true, - "schema": { - "type": "integer" - } - } - ], - "responses": { - "200": { - "content": { - "text/plain": { - "schema": { - "type": "string" - } - } - }, - "description": "the playbook file content for an update" - }, - "400": { - "content": { - "text/plain": { - "schema": { - "$ref": "#/components/schemas/errors.BadRequest" - } - } - }, - "description": "The request sent couldn't be processed." - }, - "404": { - "content": { - "text/plain": { - "schema": { - "$ref": "#/components/schemas/errors.NotFound" - } - } - }, - "description": "the device update was not found" - }, - "500": { - "content": { - "text/plain": { - "schema": { - "$ref": "#/components/schemas/errors.InternalServerError" - } - } - }, - "description": "There was an internal server error." - } - }, - "summary": "returns the playbook yaml file for a system update", - "tags": [ - "Updates (Systems)" - ] - } - } - } -} diff --git a/api/schema/imageBuilder.yaml b/api/schema/imageBuilder.yaml deleted file mode 100644 index 5541eecc..00000000 --- a/api/schema/imageBuilder.yaml +++ /dev/null @@ -1,2270 +0,0 @@ ---- -openapi: 3.0.1 -info: - version: "1.0" - title: Image-builder service - description: Service that relays image build requests - license: - name: Apache 2.0 - url: https://www.apache.org/licenses/LICENSE-2.0.html - -servers: - - url: "/api/image-builder/v1" - - url: "/api/image-builder/v1.0" - -paths: - /version: - get: - summary: get the service version - description: "get the service version" - operationId: getVersion - tags: - - meta - responses: - '200': - description: a service version - content: - application/json: - schema: - $ref: '#/components/schemas/Version' - /ready: - get: - summary: return the readiness - operationId: getReadiness - tags: - - meta - responses: - '200': - description: readiness - content: - application/json: - schema: - $ref: '#/components/schemas/Readiness' - /openapi.json: - get: - summary: get the openapi json specification - operationId: getOpenapiJson - tags: - - meta - - noAuth - responses: - '200': - description: returns this document - content: - application/json: - schema: - type: object - /distributions: - get: - summary: get the distributions available to this user - operationId: getDistributions - tags: - - distribution - responses: - '200': - description: | - A list of distributions this user has access to. Some distributions are restricted, so - this list might not correspond to the Distributions (enum) schema for a given user. - content: - application/json: - schema: - $ref: '#/components/schemas/DistributionsResponse' - /architectures/{distribution}: - get: - summary: get the architectures and their image types available for a given distribution - parameters: - - in: path - name: distribution - schema: - $ref: '#/components/schemas/Distributions' - required: true - description: distribution for which to look up available architectures - example: 'rhel-84' - operationId: getArchitectures - tags: - - distribution - - architecture - responses: - '200': - description: a list of available architectures and their associated image types - content: - application/json: - schema: - $ref: '#/components/schemas/Architectures' - '403': - description: user is not allowed to build or query this distribution - content: - application/json: - schema: - $ref: '#/components/schemas/HTTPErrorList' - /blueprints: - get: - summary: get a collection of blueprints - description: "get a collection of blueprints, returns just the latest version of each blueprint" - operationId: getBlueprints - tags: - - blueprint - parameters: - - in: query - name: name - required: false - schema: - type: string - description: fetch blueprint with specific name - - in: query - name: search - required: false - schema: - type: string - description: search for blueprints by name or description - - in: query - name: limit - schema: - type: integer - default: 100 - minimum: 1 - maximum: 100 - description: max amount of blueprints, default 100 - - in: query - name: offset - schema: - type: integer - default: 0 - minimum: 0 - description: blueprint page offset, default 0 - responses: - '200': - description: a list of blueprints - content: - application/json: - schema: - $ref: '#/components/schemas/BlueprintsResponse' - post: - summary: create blueprint - description: "create blueprint" - operationId: createBlueprint - tags: - - blueprint - requestBody: - required: true - description: details of blueprint - content: - application/json: - schema: - $ref: "#/components/schemas/CreateBlueprintRequest" - responses: - '201': - description: blueprint was saved - content: - application/json: - schema: - $ref: '#/components/schemas/CreateBlueprintResponse' - '422': - description: blueprint is malformed - content: - application/json: - schema: - $ref: '#/components/schemas/HTTPErrorList' - '403': - description: user is not allowed to create blueprints - content: - application/json: - schema: - $ref: '#/components/schemas/HTTPErrorList' - /blueprints/{id}: - parameters: - - in: path - name: id - schema: - type: string - format: uuid - example: '123e4567-e89b-12d3-a456-426655440000' - required: true - description: UUID of a blueprint - put: - summary: update blueprint - description: "update blueprint" - operationId: updateBlueprint - tags: - - blueprint - requestBody: - required: true - description: details of blueprint - content: - application/json: - schema: - $ref: "#/components/schemas/CreateBlueprintRequest" - responses: - '200': - description: blueprint was updated - content: - application/json: - schema: - $ref: '#/components/schemas/CreateBlueprintResponse' - '404': - description: blueprint was not found - content: - application/json: - schema: - $ref: '#/components/schemas/HTTPErrorList' - get: - summary: get detail of a blueprint - description: "get a blueprint detail" - operationId: getBlueprint - tags: - - blueprint - parameters: - - in: query - name: version - schema: - type: integer - description: | - Filter by a specific version of the Blueprint we want to fetch. - Omit or pass -1 to fetch latest version. - responses: - '200': - description: detail of a blueprint - content: - application/json: - schema: - $ref: '#/components/schemas/BlueprintResponse' - '404': - description: blueprint was not found - content: - application/json: - schema: - $ref: '#/components/schemas/HTTPErrorList' - delete: - summary: delete a blueprint - description: | - Deletes all versions of Blueprint, the compose will still count towards quota. - operationId: deleteBlueprint - tags: - - blueprint - responses: - '204': - description: Successfully deleted - '404': - description: Blueprint to delete was not found - content: - application/json: - schema: - $ref: '#/components/schemas/HTTPErrorList' - /blueprints/{id}/export: - parameters: - - in: path - name: id - schema: - type: string - format: uuid - example: '123e4567-e89b-12d3-a456-426655440000' - required: true - description: UUID of a blueprint - get: - summary: export a blueprint - description: "export a blueprint" - operationId: exportBlueprint - tags: - - blueprint - responses: - '200': - description: detail of a blueprint - content: - application/json: - schema: - $ref: '#/components/schemas/BlueprintExportResponse' - '404': - description: blueprint was not found - content: - application/json: - schema: - $ref: '#/components/schemas/HTTPErrorList' - /blueprints/{id}/compose: - post: - parameters: - - in: path - name: id - schema: - type: string - format: uuid - example: '123e4567-e89b-12d3-a456-426655440000' - required: true - description: UUID of a blueprint - summary: create new compose from blueprint - description: "create new compose from blueprint, optionally specifying the target image types to build" - operationId: composeBlueprint - tags: - - blueprint - requestBody: - required: false - description: "list of target image types that the user wants to build for this compose" - content: - application/json: - schema: - type: object - properties: - image_types: - type: array - items: - $ref: "#/components/schemas/ImageTypes" - example: ["azure", "aws"] - responses: - '201': - description: compose was created - content: - application/json: - schema: - type: array - items: - $ref: '#/components/schemas/ComposeResponse' - '403': - description: user is not allowed to compose from blueprints - content: - application/json: - schema: - $ref: '#/components/schemas/HTTPErrorList' - /blueprints/{id}/composes: - get: - summary: get composes associated with a blueprint - description: "get a collection of composes associated to a blueprint, allows for filtering by version" - operationId: getBlueprintComposes - tags: - - blueprint - parameters: - - in: path - name: id - schema: - type: string - format: uuid - example: '123e4567-e89b-12d3-a456-426655440000' - required: true - description: UUID of a blueprint - - in: query - name: blueprint_version - schema: - type: integer - description: | - Filter by a specific version of the Blueprint we want to fetch composes for. - Pass special value -1 to fetch composes for latest version of the Blueprint. - - in: query - name: limit - schema: - type: integer - default: 100 - minimum: 1 - maximum: 100 - description: max amount of composes, default 100 - - in: query - name: offset - schema: - type: integer - default: 0 - minimum: 0 - description: composes page offset, default 0 - - in: query - name: ignoreImageTypes - required: false - schema: - type: array - items: - $ref: '#/components/schemas/ImageTypes' - example: ['rhel-edge-installer', 'rhel-edge-commit', ...] - description: | - Filter the composes on image type. The filter is optional and can be specified multiple times. - responses: - '200': - description: a list of composes - content: - application/json: - schema: - $ref: '#/components/schemas/ComposesResponse' - '404': - description: blueprint was not found - content: - application/json: - schema: - $ref: '#/components/schemas/HTTPErrorList' - /composes: - get: - summary: get a collection of previous compose requests for the logged in user - operationId: getComposes - tags: - - compose - parameters: - - in: query - name: limit - schema: - type: integer - default: 100 - minimum: 1 - maximum: 100 - description: max amount of composes, default 100 - - in: query - name: offset - schema: - type: integer - default: 0 - minimum: 0 - description: composes page offset, default 0 - - in: query - name: ignoreImageTypes - required: false - schema: - type: array - items: - $ref: '#/components/schemas/ImageTypes' - example: ['rhel-edge-installer', 'rhel-edge-commit', ...] - description: | - Filter the composes on image type. The filter is optional and can be specified multiple times. - responses: - '200': - description: a list of composes - content: - application/json: - schema: - $ref: '#/components/schemas/ComposesResponse' - /composes/{composeId}: - parameters: - - in: path - name: composeId - schema: - type: string - format: uuid - example: '123e4567-e89b-12d3-a456-426655440000' - required: true - description: Id of compose - get: - summary: get status of an image compose - description: "status of an image compose" - operationId: getComposeStatus - tags: - - compose - responses: - '200': - description: compose status - content: - application/json: - schema: - $ref: '#/components/schemas/ComposeStatus' - delete: - summary: delete a compose - description: | - Deletes a compose, the compose will still count towards quota. - operationId: deleteCompose - responses: - 200: - description: OK - /composes/{composeId}/metadata: - get: - summary: get metadata of an image compose - parameters: - - in: path - name: composeId - schema: - type: string - format: uuid - example: '123e4567-e89b-12d3-a456-426655440000' - required: true - description: Id of compose metadata to get - description: "metadata for an image compose" - operationId: getComposeMetadata - tags: - - compose - responses: - '200': - description: compose metadata - content: - application/json: - schema: - $ref: '#/components/schemas/ComposeMetadata' - /composes/{composeId}/clone: - post: - summary: clone a compose - description: | - Clones a compose. Only composes with the 'aws' image type currently support cloning. - parameters: - - in: path - name: composeId - schema: - type: string - format: uuid - example: '123e4567-e89b-12d3-a456-426655440000' - required: true - description: Id of compose to clone - operationId: cloneCompose - tags: - - compose - requestBody: - required: true - description: details of the new clone - content: - application/json: - schema: - $ref: "#/components/schemas/CloneRequest" - responses: - '201': - description: cloning has started - content: - application/json: - schema: - $ref: "#/components/schemas/CloneResponse" - /composes/{composeId}/clones: - get: - summary: get clones of a compose - parameters: - - in: path - name: composeId - schema: - type: string - format: uuid - example: '123e4567-e89b-12d3-a456-426655440000' - required: true - description: Id of compose to get the clones of - - in: query - name: limit - schema: - type: integer - default: 100 - minimum: 1 - maximum: 100 - description: max amount of clones, default 100 - - in: query - name: offset - schema: - type: integer - default: 0 - minimum: 0 - description: clones page offset, default 0 - description: | - Returns a list of all the clones which were started for a compose - operationId: getComposeClones - tags: - - compose - responses: - '200': - description: compose clones - content: - application/json: - schema: - $ref: '#/components/schemas/ClonesResponse' - /clones/{id}: - get: - summary: get status of a compose clone - parameters: - - in: path - name: id - schema: - type: string - format: uuid - example: '123e4567-e89b-12d3-a456-426655440000' - required: true - description: Id of clone status to get - description: status of a clone - operationId: getCloneStatus - tags: - - compose - responses: - '200': - description: clone status - content: - application/json: - schema: - $ref: '#/components/schemas/CloneStatusResponse' - /compose: - post: - summary: compose image - description: "compose image" - operationId: composeImage - tags: - - compose - requestBody: - required: true - description: details of image to be composed - content: - application/json: - schema: - $ref: "#/components/schemas/ComposeRequest" - responses: - '201': - description: compose has started - content: - application/json: - schema: - $ref: '#/components/schemas/ComposeResponse' - '400': - description: the compose request is malformed - content: - application/json: - schema: - $ref: '#/components/schemas/HTTPErrorList' - '403': - description: user is not allowed to build this distribution - content: - application/json: - schema: - $ref: '#/components/schemas/HTTPErrorList' - /packages: - get: - parameters: - - in: query - name: distribution - required: true - schema: - $ref: '#/components/schemas/Distributions' - description: distribution to look up packages for - - in: query - name: architecture - required: true - schema: - type: string - enum: ['x86_64', 'aarch64'] - description: architecture to look up packages for - - in: query - name: search - required: true - schema: - type: string - description: packages to look for - - in: query - name: limit - schema: - type: integer - default: 100 - minimum: 1 - maximum: 100 - description: max amount of packages, default 100 - - in: query - name: offset - schema: - type: integer - default: 0 - minimum: 0 - description: packages page offset, default 0 - operationId: getPackages - tags: - - package - responses: - '200': - description: a list of packages - content: - application/json: - schema: - $ref: '#/components/schemas/PackagesResponse' - '403': - description: user is not allowed to build or query this distribution - content: - application/json: - schema: - $ref: '#/components/schemas/HTTPErrorList' - /oscap/{distribution}/profiles: - parameters: - - in: path - name: distribution - schema: - $ref: '#/components/schemas/Distributions' - required: true - get: - summary: get the available profiles for a given distribution. This is a temporary endpoint meant to be removed soon. - operationId: getOscapProfiles - tags: - - oscap - responses: - '200': - description: | - A list of profiles configurable for this distribution. - content: - application/json: - schema: - $ref: '#/components/schemas/DistributionProfileResponse' - /oscap/{distribution}/{profile}/customizations: - parameters: - - in: path - name: distribution - schema: - $ref: '#/components/schemas/Distributions' - required: true - - in: path - name: profile - schema: - $ref: '#/components/schemas/DistributionProfileItem' - required: true - description: Name of the profile to retrieve customizations from - get: - summary: get the customizations for a given distribution and profile. This is a temporary endpoint meant to be removed soon. - operationId: getOscapCustomizations - tags: - - oscap - responses: - '200': - description: | - A customizations array updated with the needed elements. - content: - application/json: - schema: - $ref: '#/components/schemas/Customizations' - /oscap/{policy}/{distribution}/policy_customizations: - parameters: - - in: path - name: policy - schema: - type: string - format: uuid - example: '123e4567-e89b-12d3-a456-426655440000' - required: true - - in: path - name: distribution - schema: - $ref: '#/components/schemas/Distributions' - required: true - get: - summary: get the customizations for a compliance policy - operationId: getOscapCustomizationsForPolicy - tags: - - oscap - responses: - '200': - description: | - A customizations array updated with the needed elements. - content: - application/json: - schema: - $ref: '#/components/schemas/Customizations' - /experimental/recommendations: - post: - summary: List recommended packages. - description: "Returns a list of recommended packages for given list of packages." - operationId: recommendPackage - tags: - - recommendations - requestBody: - content: - application/json: - schema: - "$ref": "#/components/schemas/RecommendPackageRequest" - required: true - responses: - '200': - description: Return the recommended packages. - content: - application/json: - schema: - $ref: "#/components/schemas/RecommendationsResponse" - /experimental/blueprints/{id}/fixup: - parameters: - - in: path - name: id - schema: - type: string - format: uuid - example: '123e4567-e89b-12d3-a456-426655440000' - required: true - description: UUID of a blueprint - post: - summary: Apply linter fixes to blueprint - operationId: fixupBlueprint - description: | - Apply fixes which should fix any lint errors in the blueprint. - responses: - 200: - description: successful update - 404: - description: blueprint was not found - -components: - schemas: - HTTPError: - required: - - title - - detail - properties: - title: - type: string - detail: - type: string - HTTPErrorList: - required: - - errors - properties: - errors: - type: array - items: - $ref: '#/components/schemas/HTTPError' - Version: - required: - - version - properties: - version: - type: string - build_commit: - type: string - build_time: - type: string - Readiness: - type: object - required: - - readiness - properties: - readiness: - type: string - ListResponseMeta: - type: object - required: - - count - properties: - count: - type: integer - ListResponseLinks: - type: object - required: - - first - - last - properties: - first: - type: string - last: - type: string - DistributionsResponse: - type: array - description: | - List of distributions this user is allowed to build. - items: - $ref: '#/components/schemas/DistributionItem' - DistributionItem: - type: object - required: - - name - - description - properties: - description: - type: string - example: 'Red Hat Enterprise Linux (RHEL) 8.4' - name: - type: string - example: 'rhel-84' - Architectures: - type: array - items: - $ref: '#/components/schemas/ArchitectureItem' - ArchitectureItem: - type: object - required: - - arch - - image_types - - repositories - properties: - arch: - type: string - example: 'x86_64' - image_types: - type: array - items: - type: string - example: 'qcow2' - repositories: - type: array - items: - $ref: '#/components/schemas/Repository' - description: Base repositories for the given distribution and architecture. - ComposeStatus: - required: - - image_status - - request - properties: - image_status: - $ref: '#/components/schemas/ImageStatus' - request: - $ref: "#/components/schemas/ComposeRequest" - ImageStatus: - required: - - status - properties: - status: - type: string - enum: ['success', 'failure', 'pending', 'building', 'uploading', 'registering'] - example: 'success' - upload_status: - $ref: '#/components/schemas/UploadStatus' - error: - $ref: '#/components/schemas/ComposeStatusError' - ComposeStatusError: - required: - - id - - reason - properties: - id: - type: integer - reason: - type: string - details: {} - CloneStatusResponse: - required: - - compose_id - allOf: - - type: object - properties: - compose_id: - type: string - format: uuid - - $ref: '#/components/schemas/UploadStatus' - UploadStatus: - required: - - status - - type - - options - properties: - status: - type: string - enum: ['success', 'failure', 'pending', 'running'] - type: - $ref: '#/components/schemas/UploadTypes' - options: - oneOf: - - $ref: '#/components/schemas/AWSUploadStatus' - - $ref: '#/components/schemas/AWSS3UploadStatus' - - $ref: '#/components/schemas/GCPUploadStatus' - - $ref: '#/components/schemas/AzureUploadStatus' - - $ref: '#/components/schemas/OCIUploadStatus' - AWSUploadStatus: - type: object - required: - - ami - - region - properties: - ami: - type: string - example: 'ami-0c830793775595d4b' - region: - type: string - example: 'eu-west-1' - AWSS3UploadStatus: - type: object - required: - - url - properties: - url: - type: string - GCPUploadStatus: - type: object - required: - - project_id - - image_name - properties: - project_id: - type: string - example: 'ascendant-braid-303513' - image_name: - type: string - example: 'my-image' - AzureUploadStatus: - type: object - required: - - image_name - properties: - image_name: - type: string - example: 'my-image' - OCIUploadStatus: - type: object - required: - - url - properties: - url: - type: string - ComposeRequest: - type: object - additionalProperties: false - required: - - distribution - - image_requests - properties: - distribution: - $ref: '#/components/schemas/Distributions' - image_name: - type: string - example: "MyImageName" - maxLength: 100 - image_description: - type: string - example: "MyImageDescription" - maxLength: 250 - client_id: - $ref: '#/components/schemas/ClientId' - image_requests: - type: array - minItems: 1 - maxItems: 1 - items: - $ref: '#/components/schemas/ImageRequest' - uniqueItems: true - description: | - Array of exactly one image request. Having more image requests in one compose is currently not supported. - customizations: - $ref: '#/components/schemas/Customizations' - CreateBlueprintRequest: - type: object - additionalProperties: false - required: - - name - - distribution - - image_requests - - customizations - properties: - name: - type: string - example: "My Blueprint" - maxLength: 100 - description: - type: string - example: "My blueprint description" - maxLength: 250 - distribution: - $ref: '#/components/schemas/Distributions' - image_requests: - type: array - minItems: 1 - items: - $ref: '#/components/schemas/ImageRequest' - uniqueItems: true - description: | - Array of image requests. Having more image requests in a single blueprint is currently not supported. - customizations: - $ref: '#/components/schemas/Customizations' - metadata: - $ref: '#/components/schemas/BlueprintMetadata' - CreateBlueprintResponse: - required: - - id - properties: - id: - type: string - format: uuid - BlueprintsResponse: - required: - - meta - - links - - data - properties: - meta: - $ref: '#/components/schemas/ListResponseMeta' - links: - $ref: '#/components/schemas/ListResponseLinks' - data: - type: array - items: - $ref: '#/components/schemas/BlueprintItem' - BlueprintItem: - required: - - id - - version - - name - - description - - last_modified_at - properties: - id: - type: string - format: uuid - version: - type: integer - name: - type: string - description: - type: string - last_modified_at: - type: string - BlueprintResponse: - required: - - id - - name - - description - - lint - - distribution - - image_requests - - customizations - properties: - id: - type: string - format: uuid - name: - type: string - description: - type: string - lint: - $ref: "#/components/schemas/BlueprintLint" - distribution: - $ref: '#/components/schemas/Distributions' - image_requests: - type: array - minItems: 1 - items: - $ref: '#/components/schemas/ImageRequest' - uniqueItems: true - description: | - Array of image requests. Having more image requests in a single blueprint is currently not supported. - customizations: - $ref: '#/components/schemas/Customizations' - BlueprintExportResponse: - required: - - name - - description - - distribution - - customizations - - metadata - properties: - name: - type: string - description: - type: string - distribution: - $ref: '#/components/schemas/Distributions' - customizations: - $ref: '#/components/schemas/Customizations' - metadata: - $ref: '#/components/schemas/BlueprintMetadata' - content_sources: - type: array - items: - type: object - additionalProperties: true - description: | - List of custom repositories including all the repository details needed in order - to recreate the repositories. - snapshot_date: - type: string - description: | - Importing the snapshot date will not yet be supported. It is exported for informative reasons. - The format is YYYY-MM-DD. - BlueprintMetadata: - required: - - parent_id - - exported_at - - is_on_prem - properties: - parent_id: - type: string - format: uuid - nullable: true - exported_at: - type: string - is_on_prem: - type: boolean - default: false - BlueprintLint: - required: - - errors - description: | - Linting errors in the current blueprint, these might need to be resolved before the - blueprint can be used to build images again. - properties: - errors: - type: array - items: - $ref: '#/components/schemas/BlueprintLintItem' - BlueprintLintItem: - type: object - required: - - name - - description - properties: - name: - type: string - example: Compliance - description: - type: string - example: package a required by policy is not present - Distributions: - type: string - description: | - List of all distributions that image builder supports. A user might not have access to - restricted distributions. - - Restricted distributions include the RHEL nightlies and the Fedora distributions. - enum: - - rhel-8 - - rhel-8-nightly - - rhel-84 - - rhel-85 - - rhel-86 - - rhel-87 - - rhel-88 - - rhel-89 - - rhel-8.10 - - rhel-9 - - rhel-9-nightly - - rhel-9.6-nightly - - rhel-9.7-nightly - - rhel-9-beta - - rhel-90 - - rhel-91 - - rhel-92 - - rhel-93 - - rhel-94 - - rhel-95 - - rhel-9.6 - - rhel-10 - - rhel-10-nightly - - rhel-10.0-nightly - - rhel-10.1-nightly - - rhel-10-beta - - rhel-10.0 - - centos-9 - - centos-10 - - fedora-37 - - fedora-38 - - fedora-39 - - fedora-40 - - fedora-41 - - fedora-42 - ImageRequest: - type: object - additionalProperties: false - required: - - architecture - - image_type - - upload_request - properties: - architecture: - type: string - enum: - - x86_64 - - aarch64 - description: | - CPU architecture of the image, x86_64 and aarch64 are currently supported. - image_type: - $ref: '#/components/schemas/ImageTypes' - upload_request: - $ref: '#/components/schemas/UploadRequest' - ostree: - $ref: '#/components/schemas/OSTree' - size: - x-go-type: uint64 - example: 4294967296 - description: | - Size of image, in bytes. When set to 0 the image size is a minimum - defined by the image type. - snapshot_date: - type: string - description: | - Snapshotted content will be used instead of the official repositories of the - distribution. The snapshot that was made closest to, but before the specified date will - be used. If no snapshots made before the specified date can be found, the snapshot - closest to, but after the specified date will be used. If no snapshots can be found at - all, the request will fail. The format must be YYYY-MM-DD (ISO 8601 extended). - content_template: - type: string - description: | - ID of the content template. A content template and snapshot date cannot both be specified. - If a content template is specified, the snapshot date used will be the one from the content template. - content_template_name: - type: string - description: | - Name of the content template. Used when registering the system to Insights. - aap_registration: - $ref: '#/components/schemas/AAPRegistration' - ImageTypes: - type: string - enum: - - aws - - azure - - edge-commit - - edge-installer - - gcp - - guest-image - - image-installer - - oci - - vsphere - - vsphere-ova - - wsl - # backwards compatible aliases - - ami # == aws - - rhel-edge-commit # == edge-commit - - rhel-edge-installer # == edge-installer - - vhd # == azure - ComposesResponse: - required: - - meta - - links - - data - properties: - meta: - $ref: '#/components/schemas/ListResponseMeta' - links: - $ref: '#/components/schemas/ListResponseLinks' - data: - type: array - items: - $ref: '#/components/schemas/ComposesResponseItem' - ComposesResponseItem: - required: - - id - - request - - created_at - properties: - id: - type: string - format: uuid - request: - $ref: "#/components/schemas/ComposeRequest" - created_at: - type: string - image_name: - type: string - client_id: - $ref: '#/components/schemas/ClientId' - blueprint_id: - type: string - format: uuid - nullable: true - blueprint_version: - type: integer - nullable: true - ClientId: - type: string - enum: ["api", "ui"] - default: "api" - ComposeResponse: - required: - - id - properties: - id: - type: string - format: uuid - UploadRequest: - type: object - required: - - type - - options - properties: - type: - $ref: '#/components/schemas/UploadTypes' - options: - anyOf: - - $ref: '#/components/schemas/AWSUploadRequestOptions' - - $ref: '#/components/schemas/AWSS3UploadRequestOptions' - - $ref: '#/components/schemas/GCPUploadRequestOptions' - - $ref: '#/components/schemas/AzureUploadRequestOptions' - - $ref: '#/components/schemas/OCIUploadRequestOptions' - UploadTypes: - type: string - enum: - - aws - - gcp - - azure - - aws.s3 - - oci.objectstorage - AWSUploadRequestOptions: - type: object - properties: - share_with_accounts: - type: array - example: ['123456789012'] - items: - type: string - uniqueItems: true - share_with_sources: - type: array - example: ['12345'] - items: - type: string - uniqueItems: true - AWSS3UploadRequestOptions: - type: object - GCPUploadRequestOptions: - type: object - properties: - share_with_accounts: - type: array - example: [ - 'user:alice@example.com', - 'serviceAccount:my-other-app@appspot.gserviceaccount.com', - 'group:admins@example.com', - 'domain:example.com' - ] - description: | - List of valid Google accounts to share the imported Compute Node image with. - Each string must contain a specifier of the account type. Valid formats are: - - 'user:{emailid}': An email address that represents a specific - Google account. For example, 'alice@example.com'. - - 'serviceAccount:{emailid}': An email address that represents a - service account. For example, 'my-other-app@appspot.gserviceaccount.com'. - - 'group:{emailid}': An email address that represents a Google group. - For example, 'admins@example.com'. - - 'domain:{domain}': The G Suite domain (primary) that represents all - the users of that domain. For example, 'google.com' or 'example.com'. - If not specified, the imported Compute Node image is not shared with any - account. - items: - type: string - uniqueItems: true - AzureUploadRequestOptions: - type: object - required: - - resource_group - properties: - source_id: - type: string - example: '12345' - description: | - ID of the source that will be used to resolve the tenant and subscription IDs. - Do not provide a tenant_id or subscription_id when providing a source_id. - tenant_id: - type: string - example: '5c7ef5b6-1c3f-4da0-a622-0b060239d7d7' - description: | - ID of the tenant where the image should be uploaded. This link explains how - to find it in the Azure Portal: - https://docs.microsoft.com/en-us/azure/active-directory/fundamentals/active-directory-how-to-find-tenant - When providing a tenant_id, also be sure to provide a subscription_id and do not include a source_id. - subscription_id: - type: string - example: '4e5d8b2c-ab24-4413-90c5-612306e809e2' - description: | - ID of subscription where the image should be uploaded. - When providing a subscription_id, also be sure to provide a tenant_id and do not include a source_id. - resource_group: - type: string - example: 'ToucanResourceGroup' - description: | - Name of the resource group where the image should be uploaded. - image_name: - type: string - example: 'LinuxImage' - pattern: '(^[a-zA-Z0-9]$)|(^[a-zA-Z0-9][a-zA-Z0-9_\.-]*[a-zA-Z0-9_]$)' - minLength: 1 - maxLength: 60 - description: | - Name of the created image. - Must begin with a letter or number, end with a letter, number or underscore, and may contain only letters, numbers, underscores, periods, or hyphens. - The total length is limited to 60 characters. - hyper_v_generation: - type: string - enum: - - V1 - - V2 - default: V1 - description: | - Choose the VM Image HyperV generation, different features on Azure are available - depending on the HyperV generation. - OCIUploadRequestOptions: - type: object - OSTree: - type: object - properties: - url: - type: string - contenturl: - type: string - description: | - A URL which, if set, is used for fetching content. Implies that `url` is set as well, - which will be used for metadata only. - ref: - type: string - example: 'rhel/8/x86_64/edge' - parent: - type: string - description: > - Can be either a commit (example: - 02604b2da6e954bd34b8b82a835e5a77d2b60ffa), or a branch-like - reference (example: rhel/8/x86_64/edge) - example: 'rhel/8/x86_64/edge' - rhsm: - type: boolean - description: | - Determines whether a valid subscription manager (candlepin) identity is required to - access this repository. Consumer certificates will be used as client certificates when - fetching metadata and content. - AAPRegistration: - type: object - x-go-name: AAPRegistration - additionalProperties: false - required: - - ansible_controller_url - - job_template_id - - host_config_key - properties: - ansible_controller_url: - type: string - example: "example.towerhost.net" - job_template_id: - type: integer - example: 38 - host_config_key: - type: string - example: "44d7507f2ead49af5fca80aa18fd24bc" - tls_certificate_authority: - type: string - x-go-type-skip-optional-pointer: true - PackagesResponse: - type: object - required: - - meta - - links - - data - properties: - meta: - $ref: '#/components/schemas/ListResponseMeta' - links: - $ref: '#/components/schemas/ListResponseLinks' - data: - type: array - items: - $ref: '#/components/schemas/Package' - Package: - required: - - name - - summary - properties: - name: - type: string - summary: - type: string - ComposeMetadata: - type: object - properties: - packages: - type: array - items: - $ref: '#/components/schemas/PackageMetadata' - description: 'Package list including NEVRA' - ostree_commit: - type: string - description: 'ID (hash) of the built commit' - PackageMetadata: - required: - - type - - name - - version - - release - - arch - - sigmd5 - properties: - type: - type: string - name: - type: string - version: - type: string - release: - type: string - epoch: - type: string - arch: - type: string - sigmd5: - type: string - signature: - type: string - RecommendPackageRequest: - required: - - packages - - recommendedPackages - type: object - properties: - packages: - type: array - items: - type: string - recommendedPackages: - type: integer - format: int32 - default: 3 - RecommendationsResponse: - required: - - packages - type: object - properties: - packages: - type: array - items: - type: string - ClonesResponse: - required: - - meta - - links - - data - properties: - meta: - $ref: '#/components/schemas/ListResponseMeta' - links: - $ref: '#/components/schemas/ListResponseLinks' - data: - type: array - items: - $ref: '#/components/schemas/ClonesResponseItem' - ClonesResponseItem: - required: - - id - - compose_id - - request - - created_at - properties: - id: - type: string - format: uuid - compose_id: - type: string - format: uuid - description: 'UUID of the parent compose of the clone' - request: - $ref: '#/components/schemas/CloneRequest' - created_at: - type: string - CloneRequest: - oneOf: - - $ref: '#/components/schemas/AWSEC2Clone' - AWSEC2Clone: - type: object - required: - - region - properties: - region: - type: string - description: | - A region as described in - https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-regions-availability-zones.html#concepts-regions - share_with_accounts: - type: array - maxItems: 100 - example: ['123456789012'] - description: | - An array of AWS account IDs as described in - https://docs.aws.amazon.com/IAM/latest/UserGuide/console_account-alias.html - items: - type: string - pattern: '^[0-9]{12}$' - share_with_sources: - type: array - example: ['12345'] - items: - type: string - uniqueItems: true - CloneResponse: - required: - - id - properties: - id: - type: string - format: uuid - example: '123e4567-e89b-12d3-a456-426655440000' - DistributionProfileResponse: - type: array - description: | - List of profiles for a given distribution - items: - $ref: '#/components/schemas/DistributionProfileItem' - DistributionProfileItem: - type: string - enum: - - xccdf_org.ssgproject.content_profile_anssi_bp28_enhanced - - xccdf_org.ssgproject.content_profile_anssi_bp28_high - - xccdf_org.ssgproject.content_profile_anssi_bp28_intermediary - - xccdf_org.ssgproject.content_profile_anssi_bp28_minimal - - xccdf_org.ssgproject.content_profile_ccn_advanced - - xccdf_org.ssgproject.content_profile_ccn_basic - - xccdf_org.ssgproject.content_profile_ccn_intermediate - - xccdf_org.ssgproject.content_profile_cis - - xccdf_org.ssgproject.content_profile_cis_server_l1 - - xccdf_org.ssgproject.content_profile_cis_workstation_l1 - - xccdf_org.ssgproject.content_profile_cis_workstation_l2 - - xccdf_org.ssgproject.content_profile_cui - - xccdf_org.ssgproject.content_profile_e8 - - xccdf_org.ssgproject.content_profile_hipaa - - xccdf_org.ssgproject.content_profile_ism_o - - xccdf_org.ssgproject.content_profile_ospp - - xccdf_org.ssgproject.content_profile_pci-dss - - xccdf_org.ssgproject.content_profile_standard - - xccdf_org.ssgproject.content_profile_stig - - xccdf_org.ssgproject.content_profile_stig_gui - - # all customizations and sub-objects - Customizations: - type: object - properties: - containers: - type: array - items: - $ref: '#/components/schemas/Container' - description: Container images to embed into the final artfact - directories: - type: array - items: - $ref: '#/components/schemas/Directory' - description: Directories to create in the final artifact - files: - type: array - items: - $ref: '#/components/schemas/File' - description: Files to create in the final artifact - subscription: - $ref: '#/components/schemas/Subscription' - packages: - type: array - maxItems: 10000 - example: ['postgresql'] - items: - type: string - enabled_modules: - type: array - description: | - List of dnf modules to enable, so that packages can be installed from them. - items: - $ref: '#/components/schemas/Module' - payload_repositories: - type: array - items: - $ref: '#/components/schemas/Repository' - custom_repositories: - type: array - items: - $ref: '#/components/schemas/CustomRepository' - description: List of custom repositories. - openscap: - $ref: '#/components/schemas/OpenSCAP' - filesystem: - type: array - maxItems: 128 - items: - $ref: '#/components/schemas/Filesystem' - users: - type: array - items: - $ref: '#/components/schemas/User' - description: | - List of users that a customer can add, - also specifying their respective groups and SSH keys and/or password - services: - $ref: '#/components/schemas/Services' - hostname: - type: string - description: Configures the hostname - example: myhostname - kernel: - $ref: '#/components/schemas/Kernel' - groups: - type: array - description: List of groups to create - items: - $ref: '#/components/schemas/Group' - timezone: - $ref: '#/components/schemas/Timezone' - locale: - $ref: '#/components/schemas/Locale' - firewall: - $ref: '#/components/schemas/FirewallCustomization' - installation_device: - type: string - description: | - Name of the installation device, currently only useful for the edge-simplified-installer type - example: /dev/sda - fdo: - $ref: '#/components/schemas/FDO' - ignition: - $ref: '#/components/schemas/Ignition' - partitioning_mode: - type: string - enum: - - raw - - lvm - - auto-lvm - description: | - Select how the disk image will be partitioned. 'auto-lvm' will use raw unless - there are one or more mountpoints in which case it will use LVM. 'lvm' always - uses LVM, even when there are no extra mountpoints. 'raw' uses raw partitions - even when there are one or more mountpoints. - fips: - $ref: '#/components/schemas/FIPS' - installer: - $ref: '#/components/schemas/Installer' - cacerts: - $ref: '#/components/schemas/CACertsCustomization' - Container: - type: object - required: - - source - properties: - source: - type: string - description: Reference to the container to embed - example: 'registry.example.com/image:tag' - name: - type: string - description: Name to use for the container from the image - tls_verify: - type: boolean - description: Control TLS verifification - example: true - FirewallCustomization: - type: object - description: Firewalld configuration - additionalProperties: false - properties: - ports: - type: array - description: List of ports (or port ranges) and protocols to open - example: ["22:tcp", "80:tcp", "imap:tcp"] - items: - type: string - services: - type: object - description: Firewalld services to enable or disable - additionalProperties: false - properties: - enabled: - type: array - description: List of services to enable - example: ["ftp", "ntp"] - items: - type: string - disabled: - type: array - description: List of services to disable - example: ["telnet"] - items: - type: string - Directory: - type: object - description: | - A custom directory to create in the final artifact. - required: - - path - properties: - path: - type: string - description: Path to the directory - example: '/etc/mydir' - mode: - type: string - description: Permissions string for the directory in octal format - example: "0755" - user: - oneOf: - - type: string - - type: integer - x-go-type: int64 - description: Owner of the directory as a user name or a uid - example: 'root' - group: - oneOf: - - type: string - - type: integer - x-go-type: int64 - description: Group of the directory as a group name or a gid - example: 'root' - ensure_parents: - type: boolean - description: Ensure that the parent directories exist - default: false - File: - type: object - description: | - A custom file to create in the final artifact. - required: - - path - properties: - path: - type: string - description: Path to the file - example: '/etc/myfile' - mode: - type: string - description: Permissions string for the file in octal format - example: "0644" - user: - oneOf: - - type: string - - type: integer - x-go-type: int64 - description: Owner of the file as a uid or a user name - example: 'root' - group: - oneOf: - - type: string - - type: integer - x-go-type: int64 - description: Group of the file as a gid or a group name - example: 'root' - data: - type: string - description: Contents of the file as plain text - data_encoding: - type: string - enum: ['plain', 'base64'] - description: When data is base64-encoded to prevent Akamai content filter false positives - default: 'plain' - ensure_parents: - type: boolean - description: Ensure that the parent directories exist - example: true - default: false - Kernel: - type: object - additionalProperties: false - properties: - name: - type: string - description: Name of the kernel to use - example: kernel-debug - append: - type: string - description: Appends arguments to the bootloader kernel command line - example: nosmt=force - Services: - type: object - additionalProperties: false - properties: - enabled: - description: List of services to enable by default - type: array - minItems: 1 - items: - type: string - example: "nftables" - disabled: - description: List of services to disable by default - type: array - minItems: 1 - items: - type: string - example: "firewalld" - masked: - description: List of services to mask by default - type: array - minItems: 1 - items: - type: string - example: "telnet" - Timezone: - type: object - description: Timezone configuration - additionalProperties: false - properties: - timezone: - type: string - description: Name of the timezone, defaults to UTC - example: US/Eastern - ntpservers: - type: array - description: List of ntp servers - example: ["0.north-america.pool.ntp.org", "1.north-america.pool.ntp.org"] - items: - type: string - Locale: - type: object - description: Locale configuration - additionalProperties: false - properties: - languages: - type: array - description: | - List of locales to be installed, the first one becomes primary, subsequent ones are secondary - example: ["en_US.UTF-8"] - items: - type: string - keyboard: - type: string - description: Sets the keyboard layout - example: us - FDO: - type: object - additionalProperties: false - description: FIDO device onboard configuration - properties: - manufacturing_server_url: - type: string - diun_pub_key_insecure: - type: string - diun_pub_key_hash: - type: string - diun_pub_key_root_certs: - type: string - FIPS: - type: object - additionalProperties: false - description: System FIPS mode setup - properties: - enabled: - type: boolean - description: Enables the system FIPS mode - default: false - Installer: - type: object - additionalProperties: false - description: Anaconda installer configuration - properties: - unattended: - type: boolean - description: | - Create a kickstart file for a fully automated installation - sudo-nopasswd: - type: array - items: - type: string - description: | - Enable passwordless sudo for users or groups (groups must be prefixed by %) - CACertsCustomization: - type: object - additionalProperties: false - required: - - pem_certs - properties: - pem_certs: - type: array - example: [ '---BEGIN CERTIFICATE---\nMIIC0DCCAbigAwIBAgIUI...\n---END CERTIFICATE---' ] - items: - type: string - Ignition: - type: object - additionalProperties: false - description: Ignition configuration - properties: - embedded: - $ref: '#/components/schemas/IgnitionEmbedded' - firstboot: - $ref: '#/components/schemas/IgnitionFirstboot' - IgnitionEmbedded: - type: object - additionalProperties: false - required: - - config - properties: - config: - type: string - IgnitionFirstboot: - type: object - additionalProperties: false - required: - - url - properties: - url: - type: string - description: Provisioning URL - Group: - type: object - additionalProperties: false - required: - - name - properties: - name: - type: string - description: Name of the group to create - gid: - type: integer - description: Group id of the group to create (optional) - User: - type: object - required: - - name - description: | - At least one of password, ssh_key must be set, validator takes care of it. - On update empty string can be used to remove password or ssh_key, - but at least one of them still must be present. - properties: - name: - type: string - example: "user1" - groups: - type: array - items: - type: string - description: | - List of groups to add the user to. The 'wheel' group should be added explicitly, as the - default value is empty. - example: ['wheel'] - ssh_key: - type: string - example: "ssh-rsa AAAAB3NzaC1" - password: - type: string - format: password - example: "$6$G91SvTj7uVp3xhqj$zVa8nqnJTlewniDII5dmvsBJnj3kloL3CXWdPDu9.e677VoRQd5zB6GKwkDvfGLoRR7NTl5nXLnJywk6IPIvS." - description: | - Plaintext passwords are also supported, they will be hashed and stored using the SHA-512 algorithm. - The password is never returned in the response. - Empty string can be used to remove the password during update but only with ssh_key set. - hasPassword: - type: boolean - description: | - Indicates whether the user has a password set. This flag is read-only. - Filesystem: - type: object - required: - - mountpoint - - min_size - properties: - mountpoint: - type: string - example: '/var' - min_size: - x-go-type: uint64 - example: 2147483648 - description: 'size of the filesystem in bytes' - Subscription: - type: object - required: - - organization - - activation-key - - server-url - - base-url - - insights - properties: - organization: - type: integer - example: 2040324 - activation-key: - type: string - format: password - example: 'my-secret-key' - server-url: - type: string - example: 'subscription.rhsm.redhat.com' - base-url: - type: string - example: http://cdn.redhat.com/ - insights: - type: boolean - example: true - rhc: - type: boolean - default: false - example: true - description: | - Optional flag to use rhc to register the system, which also always enables Insights. - insights_client_proxy: - type: string - format: uri - description: | - Optional value to set proxy option when registering the system to Insights. - OpenSCAP: - oneOf: - - $ref: '#/components/schemas/OpenSCAPProfile' - - $ref: '#/components/schemas/OpenSCAPCompliance' - OpenSCAPCompliance: - type: object - required: - - policy_id - properties: - policy_id: - type: string - format: uuid - example: 'fef25b3c-b970-46da-a4e1-cc4d855b98dc' - description: | - Apply a compliance policy which is defined in the Red Hat Insights Compliance - service. This policy can include tailorings. This only works for RHEL images, and the - policy needs to be available for the specific RHEL version. - OpenSCAPProfile: - type: object - required: - - profile_id - properties: - profile_id: - type: string - example: "xccdf_org.ssgproject.content_profile_cis" - description: | - Uses the OpenSCAP tooling directly to apply a pre-defined profile without tailorings. - profile_name: - type: string - description: "The profile type" - profile_description: - type: string - description: "The longform profile description" - CustomRepository: - type: object - required: - - id - description: | - Repository configuration for custom repositories. - At least one of the 'baseurl', 'mirrorlist', 'metalink' properties must - be specified. If more of them are specified, the order of precedence is - the same as listed above. Id is required. - properties: - id: - type: string - name: - type: string - filename: - type: string - baseurl: - type: array - example: [ 'https://cdn.redhat.com/content/dist/rhel8/8/x86_64/baseos/os/' ] - items: - type: string - format: uri - mirrorlist: - type: string - format: uri - example: 'http://mirrorlist.centos.org/?release=9-stream&arch=aarch64&repo=BaseOS' - metalink: - type: string - format: uri - example: 'https://mirrors.fedoraproject.org/metalink?repo=fedora-32&arch=x86_64' - gpgkey: - type: array - example: [ "-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBGAcScoBEADLf8YHkezJ6adlMYw7aGGIlJalt8Jj2x/B2K+hIfIuxGtpVj7e\nLRgDU76jaT5pVD5mFMJ3pkeneR/cTmqqQkNyQshX2oQXwEzUSb1CNMCfCGgkX8Q2\nzZkrIcCrF0Q2wrKblaudhU+iVanADsm18YEqsb5AU37dtUrM3QYdWg9R+XiPfV8R\nKBjT03vVBOdMSsY39LaCn6Ip1Ovp8IEo/IeEVY1qmCOPAaK0bJH3ufg4Cueks+TS\nwQWTeCLxuZL6OMXoOPKwvMQfxbg1XD8vuZ0Ktj/cNH2xau0xmsAu9HJpekvOPRxl\nyqtjyZfroVieFypwZgvQwtnnM8/gSEu/JVTrY052mEUT7Ccb74kcHFTFfMklnkG/\n0fU4ARa504H3xj0ktbe3vKcPXoPOuKBVsHSv00UGYAyPeuy+87cU/YEhM7k3SVKj\n6eIZgyiMO0wl1YGDRKculwks9A+ulkg1oTb4s3zmZvP07GoTxW42jaK5WS+NhZee\n860XoVhbc1KpS+jfZojsrEtZ8PbUZ+YvF8RprdWArjHbJk2JpRKAxThxsQAsBhG1\n0Lux2WaMB0g2I5PcMdJ/cqjo08ccrjBXuixWri5iu9MXp8qT/fSzNmsdIgn8/qZK\ni8Qulfu77uqhW/wt2btnitgRsqjhxMujYU4Zb4hktF8hKU/XX742qhL5KwARAQAB\ntDFGZWRvcmEgKDM1KSA8ZmVkb3JhLTM1LXByaW1hcnlAZmVkb3JhcHJvamVjdC5v\ncmc+iQJOBBMBCAA4FiEEeH6mrhFH7uVsQLMM20Y5cZhnxY8FAmAcScoCGw8FCwkI\nBwIGFQoJCAsCBBYCAwECHgECF4AACgkQ20Y5cZhnxY+NYA/7BYpglySAZYHhjyKh\n/+f6zPfVvbH20Eq3kI7OFBN0nLX+BU1muvS+qTuS3WLrB3m3GultpKREJKLtm5ED\n1rGzXAoT1yp9YI8LADdMCCOyjAjsoWU87YUuC+/bnjrTeR2LROCfyPC76W985iOV\nm5S+bsQDw7C2LrldAM4MDuoyZ1SitGaZ4KQLVt+TEa14isYSGCjzo7PY8V3JOk50\ngqWg82N/bm2EzS7T83WEDb1lvj4IlvxgIqKeg11zXYxmrYSZJJCfvzf+lNS6uxgH\njx/J0ylZ2LibGr6GAAyO9UWrAZSwSM0EcjT8wECnxkSDuyqmWwVvNBXuEIV8Oe3Y\nMiU1fJN8sd7DpsFx5M+XdnMnQS+HrjTPKD3mWrlAdnEThdYV8jZkpWhDys3/99eO\nhk0rLny0jNwkauf/iU8Oc6XvMkjLRMJg5U9VKyJuWWtzwXnjMN5WRFBqK4sZomMM\nftbTH1+5ybRW/A3vBbaxRW2t7UzNjczekSZEiaLN9L/HcJCIR1QF8682DdAlEF9d\nk2gQiYSQAaaJ0JJAzHvRkRJLLgK2YQYiHNVy2t3JyFfsram5wSCWOfhPeIyLBTZJ\nvrpNlPbefsT957Tf2BNIugzZrC5VxDSKkZgRh1VGvSIQnCyzkQy6EU2qPpiW59G/\nhPIXZrKocK3KLS9/izJQTRltjMA=\n=PfT7\n-----END PGP PUBLIC KEY BLOCK-----\n" ] - description: 'GPG key used to sign packages in this repository. Can be a gpg key or a URL' - items: - type: string - check_gpg: - type: boolean - check_repo_gpg: - type: boolean - enabled: - type: boolean - priority: - type: integer - ssl_verify: - type: boolean - module_hotfixes: - type: boolean - Repository: - type: object - required: - - rhsm - properties: - id: - type: string - description: | - An ID referring to a repository defined in content sources can be used instead of - 'baseurl', 'mirrorlist' or 'metalink'. - rhsm: - type: boolean - baseurl: - type: string - format: uri - example: 'https://cdn.redhat.com/content/dist/rhel8/8/x86_64/baseos/os/' - mirrorlist: - type: string - format: uri - example: 'http://mirrorlist.centos.org/?release=9-stream&arch=aarch64&repo=BaseOS' - metalink: - type: string - format: uri - example: 'https://mirrors.fedoraproject.org/metalink?repo=fedora-32&arch=x86_64' - gpgkey: - type: string - check_gpg: - type: boolean - check_repo_gpg: - type: boolean - default: false - description: | - Enables gpg verification of the repository metadata - ignore_ssl: - type: boolean - module_hotfixes: - type: boolean - Module: - type: object - required: - - name - - stream - additionalProperties: false - properties: - name: - type: string - example: 'nodejs' - description: | - Name of the module to enable. - stream: - type: string - example: '22' - description: | - Stream to enable. diff --git a/api/schema/provisioning.json b/api/schema/provisioning.json deleted file mode 100644 index 5a6fda8a..00000000 --- a/api/schema/provisioning.json +++ /dev/null @@ -1,2044 +0,0 @@ -{ - "components": { - "examples": { - "v1.AvailabilityStatusRequest": { - "value": { - "source_id": "463243" - } - }, - "v1.AwsReservationRequestPayloadExample": { - "value": { - "amount": 1, - "image_id": "ami-7846387643232", - "instance_type": "t3.small", - "launch_template_id": "", - "name": "my-instance", - "poweroff": false, - "pubkey_id": 42, - "region": "us-east-1", - "source_id": "654321" - } - }, - "v1.AwsReservationResponsePayloadDoneExample": { - "value": { - "amount": 1, - "aws_reservation_id": "r-3743243324231", - "image_id": "ami-7846387643232", - "instance_type": "t3.small", - "instances": [ - { - "detail": { - "publicdns": "", - "publicipv4": "10.0.0.88" - }, - "instance_id": "i-2324343212" - } - ], - "launch_template_id": "", - "name": "my-instance", - "poweroff": false, - "pubkey_id": 42, - "region": "us-east-1", - "reservation_id": 1305, - "source_id": "654321" - } - }, - "v1.AwsReservationResponsePayloadPendingExample": { - "value": { - "amount": 1, - "aws_reservation_id": "", - "image_id": "ami-7846387643232", - "instance_type": "t3.small", - "instances": [], - "launch_template_id": "", - "name": "my-instance", - "poweroff": false, - "pubkey_id": 42, - "region": "us-east-1", - "reservation_id": 0, - "source_id": "654321" - } - }, - "v1.AzureReservationRequestPayloadExample": { - "value": { - "amount": 1, - "image_id": "composer-api-081fc867-838f-44a5-af03-8b8def808431", - "instance_size": "Basic_A0", - "location": "useast", - "name": "my-instance", - "poweroff": false, - "pubkey_id": 42, - "source_id": "654321" - } - }, - "v1.AzureReservationResponsePayloadDoneExample": { - "value": { - "amount": 1, - "image_id": "composer-api-081fc867-838f-44a5-af03-8b8def808431", - "instance_size": "Basic_A0", - "instances": [ - { - "detail": { - "publicdns": "", - "publicipv4": "10.0.0.88" - }, - "instance_id": "/subscriptions/4b9d213f-712f-4d17-a483-8a10bbe9df3a/resourceGroups/redhat-deployed/providers/Microsoft.Compute/images/composer-api-92ea98f8-7697-472e-80b1-7454fa0e7fa7" - } - ], - "location": "useast", - "name": "my-instance", - "poweroff": false, - "pubkey_id": 42, - "reservation_id": 1310, - "source_id": "654321" - } - }, - "v1.AzureReservationResponsePayloadPendingExample": { - "value": { - "amount": 1, - "image_id": "composer-api-081fc867-838f-44a5-af03-8b8def808431", - "instance_size": "Basic_A0", - "instances": [], - "location": "useast", - "name": "my-instance", - "poweroff": false, - "pubkey_id": 42, - "reservation_id": 1310, - "source_id": "654321" - } - }, - "v1.GCPReservationRequestPayloadExample": { - "value": { - "amount": 1, - "image_id": "08a48fed-de87-40ab-a571-f64e30bd0aa8", - "launch_template_id": "", - "machine_type": "e2-micro", - "name_pattern": "my-instance", - "poweroff": false, - "pubkey_id": 42, - "source_id": "654321", - "zone": "us-east-4" - } - }, - "v1.GCPReservationResponsePayloadDoneExample": { - "value": { - "amount": 1, - "gcp_operation_name": "operation-1686646674436-5fdff07e43209-66146b7e-f3f65ec5", - "image_id": "08a48fed-de87-40ab-a571-f64e30bd0aa8", - "instances": [ - { - "detail": { - "publicdns": "", - "publicipv4": "10.0.0.88" - }, - "instance_id": "3003942005876582747" - } - ], - "launch_template_id": "4883371230199373111", - "machine_type": "e2-micro", - "name_pattern": "my-instance", - "poweroff": false, - "pubkey_id": 42, - "reservation_id": 1305, - "source_id": "654321", - "zone": "us-east-4" - } - }, - "v1.GCPReservationResponsePayloadPendingExample": { - "value": { - "amount": 1, - "gcp_operation_name": "operation-1686646674436-5fdff07e43209-66146b7e-f3f65ec5", - "image_id": "08a48fed-de87-40ab-a571-f64e30bd0aa8", - "instances": [], - "launch_template_id": "4883371230199373111", - "machine_type": "e2-micro", - "name_pattern": "my-instance", - "poweroff": false, - "pubkey_id": 42, - "reservation_id": 1305, - "source_id": "654321", - "zone": "us-east-4" - } - }, - "v1.GenericReservationResponsePayloadFailureExample": { - "value": { - "created_at": "2013-05-13T19:20:15Z", - "error": "cannot launch ec2 instance: VPCIdNotSpecified: No default VPC for this user. GroupName is only supported for EC2-Classic and default VPC", - "finished_at": "2013-05-13T19:20:25Z", - "id": 1313, - "provider": 1, - "status": "Finished Launch instance(s)", - "step": 2, - "step_titles": [ - "Ensure public key", - "Launch instance(s)", - "Fetch instance(s) description" - ], - "steps": 3, - "success": false - } - }, - "v1.GenericReservationResponsePayloadListExample": { - "value": { - "data": [ - { - "created_at": "2013-05-13T19:20:15Z", - "error": "", - "finished_at": null, - "id": 1310, - "provider": 1, - "status": "Started Ensure public key", - "step": 1, - "step_titles": [ - "Ensure public key", - "Launch instance(s)", - "Fetch instance(s) description" - ], - "steps": 3, - "success": null - }, - { - "created_at": "2013-05-13T19:20:15Z", - "error": "", - "finished_at": "2013-05-13T19:20:25Z", - "id": 1305, - "provider": 1, - "status": "Finished Fetch instance(s) description", - "step": 3, - "step_titles": [ - "Ensure public key", - "Launch instance(s)", - "Fetch instance(s) description" - ], - "steps": 3, - "success": true - }, - { - "created_at": "2013-05-13T19:20:15Z", - "error": "cannot launch ec2 instance: VPCIdNotSpecified: No default VPC for this user. GroupName is only supported for EC2-Classic and default VPC", - "finished_at": "2013-05-13T19:20:25Z", - "id": 1313, - "provider": 1, - "status": "Finished Launch instance(s)", - "step": 2, - "step_titles": [ - "Ensure public key", - "Launch instance(s)", - "Fetch instance(s) description" - ], - "steps": 3, - "success": false - } - ] - } - }, - "v1.GenericReservationResponsePayloadPendingExample": { - "value": { - "created_at": "2013-05-13T19:20:15Z", - "error": "", - "finished_at": null, - "id": 1310, - "provider": 1, - "status": "Started Ensure public key", - "step": 1, - "step_titles": [ - "Ensure public key", - "Launch instance(s)", - "Fetch instance(s) description" - ], - "steps": 3, - "success": null - } - }, - "v1.GenericReservationResponsePayloadSuccessExample": { - "value": { - "created_at": "2013-05-13T19:20:15Z", - "error": "", - "finished_at": "2013-05-13T19:20:25Z", - "id": 1305, - "provider": 1, - "status": "Finished Fetch instance(s) description", - "step": 3, - "step_titles": [ - "Ensure public key", - "Launch instance(s)", - "Fetch instance(s) description" - ], - "steps": 3, - "success": true - } - }, - "v1.InstanceTypesAWSResponse": { - "value": { - "data": [ - { - "arch": "x86_64", - "cores": 16, - "memory_mib": 65536, - "name": "c5a.8xlarge", - "storage_gb": 0, - "supported": true, - "vcpus": 32 - } - ] - } - }, - "v1.InstanceTypesAzureResponse": { - "value": { - "data": [ - { - "arch": "x86_64", - "azure": { - "gen_v1": true, - "gen_v2": true - }, - "cores": 64, - "memory_mib": 2000000, - "name": "Standard_M128s", - "storage_gb": 4096, - "supported": true, - "vcpus": 128 - } - ] - } - }, - "v1.InstanceTypesGCPResponse": { - "value": { - "data": [ - { - "arch": "x86_64", - "cores": 0, - "memory_mib": 15623, - "name": "e2-highcpu-16", - "storage_gb": 0, - "supported": true, - "vcpus": 16 - } - ] - } - }, - "v1.LaunchTemplateListResponse": { - "value": { - "data": [ - { - "id": "lt-9843797432897342", - "name": "XXL large backend API" - } - ] - } - }, - "v1.NoopReservationResponsePayloadExample": { - "value": { - "reservation_id": 1310 - } - }, - "v1.PubkeyListResponseExample": { - "value": { - "data": [ - { - "body": "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIEhnn80ZywmjeBFFOGm+cm+5HUwm62qTVnjKlOdYFLHN lzap", - "fingerprint": "gL/y6MvNmJ8jDXtsL/oMmK8jUuIefN39BBuvYw/Rndk=", - "fingerprint_legacy": "ee:f1:d4:62:99:ab:17:d9:3b:00:66:62:32:b2:55:9e", - "id": 1, - "name": "My key", - "type": "ssh-ed25519" - } - ] - } - }, - "v1.PubkeyRequestExample": { - "value": { - "body": "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIEhnn80ZywmjeBFFOGm+cm+5HUwm62qTVnjKlOdYFLHN lzap", - "name": "My key" - } - }, - "v1.PubkeyResponseExample": { - "value": { - "body": "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIEhnn80ZywmjeBFFOGm+cm+5HUwm62qTVnjKlOdYFLHN lzap", - "fingerprint": "gL/y6MvNmJ8jDXtsL/oMmK8jUuIefN39BBuvYw/Rndk=", - "fingerprint_legacy": "ee:f1:d4:62:99:ab:17:d9:3b:00:66:62:32:b2:55:9e", - "id": 1, - "name": "My key", - "type": "ssh-ed25519" - } - }, - "v1.SourceListResponseExample": { - "value": { - "data": [ - { - "id": "654321", - "name": "My AWS account", - "source_type_id": "", - "uid": "" - }, - { - "id": "543621", - "name": "My other AWS account", - "source_type_id": "", - "uid": "" - } - ] - } - }, - "v1.SourceUploadInfoAWSResponse": { - "value": { - "aws": { - "account_id": "78462784632" - }, - "azure": null, - "gcp": null, - "provider": "aws" - } - }, - "v1.SourceUploadInfoAzureResponse": { - "value": { - "aws": null, - "azure": { - "resourcegroups": [ - "MyGroup 1", - "MyGroup 42" - ], - "subscriptionid": "617807e1-e4e0-4855-983c-1e3ce1e49674", - "tenantid": "617807e1-e4e0-481c-983c-be3ce1e49253" - }, - "gcp": null, - "provider": "azure" - } - } - }, - "responses": { - "BadRequest": { - "content": { - "application/json": { - "examples": { - "error": { - "value": { - "build_time": "2023-04-14_17:15:02", - "edge_id": "", - "environment": "", - "error": "error: bad request: details can be long", - "trace_id": "b57f7b78c", - "version": "df8a489" - } - } - }, - "schema": { - "$ref": "#/components/schemas/v1.ResponseError" - } - } - }, - "description": "The request's parameters are not valid" - }, - "InternalError": { - "content": { - "application/json": { - "examples": { - "error": { - "value": { - "build_time": "2023-04-14_17:15:02", - "edge_id": "", - "environment": "", - "error": "error: this can be pretty long string", - "trace_id": "b57f7b78c", - "version": "df8a489" - } - } - }, - "schema": { - "$ref": "#/components/schemas/v1.ResponseError" - } - } - }, - "description": "The server encountered an internal error" - }, - "NotFound": { - "content": { - "application/json": { - "examples": { - "error": { - "value": { - "build_time": "2023-04-14_17:15:02", - "edge_id": "", - "environment": "", - "error": "error: resource not found: details can be long", - "trace_id": "b57f7b78c", - "version": "df8a489" - } - } - }, - "schema": { - "$ref": "#/components/schemas/v1.ResponseError" - } - } - }, - "description": "The requested resource was not found" - } - }, - "schemas": { - "v1.AWSReservationRequest": { - "properties": { - "amount": { - "format": "int32", - "type": "integer" - }, - "image_id": { - "type": "string" - }, - "instance_type": { - "type": "string" - }, - "launch_template_id": { - "type": "string" - }, - "name": { - "type": "string" - }, - "poweroff": { - "type": "boolean" - }, - "pubkey_id": { - "format": "int64", - "type": "integer" - }, - "region": { - "type": "string" - }, - "source_id": { - "type": "string" - } - }, - "type": "object" - }, - "v1.AWSReservationResponse": { - "properties": { - "amount": { - "format": "int32", - "type": "integer" - }, - "aws_reservation_id": { - "type": "string" - }, - "image_id": { - "type": "string" - }, - "instance_type": { - "type": "string" - }, - "instances": { - "items": { - "properties": { - "detail": { - "properties": { - "public_dns": { - "type": "string" - }, - "public_ipv4": { - "type": "string" - } - }, - "type": "object" - }, - "instance_id": { - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "launch_template_id": { - "type": "string" - }, - "name": { - "type": "string" - }, - "poweroff": { - "type": "boolean" - }, - "pubkey_id": { - "format": "int64", - "type": "integer" - }, - "region": { - "type": "string" - }, - "reservation_id": { - "format": "int64", - "type": "integer" - }, - "source_id": { - "type": "string" - } - }, - "type": "object" - }, - "v1.AccountIDTypeResponse": { - "properties": { - "aws": { - "properties": { - "account_id": { - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "v1.AvailabilityStatusRequest": { - "properties": { - "source_id": { - "type": "string" - } - }, - "type": "object" - }, - "v1.AzureReservationRequest": { - "properties": { - "amount": { - "format": "int64", - "type": "integer" - }, - "image_id": { - "type": "string" - }, - "instance_size": { - "type": "string" - }, - "location": { - "type": "string" - }, - "name": { - "type": "string" - }, - "poweroff": { - "type": "boolean" - }, - "pubkey_id": { - "format": "int64", - "type": "integer" - }, - "source_id": { - "type": "string" - } - }, - "type": "object" - }, - "v1.AzureReservationResponse": { - "properties": { - "amount": { - "format": "int64", - "type": "integer" - }, - "image_id": { - "type": "string" - }, - "instance_size": { - "type": "string" - }, - "instances": { - "items": { - "properties": { - "detail": { - "properties": { - "public_dns": { - "type": "string" - }, - "public_ipv4": { - "type": "string" - } - }, - "type": "object" - }, - "instance_id": { - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "location": { - "type": "string" - }, - "name": { - "type": "string" - }, - "poweroff": { - "type": "boolean" - }, - "pubkey_id": { - "format": "int64", - "type": "integer" - }, - "reservation_id": { - "format": "int64", - "type": "integer" - }, - "source_id": { - "type": "string" - } - }, - "type": "object" - }, - "v1.GCPReservationRequest": { - "properties": { - "amount": { - "format": "int64", - "type": "integer" - }, - "image_id": { - "type": "string" - }, - "launch_template_id": { - "type": "string" - }, - "machine_type": { - "type": "string" - }, - "name_pattern": { - "type": "string" - }, - "poweroff": { - "type": "boolean" - }, - "pubkey_id": { - "format": "int64", - "type": "integer" - }, - "source_id": { - "type": "string" - }, - "zone": { - "type": "string" - } - }, - "type": "object" - }, - "v1.GCPReservationResponse": { - "properties": { - "amount": { - "format": "int64", - "type": "integer" - }, - "gcp_operation_name": { - "type": "string" - }, - "image_id": { - "type": "string" - }, - "instances": { - "items": { - "properties": { - "detail": { - "properties": { - "public_dns": { - "type": "string" - }, - "public_ipv4": { - "type": "string" - } - }, - "type": "object" - }, - "instance_id": { - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "launch_template_id": { - "type": "string" - }, - "machine_type": { - "type": "string" - }, - "name_pattern": { - "type": "string" - }, - "poweroff": { - "type": "boolean" - }, - "pubkey_id": { - "format": "int64", - "type": "integer" - }, - "reservation_id": { - "format": "int64", - "type": "integer" - }, - "source_id": { - "type": "string" - }, - "zone": { - "type": "string" - } - }, - "type": "object" - }, - "v1.GenericReservationResponse": { - "properties": { - "created_at": { - "format": "date-time", - "type": "string" - }, - "error": { - "type": "string" - }, - "finished_at": { - "format": "date-time", - "nullable": true, - "type": "string" - }, - "id": { - "format": "int64", - "type": "integer" - }, - "provider": { - "type": "integer" - }, - "status": { - "type": "string" - }, - "step": { - "format": "int32", - "type": "integer" - }, - "step_titles": { - "items": { - "type": "string" - }, - "type": "array" - }, - "steps": { - "format": "int32", - "type": "integer" - }, - "success": { - "nullable": true, - "type": "boolean" - } - }, - "type": "object" - }, - "v1.InstanceTypeResponse": { - "properties": { - "architecture": { - "type": "string" - }, - "azure": { - "properties": { - "gen_v1": { - "type": "boolean" - }, - "gen_v2": { - "type": "boolean" - } - }, - "type": "object" - }, - "cores": { - "format": "int32", - "type": "integer" - }, - "memory_mib": { - "format": "int64", - "type": "integer" - }, - "name": { - "type": "string" - }, - "storage_gb": { - "format": "int64", - "type": "integer" - }, - "supported": { - "type": "boolean" - }, - "vcpus": { - "format": "int32", - "type": "integer" - } - }, - "type": "object" - }, - "v1.LaunchTemplatesResponse": { - "properties": { - "id": { - "type": "string" - }, - "name": { - "type": "string" - } - }, - "type": "object" - }, - "v1.ListGenericReservationResponse": { - "properties": { - "data": { - "items": { - "properties": { - "created_at": { - "format": "date-time", - "type": "string" - }, - "error": { - "type": "string" - }, - "finished_at": { - "format": "date-time", - "nullable": true, - "type": "string" - }, - "id": { - "format": "int64", - "type": "integer" - }, - "provider": { - "type": "integer" - }, - "status": { - "type": "string" - }, - "step": { - "format": "int32", - "type": "integer" - }, - "step_titles": { - "items": { - "type": "string" - }, - "type": "array" - }, - "steps": { - "format": "int32", - "type": "integer" - }, - "success": { - "nullable": true, - "type": "boolean" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "v1.ListInstaceTypeResponse": { - "properties": { - "data": { - "items": { - "properties": { - "architecture": { - "type": "string" - }, - "azure": { - "properties": { - "gen_v1": { - "type": "boolean" - }, - "gen_v2": { - "type": "boolean" - } - }, - "type": "object" - }, - "cores": { - "format": "int32", - "type": "integer" - }, - "memory_mib": { - "format": "int64", - "type": "integer" - }, - "name": { - "type": "string" - }, - "storage_gb": { - "format": "int64", - "type": "integer" - }, - "supported": { - "type": "boolean" - }, - "vcpus": { - "format": "int32", - "type": "integer" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "v1.ListLaunchTemplateResponse": { - "properties": { - "data": { - "items": { - "properties": { - "id": { - "type": "string" - }, - "name": { - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "v1.ListPubkeyResponse": { - "properties": { - "data": { - "items": { - "properties": { - "body": { - "type": "string" - }, - "fingerprint": { - "type": "string" - }, - "fingerprint_legacy": { - "type": "string" - }, - "id": { - "format": "int64", - "type": "integer" - }, - "name": { - "type": "string" - }, - "type": { - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "v1.ListSourceResponse": { - "properties": { - "data": { - "items": { - "properties": { - "id": { - "type": "string" - }, - "name": { - "type": "string" - }, - "source_type_id": { - "type": "string" - }, - "uid": { - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "v1.NoopReservationResponse": { - "properties": { - "reservation_id": { - "format": "int64", - "type": "integer" - } - }, - "type": "object" - }, - "v1.PubkeyRequest": { - "properties": { - "body": { - "type": "string" - }, - "name": { - "type": "string" - } - }, - "type": "object" - }, - "v1.PubkeyResponse": { - "properties": { - "body": { - "type": "string" - }, - "fingerprint": { - "type": "string" - }, - "fingerprint_legacy": { - "type": "string" - }, - "id": { - "format": "int64", - "type": "integer" - }, - "name": { - "type": "string" - }, - "type": { - "type": "string" - } - }, - "type": "object" - }, - "v1.ResponseError": { - "properties": { - "build_time": { - "type": "string" - }, - "edge_id": { - "type": "string" - }, - "environment": { - "type": "string" - }, - "error": { - "type": "string" - }, - "msg": { - "type": "string" - }, - "trace_id": { - "type": "string" - }, - "version": { - "type": "string" - } - }, - "type": "object" - }, - "v1.SourceResponse": { - "properties": { - "id": { - "type": "string" - }, - "name": { - "type": "string" - }, - "source_type_id": { - "type": "string" - }, - "uid": { - "type": "string" - } - }, - "type": "object" - }, - "v1.SourceUploadInfoResponse": { - "properties": { - "aws": { - "nullable": true, - "properties": { - "account_id": { - "type": "string" - } - }, - "type": "object" - }, - "azure": { - "nullable": true, - "properties": { - "resource_groups": { - "items": { - "type": "string" - }, - "type": "array" - }, - "subscription_id": { - "type": "string" - }, - "tenant_id": { - "type": "string" - } - }, - "type": "object" - }, - "gcp": { - "nullable": true - }, - "provider": { - "type": "string" - } - }, - "type": "object" - } - } - }, - "info": { - "description": "Provisioning service API", - "license": { - "name": "GPL-3.0" - }, - "title": "provisioning-api", - "version": "1.4.0" - }, - "openapi": "3.0.0", - "paths": { - "/availability_status/sources": { - "post": { - "description": "Schedules a background operation of Sources availability check. These checks are are performed in separate process at it's own pace. Results are sent via Kafka to Sources. There is no output from this REST operation available, no tracking of jobs is possible.\n", - "operationId": "availabilityStatus", - "requestBody": { - "content": { - "application/json": { - "examples": { - "example": { - "$ref": "#/components/examples/v1.AvailabilityStatusRequest" - } - }, - "schema": { - "$ref": "#/components/schemas/v1.AvailabilityStatusRequest" - } - } - }, - "description": "availability status request with source id", - "required": true - }, - "responses": { - "200": { - "description": "Returned on success, empty response." - }, - "500": { - "$ref": "#/components/responses/InternalError" - } - }, - "tags": [ - "AvailabilityStatus" - ] - } - }, - "/instance_types/{PROVIDER}": { - "get": { - "description": "Return a list of instance types for particular provider. A region must be provided. A zone must be provided for Azure.\n", - "operationId": "getInstanceTypeListAll", - "parameters": [ - { - "description": "Cloud provider: aws, azure", - "in": "path", - "name": "PROVIDER", - "required": true, - "schema": { - "type": "string" - } - }, - { - "description": "Region to list instance types within. This is required.", - "in": "query", - "name": "region", - "required": true, - "schema": { - "type": "string" - } - }, - { - "description": "Availability zone (or location) to list instance types within. Not applicable for AWS EC2 as all zones within a region are the same (will lead to an error when used). Required for Azure.", - "in": "query", - "name": "zone", - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "content": { - "application/json": { - "examples": { - "aws": { - "$ref": "#/components/examples/v1.InstanceTypesAWSResponse" - }, - "azure": { - "$ref": "#/components/examples/v1.InstanceTypesAzureResponse" - } - }, - "schema": { - "$ref": "#/components/schemas/v1.ListInstaceTypeResponse" - } - } - }, - "description": "Return on success. Instance types have a field \"supported\" that indicates whether that particular type is supported by Red Hat. Typically, instances with less than 1.5 GiB RAM are not supported, but other rules may apply.\n" - }, - "404": { - "$ref": "#/components/responses/NotFound" - }, - "500": { - "$ref": "#/components/responses/InternalError" - } - }, - "tags": [ - "InstanceType" - ] - } - }, - "/pubkeys": { - "get": { - "description": "A pubkey represents an SSH public portion of a key pair with name and body. This operation returns list of all pubkeys for particular account.\n", - "operationId": "getPubkeyList", - "responses": { - "200": { - "content": { - "application/json": { - "examples": { - "example": { - "$ref": "#/components/examples/v1.PubkeyListResponseExample" - } - }, - "schema": { - "$ref": "#/components/schemas/v1.ListPubkeyResponse" - } - } - }, - "description": "Returned on success." - }, - "500": { - "$ref": "#/components/responses/InternalError" - } - }, - "tags": [ - "Pubkey" - ] - }, - "post": { - "description": "A pubkey represents an SSH public portion of a key pair with name and body. When pubkey is created, it is stored in the Provisioning database. Pubkeys are uploaded to clouds when an instance is launched. Some fields (e.g. type or fingerprint) are read only.\n", - "operationId": "createPubkey", - "requestBody": { - "content": { - "application/json": { - "examples": { - "example": { - "$ref": "#/components/examples/v1.PubkeyRequestExample" - } - }, - "schema": { - "$ref": "#/components/schemas/v1.PubkeyRequest" - } - } - }, - "description": "request body", - "required": true - }, - "responses": { - "200": { - "content": { - "application/json": { - "examples": { - "example": { - "$ref": "#/components/examples/v1.PubkeyRequestExample" - } - }, - "schema": { - "$ref": "#/components/schemas/v1.PubkeyResponse" - } - } - }, - "description": "Returned on success." - }, - "500": { - "$ref": "#/components/responses/InternalError" - } - }, - "tags": [ - "Pubkey" - ] - } - }, - "/pubkeys/{ID}": { - "delete": { - "description": "A pubkey represents an SSH public portion of a key pair with name and body. If a pubkey was uploaded to one or more clouds, the deletion request will attempt to delete those SSH keys from all clouds. This means in order to delete a pubkey the account must have valid credentials to all cloud accounts the pubkey was uploaded to, otherwise the delete operation will fail and the pubkey will not be deleted from Provisioning database. This operation returns no body.\n", - "operationId": "removePubkeyById", - "parameters": [ - { - "description": "Database ID of resource.", - "in": "path", - "name": "ID", - "required": true, - "schema": { - "format": "int64", - "type": "integer" - } - } - ], - "responses": { - "204": { - "description": "The Pubkey was deleted successfully." - }, - "404": { - "$ref": "#/components/responses/NotFound" - }, - "500": { - "$ref": "#/components/responses/InternalError" - } - }, - "tags": [ - "Pubkey" - ] - }, - "get": { - "description": "A pubkey represents an SSH public portion of a key pair with name and body. Pubkeys must have unique name and body (SSH public key fingerprint) per each account. Pubkey type is detected during create operation as well as fingerprints. Currently two types are supported: RSA and ssh-ed25519. Also, two fingerprint types are calculated: standard SHA fingerprint and legacy MD5 fingerprint available under fingerprint_legacy field. Fingerprints are used to check uniqueness of key.\n", - "operationId": "getPubkeyById", - "parameters": [ - { - "description": "Database ID to search for", - "in": "path", - "name": "ID", - "required": true, - "schema": { - "format": "int64", - "type": "integer" - } - } - ], - "responses": { - "200": { - "content": { - "application/json": { - "examples": { - "example": { - "$ref": "#/components/examples/v1.PubkeyResponseExample" - } - }, - "schema": { - "$ref": "#/components/schemas/v1.PubkeyResponse" - } - } - }, - "description": "Returned on success" - }, - "404": { - "$ref": "#/components/responses/NotFound" - }, - "500": { - "$ref": "#/components/responses/InternalError" - } - }, - "tags": [ - "Pubkey" - ] - } - }, - "/reservations": { - "get": { - "description": "A reservation is a way to activate a job, keeps all data needed for a job to start. This operation returns list of all reservations for particular account. To get a reservation with common fields, use /reservations/ID. To get a detailed reservation with all fields which are different per provider, use /reservations/aws/ID. Reservation can be in three states: pending, success, failed. This can be recognized by the success field (null for pending, true for success, false for failure). See the examples.\n", - "operationId": "getReservationsList", - "responses": { - "200": { - "content": { - "application/json": { - "examples": { - "example": { - "$ref": "#/components/examples/v1.GenericReservationResponsePayloadListExample" - } - }, - "schema": { - "$ref": "#/components/schemas/v1.ListGenericReservationResponse" - } - } - }, - "description": "Returned on success." - }, - "500": { - "$ref": "#/components/responses/InternalError" - } - }, - "tags": [ - "Reservation" - ] - } - }, - "/reservations/aws": { - "post": { - "description": "A reservation is a way to activate a job, keeps all data needed for a job to start. An AWS reservation is a reservation created for an AWS job. Image Builder UUID image is required, the service will also launch any AMI image prefixed with \"ami-\". Optionally, AWS EC2 launch template ID can be provided. All flags set through this endpoint override template values. Public key must exist prior calling this endpoint and ID must be provided, even when AWS EC2 launch template provides ssh-keys. Public key will be always be overwritten. A single account can create maximum of 2 reservations per second.\n", - "operationId": "createAwsReservation", - "requestBody": { - "content": { - "application/json": { - "examples": { - "example": { - "$ref": "#/components/examples/v1.AwsReservationRequestPayloadExample" - } - }, - "schema": { - "$ref": "#/components/schemas/v1.AWSReservationRequest" - } - } - }, - "description": "aws request body", - "required": true - }, - "responses": { - "200": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/v1.AWSReservationResponse" - } - } - }, - "description": "Returned on success." - }, - "500": { - "$ref": "#/components/responses/InternalError" - } - }, - "tags": [ - "Reservation" - ] - } - }, - "/reservations/aws/{ID}": { - "get": { - "description": "Return an AWS reservation with details by id", - "operationId": "getAWSReservationByID", - "parameters": [ - { - "description": "Reservation ID, must be an AWS reservation otherwise 404 is returned", - "in": "path", - "name": "ID", - "required": true, - "schema": { - "format": "int64", - "type": "integer" - } - } - ], - "responses": { - "200": { - "content": { - "application/json": { - "examples": { - "done": { - "$ref": "#/components/examples/v1.AwsReservationResponsePayloadDoneExample" - }, - "pending": { - "$ref": "#/components/examples/v1.AwsReservationResponsePayloadPendingExample" - } - }, - "schema": { - "$ref": "#/components/schemas/v1.AWSReservationResponse" - } - } - }, - "description": "Returns detailed reservation information for an AWS reservation." - }, - "404": { - "$ref": "#/components/responses/NotFound" - }, - "500": { - "$ref": "#/components/responses/InternalError" - } - }, - "tags": [ - "Reservation" - ] - } - }, - "/reservations/azure": { - "post": { - "description": "A reservation is a way to activate a job, keeps all data needed for a job to start. An Azure reservation is a reservation created for an Azure job. Image Builder UUID image is required and needs to be stored under same account as provided by SourceID. A single account can create maximum of 2 reservations per second.\n", - "operationId": "createAzureReservation", - "requestBody": { - "content": { - "application/json": { - "examples": { - "example": { - "$ref": "#/components/examples/v1.AzureReservationRequestPayloadExample" - } - }, - "schema": { - "$ref": "#/components/schemas/v1.AzureReservationRequest" - } - } - }, - "description": "azure request body", - "required": true - }, - "responses": { - "200": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/v1.AzureReservationResponse" - } - } - }, - "description": "Returned on success." - }, - "500": { - "$ref": "#/components/responses/InternalError" - } - }, - "tags": [ - "Reservation" - ] - } - }, - "/reservations/azure/{ID}": { - "get": { - "description": "Return an Azure reservation with details by id", - "operationId": "getAzureReservationByID", - "parameters": [ - { - "description": "Reservation ID, must be an Azure reservation otherwise 404 is returned", - "in": "path", - "name": "ID", - "required": true, - "schema": { - "format": "int64", - "type": "integer" - } - } - ], - "responses": { - "200": { - "content": { - "application/json": { - "examples": { - "done": { - "$ref": "#/components/examples/v1.AzureReservationResponsePayloadDoneExample" - }, - "pending": { - "$ref": "#/components/examples/v1.AzureReservationResponsePayloadPendingExample" - } - }, - "schema": { - "$ref": "#/components/schemas/v1.AzureReservationResponse" - } - } - }, - "description": "Returns detailed reservation information for an Azure reservation." - }, - "404": { - "$ref": "#/components/responses/NotFound" - }, - "500": { - "$ref": "#/components/responses/InternalError" - } - }, - "tags": [ - "Reservation" - ] - } - }, - "/reservations/gcp": { - "post": { - "description": "A reservation is a way to activate a job, keeps all data needed for a job to start. A GCP reservation is a reservation created for a GCP job. Image Builder UUID image is required and needs to be shared with the service account. Furthermore, by specifying the name pattern for example as \"instance\", instances names will be created in the format: \"instance-#####\". A single account can create maximum of 2 reservations per second.\n", - "operationId": "createGCPReservation", - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/v1.GCPReservationRequest" - } - } - }, - "description": "gcp request body", - "required": true - }, - "responses": { - "200": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/v1.GCPReservationResponse" - } - } - }, - "description": "Returned on success." - }, - "500": { - "$ref": "#/components/responses/InternalError" - } - }, - "tags": [ - "Reservation" - ] - } - }, - "/reservations/gcp/{ID}": { - "get": { - "description": "Return an GCP reservation with details by id", - "operationId": "getGCPReservationByID", - "parameters": [ - { - "description": "Reservation ID, must be an GCP reservation otherwise 404 is returned", - "in": "path", - "name": "ID", - "required": true, - "schema": { - "format": "int64", - "type": "integer" - } - } - ], - "responses": { - "200": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/v1.GCPReservationResponse" - } - } - }, - "description": "Returns detailed reservation information for an GCP reservation." - }, - "404": { - "$ref": "#/components/responses/NotFound" - }, - "500": { - "$ref": "#/components/responses/InternalError" - } - }, - "tags": [ - "Reservation" - ] - } - }, - "/reservations/noop": { - "post": { - "description": "A reservation is a way to activate a job, keeps all data needed for a job to start. A Noop reservation actually does nothing and immediately finish background job. This reservation has no input payload\n", - "operationId": "createNoopReservation", - "responses": { - "200": { - "content": { - "application/json": { - "examples": { - "example": { - "$ref": "#/components/examples/v1.NoopReservationResponsePayloadExample" - } - }, - "schema": { - "$ref": "#/components/schemas/v1.NoopReservationResponse" - } - } - }, - "description": "Returned on success." - }, - "500": { - "$ref": "#/components/responses/InternalError" - } - }, - "tags": [ - "Reservation" - ] - } - }, - "/reservations/{ID}": { - "get": { - "description": "Return a generic reservation by id", - "operationId": "getReservationByID", - "parameters": [ - { - "description": "Reservation ID", - "in": "path", - "name": "ID", - "required": true, - "schema": { - "format": "int64", - "type": "integer" - } - } - ], - "responses": { - "200": { - "content": { - "application/json": { - "examples": { - "failure": { - "$ref": "#/components/examples/v1.GenericReservationResponsePayloadFailureExample" - }, - "pending": { - "$ref": "#/components/examples/v1.GenericReservationResponsePayloadPendingExample" - }, - "success": { - "$ref": "#/components/examples/v1.GenericReservationResponsePayloadSuccessExample" - } - }, - "schema": { - "$ref": "#/components/schemas/v1.GenericReservationResponse" - } - } - }, - "description": "Returns generic reservation information like status or creation time." - }, - "404": { - "$ref": "#/components/responses/NotFound" - }, - "500": { - "$ref": "#/components/responses/InternalError" - } - }, - "tags": [ - "Reservation" - ] - } - }, - "/sources": { - "get": { - "description": "Cloud credentials are kept in the sources application. This endpoint lists available sources for the particular account per individual type (AWS, Azure, ...). All the fields in the response are optional and can be omitted if Sources application also omits them.\n", - "operationId": "getSourceList", - "parameters": [ - { - "in": "query", - "name": "provider", - "schema": { - "enum": [ - "aws", - "azure", - "gcp" - ], - "type": "string" - } - } - ], - "responses": { - "200": { - "content": { - "application/json": { - "examples": { - "example": { - "$ref": "#/components/examples/v1.SourceListResponseExample" - } - }, - "schema": { - "$ref": "#/components/schemas/v1.ListSourceResponse" - } - } - }, - "description": "Returned on success." - }, - "500": { - "$ref": "#/components/responses/InternalError" - } - }, - "tags": [ - "Source" - ] - } - }, - "/sources/{ID}/account_identity": { - "get": { - "deprecated": true, - "description": "This endpoint is deprecated. Please use upload_info instead", - "operationId": "getSourceAccountIdentity", - "parameters": [ - { - "description": "Source ID from Sources Database", - "in": "path", - "name": "ID", - "required": true, - "schema": { - "format": "int64", - "type": "integer" - } - } - ], - "responses": { - "200": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/v1.AccountIDTypeResponse" - } - } - }, - "description": "Return on success." - }, - "404": { - "$ref": "#/components/responses/NotFound" - }, - "500": { - "$ref": "#/components/responses/InternalError" - } - }, - "tags": [ - "Source" - ] - } - }, - "/sources/{ID}/instance_types": { - "get": { - "deprecated": true, - "description": "Deprecated endpoint, use /instance_types instead.", - "operationId": "getInstanceTypeList", - "parameters": [ - { - "description": "Source ID from Sources Database", - "in": "path", - "name": "ID", - "required": true, - "schema": { - "format": "int64", - "type": "integer" - } - }, - { - "description": "Hyperscaler region", - "in": "query", - "name": "region", - "required": true, - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/v1.ListInstaceTypeResponse" - } - } - }, - "description": "Return on success." - }, - "404": { - "$ref": "#/components/responses/NotFound" - }, - "500": { - "$ref": "#/components/responses/InternalError" - } - }, - "tags": [ - "Source" - ] - } - }, - "/sources/{ID}/launch_templates": { - "get": { - "description": "Return a list of launch templates.\nA launch template is a configuration set with a name that is available through hyperscaler API. When creating reservations, launch template can be provided in order to set additional configuration for instances.\nCurrently only AWS Launch Templates are supported.\n", - "operationId": "getLaunchTemplatesList", - "parameters": [ - { - "description": "Source ID from Sources Database", - "in": "path", - "name": "ID", - "required": true, - "schema": { - "format": "int64", - "type": "integer" - } - }, - { - "description": "Hyperscaler region", - "in": "query", - "name": "region", - "required": true, - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "content": { - "application/json": { - "examples": { - "example": { - "$ref": "#/components/examples/v1.LaunchTemplateListResponse" - } - }, - "schema": { - "$ref": "#/components/schemas/v1.ListLaunchTemplateResponse" - } - } - }, - "description": "Return on success." - }, - "404": { - "$ref": "#/components/responses/NotFound" - }, - "500": { - "$ref": "#/components/responses/InternalError" - } - }, - "tags": [ - "Source" - ] - } - }, - "/sources/{ID}/upload_info": { - "get": { - "description": "Provides all necessary information to upload an image for given Source. Typically, this is account number, subscription ID but some hyperscaler types also provide additional data.\nThe response contains \"provider\" field which can be one of aws, azure or gcp and then exactly one field named \"aws\", \"azure\" or \"gcp\". Enum is not used due to limitation of the language (Go).\nSome types may perform more than one calls (e.g. Azure) so latency might be increased. Caching of static information is performed to improve latency of consequent calls.\n", - "operationId": "getSourceUploadInfo", - "parameters": [ - { - "description": "Source ID from Sources Database", - "in": "path", - "name": "ID", - "required": true, - "schema": { - "format": "int64", - "type": "integer" - } - } - ], - "responses": { - "200": { - "content": { - "application/json": { - "examples": { - "aws": { - "$ref": "#/components/examples/v1.SourceUploadInfoAWSResponse" - }, - "azure": { - "$ref": "#/components/examples/v1.SourceUploadInfoAzureResponse" - } - }, - "schema": { - "$ref": "#/components/schemas/v1.SourceUploadInfoResponse" - } - } - }, - "description": "Return on success." - }, - "404": { - "$ref": "#/components/responses/NotFound" - }, - "500": { - "$ref": "#/components/responses/InternalError" - } - }, - "tags": [ - "Source" - ] - } - } - }, - "servers": [ - { - "description": "Local development", - "url": "http://0.0.0.0:{port}/api/{applicationName}", - "variables": { - "applicationName": { - "default": "provisioning" - }, - "port": { - "default": "8000" - } - } - } - ], - "tags": [ - { - "description": "Public SSH keys operations", - "name": "Pubkey" - } - ] -} \ No newline at end of file diff --git a/api/schema/rhsm.json b/api/schema/rhsm.json deleted file mode 100644 index 9a462df9..00000000 --- a/api/schema/rhsm.json +++ /dev/null @@ -1 +0,0 @@ -{"basePath":"/management/v2","consumes":["application/json"],"definitions":{"APIPageParam":{"description":"APIPageParam details the pagination parameters in APIResponse","properties":{"count":{"type":"integer"},"limit":{"type":"integer"},"offset":{"type":"integer"}},"type":"object"},"ActivationKeys":{"properties":{"additionalRepositories":{"items":{"$ref":"#/definitions/AdditionalRepositories"},"type":"array"},"id":{"type":"string"},"name":{"type":"string"},"releaseVersion":{"type":"string"},"role":{"type":"string"},"serviceLevel":{"type":"string"},"usage":{"type":"string"}},"type":"object"},"AdditionalRepositories":{"properties":{"repositoryLabel":{"type":"string"},"repositoryName":{"type":"string"}},"type":"object"},"AvailableRepositories":{"properties":{"architecture":{"type":"string"},"default":{"type":"string"},"engineeringProduct":{"type":"string"},"repositoryLabel":{"type":"string"},"repositoryName":{"type":"string"}},"type":"object"},"Capacity":{"properties":{"name":{"type":"string"},"quantity":{"type":"string"}},"type":"object"},"Date":{"description":"Date format used in API responses.","example":"2006-01-02T15:04:05.000Z","type":"string"},"EntitlementsAttached":{"description":"Details of all the entitlements attached and their status.","properties":{"reason":{"type":"string"},"valid":{"type":"boolean"},"value":{"items":{"$ref":"#/definitions/EntitlementsAttachedValue"},"type":"array"}},"type":"object"},"EntitlementsAttachedValue":{"description":"Detail of each entitlement attached","properties":{"contractNumber":{"type":"string"},"endDate":{"$ref":"#/definitions/Date"},"entitlementQuantity":{"type":"integer"},"id":{"type":"string"},"sku":{"type":"string"},"startDate":{"$ref":"#/definitions/Date"},"subscriptionName":{"type":"string"}},"type":"object"},"ErrorDetails":{"description":"ErrorDetails details the Error in ErrorResponse","properties":{"code":{"type":"integer"},"message":{"type":"string"}},"type":"object"},"EusProductList":{"properties":{"configurations":{"items":{"properties":{"repositories":{"items":{"type":"string"},"type":"array"},"version":{"type":"string"}},"type":"object"},"type":"array"},"engID":{"type":"integer"},"name":{"type":"string"}},"title":"List of RHEL EUS product-repo mappings","type":"object"},"Manifest":{"properties":{"entitlementQuantity":{"type":"integer"},"name":{"type":"string"},"simpleContentAccess":{"type":"string"},"type":{"type":"string"},"url":{"type":"string"},"uuid":{"type":"string"},"version":{"type":"string"}},"title":"Manifest is an entity that consumes entitlements. Also referred as a Distributor.","type":"object"},"ManifestDetails":{"description":"details of a manifest","properties":{"createdBy":{"type":"string"},"createdDate":{"$ref":"#/definitions/Date"},"entitlementsAttached":{"$ref":"#/definitions/EntitlementsAttached"},"entitlementsAttachedQuantity":{"type":"integer"},"lastModified":{"$ref":"#/definitions/Date"},"name":{"type":"string"},"simpleContentAccess":{"type":"string"},"type":{"type":"string"},"uuid":{"type":"string"},"version":{"type":"string"}},"type":"object"},"ManifestSummary":{"description":"details of a manifest","properties":{"contentAccessMode":{"type":"string"},"createdBy":{"type":"string"},"createdDate":{"$ref":"#/definitions/Date"},"entitlementsAttachedQuantity":{"type":"integer"},"lastModified":{"$ref":"#/definitions/Date"},"name":{"type":"string"},"type":{"type":"string"},"uuid":{"type":"string"},"version":{"type":"string"}},"type":"object"},"ManifestVersion":{"description":"List of satellite version","properties":{"description":{"type":"string"},"value":{"type":"string"}},"type":"object"},"OrgSimpleContentAccess":{"properties":{"id":{"type":"string"},"simpleContentAccess":{"type":"string"},"simpleContentAccessCapable":{"type":"boolean"},"systemPurposeAttributes":{"$ref":"#/definitions/SystemPurposeAttributes"}},"title":"Organization Simple Content Access details.","type":"object"},"PoolDetail":{"description":"PoolDetail is an entry in the system/allocation pools listing","properties":{"contractNumber":{"type":"string"},"endDate":{"$ref":"#/definitions/Date"},"entitlementsAvailable":{"type":"integer"},"id":{"type":"string"},"serviceLevel":{"type":"string"},"sku":{"type":"string"},"startDate":{"$ref":"#/definitions/Date"},"subscriptionName":{"type":"string"},"subscriptionNumber":{"type":"string"}},"type":"object"},"ProductList":{"properties":{"capacity":{"$ref":"#/definitions/Capacity"},"name":{"type":"boolean"},"productLine":{"type":"string"},"quantity":{"type":"integer"},"serviceLevel":{"type":"string"},"serviceType":{"type":"string"},"sku":{"type":"string"}},"title":"List of products from subscriptions","type":"object"},"StatusCount":{"properties":{"active":{"type":"integer"},"expired":{"type":"integer"},"expiringSoon":{"type":"integer"},"futureDated":{"type":"integer"}},"title":"Status counts of user's subscriptions","type":"object"},"SystemPurposeAttributes":{"description":"System purpose settings available to an organization","properties":{"roles":{"items":{"type":"string"},"type":"array"},"serviceLevel":{"items":{"type":"string"},"type":"array"},"usage":{"items":{"type":"string"},"type":"array"}},"type":"object"},"exportJobResponse":{"properties":{"exportID":{"type":"string"},"href":{"type":"string"}},"type":"object"},"exportResponse":{"properties":{"exportJobID":{"type":"string"},"href":{"type":"string"}},"type":"object"},"ongoingExportJobResponse":{"properties":{"message":{"type":"string"}},"type":"object"},"poolsListMock":{"properties":{"body":{"items":{"$ref":"#/definitions/PoolDetail"},"type":"array"},"pagination":{"$ref":"#/definitions/APIPageParam"}},"type":"object"}},"host":"api.access.stage.redhat.com","info":{"contact":{"url":"https://access.redhat.com/support/cases/"},"description":"API for Red Hat Subscription Management","title":"RHSM-API","version":"1.326.0"},"paths":{"/activation_keys":{"get":{"description":"Returns a list of activation keys on the account including service level, role, additionalRepositories, usage, and release version (if applicable). Additional Repositories and release version will be an empty set in case it is not set.","operationId":"listActivationKeys","responses":{"200":{"description":"Array of activation keys","schema":{"properties":{"body":{"items":{"$ref":"#/definitions/ActivationKeys"},"type":"array"}},"type":"object"}},"401":{"$ref":"#/responses/Unauthorized"},"403":{"$ref":"#/responses/Forbidden"},"500":{"$ref":"#/responses/InternalServerError"}},"summary":"List activation keys","tags":["activationKey"]},"post":{"description":"Creates an activation key by name, release version and system purpose attributes, that are service level, role and usage. In the request body, \"name\" should be present and unique and can only contain letters, numbers, underscores, or hyphens. The response will have name and additionalRepositories as fixed fields. AdditionalRepositories field will always be empty for a new activation key. Role, serviceLevel, usage and releaseVersion are conditional fields, will be present in response only when they have values.","operationId":"createActivationKeys","parameters":[{"description":"Create an activation key","in":"body","name":"activationKey","schema":{"properties":{"additionalRepositories":{"items":{"properties":{"repositoryLabel":{"type":"string"}},"type":"object"},"type":"array"},"name":{"description":"Name should be present, unique and can only contain letters, numbers, underscores, or hyphens","type":"string"},"releaseVersion":{"type":"string"},"role":{"type":"string"},"serviceLevel":{"type":"string"},"usage":{"type":"string"}},"required":["name"],"type":"object"}}],"responses":{"200":{"description":"Activation key","schema":{"properties":{"body":{"$ref":"#/definitions/ActivationKeys"}},"type":"object"}},"401":{"$ref":"#/responses/Unauthorized"},"403":{"$ref":"#/responses/Forbidden"},"500":{"$ref":"#/responses/InternalServerError"}},"summary":"Create activation key","tags":["activationKey"]}},"/activation_keys/{name}":{"delete":{"description":"Removes the activation key from the account based on activation key name","operationId":"removeActivationKeys","parameters":[{"in":"path","name":"name","required":true,"type":"string"}],"responses":{"204":{"description":"successfully removed"},"400":{"$ref":"#/responses/BadRequest"},"401":{"$ref":"#/responses/Unauthorized"},"403":{"$ref":"#/responses/Forbidden"},"404":{"$ref":"#/responses/NotFound"},"500":{"$ref":"#/responses/InternalServerError"}},"summary":"Delete activation key","tags":["activationKey"]},"get":{"description":"Get activation key by name","operationId":"showActivationKey","parameters":[{"in":"path","name":"name","required":true,"type":"string"}],"responses":{"200":{"description":"Activation key","schema":{"properties":{"body":{"$ref":"#/definitions/ActivationKeys"}},"type":"object"}},"401":{"$ref":"#/responses/Unauthorized"},"403":{"$ref":"#/responses/Forbidden"},"500":{"$ref":"#/responses/InternalServerError"}},"summary":"Get activation key","tags":["activationKey"]},"put":{"description":"Updates an existing activation key with one or more fields as provided in request. It also returns additionalRepositories field which will be empty set when it is empty","operationId":"updateActivationKeys","parameters":[{"in":"path","name":"name","required":true,"type":"string"},{"description":"Update an activation key","in":"body","name":"activationKey","schema":{"properties":{"additionalRepositories":{"items":{"$ref":"#/definitions/AdditionalRepositories"},"type":"array"},"releaseVersion":{"type":"string"},"role":{"type":"string"},"serviceLevel":{"type":"string"},"usage":{"type":"string"}},"type":"object"}}],"responses":{"200":{"description":"Activation key","schema":{"properties":{"body":{"$ref":"#/definitions/ActivationKeys"}},"type":"object"}},"400":{"$ref":"#/responses/BadRequest"},"401":{"$ref":"#/responses/Unauthorized"},"403":{"$ref":"#/responses/Forbidden"},"500":{"$ref":"#/responses/InternalServerError"}},"summary":"Update activation key","tags":["activationKey"]}},"/activation_keys/{name}/additional_repositories":{"delete":{"description":"Removes the additional repositories from an activation key by providing activation key name and repository labels","operationId":"removeActivationKeyAdditionalRepositories","parameters":[{"in":"path","name":"name","required":true,"type":"string"},{"in":"body","name":"additionalRepositories","schema":{"items":{"$ref":"#/definitions/AdditionalRepositories"},"type":"array"}}],"responses":{"204":{"$ref":"#/responses/NoContent"},"400":{"$ref":"#/responses/BadRequest"},"401":{"$ref":"#/responses/Unauthorized"},"403":{"$ref":"#/responses/Forbidden"},"404":{"$ref":"#/responses/NotFound"},"500":{"$ref":"#/responses/InternalServerError"}},"summary":"Delete Additional Repositories","tags":["activationKey"]},"post":{"description":"Add additional repositories to an activation key by providing activation key name and repository labels. Customers can use any respositories listed in the `/v2/activation_keys/{name}/available_repositories` endpoint (use attribute `repositoryLabel`). Empty value is not supported and maximum length of repository label allowed is upto 255 characters.","operationId":"addAdditionalRepositories","parameters":[{"in":"path","name":"name","required":true,"type":"string"},{"description":"Add Additional repositories","in":"body","name":"activationKey","schema":{"items":{"$ref":"#/definitions/AdditionalRepositories"},"type":"array"}}],"responses":{"200":{"description":"list of additional repositories","schema":{"properties":{"body":{"items":{"$ref":"#/definitions/AdditionalRepositories"},"type":"array"}},"type":"object"}},"400":{"$ref":"#/responses/BadRequest"},"401":{"$ref":"#/responses/Unauthorized"},"403":{"$ref":"#/responses/Forbidden"},"500":{"$ref":"#/responses/InternalServerError"}},"summary":"Add Additional Repositories","tags":["activationKey"]}},"/activation_keys/{name}/available_repositories":{"get":{"description":"Returns the list of RPM repositories available to an activation key that can be added as an additional repository. Available repositories are calculated by negating the additional repositories from the set of total RPM repositories. It can be an empty set if there are no RPM repositories or all of the repositories are already added to an activation key.","operationId":"listAvailableRepositories","parameters":[{"in":"path","name":"name","required":true,"type":"string"},{"description":"max number of results you want","in":"query","name":"limit","type":"integer"},{"description":"index from which you want next items","in":"query","name":"offset","type":"integer"},{"description":"Filters available repos based off default status","enum":["Disabled"],"in":"query","name":"default","type":"string"}],"responses":{"200":{"description":"list of available repositories","schema":{"properties":{"body":{"items":{"$ref":"#/definitions/AvailableRepositories"},"type":"array"},"pagination":{"$ref":"#/definitions/APIPageParam"}},"type":"object"}},"400":{"$ref":"#/responses/BadRequest"},"401":{"$ref":"#/responses/Unauthorized"},"403":{"$ref":"#/responses/Forbidden"},"500":{"$ref":"#/responses/InternalServerError"}},"summary":"List Available Repositories","tags":["activationKey"]}},"/manifests":{"get":{"description":"The default and max number of results in a response are 100.\nSatellite 6.0 or higher versions are only supported.","operationId":"listManifests","parameters":[{"description":"max number of results you want","in":"query","name":"limit","type":"integer"},{"description":"index from which you want next items","in":"query","name":"offset","type":"integer"}],"responses":{"200":{"description":"list of manifests","schema":{"properties":{"body":{"items":{"$ref":"#/definitions/Manifest"},"type":"array"},"pagination":{"$ref":"#/definitions/APIPageParam"}},"type":"object"}},"400":{"$ref":"#/responses/BadRequest"},"401":{"$ref":"#/responses/Unauthorized"},"403":{"$ref":"#/responses/Forbidden"},"404":{"$ref":"#/responses/NotFound"},"500":{"$ref":"#/responses/InternalServerError"}},"summary":"List all manifests for a user","tags":["manifest"]},"post":{"description":"Create Manifest by name and version(optional).\nCustomers can use any version listed in the `/v2/manifests/versions`\nendpoint (use attribute `value`).\nIf no version is specified, it will take the latest available version\n for Manifest.","operationId":"createManifest","parameters":[{"description":"must be less than 100 characters and use only numbers, letters, underscores, hyphens, and periods","in":"query","name":"Name","required":true,"type":"string"},{"in":"query","name":"version","type":"string"}],"responses":{"200":{"description":"Success","schema":{"properties":{"body":{"$ref":"#/definitions/ManifestSummary"}},"type":"object"}},"400":{"$ref":"#/responses/BadRequest"},"401":{"$ref":"#/responses/Unauthorized"},"403":{"$ref":"#/responses/Forbidden"},"404":{"$ref":"#/responses/NotFound"},"500":{"$ref":"#/responses/InternalServerError"}},"summary":"Create Manifest","tags":["manifest"]}},"/manifests/versions":{"get":{"description":"Returns list of Satellite version 6.0 and above","operationId":"listVersionsManifest","responses":{"200":{"description":"list of Satellite version","schema":{"properties":{"body":{"items":{"$ref":"#/definitions/ManifestVersion"},"type":"array"}},"type":"object"}},"400":{"$ref":"#/responses/BadRequest"},"401":{"$ref":"#/responses/Unauthorized"},"403":{"$ref":"#/responses/Forbidden"},"404":{"$ref":"#/responses/NotFound"},"500":{"$ref":"#/responses/InternalServerError"}},"summary":"List Satellite versions","tags":["manifest"]}},"/manifests/{uuid}":{"delete":{"description":"The default success response will be 204\n\nSystem, RHUI, Hypervisor, SAM are unsupported manifet types","operationId":"removeManifest","parameters":[{"in":"path","name":"uuid","required":true,"type":"string"},{"description":"Deleting a subscription manifest can have significant impacts on your hosts and activation keys.\nWe require a force parameter to make sure the delete operation is intentional.","enum":[true],"in":"query","name":"force","required":true,"type":"boolean"}],"responses":{"204":{"description":"Successfully removed"},"400":{"$ref":"#/responses/BadRequest"},"401":{"$ref":"#/responses/Unauthorized"},"403":{"$ref":"#/responses/Forbidden"},"404":{"$ref":"#/responses/NotFound"},"500":{"$ref":"#/responses/InternalServerError"},"504":{"$ref":"#/responses/GatewayTimeout"}},"summary":"Remove manifest profile","tags":["manifest"]},"get":{"description":"System, RHUI, Hypervisor, SAM are unsupported manifest types","operationId":"showManifest","parameters":[{"in":"path","name":"uuid","required":true,"type":"string"},{"description":"Show more details about a manifest","enum":["entitlements"],"in":"query","maxItems":1,"name":"include","type":"string"}],"responses":{"200":{"description":"success response","schema":{"properties":{"body":{"$ref":"#/definitions/ManifestDetails"}},"type":"object"}},"400":{"$ref":"#/responses/BadRequest"},"401":{"$ref":"#/responses/Unauthorized"},"403":{"$ref":"#/responses/Forbidden"},"404":{"$ref":"#/responses/NotFound"},"500":{"$ref":"#/responses/InternalServerError"}},"summary":"Get an Manifest by UUID","tags":["manifest"]},"put":{"description":"Allows to update simpleContentAccess for Satellite of version 6.3 and\nabove\nPossible value for simpleContentAccess are:\n\n- enabled\n- disabled","operationId":"updateManifest","parameters":[{"in":"path","name":"uuid","required":true,"type":"string"},{"in":"body","name":"manifest","schema":{"properties":{"simpleContentAccess":{"type":"string"}},"required":["simpleContentAccess"],"type":"object"}}],"responses":{"204":{"$ref":"#/responses/NoContent"},"400":{"$ref":"#/responses/BadRequest"},"401":{"$ref":"#/responses/Unauthorized"},"403":{"$ref":"#/responses/Forbidden"},"404":{"$ref":"#/responses/NotFound"},"500":{"$ref":"#/responses/InternalServerError"}},"summary":"Update a manifest","tags":["manifest"]}},"/manifests/{uuid}/entitlements":{"post":{"description":"Satellite 5.6 or higher versions are only supported.","operationId":"attachEntitlementManifest","parameters":[{"in":"query","maxItems":1,"minItems":1,"name":"pool","required":true,"type":"string"},{"description":"quantity you want to attach","in":"query","name":"quantity","type":"integer"},{"in":"path","name":"uuid","required":true,"type":"string"}],"responses":{"200":{"description":"Success","schema":{"properties":{"body":{"$ref":"#/definitions/ManifestDetails"}},"type":"object"}},"400":{"$ref":"#/responses/BadRequest"},"401":{"$ref":"#/responses/Unauthorized"},"403":{"$ref":"#/responses/Forbidden"},"404":{"$ref":"#/responses/NotFound"},"500":{"$ref":"#/responses/InternalServerError"},"504":{"$ref":"#/responses/GatewayTimeout"}},"summary":"Attach entitlement to Manifest","tags":["manifest"]}},"/manifests/{uuid}/entitlements/{EntitlementID}":{"delete":{"description":"The default success response will be 204.","operationId":"removeManifestEntitlement","parameters":[{"in":"path","name":"uuid","required":true,"type":"string"},{"in":"path","name":"EntitlementID","required":true,"type":"string"}],"responses":{"204":{"description":"successfully removed"},"400":{"$ref":"#/responses/BadRequest"},"401":{"$ref":"#/responses/Unauthorized"},"403":{"$ref":"#/responses/Forbidden"},"404":{"$ref":"#/responses/NotFound"},"500":{"$ref":"#/responses/InternalServerError"}},"summary":"Remove entitlement from the manifest","tags":["manifest"]},"put":{"description":"The default success response will be 200.\n\nSystem, RHUI, Hypervisor, SAM are unsupported manifest types","operationId":"updateEntitlementManifest","parameters":[{"in":"path","name":"uuid","required":true,"type":"string"},{"in":"path","name":"EntitlementID","required":true,"type":"string"},{"description":"maxItem: quantity must be less than or equal to the maximum number of allowed entitlements in the entitlement pool\nminItem: 1","in":"query","name":"quantity","type":"integer"}],"responses":{"200":{"description":"Success response","schema":{"properties":{"body":{"$ref":"#/definitions/ManifestDetails"}},"type":"object"}},"400":{"$ref":"#/responses/BadRequest"},"401":{"$ref":"#/responses/Unauthorized"},"403":{"$ref":"#/responses/Forbidden"},"404":{"$ref":"#/responses/NotFound"},"500":{"$ref":"#/responses/InternalServerError"}},"summary":"Update attached entitlement to manifest","tags":["manifest"]}},"/manifests/{uuid}/export":{"get":{"description":"Starts job to generate export for a manifest. To check the status of the export job visit the href in the response.\n\nSatellite 6.0 or higher versions are only supported.","operationId":"exportManifest","parameters":[{"in":"path","name":"uuid","required":true,"type":"string"}],"responses":{"200":{"description":"ExportManifest200 is the success response","schema":{"properties":{"body":{"$ref":"#/definitions/exportResponse"}},"type":"object"}},"400":{"$ref":"#/responses/BadRequest"},"401":{"$ref":"#/responses/Unauthorized"},"403":{"$ref":"#/responses/Forbidden"},"404":{"$ref":"#/responses/NotFound"},"500":{"$ref":"#/responses/InternalServerError"}},"summary":"Trigger manifest export","tags":["manifest"]}},"/manifests/{uuid}/export/{ExportID}":{"get":{"description":"Success response contains a zip file. The link is one-time download and expires after one try. Trigger export job to get another download link.\n\nContent-Type: application/zip","operationId":"getExportManifest","parameters":[{"in":"path","name":"uuid","required":true,"type":"string"},{"in":"path","name":"ExportID","required":true,"type":"string"}],"produces":["application/zip"],"responses":{"200":{"description":"GetExportManifest200 is the success response","schema":{"items":{"type":"integer"},"type":"array"}},"400":{"$ref":"#/responses/BadRequest"},"401":{"$ref":"#/responses/Unauthorized"},"403":{"$ref":"#/responses/Forbidden"},"404":{"$ref":"#/responses/NotFound"},"500":{"$ref":"#/responses/InternalServerError"}},"summary":"Download manifest","tags":["manifest"]}},"/manifests/{uuid}/exportJob/{ExportJobID}":{"get":{"description":"Returns export download link in response.","operationId":"exportJobManifest","parameters":[{"in":"path","name":"uuid","required":true,"type":"string"},{"in":"path","name":"ExportJobID","required":true,"type":"string"}],"responses":{"200":{"description":"ExportJobManifest200 is the success response","schema":{"properties":{"body":{"$ref":"#/definitions/exportJobResponse"}},"type":"object"}},"202":{"description":"AcceptedExportJob202 is a response for accepted and in progress job","schema":{"properties":{"body":{"$ref":"#/definitions/ongoingExportJobResponse"}},"type":"object"}},"400":{"$ref":"#/responses/BadRequest"},"401":{"$ref":"#/responses/Unauthorized"},"403":{"$ref":"#/responses/Forbidden"},"404":{"$ref":"#/responses/NotFound"},"406":{"$ref":"#/responses/NotAcceptable"},"500":{"$ref":"#/responses/InternalServerError"}},"summary":"Check status of manifest export","tags":["manifest"]}},"/manifests/{uuid}/pools":{"get":{"description":"Satellite 5.6 or higher versions are only supported.","operationId":"listManifestPools","parameters":[{"description":"max number of results you want","in":"query","name":"limit","type":"integer"},{"description":"index from which you want next items","in":"query","name":"offset","type":"integer"},{"description":"include future dated pools for satellite 6.3 or higher","enum":[true],"in":"query","name":"future","type":"boolean"},{"in":"path","name":"uuid","required":true,"type":"string"}],"responses":{"200":{"description":"list of pools available for the manifest","schema":{"$ref":"#/definitions/poolsListMock"}},"400":{"$ref":"#/responses/BadRequest"},"401":{"$ref":"#/responses/Unauthorized"},"403":{"$ref":"#/responses/Forbidden"},"404":{"$ref":"#/responses/NotFound"},"500":{"$ref":"#/responses/InternalServerError"}},"summary":"List all pools for a manifest","tags":["manifest"]}},"/organization":{"get":{"description":"Show Simple Content Access details of user's organization","operationId":"checkOrgSCACapability","parameters":[{"description":"Request for system purpose attributes in response","in":"query","name":"include","type":"string"}],"responses":{"200":{"description":"Organization details","schema":{"properties":{"body":{"$ref":"#/definitions/OrgSimpleContentAccess"}},"type":"object"}},"400":{"$ref":"#/responses/BadRequest"},"401":{"$ref":"#/responses/Unauthorized"},"403":{"$ref":"#/responses/Forbidden"},"404":{"$ref":"#/responses/NotFound"},"500":{"$ref":"#/responses/InternalServerError"}},"summary":"Get details of the user's organization","tags":["organization"]}},"/products":{"get":{"description":"Get list of all the products of user's subscription. The products are from subscriptions that have not expired or expired within last 30 days.\n","operationId":"listProducts","parameters":[{"description":"Filters products based on subscription status","enum":["expired","expiringSoon","active","futureDated"],"in":"query","name":"status","type":"string"}],"responses":{"200":{"description":"Product list","schema":{"properties":{"body":{"items":{"$ref":"#/definitions/ProductList"},"type":"array"}},"type":"object"}},"401":{"$ref":"#/responses/Unauthorized"},"403":{"$ref":"#/responses/Forbidden"},"500":{"$ref":"#/responses/InternalServerError"}},"summary":"List all the products from user's subscription","tags":["products"]}},"/products/RHEL/extended-update-support-products":{"get":{"description":"Returns the list of currently supported RHEL product-repo mappings for Extended Update Support","responses":{"200":{"description":"Extended Update Support versions","schema":{"properties":{"body":{"items":{"$ref":"#/definitions/EusProductList"},"type":"array"}},"type":"object"}},"400":{"$ref":"#/responses/BadRequest"},"401":{"$ref":"#/responses/Unauthorized"},"403":{"$ref":"#/responses/Forbidden"},"500":{"$ref":"#/responses/InternalServerError"}},"summary":"List RHEL EUS products","tags":["products"]}},"/products/RHEL/extended-update-support-versions":{"get":{"description":"Returns the list of currently supported RHEL versions for Extended Update Support","responses":{"200":{"description":"Extended Update Support versions","schema":{"properties":{"body":{"items":{"type":"string"},"type":"array"}},"type":"object"}},"401":{"$ref":"#/responses/Unauthorized"},"403":{"$ref":"#/responses/Forbidden"},"500":{"$ref":"#/responses/InternalServerError"}},"summary":"List RHEL EUS versions","tags":["products"]}},"/products/export":{"get":{"description":"Export a csv file of all subscriptions","produces":["text/csv"],"responses":{"200":{"description":"Export","examples":{"text/csv":"Name,SKU,Service level,Support type,Capacity name,Capacity quantity,Contract number,Quantity,Start date,End date,Status (Active, Expired, Future Dated)\nExample Name, Example SKU, Example Service level, Example Support type, Example Capacity name, Example Contract number, Example Quantity, Example Start date, Example End date, Example Status\n"},"schema":{"type":"file"}},"401":{"$ref":"#/responses/Unauthorized"},"403":{"$ref":"#/responses/Forbidden"},"500":{"$ref":"#/responses/InternalServerError"}},"summary":"Export subscriptions","tags":["products"]}},"/products/status":{"get":{"description":"Get counts of user's subscriptions by status such as\n- active\n- expired\n- expiring soon\n- future dated ","operationId":"statusCounts","responses":{"200":{"description":"Status counts","schema":{"properties":{"body":{"$ref":"#/definitions/StatusCount"}},"type":"object"}},"401":{"$ref":"#/responses/Unauthorized"},"403":{"$ref":"#/responses/Forbidden"},"500":{"$ref":"#/responses/InternalServerError"}},"summary":"Get user's subscription quantities by status","tags":["products"]}},"/products/{SKU}":{"get":{"description":"Get a single product by SKU","operationId":"showProduct","parameters":[{"description":"SKU of the product to show","in":"path","name":"SKU","required":true,"type":"string"}],"responses":{"200":{"description":"Product","schema":{"properties":{"body":{"$ref":"#/definitions/ProductList"}},"type":"object"}},"400":{"$ref":"#/responses/BadRequest"},"401":{"$ref":"#/responses/Unauthorized"},"403":{"$ref":"#/responses/Forbidden"},"500":{"$ref":"#/responses/InternalServerError"}},"summary":"Show product","tags":["products"]}}},"produces":["application/json"],"responses":{"BadRequest":{"description":"BadRequest error","schema":{"properties":{"error":{"$ref":"#/definitions/ErrorDetails"}},"type":"object"}},"Forbidden":{"description":"Forbidden error","schema":{"properties":{"error":{"$ref":"#/definitions/ErrorDetails"}},"type":"object"}},"GatewayTimeout":{"description":"GatewayTimeout error","schema":{"properties":{"error":{"$ref":"#/definitions/ErrorDetails"}},"type":"object"}},"InternalServerError":{"description":"InternalServerError error","schema":{"properties":{"error":{"$ref":"#/definitions/ErrorDetails"}},"type":"object"}},"NoContent":{"description":"No Content"},"NotAcceptable":{"description":"NotAcceptable error","schema":{"properties":{"error":{"$ref":"#/definitions/ErrorDetails"}},"type":"object"}},"NotFound":{"description":"NotFound error","schema":{"properties":{"error":{"$ref":"#/definitions/ErrorDetails"}},"type":"object"}},"Unauthorized":{"description":"Unauthorized error","schema":{"properties":{"error":{"$ref":"#/definitions/ErrorDetails"}},"type":"object"}}},"schemes":["https"],"swagger":"2.0"} \ No newline at end of file diff --git a/build-tools b/build-tools index 75adad05..b496d0a8 160000 --- a/build-tools +++ b/build-tools @@ -1 +1 @@ -Subproject commit 75adad05c9e22ff84c7d3b43564554a26f55a8a9 +Subproject commit b496d0a8c1755608bd256a6960869b14a7689d38 diff --git a/build_deploy.sh b/build_deploy.sh index cbe4db67..11da7b04 100755 --- a/build_deploy.sh +++ b/build_deploy.sh @@ -9,7 +9,7 @@ export COMPONENT="image-builder" export IMAGE="quay.io/cloudservices/image-builder-frontend" export APP_ROOT=$(pwd) export WORKSPACE=${WORKSPACE:-$APP_ROOT} # if running in jenkins, use the build's workspace -export NODE_BUILD_VERSION=18 +export NODE_BUILD_VERSION=22 COMMON_BUILDER=https://raw.githubusercontent.com/RedHatInsights/insights-frontend-builder-common/master set -exv diff --git a/cockpit/README.md b/cockpit/README.md index 1333ed77..8adf72a8 100644 --- a/cockpit/README.md +++ b/cockpit/README.md @@ -1 +1,3 @@ -TODO +# cockpit-image-builder + +The "cockpit-image-builder" provides an on-premise frontend for image building, designed to integrate with [Cockpit](https://cockpit-project.org/) as a plugin. It allows users to create, manage, and compose custom operating system images, with images stored locally. diff --git a/cockpit/cockpit-image-builder.spec b/cockpit/cockpit-image-builder.spec index 49a1e835..2c739e91 100644 --- a/cockpit/cockpit-image-builder.spec +++ b/cockpit/cockpit-image-builder.spec @@ -1,5 +1,5 @@ Name: cockpit-image-builder -Version: 68 +Version: 76 Release: 1%{?dist} Summary: Image builder plugin for Cockpit diff --git a/cockpit/public/index.html b/cockpit/public/index.html index 8deb3f10..7ba672f0 100644 --- a/cockpit/public/index.html +++ b/cockpit/public/index.html @@ -1,15 +1,15 @@ - + - - + + Image-Builder - - - -
- - + + + + +
+ diff --git a/cockpit/webpack.config.ts b/cockpit/webpack.config.ts index 00a170fd..b2bbcea4 100644 --- a/cockpit/webpack.config.ts +++ b/cockpit/webpack.config.ts @@ -75,7 +75,15 @@ module.exports = { }, { test: /\.scss$/, - use: [MiniCssExtractPlugin.loader, 'css-loader', 'sass-loader'], + use: [ + MiniCssExtractPlugin.loader, + + { + loader: 'css-loader', + options: { url: false }, + }, + 'sass-loader', + ], }, ], }, diff --git a/deploy/iqe-trigger-integration.yml b/deploy/iqe-trigger-integration.yml deleted file mode 100644 index 8d618481..00000000 --- a/deploy/iqe-trigger-integration.yml +++ /dev/null @@ -1,183 +0,0 @@ ---- -apiVersion: template.openshift.io/v1 -kind: Template -metadata: - name: image-builder-frontend-tests -objects: -- apiVersion: batch/v1 - kind: Job - metadata: - name: image-builder-frontend-${TEST_TYPE}-tests-${IMAGE_TAG}-${UID} - annotations: - "ignore-check.kube-linter.io/no-liveness-probe": "probes not required on Job pods" - "ignore-check.kube-linter.io/no-readiness-probe": "probes not required on Job pods" - spec: - backoffLimit: 0 - template: - spec: - imagePullSecrets: - - name: quay-cloudservices-pull - restartPolicy: Never - volumes: - - name: sel-shm - emptyDir: - medium: Memory - - name: sel-downloads - emptyDir: - medium: Memory - sizeLimit: 64Mi - containers: - - name: image-builder-frontend-iqe-${TEST_TYPE}-tests-${IMAGE_TAG}-${UID} - image: ${IQE_IMAGE} - imagePullPolicy: Always - args: - - run - env: - - name: ENV_FOR_DYNACONF - value: ${ENV_FOR_DYNACONF} - - name: DYNACONF_MAIN__use_beta - value: ${USE_BETA} - - name: IQE_IBUTSU_SOURCE - value: image-builder-${IMAGE_TAG}-tests-${UID}-${ENV_FOR_DYNACONF} - - name: IQE_BROWSERLOG - value: ${IQE_BROWSERLOG} - - name: IQE_NETLOG - value: ${IQE_NETLOG} - - name: IQE_PLUGINS - value: ${IQE_PLUGINS} - - name: IQE_MARKER_EXPRESSION - value: ${IQE_MARKER_EXPRESSION} - - name: IQE_FILTER_EXPRESSION - value: ${IQE_FILTER_EXPRESSION} - - name: IQE_LOG_LEVEL - value: ${IQE_LOG_LEVEL} - - name: IQE_REQUIREMENTS - value: ${IQE_REQUIREMENTS} - - name: IQE_PARALLEL_ENABLED - value: ${IQE_PARALLEL_ENABLED} - - name: IQE_REQUIREMENTS_PRIORITY - value: ${IQE_REQUIREMENTS_PRIORITY} - - name: IQE_TEST_IMPORTANCE - value: ${IQE_TEST_IMPORTANCE} - - name: DYNACONF_IQE_VAULT_LOADER_ENABLED - value: "true" - - name: DYNACONF_IQE_VAULT_VERIFY - value: "true" - - name: DYNACONF_IQE_VAULT_URL - valueFrom: - secretKeyRef: - key: url - name: iqe-vault - optional: true - - name: DYNACONF_IQE_VAULT_MOUNT_POINT - valueFrom: - secretKeyRef: - key: mountPoint - name: iqe-vault - optional: true - - name: DYNACONF_IQE_VAULT_ROLE_ID - valueFrom: - secretKeyRef: - key: roleId - name: iqe-vault - optional: true - - name: DYNACONF_IQE_VAULT_SECRET_ID - valueFrom: - secretKeyRef: - key: secretId - name: iqe-vault - optional: true - resources: - limits: - cpu: ${IQE_CPU_LIMIT} - memory: ${IQE_MEMORY_LIMIT} - requests: - cpu: ${IQE_CPU_REQUEST} - memory: ${IQE_MEMORY_REQUEST} - terminationMessagePath: /dev/termination-log - terminationMessagePolicy: File - volumeMounts: - - name: sel-downloads - mountPath: /sel-downloads - - name: image-builder-sel-${TEST_TYPE}-tests-${IMAGE_TAG}-${UID} - image: ${IQE_SEL_IMAGE} - env: - - name: _JAVA_OPTIONS - value: ${SELENIUM_JAVA_OPTS} - - name: VNC_GEOMETRY - value: ${VNC_GEOMETRY} - - name: SE_NODE_SESSION_TIMEOUT - value: ${SE_NODE_SESSION_TIMEOUT} - resources: - limits: - cpu: ${SELENIUM_CPU_LIMIT} - memory: ${SELENIUM_MEMORY_LIMIT} - requests: - cpu: ${SELENIUM_CPU_REQUEST} - memory: ${SELENIUM_MEMORY_REQUEST} - volumeMounts: - - name: sel-shm - mountPath: /dev/shm - - name: sel-downloads - mountPath: /home/selenium/Downloads -parameters: -- name: IMAGE_TAG - value: '' - required: true -- name: UID - description: "Unique job name suffix" - generate: expression - from: "[a-z0-9]{6}" -- name: IQE_IMAGE - description: "container image path for the iqe plugin" - value: quay.io/cloudservices/iqe-tests:insights-experiences -- name: ENV_FOR_DYNACONF - value: stage_proxy -- name: USE_BETA - value: "true" -- name: IQE_PLUGINS - value: insights_experiences -- name: IQE_MARKER_EXPRESSION - value: 'image_builder' -- name: IQE_FILTER_EXPRESSION - value: '' -- name: IQE_LOG_LEVEL - value: info -- name: IQE_REQUIREMENTS - value: '' -- name: IQE_REQUIREMENTS_PRIORITY - value: '' -- name: IQE_TEST_IMPORTANCE - value: '' -- name: IQE_SEL_IMAGE - value: 'quay.io/redhatqe/selenium-standalone:ff_91.9.1esr_chrome_103.0.5060.114' -- name: IQE_BROWSERLOG - value: "1" -- name: IQE_NETLOG - value: "1" -- name: TEST_TYPE - value: '' -- name: IQE_CPU_LIMIT - value: "1" -- name: IQE_MEMORY_LIMIT - value: 1.5Gi -- name: IQE_CPU_REQUEST - value: 250m -- name: IQE_MEMORY_REQUEST - value: 1Gi -- name: SELENIUM_CPU_LIMIT - value: 500m -- name: SELENIUM_MEMORY_LIMIT - value: 2Gi -- name: SELENIUM_CPU_REQUEST - value: 100m -- name: SELENIUM_MEMORY_REQUEST - value: 1Gi -- name: SELENIUM_JAVA_OPTS - value: '' -- name: VNC_GEOMETRY - value: '1920x1080' -- name: IQE_PARALLEL_ENABLED - value: "false" -- name: SE_NODE_SESSION_TIMEOUT - value: "600" diff --git a/distribution/Dockerfile b/distribution/Dockerfile deleted file mode 100644 index 7452210d..00000000 --- a/distribution/Dockerfile +++ /dev/null @@ -1,12 +0,0 @@ -FROM node:18 - -WORKDIR /app - -COPY . . - -RUN npm ci - -EXPOSE 8002 -EXPOSE 1337 - -CMD [ "npm", "run", "devel" ] diff --git a/eslint.config.js b/eslint.config.js new file mode 100644 index 00000000..6299dbc5 --- /dev/null +++ b/eslint.config.js @@ -0,0 +1,174 @@ +const js = require('@eslint/js'); +const tseslint = require('typescript-eslint'); +const pluginReact = require('eslint-plugin-react'); +const pluginReactHooks = require('eslint-plugin-react-hooks'); +const pluginReactRedux = require('eslint-plugin-react-redux'); +const pluginImport = require('eslint-plugin-import'); +const fecConfig = require('@redhat-cloud-services/eslint-config-redhat-cloud-services'); +const pluginJsxA11y = require('eslint-plugin-jsx-a11y'); +const disableAutofix = require('eslint-plugin-disable-autofix'); +const pluginPrettier = require('eslint-plugin-prettier'); +const jestDom = require('eslint-plugin-jest-dom'); +const pluginTestingLibrary = require('eslint-plugin-testing-library'); +const pluginPlaywright = require('eslint-plugin-playwright'); +const { defineConfig } = require('eslint/config'); +const globals = require('globals'); + +module.exports = defineConfig([ + { // Ignore programatically generated files + ignores: [ + '**/mockServiceWorker.js', + '**/imageBuilderApi.ts', + '**/contentSourcesApi.ts', + '**/rhsmApi.ts', + '**/provisioningApi.ts', + '**/complianceApi.ts', + '**/composerCloudApi.ts' + ] + }, + + { // Base config for js/ts files + files: ['**/*.{js,ts,jsx,tsx}'], + languageOptions: { + parser: tseslint.parser, + parserOptions: { + project: './tsconfig.json' + }, + globals: { + ...globals.browser, + // node + 'JSX': 'readonly', + 'process': 'readonly', + '__dirname': 'readonly', + 'require': 'readonly', + // vitest + 'describe': 'readonly', + 'it': 'readonly', + 'test': 'readonly', + 'expect': 'readonly', + 'vi': 'readonly', + 'beforeAll': 'readonly', + 'beforeEach': 'readonly', + 'afterAll': 'readonly', + 'afterEach': 'readonly' + }, + }, + plugins: { + js, + '@typescript-eslint': tseslint.plugin, + react: pluginReact, + 'react-hooks': pluginReactHooks, + 'react-redux': pluginReactRedux, + import: pluginImport, + jsxA11y: pluginJsxA11y, + 'disable-autofix': disableAutofix, + prettier: pluginPrettier, + }, + rules: { + ...js.configs.recommended.rules, + ...tseslint.configs.recommended.rules, + ...pluginReact.configs.flat.recommended.rules, + ...pluginReactHooks.configs.recommended.rules, + ...pluginReactRedux.configs.recommended.rules, + ...fecConfig.rules, + 'import/order': ['error', { + groups: ['builtin', 'external', 'internal', 'sibling', 'parent', 'index'], + alphabetize: { + order: 'asc', + caseInsensitive: true + }, + 'newlines-between': 'always', + pathGroups: [ // ensures the import of React is always on top + { + pattern: 'react', + group: 'builtin', + position: 'before' + } + ], + pathGroupsExcludedImportTypes: ['react'] + }], + 'sort-imports': ['error', { + ignoreCase: true, + ignoreDeclarationSort: true, + ignoreMemberSort: false, + }], + 'no-duplicate-imports': 'error', + 'prefer-const': ['error', { + destructuring: 'any', + }], + 'no-console': 'error', + 'eqeqeq': 'error', + 'array-callback-return': 'warn', + '@typescript-eslint/ban-ts-comment': ['error', { + 'ts-expect-error': 'allow-with-description', + 'ts-ignore': 'allow-with-description', + 'ts-nocheck': true, + 'ts-check': true, + minimumDescriptionLength: 5, + }], + '@typescript-eslint/ban-types': 'off', + '@typescript-eslint/no-explicit-any': 'error', + '@typescript-eslint/no-unsafe-function-type': 'error', + '@typescript-eslint/no-require-imports': 'error', + 'disable-autofix/@typescript-eslint/no-unnecessary-condition': 'warn', + 'no-unused-vars': 'off', // disable js rule in favor of @typescript-eslint's rule + '@typescript-eslint/no-unused-vars': [ + 'error', + { + argsIgnorePattern: '^_', + varsIgnorePattern: '^_', + }, + ], + 'jsx-a11y/no-autofocus': 'off', + 'prettier/prettier': ['error', { + semi: true, + tabWidth: 2, + singleQuote: true, + jsxSingleQuote: true, + bracketSpacing: true, + tsxSingleQuote: true, + tsSingleQuote: true, + printWidth: 80, + trailingComma: 'all', + }], + }, + settings: { + react: { + version: 'detect', // Automatically detect React version + }, + }, + }, + + { // Override for test files + files: ['src/test/**/*.{ts,tsx}'], + plugins: { + 'jest-dom': jestDom, + 'testing-library': pluginTestingLibrary, + }, + rules: { + ...jestDom.configs.recommended.rules, + ...pluginTestingLibrary.configs.react.rules, + 'react/display-name': 'off', + 'react/prop-types': 'off', + 'testing-library/no-debugging-utils': 'error' + }, + }, + + { // Override for Playwright tests + files: ['playwright/**/*.ts'], + plugins: { + playwright: pluginPlaywright, + }, + rules: { + ...pluginPlaywright.configs.recommended.rules, + 'playwright/no-conditional-in-test': 'off', + 'playwright/no-conditional-expect': 'off', + 'playwright/no-skipped-test': [ + 'error', + { + 'allowConditional': true + } + ] + }, + }, +]); diff --git a/package-lock.json b/package-lock.json index 8a7b1088..c8b41f90 100644 --- a/package-lock.json +++ b/package-lock.json @@ -10,17 +10,18 @@ "hasInstallScript": true, "dependencies": { "@ltd/j-toml": "1.38.0", - "@patternfly/patternfly": "5.4.1", - "@patternfly/react-code-editor": "5.4.1", - "@patternfly/react-core": "5.4.12", - "@patternfly/react-table": "5.4.14", - "@redhat-cloud-services/frontend-components": "5.2.6", - "@redhat-cloud-services/frontend-components-notifications": "4.1.20", - "@redhat-cloud-services/frontend-components-utilities": "5.0.11", + "@patternfly/patternfly": "6.3.1", + "@patternfly/react-code-editor": "6.3.1", + "@patternfly/react-core": "6.3.1", + "@patternfly/react-table": "6.3.1", + "@redhat-cloud-services/frontend-components": "7.0.3", + "@redhat-cloud-services/frontend-components-notifications": "6.1.5", + "@redhat-cloud-services/frontend-components-utilities": "7.0.3", + "@redhat-cloud-services/types": "3.0.1", "@reduxjs/toolkit": "2.8.2", "@scalprum/react-core": "0.9.5", - "@sentry/webpack-plugin": "3.4.0", - "@unleash/proxy-client-react": "5.0.0", + "@sentry/webpack-plugin": "4.1.1", + "@unleash/proxy-client-react": "5.0.1", "classnames": "2.5.1", "jwt-decode": "4.0.0", "lodash": "4.17.21", @@ -32,68 +33,72 @@ "redux-promise-middleware": "6.2.0" }, "devDependencies": { - "@babel/core": "7.26.10", - "@babel/preset-env": "7.27.2", + "@babel/core": "7.28.0", + "@babel/preset-env": "7.28.0", "@babel/preset-react": "7.27.1", - "@babel/preset-typescript": "7.27.0", - "@currents/playwright": "1.13.2", - "@patternfly/react-icons": "5.4.2", + "@babel/preset-typescript": "7.27.1", + "@currents/playwright": "1.15.3", + "@eslint/js": "9.32.0", + "@patternfly/react-icons": "6.3.1", "@playwright/test": "1.51.1", - "@redhat-cloud-services/eslint-config-redhat-cloud-services": "2.0.12", + "@redhat-cloud-services/eslint-config-redhat-cloud-services": "3.0.0", "@redhat-cloud-services/frontend-components-config": "6.3.8", - "@redhat-cloud-services/tsc-transform-imports": "1.0.24", + "@redhat-cloud-services/tsc-transform-imports": "1.0.25", "@rtk-query/codegen-openapi": "2.0.0", - "@testing-library/dom": "10.4.0", - "@testing-library/jest-dom": "6.6.3", + "@testing-library/dom": "10.4.1", + "@testing-library/jest-dom": "6.6.4", "@testing-library/react": "16.3.0", "@testing-library/user-event": "14.6.1", - "@types/node": "22.15.1", + "@types/node": "24.3.0", "@types/react": "18.3.12", "@types/react-dom": "18.3.1", "@types/react-redux": "7.1.34", "@types/uuid": "10.0.0", - "@typescript-eslint/eslint-plugin": "8.32.1", - "@typescript-eslint/parser": "8.32.1", - "@vitejs/plugin-react": "4.4.1", - "@vitest/coverage-v8": "3.1.2", + "@typescript-eslint/eslint-plugin": "8.40.0", + "@typescript-eslint/parser": "8.40.0", + "@vitejs/plugin-react": "4.7.0", + "@vitest/coverage-v8": "3.2.4", "babel-loader": "10.0.0", - "chart.js": "4.4.9", + "chart.js": "4.5.0", "chartjs-adapter-moment": "1.0.1", "chartjs-plugin-annotation": "3.1.0", "copy-webpack-plugin": "13.0.0", "css-loader": "7.1.2", - "eslint": "8.57.1", + "eslint": "9.33.0", "eslint-plugin-disable-autofix": "5.0.1", - "eslint-plugin-import": "2.31.0", + "eslint-plugin-import": "2.32.0", "eslint-plugin-jest-dom": "5.5.0", "eslint-plugin-jsx-a11y": "6.10.2", - "eslint-plugin-playwright": "2.2.0", + "eslint-plugin-playwright": "2.2.2", + "eslint-plugin-prettier": "5.5.4", "eslint-plugin-react": "7.37.5", "eslint-plugin-react-hooks": "5.2.0", "eslint-plugin-react-redux": "4.2.2", - "eslint-plugin-testing-library": "7.2.2", + "eslint-plugin-testing-library": "7.6.6", "git-revision-webpack-plugin": "5.0.0", + "globals": "16.3.0", "history": "5.3.0", "identity-obj-proxy": "3.0.0", "jsdom": "26.1.0", "madge": "8.0.0", "mini-css-extract-plugin": "2.9.2", "moment": "2.30.1", - "msw": "2.7.5", + "msw": "2.10.5", "npm-run-all": "4.1.5", "path-browserify": "1.0.1", "postcss-scss": "4.0.9", "react-chartjs-2": "5.3.0", "redux-mock-store": "1.5.5", - "sass": "1.88.0", + "sass": "1.90.0", "sass-loader": "16.0.5", - "stylelint": "16.18.0", - "stylelint-config-recommended-scss": "14.1.0", + "stylelint": "16.23.1", + "stylelint-config-recommended-scss": "16.0.0", "ts-node": "10.9.2", "ts-patch": "3.3.0", "typescript": "5.8.3", + "typescript-eslint": "8.40.0", "uuid": "11.1.0", - "vitest": "3.1.2", + "vitest": "3.2.4", "vitest-canvas-mock": "0.3.3", "webpack-bundle-analyzer": "4.10.2", "whatwg-fetch": "3.6.20" @@ -259,30 +264,30 @@ } }, "node_modules/@babel/compat-data": { - "version": "7.27.2", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.27.2.tgz", - "integrity": "sha512-TUtMJYRPyUb/9aU8f3K0mjmjf6M9N5Woshn2CS6nqJSeJtTtQcpLUXjGt9vbF8ZGff0El99sWkLgzwW3VXnxZQ==", + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.28.0.tgz", + "integrity": "sha512-60X7qkglvrap8mn1lh2ebxXdZYtUcpd7gsmy9kLaBJ4i/WdY8PqTSdxyA8qraikqKQK5C1KRBKXqznrVapyNaw==", "license": "MIT", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/core": { - "version": "7.26.10", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.26.10.tgz", - "integrity": "sha512-vMqyb7XCDMPvJFFOaT9kxtiRh42GwlZEg1/uIgtZshS5a/8OaduUfCi7kynKgc3Tw/6Uo2D+db9qBttghhmxwQ==", + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.28.0.tgz", + "integrity": "sha512-UlLAnTPrFdNGoFtbSXwcGFQBtQZJCNjaN6hQNP3UPvuNXT1i82N26KL3dZeIpNalWywr9IuQuncaAfUaS1g6sQ==", "license": "MIT", "dependencies": { "@ampproject/remapping": "^2.2.0", - "@babel/code-frame": "^7.26.2", - "@babel/generator": "^7.26.10", - "@babel/helper-compilation-targets": "^7.26.5", - "@babel/helper-module-transforms": "^7.26.0", - "@babel/helpers": "^7.26.10", - "@babel/parser": "^7.26.10", - "@babel/template": "^7.26.9", - "@babel/traverse": "^7.26.10", - "@babel/types": "^7.26.10", + "@babel/code-frame": "^7.27.1", + "@babel/generator": "^7.28.0", + "@babel/helper-compilation-targets": "^7.27.2", + "@babel/helper-module-transforms": "^7.27.3", + "@babel/helpers": "^7.27.6", + "@babel/parser": "^7.28.0", + "@babel/template": "^7.27.2", + "@babel/traverse": "^7.28.0", + "@babel/types": "^7.28.0", "convert-source-map": "^2.0.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", @@ -298,7 +303,9 @@ } }, "node_modules/@babel/eslint-parser": { - "version": "7.25.9", + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/@babel/eslint-parser/-/eslint-parser-7.28.0.tgz", + "integrity": "sha512-N4ntErOlKvcbTt01rr5wj3y55xnIdx1ymrfIr8C2WnM1Y9glFgWaGDEULJIazOX3XM9NRzhfJ6zZnQ1sBNWU+w==", "dev": true, "license": "MIT", "dependencies": { @@ -315,15 +322,15 @@ } }, "node_modules/@babel/generator": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.27.1.tgz", - "integrity": "sha512-UnJfnIpc/+JO0/+KRVQNGU+y5taA5vCbwN8+azkX6beii/ZF+enZJSOKo11ZSzGJjlNfJHfQtmQT8H+9TXPG2w==", + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.28.0.tgz", + "integrity": "sha512-lJjzvrbEeWrhB4P3QBsH7tey117PjLZnDbLiQEKjQ/fNJTjuq4HSqgFA+UNSwZT8D7dxxbnuSBMsa1lrWzKlQg==", "license": "MIT", "dependencies": { - "@babel/parser": "^7.27.1", - "@babel/types": "^7.27.1", - "@jridgewell/gen-mapping": "^0.3.5", - "@jridgewell/trace-mapping": "^0.3.25", + "@babel/parser": "^7.28.0", + "@babel/types": "^7.28.0", + "@jridgewell/gen-mapping": "^0.3.12", + "@jridgewell/trace-mapping": "^0.3.28", "jsesc": "^3.0.2" }, "engines": { @@ -331,13 +338,13 @@ } }, "node_modules/@babel/helper-annotate-as-pure": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.27.1.tgz", - "integrity": "sha512-WnuuDILl9oOBbKnb4L+DyODx7iC47XfzmNCpTttFsSp6hTG7XZxu60+4IO+2/hPfcGOoKbFiwoI/+zwARbNQow==", + "version": "7.27.3", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.27.3.tgz", + "integrity": "sha512-fXSwMQqitTGeHLBC08Eq5yXz2m37E4pJX1qAU1+2cNedz/ifv/bVXft90VeSav5nFO61EcNgwr0aJxbyPaWBPg==", "dev": true, "license": "MIT", "dependencies": { - "@babel/types": "^7.27.1" + "@babel/types": "^7.27.3" }, "engines": { "node": ">=6.9.0" @@ -400,20 +407,31 @@ } }, "node_modules/@babel/helper-define-polyfill-provider": { - "version": "0.6.3", + "version": "0.6.5", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.6.5.tgz", + "integrity": "sha512-uJnGFcPsWQK8fvjgGP5LZUZZsYGIoPeRjSF5PGwrelYgq7Q15/Ft9NGFp1zglwgIv//W0uG4BevRuSJRyylZPg==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-compilation-targets": "^7.22.6", - "@babel/helper-plugin-utils": "^7.22.5", - "debug": "^4.1.1", + "@babel/helper-compilation-targets": "^7.27.2", + "@babel/helper-plugin-utils": "^7.27.1", + "debug": "^4.4.1", "lodash.debounce": "^4.0.8", - "resolve": "^1.14.2" + "resolve": "^1.22.10" }, "peerDependencies": { "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" } }, + "node_modules/@babel/helper-globals": { + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/@babel/helper-globals/-/helper-globals-7.28.0.tgz", + "integrity": "sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, "node_modules/@babel/helper-member-expression-to-functions": { "version": "7.27.1", "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.27.1.tgz", @@ -442,14 +460,14 @@ } }, "node_modules/@babel/helper-module-transforms": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.27.1.tgz", - "integrity": "sha512-9yHn519/8KvTU5BjTVEEeIM3w9/2yXNKoD82JifINImhpKkARMJKPP59kLo+BafpdN5zgNeIcS4jsGDmd3l58g==", + "version": "7.27.3", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.27.3.tgz", + "integrity": "sha512-dSOvYwvyLsWBeIRyOeHXp5vPj5l1I011r52FM1+r1jCERv+aFXYk4whgQccYEGYxK2H3ZAIA8nuPkQ0HaUo3qg==", "license": "MIT", "dependencies": { "@babel/helper-module-imports": "^7.27.1", "@babel/helper-validator-identifier": "^7.27.1", - "@babel/traverse": "^7.27.1" + "@babel/traverse": "^7.27.3" }, "engines": { "node": ">=6.9.0" @@ -574,25 +592,25 @@ } }, "node_modules/@babel/helpers": { - "version": "7.26.10", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.26.10.tgz", - "integrity": "sha512-UPYc3SauzZ3JGgj87GgZ89JVdC5dj0AoetR5Bw6wj4niittNyFh6+eOGonYvJ1ao6B8lEa3Q3klS7ADZ53bc5g==", + "version": "7.27.6", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.27.6.tgz", + "integrity": "sha512-muE8Tt8M22638HU31A3CgfSUciwz1fhATfoVai05aPXGor//CdWDCbnlY1yvBPo07njuVOCNGCSp/GTt12lIug==", "license": "MIT", "dependencies": { - "@babel/template": "^7.26.9", - "@babel/types": "^7.26.10" + "@babel/template": "^7.27.2", + "@babel/types": "^7.27.6" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/parser": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.27.1.tgz", - "integrity": "sha512-I0dZ3ZpCrJ1c04OqlNsQcKiZlsrXf/kkE4FXzID9rIOYICsAbA8mMDzhW/luRNAHdCNt7os/u8wenklZDlUVUQ==", + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.28.0.tgz", + "integrity": "sha512-jVZGvOxOuNSsuQuLRTh13nU0AogFlw32w/MT+LV6D3sP5WdbW61E77RnkbaO2dUvmPAYrBDJXGn5gGS6tH4j8g==", "license": "MIT", "dependencies": { - "@babel/types": "^7.27.1" + "@babel/types": "^7.28.0" }, "bin": { "parser": "bin/babel-parser.js" @@ -745,13 +763,13 @@ } }, "node_modules/@babel/plugin-syntax-typescript": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.25.9.tgz", - "integrity": "sha512-hjMgRy5hb8uJJjUcdWunWVcoi9bGpJp8p5Ol1229PoN6aytsLwNMgmdftO23wnCLMfVmTwZDWMPNq/D1SY60JQ==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.27.1.tgz", + "integrity": "sha512-xfYCBMxveHrRMnAWl1ZlPXOZjzkN82THFvLhQhFXFt81Z5HnN+EtUkZhv/zcKpmT3fzmWZB0ywiBrbC3vogbwQ==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.9" + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -792,15 +810,15 @@ } }, "node_modules/@babel/plugin-transform-async-generator-functions": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.27.1.tgz", - "integrity": "sha512-eST9RrwlpaoJBDHShc+DS2SG4ATTi2MYNb4OxYkf3n+7eb49LWpnS+HSpVfW4x927qQwgk8A2hGNVaajAEw0EA==", + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.28.0.tgz", + "integrity": "sha512-BEOdvX4+M765icNPZeidyADIvQ1m1gmunXufXxvRESy/jNNyfovIqUyE7MVgGBjWktCoJlzvFA1To2O4ymIO3Q==", "dev": true, "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.27.1", "@babel/helper-remap-async-to-generator": "^7.27.1", - "@babel/traverse": "^7.27.1" + "@babel/traverse": "^7.28.0" }, "engines": { "node": ">=6.9.0" @@ -844,9 +862,9 @@ } }, "node_modules/@babel/plugin-transform-block-scoping": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.27.1.tgz", - "integrity": "sha512-QEcFlMl9nGTgh1rn2nIeU5bkfb9BAjaQcWbiP4LvKxUot52ABcTkpcyJ7f2Q2U2RuQ84BNLgts3jRme2dTx6Fw==", + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.28.0.tgz", + "integrity": "sha512-gKKnwjpdx5sER/wl0WN0efUBFzF/56YZO0RJrSYP4CljXnP31ByY7fol89AzomdlLNzI36AvOTmYHsnZTCkq8Q==", "dev": true, "license": "MIT", "dependencies": { @@ -894,18 +912,18 @@ } }, "node_modules/@babel/plugin-transform-classes": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.27.1.tgz", - "integrity": "sha512-7iLhfFAubmpeJe/Wo2TVuDrykh/zlWXLzPNdL0Jqn/Xu8R3QQ8h9ff8FQoISZOsw74/HFqFI7NX63HN7QFIHKA==", + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.28.0.tgz", + "integrity": "sha512-IjM1IoJNw72AZFlj33Cu8X0q2XK/6AaVC3jQu+cgQ5lThWD5ajnuUAml80dqRmOhmPkTH8uAwnpMu9Rvj0LTRA==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-annotate-as-pure": "^7.27.1", - "@babel/helper-compilation-targets": "^7.27.1", + "@babel/helper-annotate-as-pure": "^7.27.3", + "@babel/helper-compilation-targets": "^7.27.2", + "@babel/helper-globals": "^7.28.0", "@babel/helper-plugin-utils": "^7.27.1", "@babel/helper-replace-supers": "^7.27.1", - "@babel/traverse": "^7.27.1", - "globals": "^11.1.0" + "@babel/traverse": "^7.28.0" }, "engines": { "node": ">=6.9.0" @@ -932,13 +950,14 @@ } }, "node_modules/@babel/plugin-transform-destructuring": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.27.1.tgz", - "integrity": "sha512-ttDCqhfvpE9emVkXbPD8vyxxh4TWYACVybGkDj+oReOGwnp066ITEivDlLwe0b1R0+evJ13IXQuLNB5w1fhC5Q==", + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.28.0.tgz", + "integrity": "sha512-v1nrSMBiKcodhsyJ4Gf+Z0U/yawmJDBOTpEB3mcQY52r9RIyPneGyAS/yM6seP/8I+mWI3elOMtT5dB8GJVs+A==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1" + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/traverse": "^7.28.0" }, "engines": { "node": ">=6.9.0" @@ -1013,6 +1032,23 @@ "@babel/core": "^7.0.0-0" } }, + "node_modules/@babel/plugin-transform-explicit-resource-management": { + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-explicit-resource-management/-/plugin-transform-explicit-resource-management-7.28.0.tgz", + "integrity": "sha512-K8nhUcn3f6iB+P3gwCv/no7OdzOZQcKchW6N389V6PD8NUWKZHzndOd9sPDVbMoBsbmjMqlB4L9fm+fEFNVlwQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/plugin-transform-destructuring": "^7.28.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, "node_modules/@babel/plugin-transform-exponentiation-operator": { "version": "7.27.1", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.27.1.tgz", @@ -1280,16 +1316,17 @@ } }, "node_modules/@babel/plugin-transform-object-rest-spread": { - "version": "7.27.2", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.27.2.tgz", - "integrity": "sha512-AIUHD7xJ1mCrj3uPozvtngY3s0xpv7Nu7DoUSnzNY6Xam1Cy4rUznR//pvMHOhQ4AvbCexhbqXCtpxGHOGOO6g==", + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.28.0.tgz", + "integrity": "sha512-9VNGikXxzu5eCiQjdE4IZn8sb9q7Xsk5EXLDBKUYg1e/Tve8/05+KJEtcxGxAgCY5t/BpKQM+JEL/yT4tvgiUA==", "dev": true, "license": "MIT", "dependencies": { "@babel/helper-compilation-targets": "^7.27.2", "@babel/helper-plugin-utils": "^7.27.1", - "@babel/plugin-transform-destructuring": "^7.27.1", - "@babel/plugin-transform-parameters": "^7.27.1" + "@babel/plugin-transform-destructuring": "^7.28.0", + "@babel/plugin-transform-parameters": "^7.27.7", + "@babel/traverse": "^7.28.0" }, "engines": { "node": ">=6.9.0" @@ -1349,9 +1386,9 @@ } }, "node_modules/@babel/plugin-transform-parameters": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.27.1.tgz", - "integrity": "sha512-018KRk76HWKeZ5l4oTj2zPpSh+NbGdt0st5S6x0pga6HgrjBOJb24mMDHorFopOOd6YHkLgOZ+zaCjZGPO4aKg==", + "version": "7.27.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.27.7.tgz", + "integrity": "sha512-qBkYTYCb76RRxUM6CcZA5KRu8K4SM8ajzVeUgVdMVO9NN9uI/GaVmBg/WKJJGnNokV9SY8FxNOVWGXzqzUidBg==", "dev": true, "license": "MIT", "dependencies": { @@ -1468,11 +1505,13 @@ } }, "node_modules/@babel/plugin-transform-react-jsx-self": { - "version": "7.25.9", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.27.1.tgz", + "integrity": "sha512-6UzkCs+ejGdZ5mFFC/OCUrv028ab2fp1znZmCZjAOBKiBK2jXD1O+BPSfX8X2qjJ75fZBMSnQn3Rq2mrBJK2mw==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.9" + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -1482,11 +1521,13 @@ } }, "node_modules/@babel/plugin-transform-react-jsx-source": { - "version": "7.25.9", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.27.1.tgz", + "integrity": "sha512-zbwoTsBruTeKB9hSq73ha66iFeJHuaFkUbwvqElnygoNbj/jHRsSeokowZFN3CZ64IvEqcmmkVe89OPXc7ldAw==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.9" + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -1513,9 +1554,9 @@ } }, "node_modules/@babel/plugin-transform-regenerator": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.27.1.tgz", - "integrity": "sha512-B19lbbL7PMrKr52BNPjCqg1IyNUIjTcxKj8uX9zHO+PmWN93s19NDr/f69mIkEp2x9nmDJ08a7lgHaTTzvW7mw==", + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.28.0.tgz", + "integrity": "sha512-LOAozRVbqxEVjSKfhGnuLoE4Kz4Oc5UJzuvFUhSsQzdCdaAQu06mG8zDv2GFSerM62nImUZ7K92vxnQcLSDlCQ==", "dev": true, "license": "MIT", "dependencies": { @@ -1643,17 +1684,17 @@ } }, "node_modules/@babel/plugin-transform-typescript": { - "version": "7.27.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.27.0.tgz", - "integrity": "sha512-fRGGjO2UEGPjvEcyAZXRXAS8AfdaQoq7HnxAbJoAoW10B9xOKesmmndJv+Sym2a+9FHWZ9KbyyLCe9s0Sn5jtg==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.27.1.tgz", + "integrity": "sha512-Q5sT5+O4QUebHdbwKedFBEwRLb02zJ7r4A5Gg2hUoLuU3FjdMcyqcywqUrLCaDsFCxzokf7u9kuy7qz51YUuAg==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-annotate-as-pure": "^7.25.9", - "@babel/helper-create-class-features-plugin": "^7.27.0", - "@babel/helper-plugin-utils": "^7.26.5", - "@babel/helper-skip-transparent-expression-wrappers": "^7.25.9", - "@babel/plugin-syntax-typescript": "^7.25.9" + "@babel/helper-annotate-as-pure": "^7.27.1", + "@babel/helper-create-class-features-plugin": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1", + "@babel/plugin-syntax-typescript": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -1730,13 +1771,13 @@ } }, "node_modules/@babel/preset-env": { - "version": "7.27.2", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.27.2.tgz", - "integrity": "sha512-Ma4zSuYSlGNRlCLO+EAzLnCmJK2vdstgv+n7aUP+/IKZrOfWHOJVdSJtuub8RzHTj3ahD37k5OKJWvzf16TQyQ==", + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.28.0.tgz", + "integrity": "sha512-VmaxeGOwuDqzLl5JUkIRM1X2Qu2uKGxHEQWh+cvvbl7JuJRgKGJSfsEF/bUaxFhJl/XAyxBe7q7qSuTbKFuCyg==", "dev": true, "license": "MIT", "dependencies": { - "@babel/compat-data": "^7.27.2", + "@babel/compat-data": "^7.28.0", "@babel/helper-compilation-targets": "^7.27.2", "@babel/helper-plugin-utils": "^7.27.1", "@babel/helper-validator-option": "^7.27.1", @@ -1750,19 +1791,20 @@ "@babel/plugin-syntax-import-attributes": "^7.27.1", "@babel/plugin-syntax-unicode-sets-regex": "^7.18.6", "@babel/plugin-transform-arrow-functions": "^7.27.1", - "@babel/plugin-transform-async-generator-functions": "^7.27.1", + "@babel/plugin-transform-async-generator-functions": "^7.28.0", "@babel/plugin-transform-async-to-generator": "^7.27.1", "@babel/plugin-transform-block-scoped-functions": "^7.27.1", - "@babel/plugin-transform-block-scoping": "^7.27.1", + "@babel/plugin-transform-block-scoping": "^7.28.0", "@babel/plugin-transform-class-properties": "^7.27.1", "@babel/plugin-transform-class-static-block": "^7.27.1", - "@babel/plugin-transform-classes": "^7.27.1", + "@babel/plugin-transform-classes": "^7.28.0", "@babel/plugin-transform-computed-properties": "^7.27.1", - "@babel/plugin-transform-destructuring": "^7.27.1", + "@babel/plugin-transform-destructuring": "^7.28.0", "@babel/plugin-transform-dotall-regex": "^7.27.1", "@babel/plugin-transform-duplicate-keys": "^7.27.1", "@babel/plugin-transform-duplicate-named-capturing-groups-regex": "^7.27.1", "@babel/plugin-transform-dynamic-import": "^7.27.1", + "@babel/plugin-transform-explicit-resource-management": "^7.28.0", "@babel/plugin-transform-exponentiation-operator": "^7.27.1", "@babel/plugin-transform-export-namespace-from": "^7.27.1", "@babel/plugin-transform-for-of": "^7.27.1", @@ -1779,15 +1821,15 @@ "@babel/plugin-transform-new-target": "^7.27.1", "@babel/plugin-transform-nullish-coalescing-operator": "^7.27.1", "@babel/plugin-transform-numeric-separator": "^7.27.1", - "@babel/plugin-transform-object-rest-spread": "^7.27.2", + "@babel/plugin-transform-object-rest-spread": "^7.28.0", "@babel/plugin-transform-object-super": "^7.27.1", "@babel/plugin-transform-optional-catch-binding": "^7.27.1", "@babel/plugin-transform-optional-chaining": "^7.27.1", - "@babel/plugin-transform-parameters": "^7.27.1", + "@babel/plugin-transform-parameters": "^7.27.7", "@babel/plugin-transform-private-methods": "^7.27.1", "@babel/plugin-transform-private-property-in-object": "^7.27.1", "@babel/plugin-transform-property-literals": "^7.27.1", - "@babel/plugin-transform-regenerator": "^7.27.1", + "@babel/plugin-transform-regenerator": "^7.28.0", "@babel/plugin-transform-regexp-modifiers": "^7.27.1", "@babel/plugin-transform-reserved-words": "^7.27.1", "@babel/plugin-transform-shorthand-properties": "^7.27.1", @@ -1800,10 +1842,10 @@ "@babel/plugin-transform-unicode-regex": "^7.27.1", "@babel/plugin-transform-unicode-sets-regex": "^7.27.1", "@babel/preset-modules": "0.1.6-no-external-plugins", - "babel-plugin-polyfill-corejs2": "^0.4.10", - "babel-plugin-polyfill-corejs3": "^0.11.0", - "babel-plugin-polyfill-regenerator": "^0.6.1", - "core-js-compat": "^3.40.0", + "babel-plugin-polyfill-corejs2": "^0.4.14", + "babel-plugin-polyfill-corejs3": "^0.13.0", + "babel-plugin-polyfill-regenerator": "^0.6.5", + "core-js-compat": "^3.43.0", "semver": "^6.3.1" }, "engines": { @@ -1848,17 +1890,17 @@ } }, "node_modules/@babel/preset-typescript": { - "version": "7.27.0", - "resolved": "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.27.0.tgz", - "integrity": "sha512-vxaPFfJtHhgeOVXRKuHpHPAOgymmy8V8I65T1q53R7GCZlefKeCaTyDs3zOPHTTbmquvNlQYC5klEvWsBAtrBQ==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.27.1.tgz", + "integrity": "sha512-l7WfQfX0WK4M0v2RudjuQK4u99BS6yLHYEmdtVPP7lKV013zr9DygFuWNlnbvQ9LR+LS0Egz/XAvGx5U9MX0fQ==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.26.5", - "@babel/helper-validator-option": "^7.25.9", - "@babel/plugin-syntax-jsx": "^7.25.9", - "@babel/plugin-transform-modules-commonjs": "^7.26.3", - "@babel/plugin-transform-typescript": "^7.27.0" + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-validator-option": "^7.27.1", + "@babel/plugin-syntax-jsx": "^7.27.1", + "@babel/plugin-transform-modules-commonjs": "^7.27.1", + "@babel/plugin-transform-typescript": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -1880,13 +1922,13 @@ } }, "node_modules/@babel/template": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.27.1.tgz", - "integrity": "sha512-Fyo3ghWMqkHHpHQCoBs2VnYjR4iWFFjguTDEqA5WgZDOrFesVjMhMM2FSqTKSoUSDO1VQtavj8NFpdRBEvJTtg==", + "version": "7.27.2", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.27.2.tgz", + "integrity": "sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw==", "license": "MIT", "dependencies": { "@babel/code-frame": "^7.27.1", - "@babel/parser": "^7.27.1", + "@babel/parser": "^7.27.2", "@babel/types": "^7.27.1" }, "engines": { @@ -1894,27 +1936,27 @@ } }, "node_modules/@babel/traverse": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.27.1.tgz", - "integrity": "sha512-ZCYtZciz1IWJB4U61UPu4KEaqyfj+r5T1Q5mqPo+IBpcG9kHv30Z0aD8LXPgC1trYa6rK0orRyAhqUgk4MjmEg==", + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.28.0.tgz", + "integrity": "sha512-mGe7UK5wWyh0bKRfupsUchrQGqvDbZDbKJw+kcRGSmdHVYrv+ltd0pnpDTVpiTqnaBru9iEvA8pz8W46v0Amwg==", "license": "MIT", "dependencies": { "@babel/code-frame": "^7.27.1", - "@babel/generator": "^7.27.1", - "@babel/parser": "^7.27.1", - "@babel/template": "^7.27.1", - "@babel/types": "^7.27.1", - "debug": "^4.3.1", - "globals": "^11.1.0" + "@babel/generator": "^7.28.0", + "@babel/helper-globals": "^7.28.0", + "@babel/parser": "^7.28.0", + "@babel/template": "^7.27.2", + "@babel/types": "^7.28.0", + "debug": "^4.3.1" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/types": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.27.1.tgz", - "integrity": "sha512-+EzkxvLNfiUeKMgy/3luqfsCWFRXLb7U6wNQTk60tovuckwB15B191tJWvpp4HjiQWdJkCxO3Wbvc6jlk3Xb2Q==", + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.28.0.tgz", + "integrity": "sha512-jYnje+JyZG5YThjHiF28oT4SIZLnYOcSBb6+SDaFIyzDVSkXQmQQYclJ2R+YxcdmK0AX6x1E5OQNtuh3jHDrUg==", "license": "MIT", "dependencies": { "@babel/helper-string-parser": "^7.27.1", @@ -2034,7 +2076,9 @@ } }, "node_modules/@csstools/css-parser-algorithms": { - "version": "3.0.4", + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/@csstools/css-parser-algorithms/-/css-parser-algorithms-3.0.5.tgz", + "integrity": "sha512-DaDeUkXZKjdGhgYaHNJTV9pV7Y9B3b644jCLs9Upc3VeNGg6LWARAT6O+Q+/COo+2gg/bM5rhpMAtf70WqfBdQ==", "dev": true, "funding": [ { @@ -2051,11 +2095,13 @@ "node": ">=18" }, "peerDependencies": { - "@csstools/css-tokenizer": "^3.0.3" + "@csstools/css-tokenizer": "^3.0.4" } }, "node_modules/@csstools/css-tokenizer": { - "version": "3.0.3", + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@csstools/css-tokenizer/-/css-tokenizer-3.0.4.tgz", + "integrity": "sha512-Vd/9EVDiu6PPJt9yAh6roZP6El1xHrdvIVGjyBsHR0RYwNHgL7FJPyIIW4fANJNG6FtyZfvlRPpFI4ZM/lubvw==", "dev": true, "funding": [ { @@ -2073,7 +2119,9 @@ } }, "node_modules/@csstools/media-query-list-parser": { - "version": "4.0.2", + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/@csstools/media-query-list-parser/-/media-query-list-parser-4.0.3.tgz", + "integrity": "sha512-HAYH7d3TLRHDOUQK4mZKf9k9Ph/m8Akstg66ywKR4SFAigjs3yBiUeZtFxywiTm5moZMAp/5W/ZuFnNXXYLuuQ==", "dev": true, "funding": [ { @@ -2090,8 +2138,8 @@ "node": ">=18" }, "peerDependencies": { - "@csstools/css-parser-algorithms": "^3.0.4", - "@csstools/css-tokenizer": "^3.0.3" + "@csstools/css-parser-algorithms": "^3.0.5", + "@csstools/css-tokenizer": "^3.0.4" } }, "node_modules/@csstools/selector-specificity": { @@ -2294,9 +2342,9 @@ } }, "node_modules/@currents/playwright": { - "version": "1.13.2", - "resolved": "https://registry.npmjs.org/@currents/playwright/-/playwright-1.13.2.tgz", - "integrity": "sha512-lxYTueNH8JSOhnbpBjV+BkiMLtKQNZgbibLXLBua72jcIWKQGxTge47d70iq6NvIVIjuOB6OL7fORRRFcmdp3w==", + "version": "1.15.3", + "resolved": "https://registry.npmjs.org/@currents/playwright/-/playwright-1.15.3.tgz", + "integrity": "sha512-m2znwZx+y6Z62d03sfC3wv67bqcMzr4HOuh+aG9a6d1rlpbrc8sx+8NzNSAQmuSuBNrrBJXoVSG7G/uj0E2mLA==", "dev": true, "license": "MIT", "dependencies": { @@ -2304,7 +2352,7 @@ "@commander-js/extra-typings": "^12.1.0", "@currents/commit-info": "1.0.1-beta.0", "async-retry": "^1.3.3", - "axios": "^1.9.0", + "axios": "^1.10.0", "axios-retry": "^4.5.0", "c12": "^1.11.2", "chalk": "^4.1.2", @@ -2328,12 +2376,13 @@ "pluralize": "^8.0.0", "pretty-ms": "^7.0.1", "proxy-from-env": "^1.1.0", + "regexp.escape": "^2.0.1", "source-map-support": "^0.5.21", "stack-utils": "^2.0.6", "tmp": "^0.2.3", "tmp-promise": "^3.0.3", - "ts-pattern": "^5.7.0", - "ws": "^8.18.1" + "ts-pattern": "^5.7.1", + "ws": "^8.18.3" }, "bin": { "pwc": "dist/bin/pwc.js", @@ -2452,6 +2501,8 @@ }, "node_modules/@emotion/is-prop-valid": { "version": "0.7.3", + "resolved": "https://registry.npmjs.org/@emotion/is-prop-valid/-/is-prop-valid-0.7.3.tgz", + "integrity": "sha512-uxJqm/sqwXw3YPA5GXX365OBcJGFtxUVkB6WyezqFHlNe9jqUWH5ur2O2M8dGBz61kn1g3ZBlzUunFQXQIClhA==", "license": "MIT", "dependencies": { "@emotion/memoize": "0.7.1" @@ -2459,6 +2510,8 @@ }, "node_modules/@emotion/memoize": { "version": "0.7.1", + "resolved": "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.7.1.tgz", + "integrity": "sha512-Qv4LTqO11jepd5Qmlp3M1YEjBumoTHcHFdgPTQ+sFlIL5myi/7xu/POwP7IRu6odBdmLXdtIs1D6TuW6kbwbbg==", "license": "MIT" }, "node_modules/@esbuild/aix-ppc64": { @@ -2924,15 +2977,79 @@ "node": "^12.0.0 || ^14.0.0 || >=16.0.0" } }, + "node_modules/@eslint/config-array": { + "version": "0.21.0", + "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.21.0.tgz", + "integrity": "sha512-ENIdc4iLu0d93HeYirvKmrzshzofPw6VkZRKQGe9Nv46ZnWUzcF1xV01dcvEg/1wXUR61OmmlSfyeyO7EvjLxQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@eslint/object-schema": "^2.1.6", + "debug": "^4.3.1", + "minimatch": "^3.1.2" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/config-array/node_modules/brace-expansion": { + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", + "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/@eslint/config-array/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/@eslint/config-helpers": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/@eslint/config-helpers/-/config-helpers-0.3.1.tgz", + "integrity": "sha512-xR93k9WhrDYpXHORXpxVL5oHj3Era7wo6k/Wd8/IsQNnZUTzkGS29lyn3nAT05v6ltUuTFVCCYDEGfy2Or/sPA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/core": { + "version": "0.15.2", + "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.15.2.tgz", + "integrity": "sha512-78Md3/Rrxh83gCxoUc0EiciuOHsIITzLy53m3d9UyiW8y9Dj2D29FeETqyKA+BRK76tnTp6RXWb3pCay8Oyomg==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@types/json-schema": "^7.0.15" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, "node_modules/@eslint/eslintrc": { - "version": "2.1.4", + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.3.1.tgz", + "integrity": "sha512-gtF186CXhIl1p4pJNGZw8Yc6RlshoePRvE0X91oPGb3vZ8pM3qOS9W9NGPat9LziaBV7XrJWGylNQXkGcnM3IQ==", "dev": true, "license": "MIT", "dependencies": { "ajv": "^6.12.4", "debug": "^4.3.2", - "espree": "^9.6.0", - "globals": "^13.19.0", + "espree": "^10.0.1", + "globals": "^14.0.0", "ignore": "^5.2.0", "import-fresh": "^3.2.1", "js-yaml": "^4.1.0", @@ -2940,7 +3057,7 @@ "strip-json-comments": "^3.1.1" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { "url": "https://opencollective.com/eslint" @@ -2948,6 +3065,8 @@ }, "node_modules/@eslint/eslintrc/node_modules/ajv": { "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", "dev": true, "license": "MIT", "dependencies": { @@ -2962,7 +3081,9 @@ } }, "node_modules/@eslint/eslintrc/node_modules/brace-expansion": { - "version": "1.1.11", + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", + "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", "dev": true, "license": "MIT", "dependencies": { @@ -2971,14 +3092,13 @@ } }, "node_modules/@eslint/eslintrc/node_modules/globals": { - "version": "13.24.0", + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-14.0.0.tgz", + "integrity": "sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==", "dev": true, "license": "MIT", - "dependencies": { - "type-fest": "^0.20.2" - }, "engines": { - "node": ">=8" + "node": ">=18" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" @@ -2986,11 +3106,15 @@ }, "node_modules/@eslint/eslintrc/node_modules/json-schema-traverse": { "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", "dev": true, "license": "MIT" }, "node_modules/@eslint/eslintrc/node_modules/minimatch": { "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "dev": true, "license": "ISC", "dependencies": { @@ -3000,23 +3124,41 @@ "node": "*" } }, - "node_modules/@eslint/eslintrc/node_modules/type-fest": { - "version": "0.20.2", - "dev": true, - "license": "(MIT OR CC0-1.0)", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/@eslint/js": { - "version": "8.57.1", + "version": "9.32.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.32.0.tgz", + "integrity": "sha512-BBpRFZK3eX6uMLKz8WxFOBIFFcGFJ/g8XuwjTHCqHROSIsopI+ddn/d5Cfh36+7+e5edVS8dbSHnBNhrLEX0zg==", "dev": true, "license": "MIT", "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://eslint.org/donate" + } + }, + "node_modules/@eslint/object-schema": { + "version": "2.1.6", + "resolved": "https://registry.npmjs.org/@eslint/object-schema/-/object-schema-2.1.6.tgz", + "integrity": "sha512-RBMg5FRL0I0gs51M/guSAj5/e14VQ4tpZnQNWwuDT66P14I43ItmPfIZRhO9fUVIPOAQXU47atlywZ/czoqFPA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/plugin-kit": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.3.5.tgz", + "integrity": "sha512-Z5kJ+wU3oA7MMIqVR9tyZRtjYPr4OC004Q4Rw7pgOKUOKkJfZ3O24nz3WYfGRpMDNmcOi3TwQOmgm7B7Tpii0w==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@eslint/core": "^0.15.2", + "levn": "^0.4.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" } }, "node_modules/@exodus/schemasafe": { @@ -3037,37 +3179,42 @@ "@hapi/hoek": "^9.0.0" } }, - "node_modules/@humanwhocodes/config-array": { - "version": "0.13.0", + "node_modules/@humanfs/core": { + "version": "0.19.1", + "resolved": "https://registry.npmjs.org/@humanfs/core/-/core-0.19.1.tgz", + "integrity": "sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=18.18.0" + } + }, + "node_modules/@humanfs/node": { + "version": "0.16.6", + "resolved": "https://registry.npmjs.org/@humanfs/node/-/node-0.16.6.tgz", + "integrity": "sha512-YuI2ZHQL78Q5HbhDiBA1X4LmYdXCKCMQIfw0pw7piHJwyREFebJUvrQN4cMssyES6x+vfUbx1CIpaQUKYdQZOw==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@humanwhocodes/object-schema": "^2.0.3", - "debug": "^4.3.1", - "minimatch": "^3.0.5" + "@humanfs/core": "^0.19.1", + "@humanwhocodes/retry": "^0.3.0" }, "engines": { - "node": ">=10.10.0" + "node": ">=18.18.0" } }, - "node_modules/@humanwhocodes/config-array/node_modules/brace-expansion": { - "version": "1.1.11", + "node_modules/@humanfs/node/node_modules/@humanwhocodes/retry": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.3.1.tgz", + "integrity": "sha512-JBxkERygn7Bv/GbN5Rv8Ul6LVknS+5Bp6RgDC/O8gEBU/yeH5Ui5C/OlWrTb6qct7LjjfT6Re2NxB0ln0yYybA==", "dev": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/@humanwhocodes/config-array/node_modules/minimatch": { - "version": "3.1.2", - "dev": true, - "license": "ISC", - "dependencies": { - "brace-expansion": "^1.1.7" - }, + "license": "Apache-2.0", "engines": { - "node": "*" + "node": ">=18.18" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" } }, "node_modules/@humanwhocodes/module-importer": { @@ -3082,10 +3229,19 @@ "url": "https://github.com/sponsors/nzakas" } }, - "node_modules/@humanwhocodes/object-schema": { - "version": "2.0.3", + "node_modules/@humanwhocodes/retry": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.4.3.tgz", + "integrity": "sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ==", "dev": true, - "license": "BSD-3-Clause" + "license": "Apache-2.0", + "engines": { + "node": ">=18.18" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } }, "node_modules/@inquirer/confirm": { "version": "5.0.2", @@ -3249,15 +3405,13 @@ } }, "node_modules/@jridgewell/gen-mapping": { - "version": "0.3.5", + "version": "0.3.12", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.12.tgz", + "integrity": "sha512-OuLGC46TjB5BbN1dH8JULVVZY4WTdkF7tV9Ys6wLL1rubZnCMstOhNHueU5bLCrnRuDhKPDM4g6sw4Bel5Gzqg==", "license": "MIT", "dependencies": { - "@jridgewell/set-array": "^1.2.1", - "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/sourcemap-codec": "^1.5.0", "@jridgewell/trace-mapping": "^0.3.24" - }, - "engines": { - "node": ">=6.0.0" } }, "node_modules/@jridgewell/resolve-uri": { @@ -3267,13 +3421,6 @@ "node": ">=6.0.0" } }, - "node_modules/@jridgewell/set-array": { - "version": "1.2.1", - "license": "MIT", - "engines": { - "node": ">=6.0.0" - } - }, "node_modules/@jridgewell/source-map": { "version": "0.3.6", "license": "MIT", @@ -3287,7 +3434,9 @@ "license": "MIT" }, "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.25", + "version": "0.3.29", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.29.tgz", + "integrity": "sha512-uw6guiW/gcAGPDhLmd77/6lW8QLeiV5RUTsAX46Db6oLhGaVj4lhnPwb184s1bkc8kdVg/+h988dro8GRDpmYQ==", "license": "MIT", "dependencies": { "@jridgewell/resolve-uri": "^3.1.0", @@ -3351,14 +3500,11 @@ } }, "node_modules/@keyv/serialize": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@keyv/serialize/-/serialize-1.0.3.tgz", - "integrity": "sha512-qnEovoOp5Np2JDGonIDL6Ayihw0RhnRh6vxPuHo4RDn1UOzwEo4AeIfpL6UGIrsceWrCMiVPgwRjbHu4vYFc3g==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@keyv/serialize/-/serialize-1.1.0.tgz", + "integrity": "sha512-RlDgexML7Z63Q8BSaqhXdCYNBy/JQnqYIwxofUrNLGCblOMHp+xux2Q8nLMLlPpgHQPoU0Do8Z6btCpRBEqZ8g==", "dev": true, - "license": "MIT", - "dependencies": { - "buffer": "^6.0.3" - } + "license": "MIT" }, "node_modules/@kurkle/color": { "version": "0.3.2", @@ -3399,7 +3545,9 @@ } }, "node_modules/@mswjs/interceptors": { - "version": "0.37.1", + "version": "0.39.2", + "resolved": "https://registry.npmjs.org/@mswjs/interceptors/-/interceptors-0.39.2.tgz", + "integrity": "sha512-RuzCup9Ct91Y7V79xwCb146RaBRHZ7NBbrIUySumd1rpKqHL5OonaqrGIbug5hNwP/fRyxFMA6ISgw4FTtYFYg==", "dev": true, "license": "MIT", "dependencies": { @@ -3416,6 +3564,8 @@ }, "node_modules/@nicolo-ribaudo/eslint-scope-5-internals": { "version": "5.1.1-v1", + "resolved": "https://registry.npmjs.org/@nicolo-ribaudo/eslint-scope-5-internals/-/eslint-scope-5-internals-5.1.1-v1.tgz", + "integrity": "sha512-54/JRvkLIzzDWshCWfuhadfrfZVPiElY8Fcgmg1HroEly/EDSszzhBAsarCux+D/kOslTRquNzuyGSmUSTTHGg==", "dev": true, "license": "MIT", "dependencies": { @@ -3462,11 +3612,15 @@ }, "node_modules/@open-draft/deferred-promise": { "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@open-draft/deferred-promise/-/deferred-promise-2.2.0.tgz", + "integrity": "sha512-CecwLWx3rhxVQF6V4bAgPS5t+So2sTbPgAzafKkVizyi7tlwpcFpdFqq+wqF2OwNBmqFuu6tOyouTuxgpMfzmA==", "dev": true, "license": "MIT" }, "node_modules/@open-draft/logger": { "version": "0.3.0", + "resolved": "https://registry.npmjs.org/@open-draft/logger/-/logger-0.3.0.tgz", + "integrity": "sha512-X2g45fzhxH238HKO4xbSr7+wBS8Fvw6ixhTDuvLd5mqh6bJJCFAPwU9mPDxbcrRtfxv4u5IHCEH77BmxvXmmxQ==", "dev": true, "license": "MIT", "dependencies": { @@ -3476,6 +3630,8 @@ }, "node_modules/@open-draft/until": { "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@open-draft/until/-/until-2.1.0.tgz", + "integrity": "sha512-U69T3ItWHvLwGg5eJ0n3I62nWuE6ilHlmz7zM0npLBRvPRd7e6NYmg54vvRtP5mZG7kZqZCFVdsTWo7BPtBujg==", "dev": true, "license": "MIT" }, @@ -3610,32 +3766,38 @@ } }, "node_modules/@patternfly/patternfly": { - "version": "5.4.1", + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/@patternfly/patternfly/-/patternfly-6.3.1.tgz", + "integrity": "sha512-O/lTo5EHKzer/HNzqMQOQEAMG7izDDkEHpAeJ5+sGaeQ/maB3RK7sQsOPS4DjrnMxt4/cC6LogK2mowlbf1j5Q==", "license": "MIT" }, "node_modules/@patternfly/react-code-editor": { - "version": "5.4.1", + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/@patternfly/react-code-editor/-/react-code-editor-6.3.1.tgz", + "integrity": "sha512-lzrION96CR2G3ASjE++dX/dExH08HVcCLXbHdmiiTL4eHfbqXt4edDc+UX619XrbaccJBE+BxNNGKyO8bgpKRg==", "license": "MIT", "dependencies": { "@monaco-editor/react": "^4.6.0", - "@patternfly/react-core": "^5.4.0", - "@patternfly/react-icons": "^5.4.0", - "@patternfly/react-styles": "^5.4.0", - "react-dropzone": "14.2.3", - "tslib": "^2.6.3" + "@patternfly/react-core": "6.3.1", + "@patternfly/react-icons": "^6.3.1", + "@patternfly/react-styles": "^6.3.1", + "react-dropzone": "14.3.5", + "tslib": "^2.8.1" }, "peerDependencies": { - "react": "^17 || ^18", - "react-dom": "^17 || ^18" + "react": "^17 || ^18 || ^19", + "react-dom": "^17 || ^18 || ^19" } }, "node_modules/@patternfly/react-component-groups": { - "version": "5.5.8", + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/@patternfly/react-component-groups/-/react-component-groups-6.1.0.tgz", + "integrity": "sha512-8RkQv9wQk+D+nUMFtl4uk0ddMvxZ/+jFwnnXe2fw/BulouDVbpKRI24C1S8i1OQHr3++CbocBmmWRV0iw9Kvlw==", "license": "MIT", "dependencies": { - "@patternfly/react-core": "^5.4.1", - "@patternfly/react-icons": "^5.4.0", - "@patternfly/react-table": "^5.4.1", + "@patternfly/react-core": "^6.0.0", + "@patternfly/react-icons": "^6.0.0", + "@patternfly/react-table": "^6.0.0", "clsx": "^2.1.1", "react-jss": "^10.10.0" }, @@ -3645,51 +3807,61 @@ } }, "node_modules/@patternfly/react-core": { - "version": "5.4.12", + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/@patternfly/react-core/-/react-core-6.3.1.tgz", + "integrity": "sha512-1qV20nU4M6PA28qnikH9fPLQlkteaZZToFlATjBNBw7aUI6zIvj7U0akkHz8raWcfHAI+tAzGV7dfKjiv035/g==", "license": "MIT", "dependencies": { - "@patternfly/react-icons": "^5.4.2", - "@patternfly/react-styles": "^5.4.1", - "@patternfly/react-tokens": "^5.4.1", - "focus-trap": "7.6.2", - "react-dropzone": "^14.2.3", - "tslib": "^2.7.0" + "@patternfly/react-icons": "^6.3.1", + "@patternfly/react-styles": "^6.3.1", + "@patternfly/react-tokens": "^6.3.1", + "focus-trap": "7.6.4", + "react-dropzone": "^14.3.5", + "tslib": "^2.8.1" }, "peerDependencies": { - "react": "^17 || ^18", - "react-dom": "^17 || ^18" + "react": "^17 || ^18 || ^19", + "react-dom": "^17 || ^18 || ^19" } }, "node_modules/@patternfly/react-icons": { - "version": "5.4.2", + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/@patternfly/react-icons/-/react-icons-6.3.1.tgz", + "integrity": "sha512-uiMounSIww1iZLM4pq+X8c3upzwl9iowXRPjR5CA8entb70lwgAXg3PqvypnuTAcilTq1Y3k5sFTqkhz7rgKcQ==", "license": "MIT", "peerDependencies": { - "react": "^17 || ^18", - "react-dom": "^17 || ^18" + "react": "^17 || ^18 || ^19", + "react-dom": "^17 || ^18 || ^19" } }, "node_modules/@patternfly/react-styles": { - "version": "5.4.1", + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/@patternfly/react-styles/-/react-styles-6.3.1.tgz", + "integrity": "sha512-hyb+PlO8YITjKh2wBvjdeZhX6FyB3hlf4r6yG4rPOHk4SgneXHjNSdGwQ3szAxgGqtbENCYtOqwD/8ai72GrxQ==", "license": "MIT" }, "node_modules/@patternfly/react-table": { - "version": "5.4.14", + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/@patternfly/react-table/-/react-table-6.3.1.tgz", + "integrity": "sha512-ZndBbPcMr/vInP5eELRe9m7MWzRoejRAhWx+25xOdjVAd31/CmMK1nBgZk4QAXaWjH1P+uZaZYsTgr/FMTte2g==", "license": "MIT", "dependencies": { - "@patternfly/react-core": "^5.4.12", - "@patternfly/react-icons": "^5.4.2", - "@patternfly/react-styles": "^5.4.1", - "@patternfly/react-tokens": "^5.4.1", + "@patternfly/react-core": "6.3.1", + "@patternfly/react-icons": "6.3.1", + "@patternfly/react-styles": "^6.3.1", + "@patternfly/react-tokens": "^6.3.1", "lodash": "^4.17.21", - "tslib": "^2.7.0" + "tslib": "^2.8.1" }, "peerDependencies": { - "react": "^17 || ^18", - "react-dom": "^17 || ^18" + "react": "^17 || ^18 || ^19", + "react-dom": "^17 || ^18 || ^19" } }, "node_modules/@patternfly/react-tokens": { - "version": "5.4.1", + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/@patternfly/react-tokens/-/react-tokens-6.3.1.tgz", + "integrity": "sha512-wt/xKU1tGCDXUueFb+8/Cwxlm4vUD/Xl26O8MxbSLm6NZAHOUPwytJ7gugloGSPvc/zcsXxEgKANL8UZNO6DTw==", "license": "MIT" }, "node_modules/@pkgjs/parseargs": { @@ -3701,6 +3873,19 @@ "node": ">=14" } }, + "node_modules/@pkgr/core": { + "version": "0.2.7", + "resolved": "https://registry.npmjs.org/@pkgr/core/-/core-0.2.7.tgz", + "integrity": "sha512-YLT9Zo3oNPJoBjBc4q8G2mjU4tqIbf5CEOORbUUr48dCD9q3umJ3IPlVqOqDakPfd2HuwccBaqlGhN4Gmr5OWg==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^12.20.0 || ^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/pkgr" + } + }, "node_modules/@playwright/test": { "version": "1.51.1", "resolved": "https://registry.npmjs.org/@playwright/test/-/test-1.51.1.tgz", @@ -3770,42 +3955,45 @@ "license": "MIT" }, "node_modules/@redhat-cloud-services/eslint-config-redhat-cloud-services": { - "version": "2.0.12", - "resolved": "https://registry.npmjs.org/@redhat-cloud-services/eslint-config-redhat-cloud-services/-/eslint-config-redhat-cloud-services-2.0.12.tgz", - "integrity": "sha512-PxQD7QOVy2KjoBUYbDmeM+PdIm4/5GYuWwYYJhON0/jnL+efz6WwLXIWmTBZc+XuYI+h7untaMKKQXc6xDwHgw==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@redhat-cloud-services/eslint-config-redhat-cloud-services/-/eslint-config-redhat-cloud-services-3.0.0.tgz", + "integrity": "sha512-ZBomcuwM82hJtRvxcYHj2asLsu4rzNSoidetemEYBNbYxLiprgXj20kiE5vjOdcIaeC+2T1ribdInzQw3oC8JQ==", "dev": true, "license": "Apache", "dependencies": { - "@babel/eslint-parser": "^7.19.1", - "eslint-config-prettier": "^8.5.0", - "eslint-plugin-prettier": "^3.4.1", - "eslint-plugin-react": "^7.31.8", - "eslint-plugin-rulesdir": "^0.2.1", - "prettier": "^2.7.1" + "@babel/eslint-parser": "^7.27.0", + "@babel/preset-react": "^7.26.3", + "eslint-config-prettier": "^10.1.2", + "eslint-plugin-prettier": "^5.2.6", + "eslint-plugin-react": "^7.37.5", + "eslint-plugin-rulesdir": "^0.2.2", + "globals": "^16.0.0", + "prettier": "^3.5.3" }, "peerDependencies": { "@babel/core": "^7.14.0", - "eslint": "^8.9.0" + "eslint": "^9.24.0" } }, "node_modules/@redhat-cloud-services/frontend-components": { - "version": "5.2.6", - "resolved": "https://registry.npmjs.org/@redhat-cloud-services/frontend-components/-/frontend-components-5.2.6.tgz", - "integrity": "sha512-YhA6tQ5KlkVoRfkIzRXQa/cvhQ6sbe6jsYt3QrX8SwJ1ojq0ekqHZDbcaPxS3U34MXnsW6877bjyAya5se+2ug==", + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/@redhat-cloud-services/frontend-components/-/frontend-components-7.0.3.tgz", + "integrity": "sha512-kEEZVN49Dwk2j7MNmLKxGrfJYGxFh2whZJi6TmpqSmgDkNNVZaoCpdWZJiMZQ0Jun6QQ1rEUmarfLV1VrZfujA==", "license": "Apache-2.0", "dependencies": { - "@patternfly/react-component-groups": "^5.5.5", - "@redhat-cloud-services/frontend-components-utilities": "^5.0.4", - "@redhat-cloud-services/types": "^1.0.19", + "@patternfly/react-component-groups": "^6.0.0", + "@redhat-cloud-services/frontend-components-utilities": "^7.0.0", + "@redhat-cloud-services/types": "^3.0.0", "@scalprum/core": "^0.8.1", "@scalprum/react-core": "^0.9.1", "classnames": "^2.2.5", "sanitize-html": "^2.13.1" }, "peerDependencies": { - "@patternfly/react-core": "^5.4.11", - "@patternfly/react-icons": "^5.4.2", - "@patternfly/react-table": "^5.4.12", + "@patternfly/react-core": "^6.0.0", + "@patternfly/react-icons": "^6.0.0", + "@patternfly/react-table": "^6.0.0", + "@patternfly/react-tokens": "^6.0.0", "lodash": "^4.17.15", "prop-types": "^15.6.2", "react": "^18.2.0", @@ -3964,37 +4152,29 @@ } }, "node_modules/@redhat-cloud-services/frontend-components-notifications": { - "version": "4.1.20", - "resolved": "https://registry.npmjs.org/@redhat-cloud-services/frontend-components-notifications/-/frontend-components-notifications-4.1.20.tgz", - "integrity": "sha512-9GGDb7pwhTyzgLpM6xfBetrKDRwLTEu8/Ifn8/8xu/wfm4Ch5TXiib04QV5+W5EcRuWxMZevVhytTNFUqXSBvw==", + "version": "6.1.5", + "resolved": "https://registry.npmjs.org/@redhat-cloud-services/frontend-components-notifications/-/frontend-components-notifications-6.1.5.tgz", + "integrity": "sha512-CanlpBYpIKzLQZCD0Q3J5KezN0bCEeNW/rFclBPJ2CXuiyIwB0o0KRg6yfoF33V95LrDg1J3Q2DNHl8GhS+/mg==", + "license": "Apache-2.0", "dependencies": { - "@redhat-cloud-services/frontend-components": "^5.0.5", - "@redhat-cloud-services/frontend-components-utilities": "^5.0.4", - "redux-promise-middleware": "6.1.3" + "@redhat-cloud-services/frontend-components": "^7.0.0", + "@redhat-cloud-services/frontend-components-utilities": "^7.0.0" }, "peerDependencies": { - "@patternfly/react-core": "^5.0.0", - "@patternfly/react-icons": "^5.0.0", - "prop-types": "^15.6.2", + "@patternfly/react-core": "^6.0.0", + "@patternfly/react-icons": "^6.0.0", "react": "^18.2.0", - "react-dom": "^18.2.0", - "react-redux": "^7.2.9 || ^8.0.0 || ^9.0.0", - "redux": ">=4.2.0" - } - }, - "node_modules/@redhat-cloud-services/frontend-components-notifications/node_modules/redux-promise-middleware": { - "version": "6.1.3", - "license": "MIT", - "peerDependencies": { - "redux": "^2.0.0 || ^3.0.0 || ^4.0.0" + "react-dom": "^18.2.0" } }, "node_modules/@redhat-cloud-services/frontend-components-utilities": { - "version": "5.0.11", + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/@redhat-cloud-services/frontend-components-utilities/-/frontend-components-utilities-7.0.3.tgz", + "integrity": "sha512-Z7ET3BGcniHRC1x2zeHVqsA9JX+selMmgs80SyurXzGNYl+684lKqnBfB1KVt58fbSNjRYPU19TzbFlZ3vYaTQ==", "license": "Apache-2.0", "dependencies": { - "@redhat-cloud-services/rbac-client": "^1.0.111 || 2.x", - "@redhat-cloud-services/types": "^1.0.19", + "@redhat-cloud-services/rbac-client": "^4.0.2", + "@redhat-cloud-services/types": "^3.0.0", "@sentry/browser": "^7.119.1", "awesome-debounce-promise": "^2.1.0", "axios": "^0.28.1 || ^1.7.0", @@ -4004,8 +4184,8 @@ "react-content-loader": "^6.2.0" }, "peerDependencies": { - "@patternfly/react-core": "^5.0.0", - "@patternfly/react-table": "^5.0.0", + "@patternfly/react-core": "^6.0.0", + "@patternfly/react-table": "^6.0.0", "react": "^18.2.0", "react-dom": "^18.2.0", "react-redux": "^7.0.0 || ^8.0.0 || ^9.0.0", @@ -4014,6 +4194,8 @@ }, "node_modules/@redhat-cloud-services/frontend-components-utilities/node_modules/p-map": { "version": "7.0.3", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-7.0.3.tgz", + "integrity": "sha512-VkndIv2fIB99swvQoA65bm+fsmt6UNdGeIB0oxBs+WhAhdh08QA04JXpI7rbB9r08/nkbysKoya9rtDERYOYMA==", "license": "MIT", "engines": { "node": ">=18" @@ -4023,7 +4205,9 @@ } }, "node_modules/@redhat-cloud-services/javascript-clients-shared": { - "version": "1.2.5", + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/@redhat-cloud-services/javascript-clients-shared/-/javascript-clients-shared-1.2.7.tgz", + "integrity": "sha512-DfH1Sdjwc9YYVM2wLznnNfC3+DFpdH8Ak59LW93KQWaPAn8ZHDoEXi/TZ8MisEgWTQv7jpsDVtlVQwOWkzKhUA==", "license": "Apache-2.0", "dependencies": { "axios": "^1.7.2", @@ -4031,18 +4215,20 @@ } }, "node_modules/@redhat-cloud-services/rbac-client": { - "version": "2.2.10", + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@redhat-cloud-services/rbac-client/-/rbac-client-4.0.2.tgz", + "integrity": "sha512-A2FTBDW0biyg4EiZO4WcSpy/D9GGIBnOdbf2cldgiJx4sifvYaZYb2ovvhmrjhax8yxlM4ECsxsOo3aWSVbd5Q==", "license": "Apache-2.0", "dependencies": { - "@redhat-cloud-services/javascript-clients-shared": "^1.2.4", + "@redhat-cloud-services/javascript-clients-shared": "^1.2.6", "axios": "^1.7.2", "tslib": "^2.6.2" } }, "node_modules/@redhat-cloud-services/tsc-transform-imports": { - "version": "1.0.24", - "resolved": "https://registry.npmjs.org/@redhat-cloud-services/tsc-transform-imports/-/tsc-transform-imports-1.0.24.tgz", - "integrity": "sha512-N0WkqPbFDgaEBPTeU4tYCTn8xSqccB788mSBh1sEBXJTo4I3IvswXiwrFxe0ZXBUkSrWyvDNVOe5FiZN0r47Gw==", + "version": "1.0.25", + "resolved": "https://registry.npmjs.org/@redhat-cloud-services/tsc-transform-imports/-/tsc-transform-imports-1.0.25.tgz", + "integrity": "sha512-J2O7+k/UeWU4h117WLKvJtmnY9TZnWbS+TdwhwRqfXzFU+BTA3/qEkFO9Xp3HELOIiCIVVHbM8vilxMqIUo1Mw==", "dev": true, "dependencies": { "glob": "10.3.3" @@ -4073,7 +4259,9 @@ } }, "node_modules/@redhat-cloud-services/types": { - "version": "1.0.21", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@redhat-cloud-services/types/-/types-3.0.1.tgz", + "integrity": "sha512-GXw72DDOtKCkl2NlqkjGYVWjfm81LSA75jzbdMqKuefkxMvV4SsA0uNcauGiqZKUhq20RlNz3xBlKF3lvsfD1Q==", "license": "Apache-2.0" }, "node_modules/@reduxjs/toolkit": { @@ -4109,6 +4297,13 @@ "node": ">=14.0.0" } }, + "node_modules/@rolldown/pluginutils": { + "version": "1.0.0-beta.27", + "resolved": "https://registry.npmjs.org/@rolldown/pluginutils/-/pluginutils-1.0.0-beta.27.tgz", + "integrity": "sha512-+d0F4MKMCbeVUJwG96uQ4SgAznZNSq93I3V+9NHA4OpvqG8mRCpGdKmK8l/dl02h2CCDHwW2FqilnTyDcAnqjA==", + "dev": true, + "license": "MIT" + }, "node_modules/@rollup/rollup-android-arm-eabi": { "version": "4.38.0", "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.38.0.tgz", @@ -4415,20 +4610,6 @@ "node": ">= 6" } }, - "node_modules/@rtk-query/codegen-openapi/node_modules/prettier": { - "version": "3.3.3", - "dev": true, - "license": "MIT", - "bin": { - "prettier": "bin/prettier.cjs" - }, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/prettier/prettier?sponsor=1" - } - }, "node_modules/@rtk-query/codegen-openapi/node_modules/semver": { "version": "7.6.3", "dev": true, @@ -4478,77 +4659,85 @@ "license": "MIT" }, "node_modules/@sentry-internal/feedback": { - "version": "7.120.1", + "version": "7.120.3", + "resolved": "https://registry.npmjs.org/@sentry-internal/feedback/-/feedback-7.120.3.tgz", + "integrity": "sha512-ewJJIQ0mbsOX6jfiVFvqMjokxNtgP3dNwUv+4nenN+iJJPQsM6a0ocro3iscxwVdbkjw5hY3BUV2ICI5Q0UWoA==", "license": "MIT", "dependencies": { - "@sentry/core": "7.120.1", - "@sentry/types": "7.120.1", - "@sentry/utils": "7.120.1" + "@sentry/core": "7.120.3", + "@sentry/types": "7.120.3", + "@sentry/utils": "7.120.3" }, "engines": { "node": ">=12" } }, "node_modules/@sentry-internal/replay-canvas": { - "version": "7.120.1", + "version": "7.120.3", + "resolved": "https://registry.npmjs.org/@sentry-internal/replay-canvas/-/replay-canvas-7.120.3.tgz", + "integrity": "sha512-s5xy+bVL1eDZchM6gmaOiXvTqpAsUfO7122DxVdEDMtwVq3e22bS2aiGa8CUgOiJkulZ+09q73nufM77kOmT/A==", "license": "MIT", "dependencies": { - "@sentry/core": "7.120.1", - "@sentry/replay": "7.120.1", - "@sentry/types": "7.120.1", - "@sentry/utils": "7.120.1" + "@sentry/core": "7.120.3", + "@sentry/replay": "7.120.3", + "@sentry/types": "7.120.3", + "@sentry/utils": "7.120.3" }, "engines": { "node": ">=12" } }, "node_modules/@sentry-internal/tracing": { - "version": "7.120.1", + "version": "7.120.3", + "resolved": "https://registry.npmjs.org/@sentry-internal/tracing/-/tracing-7.120.3.tgz", + "integrity": "sha512-Ausx+Jw1pAMbIBHStoQ6ZqDZR60PsCByvHdw/jdH9AqPrNE9xlBSf9EwcycvmrzwyKspSLaB52grlje2cRIUMg==", "license": "MIT", "dependencies": { - "@sentry/core": "7.120.1", - "@sentry/types": "7.120.1", - "@sentry/utils": "7.120.1" + "@sentry/core": "7.120.3", + "@sentry/types": "7.120.3", + "@sentry/utils": "7.120.3" }, "engines": { "node": ">=8" } }, "node_modules/@sentry/babel-plugin-component-annotate": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/@sentry/babel-plugin-component-annotate/-/babel-plugin-component-annotate-3.4.0.tgz", - "integrity": "sha512-tSzfc3aE7m0PM0Aj7HBDet5llH9AB9oc+tBQ8AvOqUSnWodLrNCuWeQszJ7mIBovD3figgCU3h0cvI6U5cDtsg==", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/@sentry/babel-plugin-component-annotate/-/babel-plugin-component-annotate-4.1.1.tgz", + "integrity": "sha512-HUpqrCK7zDVojTV6KL6BO9ZZiYrEYQqvYQrscyMsq04z+WCupXaH6YEliiNRvreR8DBJgdsG3lBRpebhUGmvfA==", "license": "MIT", "engines": { "node": ">= 14" } }, "node_modules/@sentry/browser": { - "version": "7.120.1", + "version": "7.120.3", + "resolved": "https://registry.npmjs.org/@sentry/browser/-/browser-7.120.3.tgz", + "integrity": "sha512-i9vGcK9N8zZ/JQo1TCEfHHYZ2miidOvgOABRUc9zQKhYdcYQB2/LU1kqlj77Pxdxf4wOa9137d6rPrSn9iiBxg==", "license": "MIT", "dependencies": { - "@sentry-internal/feedback": "7.120.1", - "@sentry-internal/replay-canvas": "7.120.1", - "@sentry-internal/tracing": "7.120.1", - "@sentry/core": "7.120.1", - "@sentry/integrations": "7.120.1", - "@sentry/replay": "7.120.1", - "@sentry/types": "7.120.1", - "@sentry/utils": "7.120.1" + "@sentry-internal/feedback": "7.120.3", + "@sentry-internal/replay-canvas": "7.120.3", + "@sentry-internal/tracing": "7.120.3", + "@sentry/core": "7.120.3", + "@sentry/integrations": "7.120.3", + "@sentry/replay": "7.120.3", + "@sentry/types": "7.120.3", + "@sentry/utils": "7.120.3" }, "engines": { "node": ">=8" } }, "node_modules/@sentry/bundler-plugin-core": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/@sentry/bundler-plugin-core/-/bundler-plugin-core-3.4.0.tgz", - "integrity": "sha512-X1Q41AsQ6xcT6hB4wYmBDBukndKM/inT4IsR7pdKLi7ICpX2Qq6lisamBAEPCgEvnLpazSFguaiC0uiwMKAdqw==", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/@sentry/bundler-plugin-core/-/bundler-plugin-core-4.1.1.tgz", + "integrity": "sha512-Hx9RgXaD1HEYmL5aYoWwCKkVvPp4iklwfD9mvmdpQtcwLg6b6oLnPVDQaOry1ak6Pxt8smlrWcKy4IiKASlvig==", "license": "MIT", "dependencies": { "@babel/core": "^7.18.5", - "@sentry/babel-plugin-component-annotate": "3.4.0", - "@sentry/cli": "2.42.2", + "@sentry/babel-plugin-component-annotate": "4.1.1", + "@sentry/cli": "^2.51.0", "dotenv": "^16.3.1", "find-up": "^5.0.0", "glob": "^9.3.2", @@ -4602,9 +4791,9 @@ } }, "node_modules/@sentry/cli": { - "version": "2.42.2", - "resolved": "https://registry.npmjs.org/@sentry/cli/-/cli-2.42.2.tgz", - "integrity": "sha512-spb7S/RUumCGyiSTg8DlrCX4bivCNmU/A1hcfkwuciTFGu8l5CDc2I6jJWWZw8/0enDGxuj5XujgXvU5tr4bxg==", + "version": "2.52.0", + "resolved": "https://registry.npmjs.org/@sentry/cli/-/cli-2.52.0.tgz", + "integrity": "sha512-PXyo7Yv7+rVMSBGZfI/eFEzzhiKedTs25sDCjz4a3goAZ/F5R5tn3MKq30pnze5wNnoQmLujAa0uUjfNcWP+uQ==", "hasInstallScript": true, "license": "BSD-3-Clause", "dependencies": { @@ -4621,19 +4810,20 @@ "node": ">= 10" }, "optionalDependencies": { - "@sentry/cli-darwin": "2.42.2", - "@sentry/cli-linux-arm": "2.42.2", - "@sentry/cli-linux-arm64": "2.42.2", - "@sentry/cli-linux-i686": "2.42.2", - "@sentry/cli-linux-x64": "2.42.2", - "@sentry/cli-win32-i686": "2.42.2", - "@sentry/cli-win32-x64": "2.42.2" + "@sentry/cli-darwin": "2.52.0", + "@sentry/cli-linux-arm": "2.52.0", + "@sentry/cli-linux-arm64": "2.52.0", + "@sentry/cli-linux-i686": "2.52.0", + "@sentry/cli-linux-x64": "2.52.0", + "@sentry/cli-win32-arm64": "2.52.0", + "@sentry/cli-win32-i686": "2.52.0", + "@sentry/cli-win32-x64": "2.52.0" } }, "node_modules/@sentry/cli-darwin": { - "version": "2.42.2", - "resolved": "https://registry.npmjs.org/@sentry/cli-darwin/-/cli-darwin-2.42.2.tgz", - "integrity": "sha512-GtJSuxER7Vrp1IpxdUyRZzcckzMnb4N5KTW7sbTwUiwqARRo+wxS+gczYrS8tdgtmXs5XYhzhs+t4d52ITHMIg==", + "version": "2.52.0", + "resolved": "https://registry.npmjs.org/@sentry/cli-darwin/-/cli-darwin-2.52.0.tgz", + "integrity": "sha512-ieQs/p4yTHT27nBzy0wtAb8BSISfWlpXdgsACcwXimYa36NJRwyCqgOXUaH/BYiTdwWSHpuANbUHGJW6zljzxw==", "license": "BSD-3-Clause", "optional": true, "os": [ @@ -4644,9 +4834,9 @@ } }, "node_modules/@sentry/cli-linux-arm": { - "version": "2.42.2", - "resolved": "https://registry.npmjs.org/@sentry/cli-linux-arm/-/cli-linux-arm-2.42.2.tgz", - "integrity": "sha512-7udCw+YL9lwq+9eL3WLspvnuG+k5Icg92YE7zsteTzWLwgPVzaxeZD2f8hwhsu+wmL+jNqbpCRmktPteh3i2mg==", + "version": "2.52.0", + "resolved": "https://registry.npmjs.org/@sentry/cli-linux-arm/-/cli-linux-arm-2.52.0.tgz", + "integrity": "sha512-tWMLU+hj+iip5Akx+S76biAOE1eMMWTDq8c0MqMv/ahHgb6/HiVngMcUsp59Oz3EczJGbTkcnS3vRTDodEcMDw==", "cpu": [ "arm" ], @@ -4654,16 +4844,17 @@ "optional": true, "os": [ "linux", - "freebsd" + "freebsd", + "android" ], "engines": { "node": ">=10" } }, "node_modules/@sentry/cli-linux-arm64": { - "version": "2.42.2", - "resolved": "https://registry.npmjs.org/@sentry/cli-linux-arm64/-/cli-linux-arm64-2.42.2.tgz", - "integrity": "sha512-BOxzI7sgEU5Dhq3o4SblFXdE9zScpz6EXc5Zwr1UDZvzgXZGosUtKVc7d1LmkrHP8Q2o18HcDWtF3WvJRb5Zpw==", + "version": "2.52.0", + "resolved": "https://registry.npmjs.org/@sentry/cli-linux-arm64/-/cli-linux-arm64-2.52.0.tgz", + "integrity": "sha512-RxT5uzxjCkcvplmx0bavJIEYerRex2Rg/2RAVBdVvWLKFOcmeerTn/VVxPZVuDIVMVyjlZsteWPYwfUm+Ia3wQ==", "cpu": [ "arm64" ], @@ -4671,16 +4862,17 @@ "optional": true, "os": [ "linux", - "freebsd" + "freebsd", + "android" ], "engines": { "node": ">=10" } }, "node_modules/@sentry/cli-linux-i686": { - "version": "2.42.2", - "resolved": "https://registry.npmjs.org/@sentry/cli-linux-i686/-/cli-linux-i686-2.42.2.tgz", - "integrity": "sha512-Sw/dQp5ZPvKnq3/y7wIJyxTUJYPGoTX/YeMbDs8BzDlu9to2LWV3K3r7hE7W1Lpbaw4tSquUHiQjP5QHCOS7aQ==", + "version": "2.52.0", + "resolved": "https://registry.npmjs.org/@sentry/cli-linux-i686/-/cli-linux-i686-2.52.0.tgz", + "integrity": "sha512-sKcJmIg7QWFtlNU5Bs5OZprwdIzzyYMRpFkWioPZ4TE82yvP1+2SAX31VPUlTx+7NLU6YVEWNwvSxh8LWb7iOw==", "cpu": [ "x86", "ia32" @@ -4689,16 +4881,17 @@ "optional": true, "os": [ "linux", - "freebsd" + "freebsd", + "android" ], "engines": { "node": ">=10" } }, "node_modules/@sentry/cli-linux-x64": { - "version": "2.42.2", - "resolved": "https://registry.npmjs.org/@sentry/cli-linux-x64/-/cli-linux-x64-2.42.2.tgz", - "integrity": "sha512-mU4zUspAal6TIwlNLBV5oq6yYqiENnCWSxtSQVzWs0Jyq97wtqGNG9U+QrnwjJZ+ta/hvye9fvL2X25D/RxHQw==", + "version": "2.52.0", + "resolved": "https://registry.npmjs.org/@sentry/cli-linux-x64/-/cli-linux-x64-2.52.0.tgz", + "integrity": "sha512-aPZ7bP02zGkuEqTiOAm4np/ggfgtzrq4ti1Xze96Csi/DV3820SCfLrPlsvcvnqq7x69IL9cI3kXjdEpgrfGxw==", "cpu": [ "x64" ], @@ -4706,16 +4899,33 @@ "optional": true, "os": [ "linux", - "freebsd" + "freebsd", + "android" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@sentry/cli-win32-arm64": { + "version": "2.52.0", + "resolved": "https://registry.npmjs.org/@sentry/cli-win32-arm64/-/cli-win32-arm64-2.52.0.tgz", + "integrity": "sha512-90hrB5XdwJVhRpCmVrEcYoKW8nl5/V9OfVvOGeKUPvUkApLzvsInK74FYBZEVyAn1i/NdUv+Xk9q2zqUGK1aLQ==", + "cpu": [ + "arm64" + ], + "license": "BSD-3-Clause", + "optional": true, + "os": [ + "win32" ], "engines": { "node": ">=10" } }, "node_modules/@sentry/cli-win32-i686": { - "version": "2.42.2", - "resolved": "https://registry.npmjs.org/@sentry/cli-win32-i686/-/cli-win32-i686-2.42.2.tgz", - "integrity": "sha512-iHvFHPGqgJMNqXJoQpqttfsv2GI3cGodeTq4aoVLU/BT3+hXzbV0x1VpvvEhncJkDgDicJpFLM8sEPHb3b8abw==", + "version": "2.52.0", + "resolved": "https://registry.npmjs.org/@sentry/cli-win32-i686/-/cli-win32-i686-2.52.0.tgz", + "integrity": "sha512-HXlSE4CaLylNrELx4KVmOQjV5bURCNuky6sjCWiTH7HyDqHEak2Rk8iLE0JNLj5RETWMvmaZnZZFfmyGlY1opg==", "cpu": [ "x86", "ia32" @@ -4730,9 +4940,9 @@ } }, "node_modules/@sentry/cli-win32-x64": { - "version": "2.42.2", - "resolved": "https://registry.npmjs.org/@sentry/cli-win32-x64/-/cli-win32-x64-2.42.2.tgz", - "integrity": "sha512-vPPGHjYoaGmfrU7xhfFxG7qlTBacroz5NdT+0FmDn6692D8IvpNXl1K+eV3Kag44ipJBBeR8g1HRJyx/F/9ACw==", + "version": "2.52.0", + "resolved": "https://registry.npmjs.org/@sentry/cli-win32-x64/-/cli-win32-x64-2.52.0.tgz", + "integrity": "sha512-hJT0C3FwHk1Mt9oFqcci88wbO1D+yAWUL8J29HEGM5ZAqlhdh7sAtPDIC3P2LceUJOjnXihow47Bkj62juatIQ==", "cpu": [ "x64" ], @@ -4746,23 +4956,27 @@ } }, "node_modules/@sentry/core": { - "version": "7.120.1", + "version": "7.120.3", + "resolved": "https://registry.npmjs.org/@sentry/core/-/core-7.120.3.tgz", + "integrity": "sha512-vyy11fCGpkGK3qI5DSXOjgIboBZTriw0YDx/0KyX5CjIjDDNgp5AGgpgFkfZyiYiaU2Ww3iFuKo4wHmBusz1uA==", "license": "MIT", "dependencies": { - "@sentry/types": "7.120.1", - "@sentry/utils": "7.120.1" + "@sentry/types": "7.120.3", + "@sentry/utils": "7.120.3" }, "engines": { "node": ">=8" } }, "node_modules/@sentry/integrations": { - "version": "7.120.1", + "version": "7.120.3", + "resolved": "https://registry.npmjs.org/@sentry/integrations/-/integrations-7.120.3.tgz", + "integrity": "sha512-6i/lYp0BubHPDTg91/uxHvNui427df9r17SsIEXa2eKDwQ9gW2qRx5IWgvnxs2GV/GfSbwcx4swUB3RfEWrXrQ==", "license": "MIT", "dependencies": { - "@sentry/core": "7.120.1", - "@sentry/types": "7.120.1", - "@sentry/utils": "7.120.1", + "@sentry/core": "7.120.3", + "@sentry/types": "7.120.3", + "@sentry/utils": "7.120.3", "localforage": "^1.8.1" }, "engines": { @@ -4770,42 +4984,48 @@ } }, "node_modules/@sentry/replay": { - "version": "7.120.1", + "version": "7.120.3", + "resolved": "https://registry.npmjs.org/@sentry/replay/-/replay-7.120.3.tgz", + "integrity": "sha512-CjVq1fP6bpDiX8VQxudD5MPWwatfXk8EJ2jQhJTcWu/4bCSOQmHxnnmBM+GVn5acKUBCodWHBN+IUZgnJheZSg==", "license": "MIT", "dependencies": { - "@sentry-internal/tracing": "7.120.1", - "@sentry/core": "7.120.1", - "@sentry/types": "7.120.1", - "@sentry/utils": "7.120.1" + "@sentry-internal/tracing": "7.120.3", + "@sentry/core": "7.120.3", + "@sentry/types": "7.120.3", + "@sentry/utils": "7.120.3" }, "engines": { "node": ">=12" } }, "node_modules/@sentry/types": { - "version": "7.120.1", + "version": "7.120.3", + "resolved": "https://registry.npmjs.org/@sentry/types/-/types-7.120.3.tgz", + "integrity": "sha512-C4z+3kGWNFJ303FC+FxAd4KkHvxpNFYAFN8iMIgBwJdpIl25KZ8Q/VdGn0MLLUEHNLvjob0+wvwlcRBBNLXOow==", "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/@sentry/utils": { - "version": "7.120.1", + "version": "7.120.3", + "resolved": "https://registry.npmjs.org/@sentry/utils/-/utils-7.120.3.tgz", + "integrity": "sha512-UDAOQJtJDxZHQ5Nm1olycBIsz2wdGX8SdzyGVHmD8EOQYAeDZQyIlQYohDe9nazdIOQLZCIc3fU0G9gqVLkaGQ==", "license": "MIT", "dependencies": { - "@sentry/types": "7.120.1" + "@sentry/types": "7.120.3" }, "engines": { "node": ">=8" } }, "node_modules/@sentry/webpack-plugin": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/@sentry/webpack-plugin/-/webpack-plugin-3.4.0.tgz", - "integrity": "sha512-i+nAxxniJV5ovijojjTF5n+Yj08Xk8my+vm8+oo0C0I7xcnI2gOKft6B0sJOq01CNbo85X5m/3/edL0PKoWE9w==", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/@sentry/webpack-plugin/-/webpack-plugin-4.1.1.tgz", + "integrity": "sha512-2gFWcQMW1HdJDo/7rADeFs9crkH02l+mW4O1ORbxSjuegauyp1W8SBe7EfPoXbUmLdA3zwnpIxEXjjQpP5Etzg==", "license": "MIT", "dependencies": { - "@sentry/bundler-plugin-core": "3.4.0", + "@sentry/bundler-plugin-core": "4.1.1", "unplugin": "1.0.1", "uuid": "^9.0.0" }, @@ -4951,7 +5171,9 @@ } }, "node_modules/@testing-library/dom": { - "version": "10.4.0", + "version": "10.4.1", + "resolved": "https://registry.npmjs.org/@testing-library/dom/-/dom-10.4.1.tgz", + "integrity": "sha512-o4PXJQidqJl82ckFaXUeoAW+XysPLauYI43Abki5hABd853iMhitooc6znOnczgbTYmEP6U6/y1ZyKAIsvMKGg==", "dev": true, "license": "MIT", "dependencies": { @@ -4959,9 +5181,9 @@ "@babel/runtime": "^7.12.5", "@types/aria-query": "^5.0.1", "aria-query": "5.3.0", - "chalk": "^4.1.0", "dom-accessibility-api": "^0.5.9", "lz-string": "^1.5.0", + "picocolors": "1.1.1", "pretty-format": "^27.0.2" }, "engines": { @@ -4969,16 +5191,18 @@ } }, "node_modules/@testing-library/jest-dom": { - "version": "6.6.3", + "version": "6.6.4", + "resolved": "https://registry.npmjs.org/@testing-library/jest-dom/-/jest-dom-6.6.4.tgz", + "integrity": "sha512-xDXgLjVunjHqczScfkCJ9iyjdNOVHvvCdqHSSxwM9L0l/wHkTRum67SDc020uAlCoqktJplgO2AAQeLP1wgqDQ==", "dev": true, "license": "MIT", "dependencies": { "@adobe/css-tools": "^4.4.0", "aria-query": "^5.0.0", - "chalk": "^3.0.0", "css.escape": "^1.5.1", "dom-accessibility-api": "^0.6.3", "lodash": "^4.17.21", + "picocolors": "^1.1.1", "redent": "^3.0.0" }, "engines": { @@ -4987,18 +5211,6 @@ "yarn": ">=1" } }, - "node_modules/@testing-library/jest-dom/node_modules/chalk": { - "version": "3.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/@testing-library/jest-dom/node_modules/dom-accessibility-api": { "version": "0.6.3", "dev": true, @@ -5205,6 +5417,16 @@ "@types/node": "*" } }, + "node_modules/@types/chai": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/@types/chai/-/chai-5.2.2.tgz", + "integrity": "sha512-8kB30R7Hwqf40JPiKhVzodJs2Qc1ZJ5zuT3uzw5Hq/dhNCl3G3l83jfpdI1e20BP348+fV7VIL/+FxaXkqBmWg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/deep-eql": "*" + } + }, "node_modules/@types/connect": { "version": "3.4.38", "dev": true, @@ -5229,6 +5451,15 @@ }, "node_modules/@types/debounce-promise": { "version": "3.1.9", + "resolved": "https://registry.npmjs.org/@types/debounce-promise/-/debounce-promise-3.1.9.tgz", + "integrity": "sha512-awNxydYSU+E2vL7EiOAMtiSOfL5gUM5X4YSE2A92qpxDJQ/rXz6oMPYBFDcDywlUmvIDI6zsqgq17cGm5CITQw==", + "license": "MIT" + }, + "node_modules/@types/deep-eql": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@types/deep-eql/-/deep-eql-4.0.2.tgz", + "integrity": "sha512-c9h9dVVMigMPc4bwTvC5dxqtqJZwQPePsWjPlpSOnojbor6pGqdk541lfA7AqFQr5pB1BRdq0juY9db81BwyFw==", + "dev": true, "license": "MIT" }, "node_modules/@types/eslint": { @@ -5346,12 +5577,12 @@ "license": "MIT" }, "node_modules/@types/node": { - "version": "22.15.1", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.15.1.tgz", - "integrity": "sha512-gSZyd0Qmv7qvbd2fJ9HGdYmv1yhNdelIA4YOtN6vkcmSwFhthxSEsBgU/JYZcXjWT6DFzoATcHrc52Ckh8SeRA==", + "version": "24.3.0", + "resolved": "https://registry.npmjs.org/@types/node/-/node-24.3.0.tgz", + "integrity": "sha512-aPTXCrfwnDLj4VvXrm+UUCQjNEvJgNA8s5F1cvwQU+3KNltTOkBm1j30uNLyqqPNe7gE3KFzImYoZEfLhp4Yow==", "license": "MIT", "dependencies": { - "undici-types": "~6.21.0" + "undici-types": "~7.10.0" } }, "node_modules/@types/node-forge": { @@ -5481,17 +5712,17 @@ } }, "node_modules/@typescript-eslint/eslint-plugin": { - "version": "8.32.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.32.1.tgz", - "integrity": "sha512-6u6Plg9nP/J1GRpe/vcjjabo6Uc5YQPAMxsgQyGC/I0RuukiG1wIe3+Vtg3IrSCVJDmqK3j8adrtzXSENRtFgg==", + "version": "8.40.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.40.0.tgz", + "integrity": "sha512-w/EboPlBwnmOBtRbiOvzjD+wdiZdgFeo17lkltrtn7X37vagKKWJABvyfsJXTlHe6XBzugmYgd4A4nW+k8Mixw==", "dev": true, "license": "MIT", "dependencies": { "@eslint-community/regexpp": "^4.10.0", - "@typescript-eslint/scope-manager": "8.32.1", - "@typescript-eslint/type-utils": "8.32.1", - "@typescript-eslint/utils": "8.32.1", - "@typescript-eslint/visitor-keys": "8.32.1", + "@typescript-eslint/scope-manager": "8.40.0", + "@typescript-eslint/type-utils": "8.40.0", + "@typescript-eslint/utils": "8.40.0", + "@typescript-eslint/visitor-keys": "8.40.0", "graphemer": "^1.4.0", "ignore": "^7.0.0", "natural-compare": "^1.4.0", @@ -5505,9 +5736,9 @@ "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "@typescript-eslint/parser": "^8.0.0 || ^8.0.0-alpha.0", + "@typescript-eslint/parser": "^8.40.0", "eslint": "^8.57.0 || ^9.0.0", - "typescript": ">=4.8.4 <5.9.0" + "typescript": ">=4.8.4 <6.0.0" } }, "node_modules/@typescript-eslint/eslint-plugin/node_modules/ignore": { @@ -5534,16 +5765,16 @@ } }, "node_modules/@typescript-eslint/parser": { - "version": "8.32.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.32.1.tgz", - "integrity": "sha512-LKMrmwCPoLhM45Z00O1ulb6jwyVr2kr3XJp+G+tSEZcbauNnScewcQwtJqXDhXeYPDEjZ8C1SjXm015CirEmGg==", + "version": "8.40.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.40.0.tgz", + "integrity": "sha512-jCNyAuXx8dr5KJMkecGmZ8KI61KBUhkCob+SD+C+I5+Y1FWI2Y3QmY4/cxMCC5WAsZqoEtEETVhUiUMIGCf6Bw==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/scope-manager": "8.32.1", - "@typescript-eslint/types": "8.32.1", - "@typescript-eslint/typescript-estree": "8.32.1", - "@typescript-eslint/visitor-keys": "8.32.1", + "@typescript-eslint/scope-manager": "8.40.0", + "@typescript-eslint/types": "8.40.0", + "@typescript-eslint/typescript-estree": "8.40.0", + "@typescript-eslint/visitor-keys": "8.40.0", "debug": "^4.3.4" }, "engines": { @@ -5555,18 +5786,40 @@ }, "peerDependencies": { "eslint": "^8.57.0 || ^9.0.0", - "typescript": ">=4.8.4 <5.9.0" + "typescript": ">=4.8.4 <6.0.0" } }, - "node_modules/@typescript-eslint/scope-manager": { - "version": "8.32.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.32.1.tgz", - "integrity": "sha512-7IsIaIDeZn7kffk7qXC3o6Z4UblZJKV3UBpkvRNpr5NSyLji7tvTcvmnMNYuYLyh26mN8W723xpo3i4MlD33vA==", + "node_modules/@typescript-eslint/project-service": { + "version": "8.40.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/project-service/-/project-service-8.40.0.tgz", + "integrity": "sha512-/A89vz7Wf5DEXsGVvcGdYKbVM9F7DyFXj52lNYUDS1L9yJfqjW/fIp5PgMuEJL/KeqVTe2QSbXAGUZljDUpArw==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.32.1", - "@typescript-eslint/visitor-keys": "8.32.1" + "@typescript-eslint/tsconfig-utils": "^8.40.0", + "@typescript-eslint/types": "^8.40.0", + "debug": "^4.3.4" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "typescript": ">=4.8.4 <6.0.0" + } + }, + "node_modules/@typescript-eslint/scope-manager": { + "version": "8.40.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.40.0.tgz", + "integrity": "sha512-y9ObStCcdCiZKzwqsE8CcpyuVMwRouJbbSrNuThDpv16dFAj429IkM6LNb1dZ2m7hK5fHyzNcErZf7CEeKXR4w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "8.40.0", + "@typescript-eslint/visitor-keys": "8.40.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -5576,15 +5829,33 @@ "url": "https://opencollective.com/typescript-eslint" } }, + "node_modules/@typescript-eslint/tsconfig-utils": { + "version": "8.40.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.40.0.tgz", + "integrity": "sha512-jtMytmUaG9d/9kqSl/W3E3xaWESo4hFDxAIHGVW/WKKtQhesnRIJSAJO6XckluuJ6KDB5woD1EiqknriCtAmcw==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "typescript": ">=4.8.4 <6.0.0" + } + }, "node_modules/@typescript-eslint/type-utils": { - "version": "8.32.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.32.1.tgz", - "integrity": "sha512-mv9YpQGA8iIsl5KyUPi+FGLm7+bA4fgXaeRcFKRDRwDMu4iwrSHeDPipwueNXhdIIZltwCJv+NkxftECbIZWfA==", + "version": "8.40.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.40.0.tgz", + "integrity": "sha512-eE60cK4KzAc6ZrzlJnflXdrMqOBaugeukWICO2rB0KNvwdIMaEaYiywwHMzA1qFpTxrLhN9Lp4E/00EgWcD3Ow==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/typescript-estree": "8.32.1", - "@typescript-eslint/utils": "8.32.1", + "@typescript-eslint/types": "8.40.0", + "@typescript-eslint/typescript-estree": "8.40.0", + "@typescript-eslint/utils": "8.40.0", "debug": "^4.3.4", "ts-api-utils": "^2.1.0" }, @@ -5597,7 +5868,7 @@ }, "peerDependencies": { "eslint": "^8.57.0 || ^9.0.0", - "typescript": ">=4.8.4 <5.9.0" + "typescript": ">=4.8.4 <6.0.0" } }, "node_modules/@typescript-eslint/type-utils/node_modules/ts-api-utils": { @@ -5614,9 +5885,9 @@ } }, "node_modules/@typescript-eslint/types": { - "version": "8.32.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.32.1.tgz", - "integrity": "sha512-YmybwXUJcgGqgAp6bEsgpPXEg6dcCyPyCSr0CAAueacR/CCBi25G3V8gGQ2kRzQRBNol7VQknxMs9HvVa9Rvfg==", + "version": "8.40.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.40.0.tgz", + "integrity": "sha512-ETdbFlgbAmXHyFPwqUIYrfc12ArvpBhEVgGAxVYSwli26dn8Ko+lIo4Su9vI9ykTZdJn+vJprs/0eZU0YMAEQg==", "dev": true, "license": "MIT", "engines": { @@ -5628,14 +5899,16 @@ } }, "node_modules/@typescript-eslint/typescript-estree": { - "version": "8.32.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.32.1.tgz", - "integrity": "sha512-Y3AP9EIfYwBb4kWGb+simvPaqQoT5oJuzzj9m0i6FCY6SPvlomY2Ei4UEMm7+FXtlNJbor80ximyslzaQF6xhg==", + "version": "8.40.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.40.0.tgz", + "integrity": "sha512-k1z9+GJReVVOkc1WfVKs1vBrR5MIKKbdAjDTPvIK3L8De6KbFfPFt6BKpdkdk7rZS2GtC/m6yI5MYX+UsuvVYQ==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.32.1", - "@typescript-eslint/visitor-keys": "8.32.1", + "@typescript-eslint/project-service": "8.40.0", + "@typescript-eslint/tsconfig-utils": "8.40.0", + "@typescript-eslint/types": "8.40.0", + "@typescript-eslint/visitor-keys": "8.40.0", "debug": "^4.3.4", "fast-glob": "^3.3.2", "is-glob": "^4.0.3", @@ -5651,7 +5924,7 @@ "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "typescript": ">=4.8.4 <5.9.0" + "typescript": ">=4.8.4 <6.0.0" } }, "node_modules/@typescript-eslint/typescript-estree/node_modules/semver": { @@ -5681,16 +5954,16 @@ } }, "node_modules/@typescript-eslint/utils": { - "version": "8.32.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.32.1.tgz", - "integrity": "sha512-DsSFNIgLSrc89gpq1LJB7Hm1YpuhK086DRDJSNrewcGvYloWW1vZLHBTIvarKZDcAORIy/uWNx8Gad+4oMpkSA==", + "version": "8.40.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.40.0.tgz", + "integrity": "sha512-Cgzi2MXSZyAUOY+BFwGs17s7ad/7L+gKt6Y8rAVVWS+7o6wrjeFN4nVfTpbE25MNcxyJ+iYUXflbs2xR9h4UBg==", "dev": true, "license": "MIT", "dependencies": { "@eslint-community/eslint-utils": "^4.7.0", - "@typescript-eslint/scope-manager": "8.32.1", - "@typescript-eslint/types": "8.32.1", - "@typescript-eslint/typescript-estree": "8.32.1" + "@typescript-eslint/scope-manager": "8.40.0", + "@typescript-eslint/types": "8.40.0", + "@typescript-eslint/typescript-estree": "8.40.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -5701,18 +5974,18 @@ }, "peerDependencies": { "eslint": "^8.57.0 || ^9.0.0", - "typescript": ">=4.8.4 <5.9.0" + "typescript": ">=4.8.4 <6.0.0" } }, "node_modules/@typescript-eslint/visitor-keys": { - "version": "8.32.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.32.1.tgz", - "integrity": "sha512-ar0tjQfObzhSaW3C3QNmTc5ofj0hDoNQ5XWrCy6zDyabdr0TWhCkClp+rywGNj/odAFBVzzJrK4tEq5M4Hmu4w==", + "version": "8.40.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.40.0.tgz", + "integrity": "sha512-8CZ47QwalyRjsypfwnbI3hKy5gJDPmrkLjkgMxhi0+DZZ2QNx2naS6/hWoVYUHU7LU2zleF68V9miaVZvhFfTA==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.32.1", - "eslint-visitor-keys": "^4.2.0" + "@typescript-eslint/types": "8.40.0", + "eslint-visitor-keys": "^4.2.1" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -5723,9 +5996,9 @@ } }, "node_modules/@typescript-eslint/visitor-keys/node_modules/eslint-visitor-keys": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.0.tgz", - "integrity": "sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==", + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.1.tgz", + "integrity": "sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==", "dev": true, "license": "Apache-2.0", "engines": { @@ -5735,15 +6008,10 @@ "url": "https://opencollective.com/eslint" } }, - "node_modules/@ungap/structured-clone": { - "version": "1.2.0", - "dev": true, - "license": "ISC" - }, "node_modules/@unleash/proxy-client-react": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@unleash/proxy-client-react/-/proxy-client-react-5.0.0.tgz", - "integrity": "sha512-f00yLXSdA2ifB1RvqD1T4Il3Yk0CjVibKYS4cdOeLb6LhyH4kIeyJwtQO1slUrKRUy8VBt8Hmm2Rh1JEGlkfSQ==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/@unleash/proxy-client-react/-/proxy-client-react-5.0.1.tgz", + "integrity": "sha512-F/IDo853ghZkGreLWg4fSVSM4NiLg5aZb1Kvr4vG29u5/PB0JLKNgNVdadt+qrlkI1GMzmP7IuFXSnv9A0McRw==", "license": "Apache-2.0", "engines": { "node": ">=16.0.0" @@ -5753,15 +6021,16 @@ } }, "node_modules/@vitejs/plugin-react": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/@vitejs/plugin-react/-/plugin-react-4.4.1.tgz", - "integrity": "sha512-IpEm5ZmeXAP/osiBXVVP5KjFMzbWOonMs0NaQQl+xYnUAcq4oHUBsF2+p4MgKWG4YMmFYJU8A6sxRPuowllm6w==", + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/@vitejs/plugin-react/-/plugin-react-4.7.0.tgz", + "integrity": "sha512-gUu9hwfWvvEDBBmgtAowQCojwZmJ5mcLn3aufeCsitijs3+f2NsrPtlAWIR6OPiqljl96GVCUbLe0HyqIpVaoA==", "dev": true, "license": "MIT", "dependencies": { - "@babel/core": "^7.26.10", - "@babel/plugin-transform-react-jsx-self": "^7.25.9", - "@babel/plugin-transform-react-jsx-source": "^7.25.9", + "@babel/core": "^7.28.0", + "@babel/plugin-transform-react-jsx-self": "^7.27.1", + "@babel/plugin-transform-react-jsx-source": "^7.27.1", + "@rolldown/pluginutils": "1.0.0-beta.27", "@types/babel__core": "^7.20.5", "react-refresh": "^0.17.0" }, @@ -5769,7 +6038,7 @@ "node": "^14.18.0 || >=16.0.0" }, "peerDependencies": { - "vite": "^4.2.0 || ^5.0.0 || ^6.0.0" + "vite": "^4.2.0 || ^5.0.0 || ^6.0.0 || ^7.0.0" } }, "node_modules/@vitejs/plugin-react/node_modules/react-refresh": { @@ -5783,15 +6052,16 @@ } }, "node_modules/@vitest/coverage-v8": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/@vitest/coverage-v8/-/coverage-v8-3.1.2.tgz", - "integrity": "sha512-XDdaDOeaTMAMYW7N63AqoK32sYUWbXnTkC6tEbVcu3RlU1bB9of32T+PGf8KZvxqLNqeXhafDFqCkwpf2+dyaQ==", + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/@vitest/coverage-v8/-/coverage-v8-3.2.4.tgz", + "integrity": "sha512-EyF9SXU6kS5Ku/U82E259WSnvg6c8KTjppUncuNdm5QHpe17mwREHnjDzozC8x9MZ0xfBUFSaLkRv4TMA75ALQ==", "dev": true, "license": "MIT", "dependencies": { "@ampproject/remapping": "^2.3.0", "@bcoe/v8-coverage": "^1.0.2", - "debug": "^4.4.0", + "ast-v8-to-istanbul": "^0.3.3", + "debug": "^4.4.1", "istanbul-lib-coverage": "^3.2.2", "istanbul-lib-report": "^3.0.1", "istanbul-lib-source-maps": "^5.0.6", @@ -5806,8 +6076,8 @@ "url": "https://opencollective.com/vitest" }, "peerDependencies": { - "@vitest/browser": "3.1.2", - "vitest": "3.1.2" + "@vitest/browser": "3.2.4", + "vitest": "3.2.4" }, "peerDependenciesMeta": { "@vitest/browser": { @@ -5824,14 +6094,15 @@ } }, "node_modules/@vitest/expect": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-3.1.2.tgz", - "integrity": "sha512-O8hJgr+zREopCAqWl3uCVaOdqJwZ9qaDwUP7vy3Xigad0phZe9APxKhPcDNqYYi0rX5oMvwJMSCAXY2afqeTSA==", + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-3.2.4.tgz", + "integrity": "sha512-Io0yyORnB6sikFlt8QW5K7slY4OjqNX9jmJQ02QDda8lyM6B5oNgVWoSoKPac8/kgnCUzuHQKrSLtu/uOqqrig==", "dev": true, "license": "MIT", "dependencies": { - "@vitest/spy": "3.1.2", - "@vitest/utils": "3.1.2", + "@types/chai": "^5.2.2", + "@vitest/spy": "3.2.4", + "@vitest/utils": "3.2.4", "chai": "^5.2.0", "tinyrainbow": "^2.0.0" }, @@ -5840,13 +6111,13 @@ } }, "node_modules/@vitest/mocker": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/@vitest/mocker/-/mocker-3.1.2.tgz", - "integrity": "sha512-kOtd6K2lc7SQ0mBqYv/wdGedlqPdM/B38paPY+OwJ1XiNi44w3Fpog82UfOibmHaV9Wod18A09I9SCKLyDMqgw==", + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/@vitest/mocker/-/mocker-3.2.4.tgz", + "integrity": "sha512-46ryTE9RZO/rfDd7pEqFl7etuyzekzEhUbTW3BvmeO/BcCMEgq59BKhek3dXDWgAj4oMK6OZi+vRr1wPW6qjEQ==", "dev": true, "license": "MIT", "dependencies": { - "@vitest/spy": "3.1.2", + "@vitest/spy": "3.2.4", "estree-walker": "^3.0.3", "magic-string": "^0.30.17" }, @@ -5855,7 +6126,7 @@ }, "peerDependencies": { "msw": "^2.4.9", - "vite": "^5.0.0 || ^6.0.0" + "vite": "^5.0.0 || ^6.0.0 || ^7.0.0-0" }, "peerDependenciesMeta": { "msw": { @@ -5887,9 +6158,9 @@ } }, "node_modules/@vitest/pretty-format": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-3.1.2.tgz", - "integrity": "sha512-R0xAiHuWeDjTSB3kQ3OQpT8Rx3yhdOAIm/JM4axXxnG7Q/fS8XUwggv/A4xzbQA+drYRjzkMnpYnOGAc4oeq8w==", + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-3.2.4.tgz", + "integrity": "sha512-IVNZik8IVRJRTr9fxlitMKeJeXFFFN0JaB9PHPGQ8NKQbGpfjlTx9zO4RefN8gp7eqjNy8nyK3NZmBzOPeIxtA==", "dev": true, "license": "MIT", "dependencies": { @@ -5900,27 +6171,28 @@ } }, "node_modules/@vitest/runner": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-3.1.2.tgz", - "integrity": "sha512-bhLib9l4xb4sUMPXnThbnhX2Yi8OutBMA8Yahxa7yavQsFDtwY/jrUZwpKp2XH9DhRFJIeytlyGpXCqZ65nR+g==", + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-3.2.4.tgz", + "integrity": "sha512-oukfKT9Mk41LreEW09vt45f8wx7DordoWUZMYdY/cyAk7w5TWkTRCNZYF7sX7n2wB7jyGAl74OxgwhPgKaqDMQ==", "dev": true, "license": "MIT", "dependencies": { - "@vitest/utils": "3.1.2", - "pathe": "^2.0.3" + "@vitest/utils": "3.2.4", + "pathe": "^2.0.3", + "strip-literal": "^3.0.0" }, "funding": { "url": "https://opencollective.com/vitest" } }, "node_modules/@vitest/snapshot": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-3.1.2.tgz", - "integrity": "sha512-Q1qkpazSF/p4ApZg1vfZSQ5Yw6OCQxVMVrLjslbLFA1hMDrT2uxtqMaw8Tc/jy5DLka1sNs1Y7rBcftMiaSH/Q==", + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-3.2.4.tgz", + "integrity": "sha512-dEYtS7qQP2CjU27QBC5oUOxLE/v5eLkGqPE0ZKEIDGMs4vKWe7IjgLOeauHsR0D5YuuycGRO5oSRXnwnmA78fQ==", "dev": true, "license": "MIT", "dependencies": { - "@vitest/pretty-format": "3.1.2", + "@vitest/pretty-format": "3.2.4", "magic-string": "^0.30.17", "pathe": "^2.0.3" }, @@ -5939,27 +6211,27 @@ } }, "node_modules/@vitest/spy": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-3.1.2.tgz", - "integrity": "sha512-OEc5fSXMws6sHVe4kOFyDSj/+4MSwst0ib4un0DlcYgQvRuYQ0+M2HyqGaauUMnjq87tmUaMNDxKQx7wNfVqPA==", + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-3.2.4.tgz", + "integrity": "sha512-vAfasCOe6AIK70iP5UD11Ac4siNUNJ9i/9PZ3NKx07sG6sUxeag1LWdNrMWeKKYBLlzuK+Gn65Yd5nyL6ds+nw==", "dev": true, "license": "MIT", "dependencies": { - "tinyspy": "^3.0.2" + "tinyspy": "^4.0.3" }, "funding": { "url": "https://opencollective.com/vitest" } }, "node_modules/@vitest/utils": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-3.1.2.tgz", - "integrity": "sha512-5GGd0ytZ7BH3H6JTj9Kw7Prn1Nbg0wZVrIvou+UWxm54d+WoXXgAgjFJ8wn3LdagWLFSEfpPeyYrByZaGEZHLg==", + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-3.2.4.tgz", + "integrity": "sha512-fB2V0JFrQSMsCo9HiSq3Ezpdv4iYaXRG1Sx8edX3MwxfyNn83mKiGzOcH+Fkxt4MHxr3y42fQi1oeAInqgX2QA==", "dev": true, "license": "MIT", "dependencies": { - "@vitest/pretty-format": "3.1.2", - "loupe": "^3.1.3", + "@vitest/pretty-format": "3.2.4", + "loupe": "^3.1.4", "tinyrainbow": "^2.0.0" }, "funding": { @@ -6208,7 +6480,9 @@ } }, "node_modules/acorn": { - "version": "8.14.0", + "version": "8.15.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz", + "integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==", "license": "MIT", "bin": { "acorn": "bin/acorn" @@ -6219,6 +6493,8 @@ }, "node_modules/acorn-jsx": { "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", "dev": true, "license": "MIT", "peerDependencies": { @@ -6441,16 +6717,20 @@ "license": "MIT" }, "node_modules/array-includes": { - "version": "3.1.8", + "version": "3.1.9", + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.9.tgz", + "integrity": "sha512-FmeCCAenzH0KH381SPT5FZmiA/TmpndpcaShhfgEN9eCVjnFBqq3l1xrI42y8+PPLI6hypzou4GXw00WHmPBLQ==", "dev": true, "license": "MIT", "dependencies": { - "call-bind": "^1.0.7", + "call-bind": "^1.0.8", + "call-bound": "^1.0.4", "define-properties": "^1.2.1", - "es-abstract": "^1.23.2", - "es-object-atoms": "^1.0.0", - "get-intrinsic": "^1.2.4", - "is-string": "^1.0.7" + "es-abstract": "^1.24.0", + "es-object-atoms": "^1.1.1", + "get-intrinsic": "^1.3.0", + "is-string": "^1.1.1", + "math-intrinsics": "^1.1.0" }, "engines": { "node": ">= 0.4" @@ -6498,16 +6778,19 @@ } }, "node_modules/array.prototype.findlastindex": { - "version": "1.2.5", + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.6.tgz", + "integrity": "sha512-F/TKATkzseUExPlfvmwQKGITM3DGTK+vkAsCZoDc5daVygbJBnjEUCbgkAvVFsgfXfX4YIqZ/27G3k3tdXrTxQ==", "dev": true, "license": "MIT", "dependencies": { - "call-bind": "^1.0.7", + "call-bind": "^1.0.8", + "call-bound": "^1.0.4", "define-properties": "^1.2.1", - "es-abstract": "^1.23.2", + "es-abstract": "^1.23.9", "es-errors": "^1.3.0", - "es-object-atoms": "^1.0.0", - "es-shim-unscopables": "^1.0.2" + "es-object-atoms": "^1.1.1", + "es-shim-unscopables": "^1.1.0" }, "engines": { "node": ">= 0.4" @@ -6517,14 +6800,16 @@ } }, "node_modules/array.prototype.flat": { - "version": "1.3.2", + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.3.tgz", + "integrity": "sha512-rwG/ja1neyLqCuGZ5YYrznA62D4mZXg0i1cIskIUKSiqF3Cje9/wXAls9B9s1Wa2fomMsIv8czB8jZcPmxCXFg==", "dev": true, "license": "MIT", "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1", - "es-shim-unscopables": "^1.0.0" + "call-bind": "^1.0.8", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.5", + "es-shim-unscopables": "^1.0.2" }, "engines": { "node": ">= 0.4" @@ -6620,6 +6905,35 @@ "dev": true, "license": "MIT" }, + "node_modules/ast-v8-to-istanbul": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/ast-v8-to-istanbul/-/ast-v8-to-istanbul-0.3.3.tgz", + "integrity": "sha512-MuXMrSLVVoA6sYN/6Hke18vMzrT4TZNbZIj/hvh0fnYFpO+/kFXcLIaiPwXXWaQUPg4yJD8fj+lfJ7/1EBconw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/trace-mapping": "^0.3.25", + "estree-walker": "^3.0.3", + "js-tokens": "^9.0.1" + } + }, + "node_modules/ast-v8-to-istanbul/node_modules/estree-walker": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz", + "integrity": "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0" + } + }, + "node_modules/ast-v8-to-istanbul/node_modules/js-tokens": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-9.0.1.tgz", + "integrity": "sha512-mxa9E9ITFOt0ban3j6L5MpjwegGz6lBQmM1IJkWeBZGcMxto50+eWdjC/52xDbS2vy0k7vIMK0Fe2wfL9OQSpQ==", + "dev": true, + "license": "MIT" + }, "node_modules/astral-regex": { "version": "2.0.0", "dev": true, @@ -6662,6 +6976,8 @@ }, "node_modules/attr-accept": { "version": "2.2.5", + "resolved": "https://registry.npmjs.org/attr-accept/-/attr-accept-2.2.5.tgz", + "integrity": "sha512-0bDNnY/u6pPwHDMoF0FieU354oBi0a8rD9FcsLwzcGWbc8KS8KPIi7y+s13OlVY+gMWc/9xEMUgNE6Qm8ZllYQ==", "license": "MIT", "engines": { "node": ">=4" @@ -6683,6 +6999,8 @@ }, "node_modules/awesome-debounce-promise": { "version": "2.1.0", + "resolved": "https://registry.npmjs.org/awesome-debounce-promise/-/awesome-debounce-promise-2.1.0.tgz", + "integrity": "sha512-0Dv4j2wKk5BrNZh4jgV2HUdznaeVgEK/WTvcHhZWUElhmQ1RR+iURRoLEwICFyR0S/5VtxfcvY6gR+qSe95jNg==", "license": "MIT", "dependencies": { "@types/debounce-promise": "^3.1.1", @@ -6697,6 +7015,8 @@ }, "node_modules/awesome-imperative-promise": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/awesome-imperative-promise/-/awesome-imperative-promise-1.0.1.tgz", + "integrity": "sha512-EmPr3FqbQGqlNh+WxMNcF9pO9uDQJnOC4/3rLBQNH9m4E9qI+8lbfHCmHpVAsmGqPJPKhCjJLHUQzQW/RBHRdQ==", "license": "MIT", "engines": { "node": ">=8", @@ -6705,6 +7025,8 @@ }, "node_modules/awesome-only-resolves-last-promise": { "version": "1.0.3", + "resolved": "https://registry.npmjs.org/awesome-only-resolves-last-promise/-/awesome-only-resolves-last-promise-1.0.3.tgz", + "integrity": "sha512-7q4WPsYiD8Omvi/yHL314DkvsD/lM//Z2/KcU1vWk0xJotiV0GMJTgHTpWl3n90HJqpXKg7qX+VVNs5YbQyPRQ==", "license": "MIT", "dependencies": { "awesome-imperative-promise": "^1.0.1" @@ -6723,13 +7045,13 @@ } }, "node_modules/axios": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/axios/-/axios-1.9.0.tgz", - "integrity": "sha512-re4CqKTJaURpzbLHtIi6XpDv20/CnpXOtjRY5/CU32L8gU8ek9UIivcfvSWvmKEngmVbrUtPpdDwWDWL7DNHvg==", + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.11.0.tgz", + "integrity": "sha512-1Lx3WLFQWm3ooKDYZD1eXmoGO9fxYQjrycfHFC8P0sCfQVXyROp0p9PFWBehewBOdCwHc+f/b8I0fMto5eSfwA==", "license": "MIT", "dependencies": { "follow-redirects": "^1.15.6", - "form-data": "^4.0.0", + "form-data": "^4.0.4", "proxy-from-env": "^1.1.0" } }, @@ -6771,12 +7093,14 @@ } }, "node_modules/babel-plugin-polyfill-corejs2": { - "version": "0.4.12", + "version": "0.4.14", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.14.tgz", + "integrity": "sha512-Co2Y9wX854ts6U8gAAPXfn0GmAyctHuK8n0Yhfjd6t30g7yvKjspvvOo9yG+z52PZRgFErt7Ka2pYnXCjLKEpg==", "dev": true, "license": "MIT", "dependencies": { - "@babel/compat-data": "^7.22.6", - "@babel/helper-define-polyfill-provider": "^0.6.3", + "@babel/compat-data": "^7.27.7", + "@babel/helper-define-polyfill-provider": "^0.6.5", "semver": "^6.3.1" }, "peerDependencies": { @@ -6784,23 +7108,27 @@ } }, "node_modules/babel-plugin-polyfill-corejs3": { - "version": "0.11.1", + "version": "0.13.0", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.13.0.tgz", + "integrity": "sha512-U+GNwMdSFgzVmfhNm8GJUX88AadB3uo9KpJqS3FaqNIPKgySuvMb+bHPsOmmuWyIcuqZj/pzt1RUIUZns4y2+A==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-define-polyfill-provider": "^0.6.3", - "core-js-compat": "^3.40.0" + "@babel/helper-define-polyfill-provider": "^0.6.5", + "core-js-compat": "^3.43.0" }, "peerDependencies": { "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" } }, "node_modules/babel-plugin-polyfill-regenerator": { - "version": "0.6.3", + "version": "0.6.5", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.6.5.tgz", + "integrity": "sha512-ISqQ2frbiNU9vIJkzg7dlPpznPZ4jOiUQ1uSmB0fEHeowtN3COYRsXr/xexn64NpU13P06jc/L5TgiJXOgrbEg==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-define-polyfill-provider": "^0.6.3" + "@babel/helper-define-polyfill-provider": "^0.6.5" }, "peerDependencies": { "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" @@ -6959,7 +7287,9 @@ "license": "ISC" }, "node_modules/brace-expansion": { - "version": "2.0.1", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", + "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", "license": "MIT", "dependencies": { "balanced-match": "^1.0.0" @@ -6984,7 +7314,9 @@ } }, "node_modules/browserslist": { - "version": "4.24.4", + "version": "4.25.1", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.25.1.tgz", + "integrity": "sha512-KGj0KoOMXLpSNkkEI6Z6mShmQy0bc1I+T7K9N81k4WWMrfz+6fQ6es80B/YLAeRoKvjYE1YSHHOW1qe9xIVzHw==", "funding": [ { "type": "opencollective", @@ -7001,10 +7333,10 @@ ], "license": "MIT", "dependencies": { - "caniuse-lite": "^1.0.30001688", - "electron-to-chromium": "^1.5.73", + "caniuse-lite": "^1.0.30001726", + "electron-to-chromium": "^1.5.173", "node-releases": "^2.0.19", - "update-browserslist-db": "^1.1.1" + "update-browserslist-db": "^1.1.3" }, "bin": { "browserslist": "cli.js" @@ -7114,24 +7446,24 @@ } }, "node_modules/cacheable": { - "version": "1.8.9", - "resolved": "https://registry.npmjs.org/cacheable/-/cacheable-1.8.9.tgz", - "integrity": "sha512-FicwAUyWnrtnd4QqYAoRlNs44/a1jTL7XDKqm5gJ90wz1DQPlC7U2Rd1Tydpv+E7WAr4sQHuw8Q8M3nZMAyecQ==", + "version": "1.10.3", + "resolved": "https://registry.npmjs.org/cacheable/-/cacheable-1.10.3.tgz", + "integrity": "sha512-M6p10iJ/VT0wT7TLIGUnm958oVrU2cUK8pQAVU21Zu7h8rbk/PeRtRWrvHJBql97Bhzk3g1N6+2VKC+Rjxna9Q==", "dev": true, "license": "MIT", "dependencies": { - "hookified": "^1.7.1", - "keyv": "^5.3.1" + "hookified": "^1.10.0", + "keyv": "^5.4.0" } }, "node_modules/cacheable/node_modules/keyv": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/keyv/-/keyv-5.3.2.tgz", - "integrity": "sha512-Lji2XRxqqa5Wg+CHLVfFKBImfJZ4pCSccu9eVWK6w4c2SDFLd8JAn1zqTuSFnsxb7ope6rMsnIHfp+eBbRBRZQ==", + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-5.5.0.tgz", + "integrity": "sha512-QG7qR2tijh1ftOvClut4YKKg1iW6cx3GZsKoGyJPxHkGWK9oJhG9P3j5deP0QQOGDowBMVQFaP+Vm4NpGYvmIQ==", "dev": true, "license": "MIT", "dependencies": { - "@keyv/serialize": "^1.0.3" + "@keyv/serialize": "^1.1.0" } }, "node_modules/call-bind": { @@ -7155,7 +7487,6 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==", - "dev": true, "license": "MIT", "dependencies": { "es-errors": "^1.3.0", @@ -7205,7 +7536,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001699", + "version": "1.0.30001727", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001727.tgz", + "integrity": "sha512-pB68nIHmbN6L/4C6MH1DokyR3bYqFwjaSs/sWDHGj4CTcFtQUQMuJftVwWkXq7mNWOybD3KhUv3oWHoGxgP14Q==", "funding": [ { "type": "opencollective", @@ -7260,9 +7593,9 @@ "license": "MIT" }, "node_modules/chart.js": { - "version": "4.4.9", - "resolved": "https://registry.npmjs.org/chart.js/-/chart.js-4.4.9.tgz", - "integrity": "sha512-EyZ9wWKgpAU0fLJ43YAEIF8sr5F2W3LqbS40ZJyHIner2lY14ufqv2VMp69MAiZ2rpwxEUxEhIH/0U3xyRynxg==", + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/chart.js/-/chart.js-4.5.0.tgz", + "integrity": "sha512-aYeC/jDgSEx8SHWZvANYMioYMZ2KX02W6f6uVfyteuCGcadDLcYVHdfdygsTQkQ4TKn5lghoojAsPj5pu0SnvQ==", "dev": true, "license": "MIT", "dependencies": { @@ -7508,6 +7841,8 @@ }, "node_modules/clsx": { "version": "2.1.1", + "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.1.1.tgz", + "integrity": "sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==", "license": "MIT", "engines": { "node": ">=6" @@ -7570,7 +7905,9 @@ } }, "node_modules/compression": { - "version": "1.7.5", + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/compression/-/compression-1.8.1.tgz", + "integrity": "sha512-9mAqGPHLakhCLeNyxPkK4xVo746zQ/czLH1Ky+vkitMnWfWZps8r0qXuwhwizagCRttsL4lfG4pIOvaWLpAP0w==", "dev": true, "license": "MIT", "dependencies": { @@ -7578,7 +7915,7 @@ "compressible": "~2.0.18", "debug": "2.6.9", "negotiator": "~0.6.4", - "on-headers": "~1.0.2", + "on-headers": "~1.1.0", "safe-buffer": "5.2.1", "vary": "~1.1.2" }, @@ -7738,11 +8075,13 @@ } }, "node_modules/core-js-compat": { - "version": "3.40.0", + "version": "3.43.0", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.43.0.tgz", + "integrity": "sha512-2GML2ZsCc5LR7hZYz4AXmjQw8zuy2T//2QntwdnpuYI7jteT6GVYJL7F6C2C57R7gSYrcqVW3lAALefdbhBLDA==", "dev": true, "license": "MIT", "dependencies": { - "browserslist": "^4.24.3" + "browserslist": "^4.25.0" }, "funding": { "type": "opencollective", @@ -7803,7 +8142,9 @@ "license": "MIT" }, "node_modules/cross-spawn": { - "version": "7.0.5", + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", + "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", "dev": true, "license": "MIT", "dependencies": { @@ -7825,6 +8166,8 @@ }, "node_modules/css-jss": { "version": "10.10.0", + "resolved": "https://registry.npmjs.org/css-jss/-/css-jss-10.10.0.tgz", + "integrity": "sha512-YyMIS/LsSKEGXEaVJdjonWe18p4vXLo8CMA4FrW/kcaEyqdIGKCFXao31gbJddXEdIxSXFFURWrenBJPlKTgAA==", "license": "MIT", "dependencies": { "@babel/runtime": "^7.3.1", @@ -7906,6 +8249,8 @@ }, "node_modules/css-vendor": { "version": "2.0.8", + "resolved": "https://registry.npmjs.org/css-vendor/-/css-vendor-2.0.8.tgz", + "integrity": "sha512-x9Aq0XTInxrkuFeHKbYC7zWY8ai7qJ04Kxd9MnvbC1uO5DagxoHQjm4JvG+vCdXOoFtCjbL2XSZfxmoYa9uQVQ==", "license": "MIT", "dependencies": { "@babel/runtime": "^7.8.3", @@ -8047,10 +8392,14 @@ }, "node_modules/debounce-promise": { "version": "3.1.2", + "resolved": "https://registry.npmjs.org/debounce-promise/-/debounce-promise-3.1.2.tgz", + "integrity": "sha512-rZHcgBkbYavBeD9ej6sP56XfG53d51CD4dnaw989YX/nZ/ZJfgRx/9ePKmTNiUiyQvh4mtrMoS3OAWW+yoYtpg==", "license": "MIT" }, "node_modules/debug": { - "version": "4.4.0", + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.1.tgz", + "integrity": "sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==", "license": "MIT", "dependencies": { "ms": "^2.1.3" @@ -8467,14 +8816,6 @@ "url": "https://opencollective.com/typescript-eslint" } }, - "node_modules/detective-typescript/node_modules/array-union": { - "version": "2.1.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, "node_modules/detective-typescript/node_modules/eslint-visitor-keys": { "version": "3.4.3", "dev": true, @@ -8486,25 +8827,6 @@ "url": "https://opencollective.com/eslint" } }, - "node_modules/detective-typescript/node_modules/globby": { - "version": "11.1.0", - "dev": true, - "license": "MIT", - "dependencies": { - "array-union": "^2.1.0", - "dir-glob": "^3.0.1", - "fast-glob": "^3.2.9", - "ignore": "^5.2.0", - "merge2": "^1.4.1", - "slash": "^3.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/detective-typescript/node_modules/semver": { "version": "7.6.3", "dev": true, @@ -8516,14 +8838,6 @@ "node": ">=10" } }, - "node_modules/detective-typescript/node_modules/slash": { - "version": "3.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, "node_modules/detective-vue2": { "version": "2.1.0", "dev": true, @@ -8574,17 +8888,6 @@ "node": ">=6" } }, - "node_modules/doctrine": { - "version": "3.0.0", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "esutils": "^2.0.2" - }, - "engines": { - "node": ">=6.0.0" - } - }, "node_modules/dom-accessibility-api": { "version": "0.5.16", "dev": true, @@ -8679,7 +8982,6 @@ }, "node_modules/dunder-proto": { "version": "1.0.1", - "dev": true, "license": "MIT", "dependencies": { "call-bind-apply-helpers": "^1.0.1", @@ -8714,7 +9016,9 @@ "license": "MIT" }, "node_modules/electron-to-chromium": { - "version": "1.5.96", + "version": "1.5.179", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.179.tgz", + "integrity": "sha512-UWKi/EbBopgfFsc5k61wFpV7WrnnSlSzW/e2XcBmS6qKYTivZlLtoll5/rdqRTxGglGHkmkW0j0pFNJG10EUIQ==", "license": "ISC" }, "node_modules/emoji-regex": { @@ -8805,7 +9109,9 @@ } }, "node_modules/es-abstract": { - "version": "1.23.9", + "version": "1.24.0", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.24.0.tgz", + "integrity": "sha512-WSzPgsdLtTcQwm4CROfS5ju2Wa1QQcVeT37jFjYzdFz1r9ahadC8B8/a4qxJxM+09F18iumCdRmlr96ZYkQvEg==", "dev": true, "license": "MIT", "dependencies": { @@ -8813,18 +9119,18 @@ "arraybuffer.prototype.slice": "^1.0.4", "available-typed-arrays": "^1.0.7", "call-bind": "^1.0.8", - "call-bound": "^1.0.3", + "call-bound": "^1.0.4", "data-view-buffer": "^1.0.2", "data-view-byte-length": "^1.0.2", "data-view-byte-offset": "^1.0.1", "es-define-property": "^1.0.1", "es-errors": "^1.3.0", - "es-object-atoms": "^1.0.0", + "es-object-atoms": "^1.1.1", "es-set-tostringtag": "^2.1.0", "es-to-primitive": "^1.3.0", "function.prototype.name": "^1.1.8", - "get-intrinsic": "^1.2.7", - "get-proto": "^1.0.0", + "get-intrinsic": "^1.3.0", + "get-proto": "^1.0.1", "get-symbol-description": "^1.1.0", "globalthis": "^1.0.4", "gopd": "^1.2.0", @@ -8836,21 +9142,24 @@ "is-array-buffer": "^3.0.5", "is-callable": "^1.2.7", "is-data-view": "^1.0.2", + "is-negative-zero": "^2.0.3", "is-regex": "^1.2.1", + "is-set": "^2.0.3", "is-shared-array-buffer": "^1.0.4", "is-string": "^1.1.1", "is-typed-array": "^1.1.15", - "is-weakref": "^1.1.0", + "is-weakref": "^1.1.1", "math-intrinsics": "^1.1.0", - "object-inspect": "^1.13.3", + "object-inspect": "^1.13.4", "object-keys": "^1.1.1", "object.assign": "^4.1.7", "own-keys": "^1.0.1", - "regexp.prototype.flags": "^1.5.3", + "regexp.prototype.flags": "^1.5.4", "safe-array-concat": "^1.1.3", "safe-push-apply": "^1.0.0", "safe-regex-test": "^1.1.0", "set-proto": "^1.0.0", + "stop-iteration-iterator": "^1.1.0", "string.prototype.trim": "^1.2.10", "string.prototype.trimend": "^1.0.9", "string.prototype.trimstart": "^1.0.8", @@ -8859,7 +9168,7 @@ "typed-array-byte-offset": "^1.0.4", "typed-array-length": "^1.0.7", "unbox-primitive": "^1.1.0", - "which-typed-array": "^1.1.18" + "which-typed-array": "^1.1.19" }, "engines": { "node": ">= 0.4" @@ -8870,7 +9179,6 @@ }, "node_modules/es-define-property": { "version": "1.0.1", - "dev": true, "license": "MIT", "engines": { "node": ">= 0.4" @@ -8878,7 +9186,6 @@ }, "node_modules/es-errors": { "version": "1.3.0", - "dev": true, "license": "MIT", "engines": { "node": ">= 0.4" @@ -8911,14 +9218,15 @@ } }, "node_modules/es-module-lexer": { - "version": "1.6.0", + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.7.0.tgz", + "integrity": "sha512-jEQoCwk8hyb2AZziIOLhDqpm5+2ww5uIE6lkO/6jcOCusfk6LhMHpXXfBLXTZ7Ydyt0j4VoUQv6uGNYbdW+kBA==", "license": "MIT" }, "node_modules/es-object-atoms": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz", "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==", - "dev": true, "license": "MIT", "dependencies": { "es-errors": "^1.3.0" @@ -8929,7 +9237,6 @@ }, "node_modules/es-set-tostringtag": { "version": "2.1.0", - "dev": true, "license": "MIT", "dependencies": { "es-errors": "^1.3.0", @@ -8942,11 +9249,16 @@ } }, "node_modules/es-shim-unscopables": { - "version": "1.0.2", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.1.0.tgz", + "integrity": "sha512-d9T8ucsEhh8Bi1woXCf+TIKDIROLG5WCkxg8geBCbvk22kzwC5G2OnXVMO6FUsvQlgUUXQ2itephWDLqDzbeCw==", "dev": true, "license": "MIT", "dependencies": { - "hasown": "^2.0.0" + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" } }, "node_modules/es-to-primitive": { @@ -9063,66 +9375,78 @@ } }, "node_modules/eslint": { - "version": "8.57.1", + "version": "9.33.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.33.0.tgz", + "integrity": "sha512-TS9bTNIryDzStCpJN93aC5VRSW3uTx9sClUn4B87pwiCaJh220otoI0X8mJKr+VcPtniMdN8GKjlwgWGUv5ZKA==", "dev": true, "license": "MIT", "dependencies": { "@eslint-community/eslint-utils": "^4.2.0", - "@eslint-community/regexpp": "^4.6.1", - "@eslint/eslintrc": "^2.1.4", - "@eslint/js": "8.57.1", - "@humanwhocodes/config-array": "^0.13.0", + "@eslint-community/regexpp": "^4.12.1", + "@eslint/config-array": "^0.21.0", + "@eslint/config-helpers": "^0.3.1", + "@eslint/core": "^0.15.2", + "@eslint/eslintrc": "^3.3.1", + "@eslint/js": "9.33.0", + "@eslint/plugin-kit": "^0.3.5", + "@humanfs/node": "^0.16.6", "@humanwhocodes/module-importer": "^1.0.1", - "@nodelib/fs.walk": "^1.2.8", - "@ungap/structured-clone": "^1.2.0", + "@humanwhocodes/retry": "^0.4.2", + "@types/estree": "^1.0.6", + "@types/json-schema": "^7.0.15", "ajv": "^6.12.4", "chalk": "^4.0.0", - "cross-spawn": "^7.0.2", + "cross-spawn": "^7.0.6", "debug": "^4.3.2", - "doctrine": "^3.0.0", "escape-string-regexp": "^4.0.0", - "eslint-scope": "^7.2.2", - "eslint-visitor-keys": "^3.4.3", - "espree": "^9.6.1", - "esquery": "^1.4.2", + "eslint-scope": "^8.4.0", + "eslint-visitor-keys": "^4.2.1", + "espree": "^10.4.0", + "esquery": "^1.5.0", "esutils": "^2.0.2", "fast-deep-equal": "^3.1.3", - "file-entry-cache": "^6.0.1", + "file-entry-cache": "^8.0.0", "find-up": "^5.0.0", "glob-parent": "^6.0.2", - "globals": "^13.19.0", - "graphemer": "^1.4.0", "ignore": "^5.2.0", "imurmurhash": "^0.1.4", "is-glob": "^4.0.0", - "is-path-inside": "^3.0.3", - "js-yaml": "^4.1.0", "json-stable-stringify-without-jsonify": "^1.0.1", - "levn": "^0.4.1", "lodash.merge": "^4.6.2", "minimatch": "^3.1.2", "natural-compare": "^1.4.0", - "optionator": "^0.9.3", - "strip-ansi": "^6.0.1", - "text-table": "^0.2.0" + "optionator": "^0.9.3" }, "bin": { "eslint": "bin/eslint.js" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { - "url": "https://opencollective.com/eslint" + "url": "https://eslint.org/donate" + }, + "peerDependencies": { + "jiti": "*" + }, + "peerDependenciesMeta": { + "jiti": { + "optional": true + } } }, "node_modules/eslint-config-prettier": { - "version": "8.10.0", + "version": "10.1.8", + "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-10.1.8.tgz", + "integrity": "sha512-82GZUjRS0p/jganf6q1rEO25VSoHH0hKPCTrgillPjdI/3bgBhAE1QzHrHTizjpRvy6pGAvKjDJtk2pF9NDq8w==", "dev": true, "license": "MIT", "bin": { "eslint-config-prettier": "bin/cli.js" }, + "funding": { + "url": "https://opencollective.com/eslint-config-prettier" + }, "peerDependencies": { "eslint": ">=7.0.0" } @@ -9146,7 +9470,9 @@ } }, "node_modules/eslint-module-utils": { - "version": "2.12.0", + "version": "2.12.1", + "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.12.1.tgz", + "integrity": "sha512-L8jSWTze7K2mTg0vos/RuLRS5soomksDPoJLXIslC7c8Wmut3bx7CPpJijDcBZtxQ5lrbUdM+s0OlNbz0DCDNw==", "dev": true, "license": "MIT", "dependencies": { @@ -9163,6 +9489,8 @@ }, "node_modules/eslint-module-utils/node_modules/debug": { "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", "dev": true, "license": "MIT", "dependencies": { @@ -9183,28 +9511,30 @@ } }, "node_modules/eslint-plugin-import": { - "version": "2.31.0", + "version": "2.32.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.32.0.tgz", + "integrity": "sha512-whOE1HFo/qJDyX4SnXzP4N6zOWn79WhnCUY/iDR0mPfQZO8wcYE4JClzI2oZrhBnnMUCBCHZhO6VQyoBU95mZA==", "dev": true, "license": "MIT", "dependencies": { "@rtsao/scc": "^1.1.0", - "array-includes": "^3.1.8", - "array.prototype.findlastindex": "^1.2.5", - "array.prototype.flat": "^1.3.2", - "array.prototype.flatmap": "^1.3.2", + "array-includes": "^3.1.9", + "array.prototype.findlastindex": "^1.2.6", + "array.prototype.flat": "^1.3.3", + "array.prototype.flatmap": "^1.3.3", "debug": "^3.2.7", "doctrine": "^2.1.0", "eslint-import-resolver-node": "^0.3.9", - "eslint-module-utils": "^2.12.0", + "eslint-module-utils": "^2.12.1", "hasown": "^2.0.2", - "is-core-module": "^2.15.1", + "is-core-module": "^2.16.1", "is-glob": "^4.0.3", "minimatch": "^3.1.2", "object.fromentries": "^2.0.8", "object.groupby": "^1.0.3", - "object.values": "^1.2.0", + "object.values": "^1.2.1", "semver": "^6.3.1", - "string.prototype.trimend": "^1.0.8", + "string.prototype.trimend": "^1.0.9", "tsconfig-paths": "^3.15.0" }, "engines": { @@ -9215,7 +9545,9 @@ } }, "node_modules/eslint-plugin-import/node_modules/brace-expansion": { - "version": "1.1.11", + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", + "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", "dev": true, "license": "MIT", "dependencies": { @@ -9255,6 +9587,8 @@ }, "node_modules/eslint-plugin-jest-dom": { "version": "5.5.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-jest-dom/-/eslint-plugin-jest-dom-5.5.0.tgz", + "integrity": "sha512-CRlXfchTr7EgC3tDI7MGHY6QjdJU5Vv2RPaeeGtkXUHnKZf04kgzMPIJUXt4qKCvYWVVIEo9ut9Oq1vgXAykEA==", "dev": true, "license": "MIT", "dependencies": { @@ -9313,7 +9647,9 @@ } }, "node_modules/eslint-plugin-jsx-a11y/node_modules/brace-expansion": { - "version": "1.1.11", + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", + "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", "dev": true, "license": "MIT", "dependencies": { @@ -9333,12 +9669,11 @@ } }, "node_modules/eslint-plugin-playwright": { - "version": "2.2.0", + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/eslint-plugin-playwright/-/eslint-plugin-playwright-2.2.2.tgz", + "integrity": "sha512-j0jKpndIPOXRRP9uMkwb9l/nSmModOU3452nrFdgFJoEv/435J1onk8+aITzjDW8DfypxgmVaDMdmVIa6F7I0w==", "dev": true, "license": "MIT", - "workspaces": [ - "examples" - ], "dependencies": { "globals": "^13.23.0" }, @@ -9375,20 +9710,31 @@ } }, "node_modules/eslint-plugin-prettier": { - "version": "3.4.1", + "version": "5.5.4", + "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-5.5.4.tgz", + "integrity": "sha512-swNtI95SToIz05YINMA6Ox5R057IMAmWZ26GqPxusAp1TZzj+IdY9tXNWWD3vkF/wEqydCONcwjTFpxybBqZsg==", "dev": true, "license": "MIT", "dependencies": { - "prettier-linter-helpers": "^1.0.0" + "prettier-linter-helpers": "^1.0.0", + "synckit": "^0.11.7" }, "engines": { - "node": ">=6.0.0" + "node": "^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint-plugin-prettier" }, "peerDependencies": { - "eslint": ">=5.0.0", - "prettier": ">=1.13.0" + "@types/eslint": ">=8.0.0", + "eslint": ">=8.0.0", + "eslint-config-prettier": ">= 7.0.0 <10.0.0 || >=10.1.0", + "prettier": ">=3.0.0" }, "peerDependenciesMeta": { + "@types/eslint": { + "optional": true + }, "eslint-config-prettier": { "optional": true } @@ -9459,7 +9805,9 @@ } }, "node_modules/eslint-plugin-react/node_modules/brace-expansion": { - "version": "1.1.11", + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", + "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", "dev": true, "license": "MIT", "dependencies": { @@ -9514,9 +9862,9 @@ } }, "node_modules/eslint-plugin-testing-library": { - "version": "7.2.2", - "resolved": "https://registry.npmjs.org/eslint-plugin-testing-library/-/eslint-plugin-testing-library-7.2.2.tgz", - "integrity": "sha512-PaE4gwP3tMhmlcpOV0Hl21BA5SZIz3PiQYSgnHOY4rrSWZV4+r2BwbzUt2yU0xay2GtA+VNJxzKCbNMvEG2Uig==", + "version": "7.6.6", + "resolved": "https://registry.npmjs.org/eslint-plugin-testing-library/-/eslint-plugin-testing-library-7.6.6.tgz", + "integrity": "sha512-eSexC+OPhDLuCpLbFEC7Qrk0x4IE4Mn+UW0db8YAhUatVB6CzGHdeHv4pyoInglbhhQc0Z9auY/2HKyMZW5s7Q==", "dev": true, "license": "MIT", "dependencies": { @@ -9559,12 +9907,27 @@ }, "node_modules/eslint-visitor-keys": { "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", + "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", "dev": true, "license": "Apache-2.0", "engines": { "node": ">=10" } }, + "node_modules/eslint/node_modules/@eslint/js": { + "version": "9.33.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.33.0.tgz", + "integrity": "sha512-5K1/mKhWaMfreBGJTwval43JJmkip0RmM+3+IuqupeSKNC/Th2Kc7ucaq5ovTSra/OOKB9c58CGSz3QMVbWt0A==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://eslint.org/donate" + } + }, "node_modules/eslint/node_modules/ajv": { "version": "6.12.6", "dev": true, @@ -9581,7 +9944,9 @@ } }, "node_modules/eslint/node_modules/brace-expansion": { - "version": "1.1.11", + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", + "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", "dev": true, "license": "MIT", "dependencies": { @@ -9590,7 +9955,9 @@ } }, "node_modules/eslint/node_modules/eslint-scope": { - "version": "7.2.2", + "version": "8.4.0", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.4.0.tgz", + "integrity": "sha512-sNXOfKCn74rt8RICKMvJS7XKV/Xk9kA7DyJr8mJik3S7Cwgy3qlkkmyS2uQB3jiJg6VNdZd/pDBJu0nvG2NlTg==", "dev": true, "license": "BSD-2-Clause", "dependencies": { @@ -9598,37 +9965,25 @@ "estraverse": "^5.2.0" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { "url": "https://opencollective.com/eslint" } }, "node_modules/eslint/node_modules/eslint-visitor-keys": { - "version": "3.4.3", + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.1.tgz", + "integrity": "sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==", "dev": true, "license": "Apache-2.0", "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { "url": "https://opencollective.com/eslint" } }, - "node_modules/eslint/node_modules/globals": { - "version": "13.24.0", - "dev": true, - "license": "MIT", - "dependencies": { - "type-fest": "^0.20.2" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/eslint/node_modules/json-schema-traverse": { "version": "0.4.1", "dev": true, @@ -9645,39 +10000,32 @@ "node": "*" } }, - "node_modules/eslint/node_modules/type-fest": { - "version": "0.20.2", - "dev": true, - "license": "(MIT OR CC0-1.0)", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/espree": { - "version": "9.6.1", + "version": "10.4.0", + "resolved": "https://registry.npmjs.org/espree/-/espree-10.4.0.tgz", + "integrity": "sha512-j6PAQ2uUr79PZhBjP5C5fhl8e39FmRnOjsD5lGnWrFU8i2G776tBK7+nP8KuQUTTyAZUwfQqXAgrVH5MbH9CYQ==", "dev": true, "license": "BSD-2-Clause", "dependencies": { - "acorn": "^8.9.0", + "acorn": "^8.15.0", "acorn-jsx": "^5.3.2", - "eslint-visitor-keys": "^3.4.1" + "eslint-visitor-keys": "^4.2.1" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { "url": "https://opencollective.com/eslint" } }, "node_modules/espree/node_modules/eslint-visitor-keys": { - "version": "3.4.3", + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.1.tgz", + "integrity": "sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==", "dev": true, "license": "Apache-2.0", "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { "url": "https://opencollective.com/eslint" @@ -9852,7 +10200,9 @@ } }, "node_modules/express": { - "version": "4.21.1", + "version": "4.21.2", + "resolved": "https://registry.npmjs.org/express/-/express-4.21.2.tgz", + "integrity": "sha512-28HqgMZAmih1Czt9ny7qr6ek2qddF4FclbMzwhCREB6OFfH+rXAnuNCwo1/wFvrtbgsQDb4kSbX9de9lFbrXnA==", "dev": true, "license": "MIT", "dependencies": { @@ -9875,7 +10225,7 @@ "methods": "~1.1.2", "on-finished": "2.4.1", "parseurl": "~1.3.3", - "path-to-regexp": "0.1.10", + "path-to-regexp": "0.1.12", "proxy-addr": "~2.0.7", "qs": "6.13.0", "range-parser": "~1.2.1", @@ -9890,6 +10240,10 @@ }, "engines": { "node": ">= 0.10.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" } }, "node_modules/express/node_modules/debug": { @@ -9924,6 +10278,8 @@ }, "node_modules/fast-diff": { "version": "1.3.0", + "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.3.0.tgz", + "integrity": "sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==", "dev": true, "license": "Apache-2.0" }, @@ -10032,21 +10388,25 @@ } }, "node_modules/file-entry-cache": { - "version": "6.0.1", + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-8.0.0.tgz", + "integrity": "sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==", "dev": true, "license": "MIT", "dependencies": { - "flat-cache": "^3.0.4" + "flat-cache": "^4.0.0" }, "engines": { - "node": "^10.12.0 || >=12.0.0" + "node": ">=16.0.0" } }, "node_modules/file-selector": { - "version": "0.6.0", + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/file-selector/-/file-selector-2.1.2.tgz", + "integrity": "sha512-QgXo+mXTe8ljeqUFaX3QVHc5osSItJ/Km+xpocx0aSqWGMSCf6qYs/VnzZgS864Pjn5iceMRFigeAV7AfTlaig==", "license": "MIT", "dependencies": { - "tslib": "^2.4.0" + "tslib": "^2.7.0" }, "engines": { "node": ">= 12" @@ -10160,30 +10520,17 @@ } }, "node_modules/flat-cache": { - "version": "3.2.0", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-4.0.1.tgz", + "integrity": "sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==", "dev": true, "license": "MIT", "dependencies": { "flatted": "^3.2.9", - "keyv": "^4.5.3", - "rimraf": "^3.0.2" + "keyv": "^4.5.4" }, "engines": { - "node": "^10.12.0 || >=12.0.0" - } - }, - "node_modules/flat-cache/node_modules/rimraf": { - "version": "3.0.2", - "dev": true, - "license": "ISC", - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "node": ">=16" } }, "node_modules/flatted": { @@ -10194,7 +10541,9 @@ "license": "ISC" }, "node_modules/focus-trap": { - "version": "7.6.2", + "version": "7.6.4", + "resolved": "https://registry.npmjs.org/focus-trap/-/focus-trap-7.6.4.tgz", + "integrity": "sha512-xx560wGBk7seZ6y933idtjJQc1l+ck+pI3sKvhKozdBV1dRZoKhkW5xoCaFv9tQiX5RH1xfSxjuNu6g+lmN/gw==", "license": "MIT", "dependencies": { "tabbable": "^6.2.0" @@ -10219,11 +10568,19 @@ } }, "node_modules/for-each": { - "version": "0.3.3", + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.5.tgz", + "integrity": "sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg==", "dev": true, "license": "MIT", "dependencies": { - "is-callable": "^1.1.3" + "is-callable": "^1.2.7" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/foreground-child": { @@ -10292,7 +10649,9 @@ } }, "node_modules/fork-ts-checker-webpack-plugin/node_modules/brace-expansion": { - "version": "1.1.11", + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", + "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", "dev": true, "license": "MIT", "dependencies": { @@ -10345,11 +10704,15 @@ } }, "node_modules/form-data": { - "version": "4.0.1", + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.4.tgz", + "integrity": "sha512-KrGhL9Q4zjj0kiUt5OO4Mr/A/jlI2jDYs5eHBpYHPcBEVSiipAvn2Ko2HnPe20rmcuuvMHNdZFp+4IlGTMF0Ow==", "license": "MIT", "dependencies": { "asynckit": "^0.4.0", "combined-stream": "^1.0.8", + "es-set-tostringtag": "^2.1.0", + "hasown": "^2.0.2", "mime-types": "^2.1.12" }, "engines": { @@ -10443,7 +10806,6 @@ }, "node_modules/function-bind": { "version": "1.1.2", - "dev": true, "license": "MIT", "funding": { "url": "https://github.com/sponsors/ljharb" @@ -10507,7 +10869,6 @@ "version": "1.3.0", "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz", "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==", - "dev": true, "license": "MIT", "dependencies": { "call-bind-apply-helpers": "^1.0.2", @@ -10535,7 +10896,6 @@ }, "node_modules/get-proto": { "version": "1.0.1", - "dev": true, "license": "MIT", "dependencies": { "dunder-proto": "^1.0.1", @@ -10660,7 +11020,9 @@ "license": "BSD-2-Clause" }, "node_modules/glob/node_modules/brace-expansion": { - "version": "1.1.11", + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", + "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", "dev": true, "license": "MIT", "dependencies": { @@ -10715,10 +11077,16 @@ } }, "node_modules/globals": { - "version": "11.12.0", + "version": "16.3.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-16.3.0.tgz", + "integrity": "sha512-bqWEnJ1Nt3neqx2q5SFfGS8r/ahumIakg3HcwtNlrVlwXIeNumWn/c7Pn/wKzGhf6SaW6H6uWXLqC30STCMchQ==", + "dev": true, "license": "MIT", "engines": { - "node": ">=4" + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/globalthis": { @@ -10736,6 +11104,37 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/globby": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", + "dev": true, + "license": "MIT", + "dependencies": { + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.9", + "ignore": "^5.2.0", + "merge2": "^1.4.1", + "slash": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/globby/node_modules/array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, "node_modules/globjoin": { "version": "0.1.4", "dev": true, @@ -10757,7 +11156,6 @@ }, "node_modules/gopd": { "version": "1.2.0", - "dev": true, "license": "MIT", "engines": { "node": ">= 0.4" @@ -10852,7 +11250,6 @@ }, "node_modules/has-symbols": { "version": "1.1.0", - "dev": true, "license": "MIT", "engines": { "node": ">= 0.4" @@ -10863,7 +11260,6 @@ }, "node_modules/has-tostringtag": { "version": "1.0.2", - "dev": true, "license": "MIT", "dependencies": { "has-symbols": "^1.0.3" @@ -10877,7 +11273,6 @@ }, "node_modules/hasown": { "version": "2.0.2", - "dev": true, "license": "MIT", "dependencies": { "function-bind": "^1.1.2" @@ -10915,9 +11310,9 @@ } }, "node_modules/hookified": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/hookified/-/hookified-1.8.1.tgz", - "integrity": "sha512-GrO2l93P8xCWBSTBX9l2BxI78VU/MAAYag+pG8curS3aBGy0++ZlxrQ7PdUOUVMbn5BwkGb6+eRrnf43ipnFEA==", + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/hookified/-/hookified-1.11.0.tgz", + "integrity": "sha512-aDdIN3GyU5I6wextPplYdfmWCo+aLmjjVbntmX6HLD5RCi/xKsivYEBhnRD+d9224zFf008ZpLMPlWF0ZodYZw==", "dev": true, "license": "MIT" }, @@ -11260,6 +11655,8 @@ }, "node_modules/hyphenate-style-name": { "version": "1.1.0", + "resolved": "https://registry.npmjs.org/hyphenate-style-name/-/hyphenate-style-name-1.1.0.tgz", + "integrity": "sha512-WDC/ui2VVRrz3jOVi+XtjqkDjiVjTtFaAGiW37k6b+ohyQ5wYDOGkvCZa8+H0nx3gyvv0+BST9xuOgIyGQ00gw==", "license": "BSD-3-Clause" }, "node_modules/iconv-lite": { @@ -11324,6 +11721,8 @@ }, "node_modules/immediate": { "version": "3.0.6", + "resolved": "https://registry.npmjs.org/immediate/-/immediate-3.0.6.tgz", + "integrity": "sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ==", "license": "MIT" }, "node_modules/immer": { @@ -11624,7 +12023,9 @@ } }, "node_modules/is-core-module": { - "version": "2.15.1", + "version": "2.16.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.1.tgz", + "integrity": "sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==", "dev": true, "license": "MIT", "dependencies": { @@ -11737,6 +12138,8 @@ }, "node_modules/is-in-browser": { "version": "1.1.3", + "resolved": "https://registry.npmjs.org/is-in-browser/-/is-in-browser-1.1.3.tgz", + "integrity": "sha512-FeXIBgG/CPGd/WUxuEyvgGTEfwiG9Z4EKGxjNMRqviiIIfsmgrpnHLffEDdwUHqNva1VEW91o3xBT/m8Elgl9g==", "license": "MIT" }, "node_modules/is-inside-container": { @@ -11790,6 +12193,19 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/is-negative-zero": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.3.tgz", + "integrity": "sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-network-error": { "version": "1.1.0", "dev": true, @@ -11803,6 +12219,8 @@ }, "node_modules/is-node-process": { "version": "1.2.0", + "resolved": "https://registry.npmjs.org/is-node-process/-/is-node-process-1.2.0.tgz", + "integrity": "sha512-Vg4o6/fqPxIjtxgUH5QLJhwZ7gW5diGCVlXpuUfELC62CuxM1iHcRe51f2W1FDy04Ai4KJkagKjx3XaqyfRKXw==", "dev": true, "license": "MIT" }, @@ -11866,14 +12284,6 @@ "node": ">=6" } }, - "node_modules/is-path-inside": { - "version": "3.0.3", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, "node_modules/is-plain-obj": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-4.1.0.tgz", @@ -12059,11 +12469,13 @@ } }, "node_modules/is-weakref": { - "version": "1.1.0", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.1.1.tgz", + "integrity": "sha512-6i9mGWSlqzNMEqpCp93KwRS1uUOodk2OJ6b+sq7ZPDSy2WuI5NFIxp/254TytR8ftefexkWn5xNiHUNpPOfSew==", "dev": true, "license": "MIT", "dependencies": { - "call-bound": "^1.0.2" + "call-bound": "^1.0.3" }, "engines": { "node": ">= 0.4" @@ -12373,6 +12785,8 @@ }, "node_modules/json-buffer": { "version": "3.0.1", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", + "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", "dev": true, "license": "MIT" }, @@ -12425,6 +12839,8 @@ }, "node_modules/jss": { "version": "10.10.0", + "resolved": "https://registry.npmjs.org/jss/-/jss-10.10.0.tgz", + "integrity": "sha512-cqsOTS7jqPsPMjtKYDUpdFC0AbhYFLTcuGRqymgmdJIeQ8cH7+AgX7YSgQy79wXloZq2VvATYxUOUQEvS1V/Zw==", "license": "MIT", "dependencies": { "@babel/runtime": "^7.3.1", @@ -12439,6 +12855,8 @@ }, "node_modules/jss-plugin-camel-case": { "version": "10.10.0", + "resolved": "https://registry.npmjs.org/jss-plugin-camel-case/-/jss-plugin-camel-case-10.10.0.tgz", + "integrity": "sha512-z+HETfj5IYgFxh1wJnUAU8jByI48ED+v0fuTuhKrPR+pRBYS2EDwbusU8aFOpCdYhtRc9zhN+PJ7iNE8pAWyPw==", "license": "MIT", "dependencies": { "@babel/runtime": "^7.3.1", @@ -12448,6 +12866,8 @@ }, "node_modules/jss-plugin-compose": { "version": "10.10.0", + "resolved": "https://registry.npmjs.org/jss-plugin-compose/-/jss-plugin-compose-10.10.0.tgz", + "integrity": "sha512-F5kgtWpI2XfZ3Z8eP78tZEYFdgTIbpA/TMuX3a8vwrNolYtN1N4qJR/Ob0LAsqIwCMLojtxN7c7Oo/+Vz6THow==", "license": "MIT", "dependencies": { "@babel/runtime": "^7.3.1", @@ -12457,6 +12877,8 @@ }, "node_modules/jss-plugin-default-unit": { "version": "10.10.0", + "resolved": "https://registry.npmjs.org/jss-plugin-default-unit/-/jss-plugin-default-unit-10.10.0.tgz", + "integrity": "sha512-SvpajxIECi4JDUbGLefvNckmI+c2VWmP43qnEy/0eiwzRUsafg5DVSIWSzZe4d2vFX1u9nRDP46WCFV/PXVBGQ==", "license": "MIT", "dependencies": { "@babel/runtime": "^7.3.1", @@ -12465,6 +12887,8 @@ }, "node_modules/jss-plugin-expand": { "version": "10.10.0", + "resolved": "https://registry.npmjs.org/jss-plugin-expand/-/jss-plugin-expand-10.10.0.tgz", + "integrity": "sha512-ymT62W2OyDxBxr7A6JR87vVX9vTq2ep5jZLIdUSusfBIEENLdkkc0lL/Xaq8W9s3opUq7R0sZQpzRWELrfVYzA==", "license": "MIT", "dependencies": { "@babel/runtime": "^7.3.1", @@ -12473,6 +12897,8 @@ }, "node_modules/jss-plugin-extend": { "version": "10.10.0", + "resolved": "https://registry.npmjs.org/jss-plugin-extend/-/jss-plugin-extend-10.10.0.tgz", + "integrity": "sha512-sKYrcMfr4xxigmIwqTjxNcHwXJIfvhvjTNxF+Tbc1NmNdyspGW47Ey6sGH8BcQ4FFQhLXctpWCQSpDwdNmXSwg==", "license": "MIT", "dependencies": { "@babel/runtime": "^7.3.1", @@ -12482,6 +12908,8 @@ }, "node_modules/jss-plugin-global": { "version": "10.10.0", + "resolved": "https://registry.npmjs.org/jss-plugin-global/-/jss-plugin-global-10.10.0.tgz", + "integrity": "sha512-icXEYbMufiNuWfuazLeN+BNJO16Ge88OcXU5ZDC2vLqElmMybA31Wi7lZ3lf+vgufRocvPj8443irhYRgWxP+A==", "license": "MIT", "dependencies": { "@babel/runtime": "^7.3.1", @@ -12490,6 +12918,8 @@ }, "node_modules/jss-plugin-nested": { "version": "10.10.0", + "resolved": "https://registry.npmjs.org/jss-plugin-nested/-/jss-plugin-nested-10.10.0.tgz", + "integrity": "sha512-9R4JHxxGgiZhurDo3q7LdIiDEgtA1bTGzAbhSPyIOWb7ZubrjQe8acwhEQ6OEKydzpl8XHMtTnEwHXCARLYqYA==", "license": "MIT", "dependencies": { "@babel/runtime": "^7.3.1", @@ -12499,6 +12929,8 @@ }, "node_modules/jss-plugin-props-sort": { "version": "10.10.0", + "resolved": "https://registry.npmjs.org/jss-plugin-props-sort/-/jss-plugin-props-sort-10.10.0.tgz", + "integrity": "sha512-5VNJvQJbnq/vRfje6uZLe/FyaOpzP/IH1LP+0fr88QamVrGJa0hpRRyAa0ea4U/3LcorJfBFVyC4yN2QC73lJg==", "license": "MIT", "dependencies": { "@babel/runtime": "^7.3.1", @@ -12507,6 +12939,8 @@ }, "node_modules/jss-plugin-rule-value-function": { "version": "10.10.0", + "resolved": "https://registry.npmjs.org/jss-plugin-rule-value-function/-/jss-plugin-rule-value-function-10.10.0.tgz", + "integrity": "sha512-uEFJFgaCtkXeIPgki8ICw3Y7VMkL9GEan6SqmT9tqpwM+/t+hxfMUdU4wQ0MtOiMNWhwnckBV0IebrKcZM9C0g==", "license": "MIT", "dependencies": { "@babel/runtime": "^7.3.1", @@ -12516,6 +12950,8 @@ }, "node_modules/jss-plugin-rule-value-observable": { "version": "10.10.0", + "resolved": "https://registry.npmjs.org/jss-plugin-rule-value-observable/-/jss-plugin-rule-value-observable-10.10.0.tgz", + "integrity": "sha512-ZLMaYrR3QE+vD7nl3oNXuj79VZl9Kp8/u6A1IbTPDcuOu8b56cFdWRZNZ0vNr8jHewooEeq2doy8Oxtymr2ZPA==", "license": "MIT", "dependencies": { "@babel/runtime": "^7.3.1", @@ -12525,6 +12961,8 @@ }, "node_modules/jss-plugin-template": { "version": "10.10.0", + "resolved": "https://registry.npmjs.org/jss-plugin-template/-/jss-plugin-template-10.10.0.tgz", + "integrity": "sha512-ocXZBIOJOA+jISPdsgkTs8wwpK6UbsvtZK5JI7VUggTD6LWKbtoxUzadd2TpfF+lEtlhUmMsCkTRNkITdPKa6w==", "license": "MIT", "dependencies": { "@babel/runtime": "^7.3.1", @@ -12534,6 +12972,8 @@ }, "node_modules/jss-plugin-vendor-prefixer": { "version": "10.10.0", + "resolved": "https://registry.npmjs.org/jss-plugin-vendor-prefixer/-/jss-plugin-vendor-prefixer-10.10.0.tgz", + "integrity": "sha512-UY/41WumgjW8r1qMCO8l1ARg7NHnfRVWRhZ2E2m0DMYsr2DD91qIXLyNhiX83hHswR7Wm4D+oDYNC1zWCJWtqg==", "license": "MIT", "dependencies": { "@babel/runtime": "^7.3.1", @@ -12543,6 +12983,8 @@ }, "node_modules/jss-preset-default": { "version": "10.10.0", + "resolved": "https://registry.npmjs.org/jss-preset-default/-/jss-preset-default-10.10.0.tgz", + "integrity": "sha512-GL175Wt2FGhjE+f+Y3aWh+JioL06/QWFgZp53CbNNq6ZkVU0TDplD8Bxm9KnkotAYn3FlplNqoW5CjyLXcoJ7Q==", "license": "MIT", "dependencies": { "@babel/runtime": "^7.3.1", @@ -12605,6 +13047,8 @@ }, "node_modules/keyv": { "version": "4.5.4", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", + "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", "dev": true, "license": "MIT", "dependencies": { @@ -12620,7 +13064,9 @@ } }, "node_modules/known-css-properties": { - "version": "0.35.0", + "version": "0.37.0", + "resolved": "https://registry.npmjs.org/known-css-properties/-/known-css-properties-0.37.0.tgz", + "integrity": "sha512-JCDrsP4Z1Sb9JwG0aJ8Eo2r7k4Ou5MwmThS/6lcIe1ICyb7UBJKGRIUUdqc2ASdE/42lgz6zFUnzAIhtXnBVrQ==", "dev": true, "license": "MIT" }, @@ -12673,6 +13119,8 @@ }, "node_modules/lie": { "version": "3.1.1", + "resolved": "https://registry.npmjs.org/lie/-/lie-3.1.1.tgz", + "integrity": "sha512-RiNhHysUjhrDQntfYSfY4MU24coXXdEOgw9WGcKHNeEwffDYbF//u87M1EWaMGzuFoSbqW0C9C6lEEhDOAswfw==", "license": "MIT", "dependencies": { "immediate": "~3.0.5" @@ -12749,6 +13197,8 @@ }, "node_modules/localforage": { "version": "1.10.0", + "resolved": "https://registry.npmjs.org/localforage/-/localforage-1.10.0.tgz", + "integrity": "sha512-14/H1aX7hzBBmmh7sGPd+AOMkkIrHM3Z1PAyGgZigA1H1p5O5ANnMyWzvpAETtG68/dC4pC0ncy3+PPGzXZHPg==", "license": "Apache-2.0", "dependencies": { "lie": "3.1.1" @@ -12782,6 +13232,8 @@ }, "node_modules/lodash.debounce": { "version": "4.0.8", + "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", + "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==", "dev": true, "license": "MIT" }, @@ -12826,9 +13278,9 @@ } }, "node_modules/loupe": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/loupe/-/loupe-3.1.3.tgz", - "integrity": "sha512-kkIp7XSkP78ZxJEsSxW3712C6teJVoeHHwgo9zJ380de7IYyJ2ISlxojcH2pC5OFLewESmnRi/+XCDIEEVyoug==", + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/loupe/-/loupe-3.1.4.tgz", + "integrity": "sha512-wJzkKwJrheKtknCOKNEtDK4iqg/MxmZheEMtSTYvnzRdEYaZzmgH976nenp8WdJRdx5Vc1X/9MO0Oszl6ezeXg==", "dev": true, "license": "MIT" }, @@ -12954,7 +13406,6 @@ }, "node_modules/math-intrinsics": { "version": "1.1.0", - "dev": true, "license": "MIT", "engines": { "node": ">= 0.4" @@ -13279,9 +13730,9 @@ "license": "MIT" }, "node_modules/msw": { - "version": "2.7.5", - "resolved": "https://registry.npmjs.org/msw/-/msw-2.7.5.tgz", - "integrity": "sha512-00MyTlY3TJutBa5kiU+jWiz2z5pNJDYHn2TgPkGkh92kMmNH43RqvMXd8y/7HxNn8RjzUbvZWYZjcS36fdb6sw==", + "version": "2.10.5", + "resolved": "https://registry.npmjs.org/msw/-/msw-2.10.5.tgz", + "integrity": "sha512-0EsQCrCI1HbhpBWd89DvmxY6plmvrM96b0sCIztnvcNHQbXn5vqwm1KlXslo6u4wN9LFGLC1WFjjgljcQhe40A==", "dev": true, "hasInstallScript": true, "license": "MIT", @@ -13290,7 +13741,7 @@ "@bundled-es-modules/statuses": "^1.0.1", "@bundled-es-modules/tough-cookie": "^0.1.6", "@inquirer/confirm": "^5.0.0", - "@mswjs/interceptors": "^0.37.0", + "@mswjs/interceptors": "^0.39.1", "@open-draft/deferred-promise": "^2.2.0", "@open-draft/until": "^2.1.0", "@types/cookie": "^0.6.0", @@ -13361,7 +13812,9 @@ "license": "MIT" }, "node_modules/nanoid": { - "version": "3.3.8", + "version": "3.3.11", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz", + "integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==", "funding": [ { "type": "github", @@ -13563,7 +14016,9 @@ } }, "node_modules/npm-run-all/node_modules/brace-expansion": { - "version": "1.1.11", + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", + "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", "dev": true, "license": "MIT", "dependencies": { @@ -13598,7 +14053,9 @@ "license": "MIT" }, "node_modules/npm-run-all/node_modules/cross-spawn": { - "version": "6.0.5", + "version": "6.0.6", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.6.tgz", + "integrity": "sha512-VqCUuhcd1iB+dsv8gxPttb5iZh/D0iubSP21g36KXdEuf6I5JiioesUVjpCdHV9MZRUfVFlvwtIUyPfxo5trtw==", "dev": true, "license": "MIT", "dependencies": { @@ -13885,7 +14342,9 @@ } }, "node_modules/object-inspect": { - "version": "1.13.3", + "version": "1.13.4", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.4.tgz", + "integrity": "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==", "dev": true, "license": "MIT", "engines": { @@ -14044,7 +14503,9 @@ } }, "node_modules/on-headers": { - "version": "1.0.2", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.1.0.tgz", + "integrity": "sha512-737ZY3yNnXy37FHkQxPzt4UZ2UWPWiCZWLvFZ4fu5cueciegX0zGPnrlY6bwRg4FdQOe9YU8MkmJwGhoMybl8A==", "dev": true, "license": "MIT", "engines": { @@ -14152,6 +14613,8 @@ }, "node_modules/outvariant": { "version": "1.4.3", + "resolved": "https://registry.npmjs.org/outvariant/-/outvariant-1.4.3.tgz", + "integrity": "sha512-+Sl2UErvtsoajRDKCE5/dBz4DIvHXQQnAxtQTF04OJxY0+DyZXSo5P5Bb7XYWOh81syohlYL24hbDwxedPUJCA==", "dev": true, "license": "MIT" }, @@ -14336,6 +14799,8 @@ }, "node_modules/parse-srcset": { "version": "1.0.2", + "resolved": "https://registry.npmjs.org/parse-srcset/-/parse-srcset-1.0.2.tgz", + "integrity": "sha512-/2qh0lav6CmI15FzA3i/2Bzk2zCgQhGMkvhOhKNcBVQ1ldgpbfiNTVslmooUmWJcADi1f1kIeynbDRVzNlfR6Q==", "license": "MIT" }, "node_modules/parse5": { @@ -14423,7 +14888,9 @@ "license": "ISC" }, "node_modules/path-to-regexp": { - "version": "0.1.10", + "version": "0.1.12", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.12.tgz", + "integrity": "sha512-RA1GjUVMnvYFxuqovrEqZoxxW5NUZqbwKtYz/Tt7nXerk0LbLblQmrsgdeOxV5SFHf0UDggjS/bSeOZwt1pmEQ==", "dev": true, "license": "MIT" }, @@ -14659,9 +15126,9 @@ } }, "node_modules/postcss": { - "version": "8.5.3", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.3.tgz", - "integrity": "sha512-dle9A3yYxlBSrt8Fu+IpjGT8SY8hN0mlaA6GY8t0P5PjIOZemULz/E2Bnm/2dcUOena75OTNkHI76uZBNUUq3A==", + "version": "8.5.6", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.6.tgz", + "integrity": "sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==", "funding": [ { "type": "opencollective", @@ -14678,7 +15145,7 @@ ], "license": "MIT", "dependencies": { - "nanoid": "^3.3.8", + "nanoid": "^3.3.11", "picocolors": "^1.1.1", "source-map-js": "^1.2.1" }, @@ -14688,6 +15155,8 @@ }, "node_modules/postcss-media-query-parser": { "version": "0.2.3", + "resolved": "https://registry.npmjs.org/postcss-media-query-parser/-/postcss-media-query-parser-0.2.3.tgz", + "integrity": "sha512-3sOlxmbKcSHMjlUXQZKQ06jOswE7oVkXPxmZdoB1r5l0q6gTFTQSHxNxOrCccElbW7dxNytifNEo8qidX2Vsig==", "dev": true, "license": "MIT" }, @@ -14881,14 +15350,16 @@ } }, "node_modules/prettier": { - "version": "2.8.8", + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.6.2.tgz", + "integrity": "sha512-I7AIg5boAr5R0FFtJ6rCfD+LFsWHp81dolrFD8S79U9tb8Az2nGrJncnMSnys+bpQJfRUzqs9hnA81OAA3hCuQ==", "dev": true, "license": "MIT", "bin": { - "prettier": "bin-prettier.js" + "prettier": "bin/prettier.cjs" }, "engines": { - "node": ">=10.13.0" + "node": ">=14" }, "funding": { "url": "https://github.com/prettier/prettier?sponsor=1" @@ -14896,6 +15367,8 @@ }, "node_modules/prettier-linter-helpers": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz", + "integrity": "sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==", "dev": true, "license": "MIT", "dependencies": { @@ -15207,6 +15680,8 @@ }, "node_modules/react-display-name": { "version": "0.2.5", + "resolved": "https://registry.npmjs.org/react-display-name/-/react-display-name-0.2.5.tgz", + "integrity": "sha512-I+vcaK9t4+kypiSgaiVWAipqHRXYmZIuAiS8vzFvXHHXVigg/sMKwlRgLy6LH2i3rmP+0Vzfl5lFsFRwF1r3pg==", "license": "MIT" }, "node_modules/react-dom": { @@ -15221,11 +15696,13 @@ } }, "node_modules/react-dropzone": { - "version": "14.2.3", + "version": "14.3.5", + "resolved": "https://registry.npmjs.org/react-dropzone/-/react-dropzone-14.3.5.tgz", + "integrity": "sha512-9nDUaEEpqZLOz5v5SUcFA0CjM4vq8YbqO0WRls+EYT7+DvxUdzDPKNCPLqGfj3YL9MsniCLCD4RFA6M95V6KMQ==", "license": "MIT", "dependencies": { - "attr-accept": "^2.2.2", - "file-selector": "^0.6.0", + "attr-accept": "^2.2.4", + "file-selector": "^2.1.0", "prop-types": "^15.8.1" }, "engines": { @@ -15241,6 +15718,8 @@ }, "node_modules/react-jss": { "version": "10.10.0", + "resolved": "https://registry.npmjs.org/react-jss/-/react-jss-10.10.0.tgz", + "integrity": "sha512-WLiq84UYWqNBF6579/uprcIUnM1TSywYq6AIjKTTTG5ziJl9Uy+pwuvpN3apuyVwflMbD60PraeTKT7uWH9XEQ==", "license": "MIT", "dependencies": { "@babel/runtime": "^7.3.1", @@ -15486,14 +15965,39 @@ "version": "0.14.1", "license": "MIT" }, - "node_modules/regexp.prototype.flags": { - "version": "1.5.3", + "node_modules/regexp.escape": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/regexp.escape/-/regexp.escape-2.0.1.tgz", + "integrity": "sha512-JItRb4rmyTzmERBkAf6J87LjDPy/RscIwmaJQ3gsFlAzrmZbZU8LwBw5IydFZXW9hqpgbPlGbMhtpqtuAhMgtg==", "dev": true, "license": "MIT", "dependencies": { "call-bind": "^1.0.7", "define-properties": "^1.2.1", + "es-abstract": "^1.23.3", "es-errors": "^1.3.0", + "for-each": "^0.3.3", + "safe-regex-test": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/regexp.prototype.flags": { + "version": "1.5.4", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.4.tgz", + "integrity": "sha512-dYqgNSZbDwkaJ2ceRd9ojCGjBq+mOm9LmtXnAnEGyHhN/5R7iDW2TRw3h+o/jCFxus3P2LfWIIiwowAjANm7IA==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "define-properties": "^1.2.1", + "es-errors": "^1.3.0", + "get-proto": "^1.0.1", + "gopd": "^1.2.0", "set-function-name": "^2.0.2" }, "engines": { @@ -15619,17 +16123,22 @@ "license": "MIT" }, "node_modules/resolve": { - "version": "1.22.8", + "version": "1.22.10", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.10.tgz", + "integrity": "sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==", "dev": true, "license": "MIT", "dependencies": { - "is-core-module": "^2.13.0", + "is-core-module": "^2.16.0", "path-parse": "^1.0.7", "supports-preserve-symlinks-flag": "^1.0.0" }, "bin": { "resolve": "bin/resolve" }, + "engines": { + "node": ">= 0.4" + }, "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -15891,7 +16400,9 @@ "license": "MIT" }, "node_modules/sanitize-html": { - "version": "2.13.1", + "version": "2.15.0", + "resolved": "https://registry.npmjs.org/sanitize-html/-/sanitize-html-2.15.0.tgz", + "integrity": "sha512-wIjst57vJGpLyBP8ioUbg6ThwJie5SuSIjHxJg53v5Fg+kUK+AXlb7bK3RNXpp315MvwM+0OBGCV6h5pPHsVhA==", "license": "MIT", "dependencies": { "deepmerge": "^4.2.2", @@ -15904,6 +16415,8 @@ }, "node_modules/sanitize-html/node_modules/dom-serializer": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz", + "integrity": "sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==", "license": "MIT", "dependencies": { "domelementtype": "^2.3.0", @@ -15916,6 +16429,8 @@ }, "node_modules/sanitize-html/node_modules/domhandler": { "version": "5.0.3", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz", + "integrity": "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==", "license": "BSD-2-Clause", "dependencies": { "domelementtype": "^2.3.0" @@ -15928,7 +16443,9 @@ } }, "node_modules/sanitize-html/node_modules/domutils": { - "version": "3.1.0", + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.2.2.tgz", + "integrity": "sha512-6kZKyUajlDuqlHKVX1w7gyslj9MPIXzIFiz/rGu35uC1wMi+kMhQwGhl4lt9unC9Vb9INnY9Z3/ZA3+FhASLaw==", "license": "BSD-2-Clause", "dependencies": { "dom-serializer": "^2.0.0", @@ -15941,6 +16458,8 @@ }, "node_modules/sanitize-html/node_modules/htmlparser2": { "version": "8.0.2", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-8.0.2.tgz", + "integrity": "sha512-GYdjWKDkbRLkZ5geuHs5NY1puJ+PXwP7+fHPRz06Eirsb9ugf6d8kkXav6ADhcODhFFPMIXyxkxSuMf3D6NCFA==", "funding": [ "https://github.com/fb55/htmlparser2?sponsor=1", { @@ -15957,9 +16476,9 @@ } }, "node_modules/sass": { - "version": "1.88.0", - "resolved": "https://registry.npmjs.org/sass/-/sass-1.88.0.tgz", - "integrity": "sha512-sF6TWQqjFvr4JILXzG4ucGOLELkESHL+I5QJhh7CNaE+Yge0SI+ehCatsXhJ7ymU1hAFcIS3/PBpjdIbXoyVbg==", + "version": "1.90.0", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.90.0.tgz", + "integrity": "sha512-9GUyuksjw70uNpb1MTYWsH9MQHOHY6kwfnkafC24+7aOMZn9+rVMBxRbLvw756mrBFbIsFg6Xw9IkR2Fnn3k+Q==", "dev": true, "license": "MIT", "dependencies": { @@ -16325,6 +16844,8 @@ }, "node_modules/shallow-equal": { "version": "1.2.1", + "resolved": "https://registry.npmjs.org/shallow-equal/-/shallow-equal-1.2.1.tgz", + "integrity": "sha512-S4vJDjHHMBaiZuT9NPb616CSmLf618jawtv3sufLl6ivK8WocjAo58cXwbRV1cgqxH0Qbv+iUt6m05eqEa2IRA==", "license": "MIT" }, "node_modules/shebang-command": { @@ -16499,6 +17020,16 @@ "node": ">= 10" } }, + "node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, "node_modules/slice-ansi": { "version": "4.0.0", "dev": true, @@ -16731,6 +17262,20 @@ "dev": true, "license": "MIT" }, + "node_modules/stop-iteration-iterator": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/stop-iteration-iterator/-/stop-iteration-iterator-1.1.0.tgz", + "integrity": "sha512-eLoXW/DHyl62zxY4SCaIgnRhuMr6ri4juEYARS8E6sCEqzKpOiE521Ucofdx+KnDZl5xmvGYaaKCk5FEOxJCoQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "internal-slot": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/stream-browserify": { "version": "3.0.0", "dev": true, @@ -16750,6 +17295,8 @@ }, "node_modules/strict-event-emitter": { "version": "0.5.1", + "resolved": "https://registry.npmjs.org/strict-event-emitter/-/strict-event-emitter-0.5.1.tgz", + "integrity": "sha512-vMgjE/GGEPEFnhFub6pa4FmJBRBVOLpIII2hvCZ8Kzb7K0hlHo7mQv6xYrBvCL2LtAIBwFUK8wvuJgTVSQ5MFQ==", "dev": true, "license": "MIT" }, @@ -16996,6 +17543,8 @@ }, "node_modules/strip-json-comments": { "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", "dev": true, "license": "MIT", "engines": { @@ -17005,10 +17554,30 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/strip-literal": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-literal/-/strip-literal-3.0.0.tgz", + "integrity": "sha512-TcccoMhJOM3OebGhSBEmp3UZ2SfDMZUEBdRA/9ynfLi8yYajyWX3JiXArcJt4Umh4vISpspkQIY8ZZoCqjbviA==", + "dev": true, + "license": "MIT", + "dependencies": { + "js-tokens": "^9.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/strip-literal/node_modules/js-tokens": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-9.0.1.tgz", + "integrity": "sha512-mxa9E9ITFOt0ban3j6L5MpjwegGz6lBQmM1IJkWeBZGcMxto50+eWdjC/52xDbS2vy0k7vIMK0Fe2wfL9OQSpQ==", + "dev": true, + "license": "MIT" + }, "node_modules/stylelint": { - "version": "16.18.0", - "resolved": "https://registry.npmjs.org/stylelint/-/stylelint-16.18.0.tgz", - "integrity": "sha512-OXb68qzesv7J70BSbFwfK3yTVLEVXiQ/ro6wUE4UrSbKCMjLLA02S8Qq3LC01DxKyVjk7z8xh35aB4JzO3/sNA==", + "version": "16.23.1", + "resolved": "https://registry.npmjs.org/stylelint/-/stylelint-16.23.1.tgz", + "integrity": "sha512-dNvDTsKV1U2YtiUDfe9d2gp902veFeo3ecCWdGlmLm2WFrAV0+L5LoOj/qHSBABQwMsZPJwfC4bf39mQm1S5zw==", "dev": true, "funding": [ { @@ -17022,9 +17591,9 @@ ], "license": "MIT", "dependencies": { - "@csstools/css-parser-algorithms": "^3.0.4", - "@csstools/css-tokenizer": "^3.0.3", - "@csstools/media-query-list-parser": "^4.0.2", + "@csstools/css-parser-algorithms": "^3.0.5", + "@csstools/css-tokenizer": "^3.0.4", + "@csstools/media-query-list-parser": "^4.0.3", "@csstools/selector-specificity": "^5.0.0", "@dual-bundle/import-meta-resolve": "^4.1.0", "balanced-match": "^2.0.0", @@ -17032,24 +17601,24 @@ "cosmiconfig": "^9.0.0", "css-functions-list": "^3.2.3", "css-tree": "^3.1.0", - "debug": "^4.3.7", + "debug": "^4.4.1", "fast-glob": "^3.3.3", "fastest-levenshtein": "^1.0.16", - "file-entry-cache": "^10.0.7", + "file-entry-cache": "^10.1.3", "global-modules": "^2.0.0", "globby": "^11.1.0", "globjoin": "^0.1.4", "html-tags": "^3.3.1", - "ignore": "^7.0.3", + "ignore": "^7.0.5", "imurmurhash": "^0.1.4", "is-plain-object": "^5.0.0", - "known-css-properties": "^0.35.0", + "known-css-properties": "^0.37.0", "mathml-tag-names": "^2.1.3", "meow": "^13.2.0", "micromatch": "^4.0.8", "normalize-path": "^3.0.0", "picocolors": "^1.1.1", - "postcss": "^8.5.3", + "postcss": "^8.5.6", "postcss-resolve-nested-selector": "^0.1.6", "postcss-safe-parser": "^7.0.1", "postcss-selector-parser": "^7.1.0", @@ -17069,7 +17638,9 @@ } }, "node_modules/stylelint-config-recommended": { - "version": "14.0.1", + "version": "17.0.0", + "resolved": "https://registry.npmjs.org/stylelint-config-recommended/-/stylelint-config-recommended-17.0.0.tgz", + "integrity": "sha512-WaMSdEiPfZTSFVoYmJbxorJfA610O0tlYuU2aEwY33UQhSPgFbClrVJYWvy3jGJx+XW37O+LyNLiZOEXhKhJmA==", "dev": true, "funding": [ { @@ -17086,24 +17657,26 @@ "node": ">=18.12.0" }, "peerDependencies": { - "stylelint": "^16.1.0" + "stylelint": "^16.23.0" } }, "node_modules/stylelint-config-recommended-scss": { - "version": "14.1.0", + "version": "16.0.0", + "resolved": "https://registry.npmjs.org/stylelint-config-recommended-scss/-/stylelint-config-recommended-scss-16.0.0.tgz", + "integrity": "sha512-Vh09MlGgKUwgHwuTQXPI6CbwMgXEUpjv+6EpVhZtHkGUJY7yFIoJby3Wcjd12rvdp6xOMdMIKU48Qu6KwZK+mw==", "dev": true, "license": "MIT", "dependencies": { "postcss-scss": "^4.0.9", - "stylelint-config-recommended": "^14.0.1", - "stylelint-scss": "^6.4.0" + "stylelint-config-recommended": "^17.0.0", + "stylelint-scss": "^6.12.1" }, "engines": { - "node": ">=18.12.0" + "node": ">=20" }, "peerDependencies": { "postcss": "^8.3.3", - "stylelint": "^16.6.1" + "stylelint": "^16.23.1" }, "peerDependenciesMeta": { "postcss": { @@ -17112,17 +17685,19 @@ } }, "node_modules/stylelint-scss": { - "version": "6.10.1", + "version": "6.12.1", + "resolved": "https://registry.npmjs.org/stylelint-scss/-/stylelint-scss-6.12.1.tgz", + "integrity": "sha512-UJUfBFIvXfly8WKIgmqfmkGKPilKB4L5j38JfsDd+OCg2GBdU0vGUV08Uw82tsRZzd4TbsUURVVNGeOhJVF7pA==", "dev": true, "license": "MIT", "dependencies": { "css-tree": "^3.0.1", "is-plain-object": "^5.0.0", - "known-css-properties": "^0.35.0", - "mdn-data": "^2.14.0", + "known-css-properties": "^0.36.0", + "mdn-data": "^2.21.0", "postcss-media-query-parser": "^0.2.3", "postcss-resolve-nested-selector": "^0.1.6", - "postcss-selector-parser": "^7.0.0", + "postcss-selector-parser": "^7.1.0", "postcss-value-parser": "^4.2.0" }, "engines": { @@ -17132,19 +17707,20 @@ "stylelint": "^16.0.2" } }, + "node_modules/stylelint-scss/node_modules/known-css-properties": { + "version": "0.36.0", + "resolved": "https://registry.npmjs.org/known-css-properties/-/known-css-properties-0.36.0.tgz", + "integrity": "sha512-A+9jP+IUmuQsNdsLdcg6Yt7voiMF/D4K83ew0OpJtpu+l34ef7LaohWV0Rc6KNvzw6ZDizkqfyB5JznZnzuKQA==", + "dev": true, + "license": "MIT" + }, "node_modules/stylelint-scss/node_modules/mdn-data": { - "version": "2.15.0", + "version": "2.21.0", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.21.0.tgz", + "integrity": "sha512-+ZKPQezM5vYJIkCxaC+4DTnRrVZR1CgsKLu5zsQERQx6Tea8Y+wMx5A24rq8A8NepCeatIQufVAekKNgiBMsGQ==", "dev": true, "license": "CC0-1.0" }, - "node_modules/stylelint/node_modules/array-union": { - "version": "2.1.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, "node_modules/stylelint/node_modules/balanced-match": { "version": "2.0.0", "dev": true, @@ -17176,56 +17752,31 @@ } }, "node_modules/stylelint/node_modules/file-entry-cache": { - "version": "10.0.7", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-10.0.7.tgz", - "integrity": "sha512-txsf5fu3anp2ff3+gOJJzRImtrtm/oa9tYLN0iTuINZ++EyVR/nRrg2fKYwvG/pXDofcrvvb0scEbX3NyW/COw==", + "version": "10.1.3", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-10.1.3.tgz", + "integrity": "sha512-D+w75Ub8T55yor7fPgN06rkCAUbAYw2vpxJmmjv/GDAcvCnv9g7IvHhIZoxzRZThrXPFI2maeY24pPbtyYU7Lg==", "dev": true, "license": "MIT", "dependencies": { - "flat-cache": "^6.1.7" + "flat-cache": "^6.1.12" } }, "node_modules/stylelint/node_modules/flat-cache": { - "version": "6.1.7", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-6.1.7.tgz", - "integrity": "sha512-qwZ4xf1v1m7Rc9XiORly31YaChvKt6oNVHuqqZcoED/7O+ToyNVGobKsIAopY9ODcWpEDKEBAbrSOCBHtNQvew==", + "version": "6.1.12", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-6.1.12.tgz", + "integrity": "sha512-U+HqqpZPPXP5d24bWuRzjGqVqUcw64k4nZAbruniDwdRg0H10tvN7H6ku1tjhA4rg5B9GS3siEvwO2qjJJ6f8Q==", "dev": true, "license": "MIT", "dependencies": { - "cacheable": "^1.8.9", + "cacheable": "^1.10.3", "flatted": "^3.3.3", - "hookified": "^1.7.1" - } - }, - "node_modules/stylelint/node_modules/globby": { - "version": "11.1.0", - "dev": true, - "license": "MIT", - "dependencies": { - "array-union": "^2.1.0", - "dir-glob": "^3.0.1", - "fast-glob": "^3.2.9", - "ignore": "^5.2.0", - "merge2": "^1.4.1", - "slash": "^3.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/stylelint/node_modules/globby/node_modules/ignore": { - "version": "5.3.2", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 4" + "hookified": "^1.10.0" } }, "node_modules/stylelint/node_modules/ignore": { - "version": "7.0.3", + "version": "7.0.5", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-7.0.5.tgz", + "integrity": "sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg==", "dev": true, "license": "MIT", "engines": { @@ -17240,14 +17791,6 @@ "node": ">=8" } }, - "node_modules/stylelint/node_modules/slash": { - "version": "3.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, "node_modules/stylus-lookup": { "version": "6.0.0", "dev": true, @@ -17363,6 +17906,8 @@ }, "node_modules/symbol-observable": { "version": "1.2.0", + "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.2.0.tgz", + "integrity": "sha512-e900nM8RRtGhlV36KGEU9k65K3mPb1WV70OdjfxlG2EAuM1noi/E/BaW/uMhL7bPEssK8QV57vN3esixjUvcXQ==", "license": "MIT", "engines": { "node": ">=0.10.0" @@ -17373,8 +17918,26 @@ "dev": true, "license": "MIT" }, + "node_modules/synckit": { + "version": "0.11.8", + "resolved": "https://registry.npmjs.org/synckit/-/synckit-0.11.8.tgz", + "integrity": "sha512-+XZ+r1XGIJGeQk3VvXhT6xx/VpbHsRzsTkGgF6E5RX9TTXD0118l87puaEBZ566FhqblC6U0d4XnubznJDm30A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@pkgr/core": "^0.2.4" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/synckit" + } + }, "node_modules/tabbable": { "version": "6.2.0", + "resolved": "https://registry.npmjs.org/tabbable/-/tabbable-6.2.0.tgz", + "integrity": "sha512-Cat63mxsVJlzYvN51JmVXIgNoUokrIaT2zLclCXjRd8boZ0004U4KCs/sToJ75C6sdlByWxpYnb5Boif1VSFew==", "license": "MIT" }, "node_modules/table": { @@ -17569,13 +18132,10 @@ "@pkgjs/parseargs": "^0.11.0" } }, - "node_modules/text-table": { - "version": "0.2.0", - "dev": true, - "license": "MIT" - }, "node_modules/theming": { "version": "3.3.0", + "resolved": "https://registry.npmjs.org/theming/-/theming-3.3.0.tgz", + "integrity": "sha512-u6l4qTJRDaWZsqa8JugaNt7Xd8PPl9+gonZaIe28vAhqgHMIG/DOyFPqiKN/gQLQYj05tHv+YQdNILL4zoiAVA==", "license": "MIT", "dependencies": { "hoist-non-react-statics": "^3.3.0", @@ -17629,6 +18189,8 @@ }, "node_modules/tiny-warning": { "version": "1.0.3", + "resolved": "https://registry.npmjs.org/tiny-warning/-/tiny-warning-1.0.3.tgz", + "integrity": "sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA==", "license": "MIT" }, "node_modules/tinybench": { @@ -17642,9 +18204,9 @@ "license": "MIT" }, "node_modules/tinyglobby": { - "version": "0.2.13", - "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.13.tgz", - "integrity": "sha512-mEwzpUgrLySlveBwEVDMKk5B57bhLPYovRfPAXD5gA/98Opn0rCDj3GtLwFvCvH5RK9uPCExUROW5NjDwvqkxw==", + "version": "0.2.14", + "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.14.tgz", + "integrity": "sha512-tX5e7OM1HnYr2+a2C/4V0htOcSQcoSTH9KgJnVvNm5zm/cyEWKJ7j7YutsH9CxMdtOkkLFy2AHrMci9IM8IPZQ==", "dev": true, "license": "MIT", "dependencies": { @@ -17687,7 +18249,9 @@ } }, "node_modules/tinypool": { - "version": "1.0.2", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/tinypool/-/tinypool-1.1.1.tgz", + "integrity": "sha512-Zba82s87IFq9A9XmjiX5uZA/ARWDrB03OHlq+Vw1fSdt0I+4/Kutwy8BP4Y/y/aORMo61FQ0vIb5j44vSo5Pkg==", "dev": true, "license": "MIT", "engines": { @@ -17703,9 +18267,9 @@ } }, "node_modules/tinyspy": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/tinyspy/-/tinyspy-3.0.2.tgz", - "integrity": "sha512-n1cw8k1k0x4pgA2+9XrOkFydTerNcJ1zWCO5Nn9scWHTD+5tp8dghT2x1uduQePZTZgd3Tupf+x9BxJjeJi77Q==", + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/tinyspy/-/tinyspy-4.0.3.tgz", + "integrity": "sha512-t2T/WLB2WRgZ9EpE4jgPJ9w+i66UZfDc8wHh0xrwiRNN+UwH98GIJkTeZqX9rg0i0ptwzqW+uYeIF0T4F8LR7A==", "dev": true, "license": "MIT", "engines": { @@ -18031,9 +18595,9 @@ } }, "node_modules/ts-pattern": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/ts-pattern/-/ts-pattern-5.7.0.tgz", - "integrity": "sha512-0/FvIG4g3kNkYgbNwBBW5pZBkfpeYQnH+2AA3xmjkCAit/DSDPKmgwC3fKof4oYUq6gupClVOJlFl+939VRBMg==", + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/ts-pattern/-/ts-pattern-5.7.1.tgz", + "integrity": "sha512-EGs8PguQqAAUIcQfK4E9xdXxB6s2GK4sJfT/vcc9V1ELIvC4LH/zXu2t/5fajtv6oiRCxdv7BgtVK3vWgROxag==", "dev": true, "license": "MIT" }, @@ -18181,6 +18745,30 @@ "node": ">=14.17" } }, + "node_modules/typescript-eslint": { + "version": "8.40.0", + "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.40.0.tgz", + "integrity": "sha512-Xvd2l+ZmFDPEt4oj1QEXzA4A2uUK6opvKu3eGN9aGjB8au02lIVcLyi375w94hHyejTOmzIU77L8ol2sRg9n7Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/eslint-plugin": "8.40.0", + "@typescript-eslint/parser": "8.40.0", + "@typescript-eslint/typescript-estree": "8.40.0", + "@typescript-eslint/utils": "8.40.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <6.0.0" + } + }, "node_modules/ufo": { "version": "1.5.4", "resolved": "https://registry.npmjs.org/ufo/-/ufo-1.5.4.tgz", @@ -18206,9 +18794,9 @@ } }, "node_modules/undici-types": { - "version": "6.21.0", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz", - "integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==", + "version": "7.10.0", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.10.0.tgz", + "integrity": "sha512-t5Fy/nfn+14LuOc2KNYg75vZqClpAiqscVvMygNnlsHBFpSXdJaYtXMcdNLpl/Qvc3P2cB3s6lOV51nqsFq4ag==", "license": "MIT" }, "node_modules/unicode-canonical-property-names-ecmascript": { @@ -18330,7 +18918,9 @@ } }, "node_modules/update-browserslist-db": { - "version": "1.1.1", + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.3.tgz", + "integrity": "sha512-UxhIZQ+QInVdunkDAaiazvvT/+fXL5Osr0JZlJulepYu6Jd7qJtDZjlur0emRlT71EN3ScPoE7gvsuIKKNavKw==", "funding": [ { "type": "opencollective", @@ -18348,7 +18938,7 @@ "license": "MIT", "dependencies": { "escalade": "^3.2.0", - "picocolors": "^1.1.0" + "picocolors": "^1.1.1" }, "bin": { "update-browserslist-db": "cli.js" @@ -18545,17 +19135,17 @@ } }, "node_modules/vite-node": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/vite-node/-/vite-node-3.1.2.tgz", - "integrity": "sha512-/8iMryv46J3aK13iUXsei5G/A3CUlW4665THCPS+K8xAaqrVWiGB4RfXMQXCLjpK9P2eK//BczrVkn5JLAk6DA==", + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/vite-node/-/vite-node-3.2.4.tgz", + "integrity": "sha512-EbKSKh+bh1E1IFxeO0pg1n4dvoOTt0UDiXMd/qn++r98+jPO1xtJilvXldeuQ8giIB5IkpjCgMleHMNEsGH6pg==", "dev": true, "license": "MIT", "dependencies": { "cac": "^6.7.14", - "debug": "^4.4.0", - "es-module-lexer": "^1.6.0", + "debug": "^4.4.1", + "es-module-lexer": "^1.7.0", "pathe": "^2.0.3", - "vite": "^5.0.0 || ^6.0.0" + "vite": "^5.0.0 || ^6.0.0 || ^7.0.0-0" }, "bin": { "vite-node": "vite-node.mjs" @@ -18596,32 +19186,34 @@ } }, "node_modules/vitest": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/vitest/-/vitest-3.1.2.tgz", - "integrity": "sha512-WaxpJe092ID1C0mr+LH9MmNrhfzi8I65EX/NRU/Ld016KqQNRgxSOlGNP1hHN+a/F8L15Mh8klwaF77zR3GeDQ==", + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/vitest/-/vitest-3.2.4.tgz", + "integrity": "sha512-LUCP5ev3GURDysTWiP47wRRUpLKMOfPh+yKTx3kVIEiu5KOMeqzpnYNsKyOoVrULivR8tLcks4+lga33Whn90A==", "dev": true, "license": "MIT", "dependencies": { - "@vitest/expect": "3.1.2", - "@vitest/mocker": "3.1.2", - "@vitest/pretty-format": "^3.1.2", - "@vitest/runner": "3.1.2", - "@vitest/snapshot": "3.1.2", - "@vitest/spy": "3.1.2", - "@vitest/utils": "3.1.2", + "@types/chai": "^5.2.2", + "@vitest/expect": "3.2.4", + "@vitest/mocker": "3.2.4", + "@vitest/pretty-format": "^3.2.4", + "@vitest/runner": "3.2.4", + "@vitest/snapshot": "3.2.4", + "@vitest/spy": "3.2.4", + "@vitest/utils": "3.2.4", "chai": "^5.2.0", - "debug": "^4.4.0", + "debug": "^4.4.1", "expect-type": "^1.2.1", "magic-string": "^0.30.17", "pathe": "^2.0.3", + "picomatch": "^4.0.2", "std-env": "^3.9.0", "tinybench": "^2.9.0", "tinyexec": "^0.3.2", - "tinyglobby": "^0.2.13", - "tinypool": "^1.0.2", + "tinyglobby": "^0.2.14", + "tinypool": "^1.1.1", "tinyrainbow": "^2.0.0", - "vite": "^5.0.0 || ^6.0.0", - "vite-node": "3.1.2", + "vite": "^5.0.0 || ^6.0.0 || ^7.0.0-0", + "vite-node": "3.2.4", "why-is-node-running": "^2.3.0" }, "bin": { @@ -18637,8 +19229,8 @@ "@edge-runtime/vm": "*", "@types/debug": "^4.1.12", "@types/node": "^18.0.0 || ^20.0.0 || >=22.0.0", - "@vitest/browser": "3.1.2", - "@vitest/ui": "3.1.2", + "@vitest/browser": "3.2.4", + "@vitest/ui": "3.2.4", "happy-dom": "*", "jsdom": "*" }, @@ -18685,6 +19277,19 @@ "@jridgewell/sourcemap-codec": "^1.5.0" } }, + "node_modules/vitest/node_modules/picomatch": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.2.tgz", + "integrity": "sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, "node_modules/w3c-xmlserializer": { "version": "5.0.0", "dev": true, @@ -19228,14 +19833,17 @@ } }, "node_modules/which-typed-array": { - "version": "1.1.18", + "version": "1.1.19", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.19.tgz", + "integrity": "sha512-rEvr90Bck4WZt9HHFC4DJMsjvu7x+r6bImz0/BrbWb7A2djJ8hnZMrWnHo9F8ssv0OMErasDhftrfROTyqSDrw==", "dev": true, "license": "MIT", "dependencies": { "available-typed-arrays": "^1.0.7", "call-bind": "^1.0.8", - "call-bound": "^1.0.3", - "for-each": "^0.3.3", + "call-bound": "^1.0.4", + "for-each": "^0.3.5", + "get-proto": "^1.0.1", "gopd": "^1.2.0", "has-tostringtag": "^1.0.2" }, @@ -19322,9 +19930,9 @@ } }, "node_modules/ws": { - "version": "8.18.1", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.1.tgz", - "integrity": "sha512-RKW2aJZMXeMxVpnZ6bck+RswznaxmzdULiBr6KY7XkTnW8uvt0iT9H5DkHUChXrc+uurzwa0rVI16n/Xzjdz1w==", + "version": "8.18.3", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.3.tgz", + "integrity": "sha512-PEIGCY5tSlUt50cqyMXfCzX+oOPqN0vuGqWzbcJ2xvnkzkq46oOpz7dQaTDBdfICb4N14+GARUDw2XV2N4tvzg==", "dev": true, "license": "MIT", "engines": { @@ -19567,25 +20175,25 @@ } }, "@babel/compat-data": { - "version": "7.27.2", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.27.2.tgz", - "integrity": "sha512-TUtMJYRPyUb/9aU8f3K0mjmjf6M9N5Woshn2CS6nqJSeJtTtQcpLUXjGt9vbF8ZGff0El99sWkLgzwW3VXnxZQ==" + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.28.0.tgz", + "integrity": "sha512-60X7qkglvrap8mn1lh2ebxXdZYtUcpd7gsmy9kLaBJ4i/WdY8PqTSdxyA8qraikqKQK5C1KRBKXqznrVapyNaw==" }, "@babel/core": { - "version": "7.26.10", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.26.10.tgz", - "integrity": "sha512-vMqyb7XCDMPvJFFOaT9kxtiRh42GwlZEg1/uIgtZshS5a/8OaduUfCi7kynKgc3Tw/6Uo2D+db9qBttghhmxwQ==", + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.28.0.tgz", + "integrity": "sha512-UlLAnTPrFdNGoFtbSXwcGFQBtQZJCNjaN6hQNP3UPvuNXT1i82N26KL3dZeIpNalWywr9IuQuncaAfUaS1g6sQ==", "requires": { "@ampproject/remapping": "^2.2.0", - "@babel/code-frame": "^7.26.2", - "@babel/generator": "^7.26.10", - "@babel/helper-compilation-targets": "^7.26.5", - "@babel/helper-module-transforms": "^7.26.0", - "@babel/helpers": "^7.26.10", - "@babel/parser": "^7.26.10", - "@babel/template": "^7.26.9", - "@babel/traverse": "^7.26.10", - "@babel/types": "^7.26.10", + "@babel/code-frame": "^7.27.1", + "@babel/generator": "^7.28.0", + "@babel/helper-compilation-targets": "^7.27.2", + "@babel/helper-module-transforms": "^7.27.3", + "@babel/helpers": "^7.27.6", + "@babel/parser": "^7.28.0", + "@babel/template": "^7.27.2", + "@babel/traverse": "^7.28.0", + "@babel/types": "^7.28.0", "convert-source-map": "^2.0.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", @@ -19594,7 +20202,9 @@ } }, "@babel/eslint-parser": { - "version": "7.25.9", + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/@babel/eslint-parser/-/eslint-parser-7.28.0.tgz", + "integrity": "sha512-N4ntErOlKvcbTt01rr5wj3y55xnIdx1ymrfIr8C2WnM1Y9glFgWaGDEULJIazOX3XM9NRzhfJ6zZnQ1sBNWU+w==", "dev": true, "requires": { "@nicolo-ribaudo/eslint-scope-5-internals": "5.1.1-v1", @@ -19603,24 +20213,24 @@ } }, "@babel/generator": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.27.1.tgz", - "integrity": "sha512-UnJfnIpc/+JO0/+KRVQNGU+y5taA5vCbwN8+azkX6beii/ZF+enZJSOKo11ZSzGJjlNfJHfQtmQT8H+9TXPG2w==", + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.28.0.tgz", + "integrity": "sha512-lJjzvrbEeWrhB4P3QBsH7tey117PjLZnDbLiQEKjQ/fNJTjuq4HSqgFA+UNSwZT8D7dxxbnuSBMsa1lrWzKlQg==", "requires": { - "@babel/parser": "^7.27.1", - "@babel/types": "^7.27.1", - "@jridgewell/gen-mapping": "^0.3.5", - "@jridgewell/trace-mapping": "^0.3.25", + "@babel/parser": "^7.28.0", + "@babel/types": "^7.28.0", + "@jridgewell/gen-mapping": "^0.3.12", + "@jridgewell/trace-mapping": "^0.3.28", "jsesc": "^3.0.2" } }, "@babel/helper-annotate-as-pure": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.27.1.tgz", - "integrity": "sha512-WnuuDILl9oOBbKnb4L+DyODx7iC47XfzmNCpTttFsSp6hTG7XZxu60+4IO+2/hPfcGOoKbFiwoI/+zwARbNQow==", + "version": "7.27.3", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.27.3.tgz", + "integrity": "sha512-fXSwMQqitTGeHLBC08Eq5yXz2m37E4pJX1qAU1+2cNedz/ifv/bVXft90VeSav5nFO61EcNgwr0aJxbyPaWBPg==", "dev": true, "requires": { - "@babel/types": "^7.27.1" + "@babel/types": "^7.27.3" } }, "@babel/helper-compilation-targets": { @@ -19662,16 +20272,23 @@ } }, "@babel/helper-define-polyfill-provider": { - "version": "0.6.3", + "version": "0.6.5", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.6.5.tgz", + "integrity": "sha512-uJnGFcPsWQK8fvjgGP5LZUZZsYGIoPeRjSF5PGwrelYgq7Q15/Ft9NGFp1zglwgIv//W0uG4BevRuSJRyylZPg==", "dev": true, "requires": { - "@babel/helper-compilation-targets": "^7.22.6", - "@babel/helper-plugin-utils": "^7.22.5", - "debug": "^4.1.1", + "@babel/helper-compilation-targets": "^7.27.2", + "@babel/helper-plugin-utils": "^7.27.1", + "debug": "^4.4.1", "lodash.debounce": "^4.0.8", - "resolve": "^1.14.2" + "resolve": "^1.22.10" } }, + "@babel/helper-globals": { + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/@babel/helper-globals/-/helper-globals-7.28.0.tgz", + "integrity": "sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw==" + }, "@babel/helper-member-expression-to-functions": { "version": "7.27.1", "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.27.1.tgz", @@ -19692,13 +20309,13 @@ } }, "@babel/helper-module-transforms": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.27.1.tgz", - "integrity": "sha512-9yHn519/8KvTU5BjTVEEeIM3w9/2yXNKoD82JifINImhpKkARMJKPP59kLo+BafpdN5zgNeIcS4jsGDmd3l58g==", + "version": "7.27.3", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.27.3.tgz", + "integrity": "sha512-dSOvYwvyLsWBeIRyOeHXp5vPj5l1I011r52FM1+r1jCERv+aFXYk4whgQccYEGYxK2H3ZAIA8nuPkQ0HaUo3qg==", "requires": { "@babel/helper-module-imports": "^7.27.1", "@babel/helper-validator-identifier": "^7.27.1", - "@babel/traverse": "^7.27.1" + "@babel/traverse": "^7.27.3" } }, "@babel/helper-optimise-call-expression": { @@ -19775,20 +20392,20 @@ } }, "@babel/helpers": { - "version": "7.26.10", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.26.10.tgz", - "integrity": "sha512-UPYc3SauzZ3JGgj87GgZ89JVdC5dj0AoetR5Bw6wj4niittNyFh6+eOGonYvJ1ao6B8lEa3Q3klS7ADZ53bc5g==", + "version": "7.27.6", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.27.6.tgz", + "integrity": "sha512-muE8Tt8M22638HU31A3CgfSUciwz1fhATfoVai05aPXGor//CdWDCbnlY1yvBPo07njuVOCNGCSp/GTt12lIug==", "requires": { - "@babel/template": "^7.26.9", - "@babel/types": "^7.26.10" + "@babel/template": "^7.27.2", + "@babel/types": "^7.27.6" } }, "@babel/parser": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.27.1.tgz", - "integrity": "sha512-I0dZ3ZpCrJ1c04OqlNsQcKiZlsrXf/kkE4FXzID9rIOYICsAbA8mMDzhW/luRNAHdCNt7os/u8wenklZDlUVUQ==", + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.28.0.tgz", + "integrity": "sha512-jVZGvOxOuNSsuQuLRTh13nU0AogFlw32w/MT+LV6D3sP5WdbW61E77RnkbaO2dUvmPAYrBDJXGn5gGS6tH4j8g==", "requires": { - "@babel/types": "^7.27.1" + "@babel/types": "^7.28.0" } }, "@babel/plugin-bugfix-firefox-class-in-computed-class-key": { @@ -19873,12 +20490,12 @@ } }, "@babel/plugin-syntax-typescript": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.25.9.tgz", - "integrity": "sha512-hjMgRy5hb8uJJjUcdWunWVcoi9bGpJp8p5Ol1229PoN6aytsLwNMgmdftO23wnCLMfVmTwZDWMPNq/D1SY60JQ==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.27.1.tgz", + "integrity": "sha512-xfYCBMxveHrRMnAWl1ZlPXOZjzkN82THFvLhQhFXFt81Z5HnN+EtUkZhv/zcKpmT3fzmWZB0ywiBrbC3vogbwQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.25.9" + "@babel/helper-plugin-utils": "^7.27.1" } }, "@babel/plugin-syntax-unicode-sets-regex": { @@ -19899,14 +20516,14 @@ } }, "@babel/plugin-transform-async-generator-functions": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.27.1.tgz", - "integrity": "sha512-eST9RrwlpaoJBDHShc+DS2SG4ATTi2MYNb4OxYkf3n+7eb49LWpnS+HSpVfW4x927qQwgk8A2hGNVaajAEw0EA==", + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.28.0.tgz", + "integrity": "sha512-BEOdvX4+M765icNPZeidyADIvQ1m1gmunXufXxvRESy/jNNyfovIqUyE7MVgGBjWktCoJlzvFA1To2O4ymIO3Q==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.27.1", "@babel/helper-remap-async-to-generator": "^7.27.1", - "@babel/traverse": "^7.27.1" + "@babel/traverse": "^7.28.0" } }, "@babel/plugin-transform-async-to-generator": { @@ -19930,9 +20547,9 @@ } }, "@babel/plugin-transform-block-scoping": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.27.1.tgz", - "integrity": "sha512-QEcFlMl9nGTgh1rn2nIeU5bkfb9BAjaQcWbiP4LvKxUot52ABcTkpcyJ7f2Q2U2RuQ84BNLgts3jRme2dTx6Fw==", + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.28.0.tgz", + "integrity": "sha512-gKKnwjpdx5sER/wl0WN0efUBFzF/56YZO0RJrSYP4CljXnP31ByY7fol89AzomdlLNzI36AvOTmYHsnZTCkq8Q==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.27.1" @@ -19959,17 +20576,17 @@ } }, "@babel/plugin-transform-classes": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.27.1.tgz", - "integrity": "sha512-7iLhfFAubmpeJe/Wo2TVuDrykh/zlWXLzPNdL0Jqn/Xu8R3QQ8h9ff8FQoISZOsw74/HFqFI7NX63HN7QFIHKA==", + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.28.0.tgz", + "integrity": "sha512-IjM1IoJNw72AZFlj33Cu8X0q2XK/6AaVC3jQu+cgQ5lThWD5ajnuUAml80dqRmOhmPkTH8uAwnpMu9Rvj0LTRA==", "dev": true, "requires": { - "@babel/helper-annotate-as-pure": "^7.27.1", - "@babel/helper-compilation-targets": "^7.27.1", + "@babel/helper-annotate-as-pure": "^7.27.3", + "@babel/helper-compilation-targets": "^7.27.2", + "@babel/helper-globals": "^7.28.0", "@babel/helper-plugin-utils": "^7.27.1", "@babel/helper-replace-supers": "^7.27.1", - "@babel/traverse": "^7.27.1", - "globals": "^11.1.0" + "@babel/traverse": "^7.28.0" } }, "@babel/plugin-transform-computed-properties": { @@ -19983,12 +20600,13 @@ } }, "@babel/plugin-transform-destructuring": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.27.1.tgz", - "integrity": "sha512-ttDCqhfvpE9emVkXbPD8vyxxh4TWYACVybGkDj+oReOGwnp066ITEivDlLwe0b1R0+evJ13IXQuLNB5w1fhC5Q==", + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.28.0.tgz", + "integrity": "sha512-v1nrSMBiKcodhsyJ4Gf+Z0U/yawmJDBOTpEB3mcQY52r9RIyPneGyAS/yM6seP/8I+mWI3elOMtT5dB8GJVs+A==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.27.1" + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/traverse": "^7.28.0" } }, "@babel/plugin-transform-dotall-regex": { @@ -20029,6 +20647,16 @@ "@babel/helper-plugin-utils": "^7.27.1" } }, + "@babel/plugin-transform-explicit-resource-management": { + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-explicit-resource-management/-/plugin-transform-explicit-resource-management-7.28.0.tgz", + "integrity": "sha512-K8nhUcn3f6iB+P3gwCv/no7OdzOZQcKchW6N389V6PD8NUWKZHzndOd9sPDVbMoBsbmjMqlB4L9fm+fEFNVlwQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/plugin-transform-destructuring": "^7.28.0" + } + }, "@babel/plugin-transform-exponentiation-operator": { "version": "7.27.1", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.27.1.tgz", @@ -20184,15 +20812,16 @@ } }, "@babel/plugin-transform-object-rest-spread": { - "version": "7.27.2", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.27.2.tgz", - "integrity": "sha512-AIUHD7xJ1mCrj3uPozvtngY3s0xpv7Nu7DoUSnzNY6Xam1Cy4rUznR//pvMHOhQ4AvbCexhbqXCtpxGHOGOO6g==", + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.28.0.tgz", + "integrity": "sha512-9VNGikXxzu5eCiQjdE4IZn8sb9q7Xsk5EXLDBKUYg1e/Tve8/05+KJEtcxGxAgCY5t/BpKQM+JEL/yT4tvgiUA==", "dev": true, "requires": { "@babel/helper-compilation-targets": "^7.27.2", "@babel/helper-plugin-utils": "^7.27.1", - "@babel/plugin-transform-destructuring": "^7.27.1", - "@babel/plugin-transform-parameters": "^7.27.1" + "@babel/plugin-transform-destructuring": "^7.28.0", + "@babel/plugin-transform-parameters": "^7.27.7", + "@babel/traverse": "^7.28.0" } }, "@babel/plugin-transform-object-super": { @@ -20225,9 +20854,9 @@ } }, "@babel/plugin-transform-parameters": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.27.1.tgz", - "integrity": "sha512-018KRk76HWKeZ5l4oTj2zPpSh+NbGdt0st5S6x0pga6HgrjBOJb24mMDHorFopOOd6YHkLgOZ+zaCjZGPO4aKg==", + "version": "7.27.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.27.7.tgz", + "integrity": "sha512-qBkYTYCb76RRxUM6CcZA5KRu8K4SM8ajzVeUgVdMVO9NN9uI/GaVmBg/WKJJGnNokV9SY8FxNOVWGXzqzUidBg==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.27.1" @@ -20295,17 +20924,21 @@ } }, "@babel/plugin-transform-react-jsx-self": { - "version": "7.25.9", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.27.1.tgz", + "integrity": "sha512-6UzkCs+ejGdZ5mFFC/OCUrv028ab2fp1znZmCZjAOBKiBK2jXD1O+BPSfX8X2qjJ75fZBMSnQn3Rq2mrBJK2mw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.25.9" + "@babel/helper-plugin-utils": "^7.27.1" } }, "@babel/plugin-transform-react-jsx-source": { - "version": "7.25.9", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.27.1.tgz", + "integrity": "sha512-zbwoTsBruTeKB9hSq73ha66iFeJHuaFkUbwvqElnygoNbj/jHRsSeokowZFN3CZ64IvEqcmmkVe89OPXc7ldAw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.25.9" + "@babel/helper-plugin-utils": "^7.27.1" } }, "@babel/plugin-transform-react-pure-annotations": { @@ -20319,9 +20952,9 @@ } }, "@babel/plugin-transform-regenerator": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.27.1.tgz", - "integrity": "sha512-B19lbbL7PMrKr52BNPjCqg1IyNUIjTcxKj8uX9zHO+PmWN93s19NDr/f69mIkEp2x9nmDJ08a7lgHaTTzvW7mw==", + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.28.0.tgz", + "integrity": "sha512-LOAozRVbqxEVjSKfhGnuLoE4Kz4Oc5UJzuvFUhSsQzdCdaAQu06mG8zDv2GFSerM62nImUZ7K92vxnQcLSDlCQ==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.27.1" @@ -20393,16 +21026,16 @@ } }, "@babel/plugin-transform-typescript": { - "version": "7.27.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.27.0.tgz", - "integrity": "sha512-fRGGjO2UEGPjvEcyAZXRXAS8AfdaQoq7HnxAbJoAoW10B9xOKesmmndJv+Sym2a+9FHWZ9KbyyLCe9s0Sn5jtg==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.27.1.tgz", + "integrity": "sha512-Q5sT5+O4QUebHdbwKedFBEwRLb02zJ7r4A5Gg2hUoLuU3FjdMcyqcywqUrLCaDsFCxzokf7u9kuy7qz51YUuAg==", "dev": true, "requires": { - "@babel/helper-annotate-as-pure": "^7.25.9", - "@babel/helper-create-class-features-plugin": "^7.27.0", - "@babel/helper-plugin-utils": "^7.26.5", - "@babel/helper-skip-transparent-expression-wrappers": "^7.25.9", - "@babel/plugin-syntax-typescript": "^7.25.9" + "@babel/helper-annotate-as-pure": "^7.27.1", + "@babel/helper-create-class-features-plugin": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1", + "@babel/plugin-syntax-typescript": "^7.27.1" } }, "@babel/plugin-transform-unicode-escapes": { @@ -20445,12 +21078,12 @@ } }, "@babel/preset-env": { - "version": "7.27.2", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.27.2.tgz", - "integrity": "sha512-Ma4zSuYSlGNRlCLO+EAzLnCmJK2vdstgv+n7aUP+/IKZrOfWHOJVdSJtuub8RzHTj3ahD37k5OKJWvzf16TQyQ==", + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.28.0.tgz", + "integrity": "sha512-VmaxeGOwuDqzLl5JUkIRM1X2Qu2uKGxHEQWh+cvvbl7JuJRgKGJSfsEF/bUaxFhJl/XAyxBe7q7qSuTbKFuCyg==", "dev": true, "requires": { - "@babel/compat-data": "^7.27.2", + "@babel/compat-data": "^7.28.0", "@babel/helper-compilation-targets": "^7.27.2", "@babel/helper-plugin-utils": "^7.27.1", "@babel/helper-validator-option": "^7.27.1", @@ -20464,19 +21097,20 @@ "@babel/plugin-syntax-import-attributes": "^7.27.1", "@babel/plugin-syntax-unicode-sets-regex": "^7.18.6", "@babel/plugin-transform-arrow-functions": "^7.27.1", - "@babel/plugin-transform-async-generator-functions": "^7.27.1", + "@babel/plugin-transform-async-generator-functions": "^7.28.0", "@babel/plugin-transform-async-to-generator": "^7.27.1", "@babel/plugin-transform-block-scoped-functions": "^7.27.1", - "@babel/plugin-transform-block-scoping": "^7.27.1", + "@babel/plugin-transform-block-scoping": "^7.28.0", "@babel/plugin-transform-class-properties": "^7.27.1", "@babel/plugin-transform-class-static-block": "^7.27.1", - "@babel/plugin-transform-classes": "^7.27.1", + "@babel/plugin-transform-classes": "^7.28.0", "@babel/plugin-transform-computed-properties": "^7.27.1", - "@babel/plugin-transform-destructuring": "^7.27.1", + "@babel/plugin-transform-destructuring": "^7.28.0", "@babel/plugin-transform-dotall-regex": "^7.27.1", "@babel/plugin-transform-duplicate-keys": "^7.27.1", "@babel/plugin-transform-duplicate-named-capturing-groups-regex": "^7.27.1", "@babel/plugin-transform-dynamic-import": "^7.27.1", + "@babel/plugin-transform-explicit-resource-management": "^7.28.0", "@babel/plugin-transform-exponentiation-operator": "^7.27.1", "@babel/plugin-transform-export-namespace-from": "^7.27.1", "@babel/plugin-transform-for-of": "^7.27.1", @@ -20493,15 +21127,15 @@ "@babel/plugin-transform-new-target": "^7.27.1", "@babel/plugin-transform-nullish-coalescing-operator": "^7.27.1", "@babel/plugin-transform-numeric-separator": "^7.27.1", - "@babel/plugin-transform-object-rest-spread": "^7.27.2", + "@babel/plugin-transform-object-rest-spread": "^7.28.0", "@babel/plugin-transform-object-super": "^7.27.1", "@babel/plugin-transform-optional-catch-binding": "^7.27.1", "@babel/plugin-transform-optional-chaining": "^7.27.1", - "@babel/plugin-transform-parameters": "^7.27.1", + "@babel/plugin-transform-parameters": "^7.27.7", "@babel/plugin-transform-private-methods": "^7.27.1", "@babel/plugin-transform-private-property-in-object": "^7.27.1", "@babel/plugin-transform-property-literals": "^7.27.1", - "@babel/plugin-transform-regenerator": "^7.27.1", + "@babel/plugin-transform-regenerator": "^7.28.0", "@babel/plugin-transform-regexp-modifiers": "^7.27.1", "@babel/plugin-transform-reserved-words": "^7.27.1", "@babel/plugin-transform-shorthand-properties": "^7.27.1", @@ -20514,10 +21148,10 @@ "@babel/plugin-transform-unicode-regex": "^7.27.1", "@babel/plugin-transform-unicode-sets-regex": "^7.27.1", "@babel/preset-modules": "0.1.6-no-external-plugins", - "babel-plugin-polyfill-corejs2": "^0.4.10", - "babel-plugin-polyfill-corejs3": "^0.11.0", - "babel-plugin-polyfill-regenerator": "^0.6.1", - "core-js-compat": "^3.40.0", + "babel-plugin-polyfill-corejs2": "^0.4.14", + "babel-plugin-polyfill-corejs3": "^0.13.0", + "babel-plugin-polyfill-regenerator": "^0.6.5", + "core-js-compat": "^3.43.0", "semver": "^6.3.1" } }, @@ -20545,16 +21179,16 @@ } }, "@babel/preset-typescript": { - "version": "7.27.0", - "resolved": "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.27.0.tgz", - "integrity": "sha512-vxaPFfJtHhgeOVXRKuHpHPAOgymmy8V8I65T1q53R7GCZlefKeCaTyDs3zOPHTTbmquvNlQYC5klEvWsBAtrBQ==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.27.1.tgz", + "integrity": "sha512-l7WfQfX0WK4M0v2RudjuQK4u99BS6yLHYEmdtVPP7lKV013zr9DygFuWNlnbvQ9LR+LS0Egz/XAvGx5U9MX0fQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.26.5", - "@babel/helper-validator-option": "^7.25.9", - "@babel/plugin-syntax-jsx": "^7.25.9", - "@babel/plugin-transform-modules-commonjs": "^7.26.3", - "@babel/plugin-transform-typescript": "^7.27.0" + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-validator-option": "^7.27.1", + "@babel/plugin-syntax-jsx": "^7.27.1", + "@babel/plugin-transform-modules-commonjs": "^7.27.1", + "@babel/plugin-transform-typescript": "^7.27.1" } }, "@babel/runtime": { @@ -20566,33 +21200,33 @@ } }, "@babel/template": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.27.1.tgz", - "integrity": "sha512-Fyo3ghWMqkHHpHQCoBs2VnYjR4iWFFjguTDEqA5WgZDOrFesVjMhMM2FSqTKSoUSDO1VQtavj8NFpdRBEvJTtg==", + "version": "7.27.2", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.27.2.tgz", + "integrity": "sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw==", "requires": { "@babel/code-frame": "^7.27.1", - "@babel/parser": "^7.27.1", + "@babel/parser": "^7.27.2", "@babel/types": "^7.27.1" } }, "@babel/traverse": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.27.1.tgz", - "integrity": "sha512-ZCYtZciz1IWJB4U61UPu4KEaqyfj+r5T1Q5mqPo+IBpcG9kHv30Z0aD8LXPgC1trYa6rK0orRyAhqUgk4MjmEg==", + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.28.0.tgz", + "integrity": "sha512-mGe7UK5wWyh0bKRfupsUchrQGqvDbZDbKJw+kcRGSmdHVYrv+ltd0pnpDTVpiTqnaBru9iEvA8pz8W46v0Amwg==", "requires": { "@babel/code-frame": "^7.27.1", - "@babel/generator": "^7.27.1", - "@babel/parser": "^7.27.1", - "@babel/template": "^7.27.1", - "@babel/types": "^7.27.1", - "debug": "^4.3.1", - "globals": "^11.1.0" + "@babel/generator": "^7.28.0", + "@babel/helper-globals": "^7.28.0", + "@babel/parser": "^7.28.0", + "@babel/template": "^7.27.2", + "@babel/types": "^7.28.0", + "debug": "^4.3.1" } }, "@babel/types": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.27.1.tgz", - "integrity": "sha512-+EzkxvLNfiUeKMgy/3luqfsCWFRXLb7U6wNQTk60tovuckwB15B191tJWvpp4HjiQWdJkCxO3Wbvc6jlk3Xb2Q==", + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.28.0.tgz", + "integrity": "sha512-jYnje+JyZG5YThjHiF28oT4SIZLnYOcSBb6+SDaFIyzDVSkXQmQQYclJ2R+YxcdmK0AX6x1E5OQNtuh3jHDrUg==", "requires": { "@babel/helper-string-parser": "^7.27.1", "@babel/helper-validator-identifier": "^7.27.1" @@ -20672,16 +21306,22 @@ "dev": true }, "@csstools/css-parser-algorithms": { - "version": "3.0.4", + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/@csstools/css-parser-algorithms/-/css-parser-algorithms-3.0.5.tgz", + "integrity": "sha512-DaDeUkXZKjdGhgYaHNJTV9pV7Y9B3b644jCLs9Upc3VeNGg6LWARAT6O+Q+/COo+2gg/bM5rhpMAtf70WqfBdQ==", "dev": true, "requires": {} }, "@csstools/css-tokenizer": { - "version": "3.0.3", + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@csstools/css-tokenizer/-/css-tokenizer-3.0.4.tgz", + "integrity": "sha512-Vd/9EVDiu6PPJt9yAh6roZP6El1xHrdvIVGjyBsHR0RYwNHgL7FJPyIIW4fANJNG6FtyZfvlRPpFI4ZM/lubvw==", "dev": true }, "@csstools/media-query-list-parser": { - "version": "4.0.2", + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/@csstools/media-query-list-parser/-/media-query-list-parser-4.0.3.tgz", + "integrity": "sha512-HAYH7d3TLRHDOUQK4mZKf9k9Ph/m8Akstg66ywKR4SFAigjs3yBiUeZtFxywiTm5moZMAp/5W/ZuFnNXXYLuuQ==", "dev": true, "requires": {} }, @@ -20816,16 +21456,16 @@ } }, "@currents/playwright": { - "version": "1.13.2", - "resolved": "https://registry.npmjs.org/@currents/playwright/-/playwright-1.13.2.tgz", - "integrity": "sha512-lxYTueNH8JSOhnbpBjV+BkiMLtKQNZgbibLXLBua72jcIWKQGxTge47d70iq6NvIVIjuOB6OL7fORRRFcmdp3w==", + "version": "1.15.3", + "resolved": "https://registry.npmjs.org/@currents/playwright/-/playwright-1.15.3.tgz", + "integrity": "sha512-m2znwZx+y6Z62d03sfC3wv67bqcMzr4HOuh+aG9a6d1rlpbrc8sx+8NzNSAQmuSuBNrrBJXoVSG7G/uj0E2mLA==", "dev": true, "requires": { "@babel/code-frame": "^7.27.1", "@commander-js/extra-typings": "^12.1.0", "@currents/commit-info": "1.0.1-beta.0", "async-retry": "^1.3.3", - "axios": "^1.9.0", + "axios": "^1.10.0", "axios-retry": "^4.5.0", "c12": "^1.11.2", "chalk": "^4.1.2", @@ -20849,12 +21489,13 @@ "pluralize": "^8.0.0", "pretty-ms": "^7.0.1", "proxy-from-env": "^1.1.0", + "regexp.escape": "^2.0.1", "source-map-support": "^0.5.21", "stack-utils": "^2.0.6", "tmp": "^0.2.3", "tmp-promise": "^3.0.3", - "ts-pattern": "^5.7.0", - "ws": "^8.18.1" + "ts-pattern": "^5.7.1", + "ws": "^8.18.3" }, "dependencies": { "@commander-js/extra-typings": { @@ -20927,12 +21568,16 @@ }, "@emotion/is-prop-valid": { "version": "0.7.3", + "resolved": "https://registry.npmjs.org/@emotion/is-prop-valid/-/is-prop-valid-0.7.3.tgz", + "integrity": "sha512-uxJqm/sqwXw3YPA5GXX365OBcJGFtxUVkB6WyezqFHlNe9jqUWH5ur2O2M8dGBz61kn1g3ZBlzUunFQXQIClhA==", "requires": { "@emotion/memoize": "0.7.1" } }, "@emotion/memoize": { - "version": "0.7.1" + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.7.1.tgz", + "integrity": "sha512-Qv4LTqO11jepd5Qmlp3M1YEjBumoTHcHFdgPTQ+sFlIL5myi/7xu/POwP7IRu6odBdmLXdtIs1D6TuW6kbwbbg==" }, "@esbuild/aix-ppc64": { "version": "0.25.2", @@ -21128,14 +21773,63 @@ "version": "4.12.1", "dev": true }, + "@eslint/config-array": { + "version": "0.21.0", + "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.21.0.tgz", + "integrity": "sha512-ENIdc4iLu0d93HeYirvKmrzshzofPw6VkZRKQGe9Nv46ZnWUzcF1xV01dcvEg/1wXUR61OmmlSfyeyO7EvjLxQ==", + "dev": true, + "requires": { + "@eslint/object-schema": "^2.1.6", + "debug": "^4.3.1", + "minimatch": "^3.1.2" + }, + "dependencies": { + "brace-expansion": { + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", + "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } + } + } + }, + "@eslint/config-helpers": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/@eslint/config-helpers/-/config-helpers-0.3.1.tgz", + "integrity": "sha512-xR93k9WhrDYpXHORXpxVL5oHj3Era7wo6k/Wd8/IsQNnZUTzkGS29lyn3nAT05v6ltUuTFVCCYDEGfy2Or/sPA==", + "dev": true + }, + "@eslint/core": { + "version": "0.15.2", + "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.15.2.tgz", + "integrity": "sha512-78Md3/Rrxh83gCxoUc0EiciuOHsIITzLy53m3d9UyiW8y9Dj2D29FeETqyKA+BRK76tnTp6RXWb3pCay8Oyomg==", + "dev": true, + "requires": { + "@types/json-schema": "^7.0.15" + } + }, "@eslint/eslintrc": { - "version": "2.1.4", + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.3.1.tgz", + "integrity": "sha512-gtF186CXhIl1p4pJNGZw8Yc6RlshoePRvE0X91oPGb3vZ8pM3qOS9W9NGPat9LziaBV7XrJWGylNQXkGcnM3IQ==", "dev": true, "requires": { "ajv": "^6.12.4", "debug": "^4.3.2", - "espree": "^9.6.0", - "globals": "^13.19.0", + "espree": "^10.0.1", + "globals": "^14.0.0", "ignore": "^5.2.0", "import-fresh": "^3.2.1", "js-yaml": "^4.1.0", @@ -21145,6 +21839,8 @@ "dependencies": { "ajv": { "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", "dev": true, "requires": { "fast-deep-equal": "^3.1.1", @@ -21154,7 +21850,9 @@ } }, "brace-expansion": { - "version": "1.1.11", + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", + "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", "dev": true, "requires": { "balanced-match": "^1.0.0", @@ -21162,33 +21860,50 @@ } }, "globals": { - "version": "13.24.0", - "dev": true, - "requires": { - "type-fest": "^0.20.2" - } + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-14.0.0.tgz", + "integrity": "sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==", + "dev": true }, "json-schema-traverse": { "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", "dev": true }, "minimatch": { "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "dev": true, "requires": { "brace-expansion": "^1.1.7" } - }, - "type-fest": { - "version": "0.20.2", - "dev": true } } }, "@eslint/js": { - "version": "8.57.1", + "version": "9.32.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.32.0.tgz", + "integrity": "sha512-BBpRFZK3eX6uMLKz8WxFOBIFFcGFJ/g8XuwjTHCqHROSIsopI+ddn/d5Cfh36+7+e5edVS8dbSHnBNhrLEX0zg==", "dev": true }, + "@eslint/object-schema": { + "version": "2.1.6", + "resolved": "https://registry.npmjs.org/@eslint/object-schema/-/object-schema-2.1.6.tgz", + "integrity": "sha512-RBMg5FRL0I0gs51M/guSAj5/e14VQ4tpZnQNWwuDT66P14I43ItmPfIZRhO9fUVIPOAQXU47atlywZ/czoqFPA==", + "dev": true + }, + "@eslint/plugin-kit": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.3.5.tgz", + "integrity": "sha512-Z5kJ+wU3oA7MMIqVR9tyZRtjYPr4OC004Q4Rw7pgOKUOKkJfZ3O24nz3WYfGRpMDNmcOi3TwQOmgm7B7Tpii0w==", + "dev": true, + "requires": { + "@eslint/core": "^0.15.2", + "levn": "^0.4.1" + } + }, "@exodus/schemasafe": { "version": "1.3.0", "dev": true @@ -21204,29 +21919,27 @@ "@hapi/hoek": "^9.0.0" } }, - "@humanwhocodes/config-array": { - "version": "0.13.0", + "@humanfs/core": { + "version": "0.19.1", + "resolved": "https://registry.npmjs.org/@humanfs/core/-/core-0.19.1.tgz", + "integrity": "sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==", + "dev": true + }, + "@humanfs/node": { + "version": "0.16.6", + "resolved": "https://registry.npmjs.org/@humanfs/node/-/node-0.16.6.tgz", + "integrity": "sha512-YuI2ZHQL78Q5HbhDiBA1X4LmYdXCKCMQIfw0pw7piHJwyREFebJUvrQN4cMssyES6x+vfUbx1CIpaQUKYdQZOw==", "dev": true, "requires": { - "@humanwhocodes/object-schema": "^2.0.3", - "debug": "^4.3.1", - "minimatch": "^3.0.5" + "@humanfs/core": "^0.19.1", + "@humanwhocodes/retry": "^0.3.0" }, "dependencies": { - "brace-expansion": { - "version": "1.1.11", - "dev": true, - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "minimatch": { - "version": "3.1.2", - "dev": true, - "requires": { - "brace-expansion": "^1.1.7" - } + "@humanwhocodes/retry": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.3.1.tgz", + "integrity": "sha512-JBxkERygn7Bv/GbN5Rv8Ul6LVknS+5Bp6RgDC/O8gEBU/yeH5Ui5C/OlWrTb6qct7LjjfT6Re2NxB0ln0yYybA==", + "dev": true } } }, @@ -21234,8 +21947,10 @@ "version": "1.0.1", "dev": true }, - "@humanwhocodes/object-schema": { - "version": "2.0.3", + "@humanwhocodes/retry": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.4.3.tgz", + "integrity": "sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ==", "dev": true }, "@inquirer/confirm": { @@ -21332,19 +22047,17 @@ "dev": true }, "@jridgewell/gen-mapping": { - "version": "0.3.5", + "version": "0.3.12", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.12.tgz", + "integrity": "sha512-OuLGC46TjB5BbN1dH8JULVVZY4WTdkF7tV9Ys6wLL1rubZnCMstOhNHueU5bLCrnRuDhKPDM4g6sw4Bel5Gzqg==", "requires": { - "@jridgewell/set-array": "^1.2.1", - "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/sourcemap-codec": "^1.5.0", "@jridgewell/trace-mapping": "^0.3.24" } }, "@jridgewell/resolve-uri": { "version": "3.1.2" }, - "@jridgewell/set-array": { - "version": "1.2.1" - }, "@jridgewell/source-map": { "version": "0.3.6", "requires": { @@ -21356,7 +22069,9 @@ "version": "1.5.0" }, "@jridgewell/trace-mapping": { - "version": "0.3.25", + "version": "0.3.29", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.29.tgz", + "integrity": "sha512-uw6guiW/gcAGPDhLmd77/6lW8QLeiV5RUTsAX46Db6oLhGaVj4lhnPwb184s1bkc8kdVg/+h988dro8GRDpmYQ==", "requires": { "@jridgewell/resolve-uri": "^3.1.0", "@jridgewell/sourcemap-codec": "^1.4.14" @@ -21387,13 +22102,10 @@ "requires": {} }, "@keyv/serialize": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@keyv/serialize/-/serialize-1.0.3.tgz", - "integrity": "sha512-qnEovoOp5Np2JDGonIDL6Ayihw0RhnRh6vxPuHo4RDn1UOzwEo4AeIfpL6UGIrsceWrCMiVPgwRjbHu4vYFc3g==", - "dev": true, - "requires": { - "buffer": "^6.0.3" - } + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@keyv/serialize/-/serialize-1.1.0.tgz", + "integrity": "sha512-RlDgexML7Z63Q8BSaqhXdCYNBy/JQnqYIwxofUrNLGCblOMHp+xux2Q8nLMLlPpgHQPoU0Do8Z6btCpRBEqZ8g==", + "dev": true }, "@kurkle/color": { "version": "0.3.2", @@ -21421,7 +22133,9 @@ } }, "@mswjs/interceptors": { - "version": "0.37.1", + "version": "0.39.2", + "resolved": "https://registry.npmjs.org/@mswjs/interceptors/-/interceptors-0.39.2.tgz", + "integrity": "sha512-RuzCup9Ct91Y7V79xwCb146RaBRHZ7NBbrIUySumd1rpKqHL5OonaqrGIbug5hNwP/fRyxFMA6ISgw4FTtYFYg==", "dev": true, "requires": { "@open-draft/deferred-promise": "^2.2.0", @@ -21434,6 +22148,8 @@ }, "@nicolo-ribaudo/eslint-scope-5-internals": { "version": "5.1.1-v1", + "resolved": "https://registry.npmjs.org/@nicolo-ribaudo/eslint-scope-5-internals/-/eslint-scope-5-internals-5.1.1-v1.tgz", + "integrity": "sha512-54/JRvkLIzzDWshCWfuhadfrfZVPiElY8Fcgmg1HroEly/EDSszzhBAsarCux+D/kOslTRquNzuyGSmUSTTHGg==", "dev": true, "requires": { "eslint-scope": "5.1.1" @@ -21466,10 +22182,14 @@ }, "@open-draft/deferred-promise": { "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@open-draft/deferred-promise/-/deferred-promise-2.2.0.tgz", + "integrity": "sha512-CecwLWx3rhxVQF6V4bAgPS5t+So2sTbPgAzafKkVizyi7tlwpcFpdFqq+wqF2OwNBmqFuu6tOyouTuxgpMfzmA==", "dev": true }, "@open-draft/logger": { "version": "0.3.0", + "resolved": "https://registry.npmjs.org/@open-draft/logger/-/logger-0.3.0.tgz", + "integrity": "sha512-X2g45fzhxH238HKO4xbSr7+wBS8Fvw6ixhTDuvLd5mqh6bJJCFAPwU9mPDxbcrRtfxv4u5IHCEH77BmxvXmmxQ==", "dev": true, "requires": { "is-node-process": "^1.2.0", @@ -21478,6 +22198,8 @@ }, "@open-draft/until": { "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@open-draft/until/-/until-2.1.0.tgz", + "integrity": "sha512-U69T3ItWHvLwGg5eJ0n3I62nWuE6ilHlmz7zM0npLBRvPRd7e6NYmg54vvRtP5mZG7kZqZCFVdsTWo7BPtBujg==", "dev": true }, "@openshift/dynamic-plugin-sdk": { @@ -21547,66 +22269,88 @@ "optional": true }, "@patternfly/patternfly": { - "version": "5.4.1" + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/@patternfly/patternfly/-/patternfly-6.3.1.tgz", + "integrity": "sha512-O/lTo5EHKzer/HNzqMQOQEAMG7izDDkEHpAeJ5+sGaeQ/maB3RK7sQsOPS4DjrnMxt4/cC6LogK2mowlbf1j5Q==" }, "@patternfly/react-code-editor": { - "version": "5.4.1", + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/@patternfly/react-code-editor/-/react-code-editor-6.3.1.tgz", + "integrity": "sha512-lzrION96CR2G3ASjE++dX/dExH08HVcCLXbHdmiiTL4eHfbqXt4edDc+UX619XrbaccJBE+BxNNGKyO8bgpKRg==", "requires": { "@monaco-editor/react": "^4.6.0", - "@patternfly/react-core": "^5.4.0", - "@patternfly/react-icons": "^5.4.0", - "@patternfly/react-styles": "^5.4.0", - "react-dropzone": "14.2.3", - "tslib": "^2.6.3" + "@patternfly/react-core": "6.3.1", + "@patternfly/react-icons": "^6.3.1", + "@patternfly/react-styles": "^6.3.1", + "react-dropzone": "14.3.5", + "tslib": "^2.8.1" } }, "@patternfly/react-component-groups": { - "version": "5.5.8", + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/@patternfly/react-component-groups/-/react-component-groups-6.1.0.tgz", + "integrity": "sha512-8RkQv9wQk+D+nUMFtl4uk0ddMvxZ/+jFwnnXe2fw/BulouDVbpKRI24C1S8i1OQHr3++CbocBmmWRV0iw9Kvlw==", "requires": { - "@patternfly/react-core": "^5.4.1", - "@patternfly/react-icons": "^5.4.0", - "@patternfly/react-table": "^5.4.1", + "@patternfly/react-core": "^6.0.0", + "@patternfly/react-icons": "^6.0.0", + "@patternfly/react-table": "^6.0.0", "clsx": "^2.1.1", "react-jss": "^10.10.0" } }, "@patternfly/react-core": { - "version": "5.4.12", + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/@patternfly/react-core/-/react-core-6.3.1.tgz", + "integrity": "sha512-1qV20nU4M6PA28qnikH9fPLQlkteaZZToFlATjBNBw7aUI6zIvj7U0akkHz8raWcfHAI+tAzGV7dfKjiv035/g==", "requires": { - "@patternfly/react-icons": "^5.4.2", - "@patternfly/react-styles": "^5.4.1", - "@patternfly/react-tokens": "^5.4.1", - "focus-trap": "7.6.2", - "react-dropzone": "^14.2.3", - "tslib": "^2.7.0" + "@patternfly/react-icons": "^6.3.1", + "@patternfly/react-styles": "^6.3.1", + "@patternfly/react-tokens": "^6.3.1", + "focus-trap": "7.6.4", + "react-dropzone": "^14.3.5", + "tslib": "^2.8.1" } }, "@patternfly/react-icons": { - "version": "5.4.2", + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/@patternfly/react-icons/-/react-icons-6.3.1.tgz", + "integrity": "sha512-uiMounSIww1iZLM4pq+X8c3upzwl9iowXRPjR5CA8entb70lwgAXg3PqvypnuTAcilTq1Y3k5sFTqkhz7rgKcQ==", "requires": {} }, "@patternfly/react-styles": { - "version": "5.4.1" + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/@patternfly/react-styles/-/react-styles-6.3.1.tgz", + "integrity": "sha512-hyb+PlO8YITjKh2wBvjdeZhX6FyB3hlf4r6yG4rPOHk4SgneXHjNSdGwQ3szAxgGqtbENCYtOqwD/8ai72GrxQ==" }, "@patternfly/react-table": { - "version": "5.4.14", + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/@patternfly/react-table/-/react-table-6.3.1.tgz", + "integrity": "sha512-ZndBbPcMr/vInP5eELRe9m7MWzRoejRAhWx+25xOdjVAd31/CmMK1nBgZk4QAXaWjH1P+uZaZYsTgr/FMTte2g==", "requires": { - "@patternfly/react-core": "^5.4.12", - "@patternfly/react-icons": "^5.4.2", - "@patternfly/react-styles": "^5.4.1", - "@patternfly/react-tokens": "^5.4.1", + "@patternfly/react-core": "6.3.1", + "@patternfly/react-icons": "6.3.1", + "@patternfly/react-styles": "^6.3.1", + "@patternfly/react-tokens": "^6.3.1", "lodash": "^4.17.21", - "tslib": "^2.7.0" + "tslib": "^2.8.1" } }, "@patternfly/react-tokens": { - "version": "5.4.1" + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/@patternfly/react-tokens/-/react-tokens-6.3.1.tgz", + "integrity": "sha512-wt/xKU1tGCDXUueFb+8/Cwxlm4vUD/Xl26O8MxbSLm6NZAHOUPwytJ7gugloGSPvc/zcsXxEgKANL8UZNO6DTw==" }, "@pkgjs/parseargs": { "version": "0.11.0", "dev": true, "optional": true }, + "@pkgr/core": { + "version": "0.2.7", + "resolved": "https://registry.npmjs.org/@pkgr/core/-/core-0.2.7.tgz", + "integrity": "sha512-YLT9Zo3oNPJoBjBc4q8G2mjU4tqIbf5CEOORbUUr48dCD9q3umJ3IPlVqOqDakPfd2HuwccBaqlGhN4Gmr5OWg==", + "dev": true + }, "@playwright/test": { "version": "1.51.1", "resolved": "https://registry.npmjs.org/@playwright/test/-/test-1.51.1.tgz", @@ -21634,27 +22378,29 @@ "dev": true }, "@redhat-cloud-services/eslint-config-redhat-cloud-services": { - "version": "2.0.12", - "resolved": "https://registry.npmjs.org/@redhat-cloud-services/eslint-config-redhat-cloud-services/-/eslint-config-redhat-cloud-services-2.0.12.tgz", - "integrity": "sha512-PxQD7QOVy2KjoBUYbDmeM+PdIm4/5GYuWwYYJhON0/jnL+efz6WwLXIWmTBZc+XuYI+h7untaMKKQXc6xDwHgw==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@redhat-cloud-services/eslint-config-redhat-cloud-services/-/eslint-config-redhat-cloud-services-3.0.0.tgz", + "integrity": "sha512-ZBomcuwM82hJtRvxcYHj2asLsu4rzNSoidetemEYBNbYxLiprgXj20kiE5vjOdcIaeC+2T1ribdInzQw3oC8JQ==", "dev": true, "requires": { - "@babel/eslint-parser": "^7.19.1", - "eslint-config-prettier": "^8.5.0", - "eslint-plugin-prettier": "^3.4.1", - "eslint-plugin-react": "^7.31.8", - "eslint-plugin-rulesdir": "^0.2.1", - "prettier": "^2.7.1" + "@babel/eslint-parser": "^7.27.0", + "@babel/preset-react": "^7.26.3", + "eslint-config-prettier": "^10.1.2", + "eslint-plugin-prettier": "^5.2.6", + "eslint-plugin-react": "^7.37.5", + "eslint-plugin-rulesdir": "^0.2.2", + "globals": "^16.0.0", + "prettier": "^3.5.3" } }, "@redhat-cloud-services/frontend-components": { - "version": "5.2.6", - "resolved": "https://registry.npmjs.org/@redhat-cloud-services/frontend-components/-/frontend-components-5.2.6.tgz", - "integrity": "sha512-YhA6tQ5KlkVoRfkIzRXQa/cvhQ6sbe6jsYt3QrX8SwJ1ojq0ekqHZDbcaPxS3U34MXnsW6877bjyAya5se+2ug==", + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/@redhat-cloud-services/frontend-components/-/frontend-components-7.0.3.tgz", + "integrity": "sha512-kEEZVN49Dwk2j7MNmLKxGrfJYGxFh2whZJi6TmpqSmgDkNNVZaoCpdWZJiMZQ0Jun6QQ1rEUmarfLV1VrZfujA==", "requires": { - "@patternfly/react-component-groups": "^5.5.5", - "@redhat-cloud-services/frontend-components-utilities": "^5.0.4", - "@redhat-cloud-services/types": "^1.0.19", + "@patternfly/react-component-groups": "^6.0.0", + "@redhat-cloud-services/frontend-components-utilities": "^7.0.0", + "@redhat-cloud-services/types": "^3.0.0", "@scalprum/core": "^0.8.1", "@scalprum/react-core": "^0.9.1", "classnames": "^2.2.5", @@ -21769,26 +22515,21 @@ } }, "@redhat-cloud-services/frontend-components-notifications": { - "version": "4.1.20", - "resolved": "https://registry.npmjs.org/@redhat-cloud-services/frontend-components-notifications/-/frontend-components-notifications-4.1.20.tgz", - "integrity": "sha512-9GGDb7pwhTyzgLpM6xfBetrKDRwLTEu8/Ifn8/8xu/wfm4Ch5TXiib04QV5+W5EcRuWxMZevVhytTNFUqXSBvw==", + "version": "6.1.5", + "resolved": "https://registry.npmjs.org/@redhat-cloud-services/frontend-components-notifications/-/frontend-components-notifications-6.1.5.tgz", + "integrity": "sha512-CanlpBYpIKzLQZCD0Q3J5KezN0bCEeNW/rFclBPJ2CXuiyIwB0o0KRg6yfoF33V95LrDg1J3Q2DNHl8GhS+/mg==", "requires": { - "@redhat-cloud-services/frontend-components": "^5.0.5", - "@redhat-cloud-services/frontend-components-utilities": "^5.0.4", - "redux-promise-middleware": "6.1.3" - }, - "dependencies": { - "redux-promise-middleware": { - "version": "6.1.3", - "requires": {} - } + "@redhat-cloud-services/frontend-components": "^7.0.0", + "@redhat-cloud-services/frontend-components-utilities": "^7.0.0" } }, "@redhat-cloud-services/frontend-components-utilities": { - "version": "5.0.11", + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/@redhat-cloud-services/frontend-components-utilities/-/frontend-components-utilities-7.0.3.tgz", + "integrity": "sha512-Z7ET3BGcniHRC1x2zeHVqsA9JX+selMmgs80SyurXzGNYl+684lKqnBfB1KVt58fbSNjRYPU19TzbFlZ3vYaTQ==", "requires": { - "@redhat-cloud-services/rbac-client": "^1.0.111 || 2.x", - "@redhat-cloud-services/types": "^1.0.19", + "@redhat-cloud-services/rbac-client": "^4.0.2", + "@redhat-cloud-services/types": "^3.0.0", "@sentry/browser": "^7.119.1", "awesome-debounce-promise": "^2.1.0", "axios": "^0.28.1 || ^1.7.0", @@ -21799,29 +22540,35 @@ }, "dependencies": { "p-map": { - "version": "7.0.3" + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-7.0.3.tgz", + "integrity": "sha512-VkndIv2fIB99swvQoA65bm+fsmt6UNdGeIB0oxBs+WhAhdh08QA04JXpI7rbB9r08/nkbysKoya9rtDERYOYMA==" } } }, "@redhat-cloud-services/javascript-clients-shared": { - "version": "1.2.5", + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/@redhat-cloud-services/javascript-clients-shared/-/javascript-clients-shared-1.2.7.tgz", + "integrity": "sha512-DfH1Sdjwc9YYVM2wLznnNfC3+DFpdH8Ak59LW93KQWaPAn8ZHDoEXi/TZ8MisEgWTQv7jpsDVtlVQwOWkzKhUA==", "requires": { "axios": "^1.7.2", "tslib": "^2.6.2" } }, "@redhat-cloud-services/rbac-client": { - "version": "2.2.10", + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@redhat-cloud-services/rbac-client/-/rbac-client-4.0.2.tgz", + "integrity": "sha512-A2FTBDW0biyg4EiZO4WcSpy/D9GGIBnOdbf2cldgiJx4sifvYaZYb2ovvhmrjhax8yxlM4ECsxsOo3aWSVbd5Q==", "requires": { - "@redhat-cloud-services/javascript-clients-shared": "^1.2.4", + "@redhat-cloud-services/javascript-clients-shared": "^1.2.6", "axios": "^1.7.2", "tslib": "^2.6.2" } }, "@redhat-cloud-services/tsc-transform-imports": { - "version": "1.0.24", - "resolved": "https://registry.npmjs.org/@redhat-cloud-services/tsc-transform-imports/-/tsc-transform-imports-1.0.24.tgz", - "integrity": "sha512-N0WkqPbFDgaEBPTeU4tYCTn8xSqccB788mSBh1sEBXJTo4I3IvswXiwrFxe0ZXBUkSrWyvDNVOe5FiZN0r47Gw==", + "version": "1.0.25", + "resolved": "https://registry.npmjs.org/@redhat-cloud-services/tsc-transform-imports/-/tsc-transform-imports-1.0.25.tgz", + "integrity": "sha512-J2O7+k/UeWU4h117WLKvJtmnY9TZnWbS+TdwhwRqfXzFU+BTA3/qEkFO9Xp3HELOIiCIVVHbM8vilxMqIUo1Mw==", "dev": true, "requires": { "glob": "10.3.3" @@ -21841,7 +22588,9 @@ } }, "@redhat-cloud-services/types": { - "version": "1.0.21" + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@redhat-cloud-services/types/-/types-3.0.1.tgz", + "integrity": "sha512-GXw72DDOtKCkl2NlqkjGYVWjfm81LSA75jzbdMqKuefkxMvV4SsA0uNcauGiqZKUhq20RlNz3xBlKF3lvsfD1Q==" }, "@reduxjs/toolkit": { "version": "2.8.2", @@ -21859,6 +22608,12 @@ "@remix-run/router": { "version": "1.20.0" }, + "@rolldown/pluginutils": { + "version": "1.0.0-beta.27", + "resolved": "https://registry.npmjs.org/@rolldown/pluginutils/-/pluginutils-1.0.0-beta.27.tgz", + "integrity": "sha512-+d0F4MKMCbeVUJwG96uQ4SgAznZNSq93I3V+9NHA4OpvqG8mRCpGdKmK8l/dl02h2CCDHwW2FqilnTyDcAnqjA==", + "dev": true + }, "@rollup/rollup-android-arm-eabi": { "version": "4.38.0", "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.38.0.tgz", @@ -22017,10 +22772,6 @@ "version": "6.2.1", "dev": true }, - "prettier": { - "version": "3.3.3", - "dev": true - }, "semver": { "version": "7.6.3", "dev": true @@ -22057,56 +22808,64 @@ "dev": true }, "@sentry-internal/feedback": { - "version": "7.120.1", + "version": "7.120.3", + "resolved": "https://registry.npmjs.org/@sentry-internal/feedback/-/feedback-7.120.3.tgz", + "integrity": "sha512-ewJJIQ0mbsOX6jfiVFvqMjokxNtgP3dNwUv+4nenN+iJJPQsM6a0ocro3iscxwVdbkjw5hY3BUV2ICI5Q0UWoA==", "requires": { - "@sentry/core": "7.120.1", - "@sentry/types": "7.120.1", - "@sentry/utils": "7.120.1" + "@sentry/core": "7.120.3", + "@sentry/types": "7.120.3", + "@sentry/utils": "7.120.3" } }, "@sentry-internal/replay-canvas": { - "version": "7.120.1", + "version": "7.120.3", + "resolved": "https://registry.npmjs.org/@sentry-internal/replay-canvas/-/replay-canvas-7.120.3.tgz", + "integrity": "sha512-s5xy+bVL1eDZchM6gmaOiXvTqpAsUfO7122DxVdEDMtwVq3e22bS2aiGa8CUgOiJkulZ+09q73nufM77kOmT/A==", "requires": { - "@sentry/core": "7.120.1", - "@sentry/replay": "7.120.1", - "@sentry/types": "7.120.1", - "@sentry/utils": "7.120.1" + "@sentry/core": "7.120.3", + "@sentry/replay": "7.120.3", + "@sentry/types": "7.120.3", + "@sentry/utils": "7.120.3" } }, "@sentry-internal/tracing": { - "version": "7.120.1", + "version": "7.120.3", + "resolved": "https://registry.npmjs.org/@sentry-internal/tracing/-/tracing-7.120.3.tgz", + "integrity": "sha512-Ausx+Jw1pAMbIBHStoQ6ZqDZR60PsCByvHdw/jdH9AqPrNE9xlBSf9EwcycvmrzwyKspSLaB52grlje2cRIUMg==", "requires": { - "@sentry/core": "7.120.1", - "@sentry/types": "7.120.1", - "@sentry/utils": "7.120.1" + "@sentry/core": "7.120.3", + "@sentry/types": "7.120.3", + "@sentry/utils": "7.120.3" } }, "@sentry/babel-plugin-component-annotate": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/@sentry/babel-plugin-component-annotate/-/babel-plugin-component-annotate-3.4.0.tgz", - "integrity": "sha512-tSzfc3aE7m0PM0Aj7HBDet5llH9AB9oc+tBQ8AvOqUSnWodLrNCuWeQszJ7mIBovD3figgCU3h0cvI6U5cDtsg==" + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/@sentry/babel-plugin-component-annotate/-/babel-plugin-component-annotate-4.1.1.tgz", + "integrity": "sha512-HUpqrCK7zDVojTV6KL6BO9ZZiYrEYQqvYQrscyMsq04z+WCupXaH6YEliiNRvreR8DBJgdsG3lBRpebhUGmvfA==" }, "@sentry/browser": { - "version": "7.120.1", + "version": "7.120.3", + "resolved": "https://registry.npmjs.org/@sentry/browser/-/browser-7.120.3.tgz", + "integrity": "sha512-i9vGcK9N8zZ/JQo1TCEfHHYZ2miidOvgOABRUc9zQKhYdcYQB2/LU1kqlj77Pxdxf4wOa9137d6rPrSn9iiBxg==", "requires": { - "@sentry-internal/feedback": "7.120.1", - "@sentry-internal/replay-canvas": "7.120.1", - "@sentry-internal/tracing": "7.120.1", - "@sentry/core": "7.120.1", - "@sentry/integrations": "7.120.1", - "@sentry/replay": "7.120.1", - "@sentry/types": "7.120.1", - "@sentry/utils": "7.120.1" + "@sentry-internal/feedback": "7.120.3", + "@sentry-internal/replay-canvas": "7.120.3", + "@sentry-internal/tracing": "7.120.3", + "@sentry/core": "7.120.3", + "@sentry/integrations": "7.120.3", + "@sentry/replay": "7.120.3", + "@sentry/types": "7.120.3", + "@sentry/utils": "7.120.3" } }, "@sentry/bundler-plugin-core": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/@sentry/bundler-plugin-core/-/bundler-plugin-core-3.4.0.tgz", - "integrity": "sha512-X1Q41AsQ6xcT6hB4wYmBDBukndKM/inT4IsR7pdKLi7ICpX2Qq6lisamBAEPCgEvnLpazSFguaiC0uiwMKAdqw==", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/@sentry/bundler-plugin-core/-/bundler-plugin-core-4.1.1.tgz", + "integrity": "sha512-Hx9RgXaD1HEYmL5aYoWwCKkVvPp4iklwfD9mvmdpQtcwLg6b6oLnPVDQaOry1ak6Pxt8smlrWcKy4IiKASlvig==", "requires": { "@babel/core": "^7.18.5", - "@sentry/babel-plugin-component-annotate": "3.4.0", - "@sentry/cli": "2.42.2", + "@sentry/babel-plugin-component-annotate": "4.1.1", + "@sentry/cli": "^2.51.0", "dotenv": "^16.3.1", "find-up": "^5.0.0", "glob": "^9.3.2", @@ -22141,17 +22900,18 @@ } }, "@sentry/cli": { - "version": "2.42.2", - "resolved": "https://registry.npmjs.org/@sentry/cli/-/cli-2.42.2.tgz", - "integrity": "sha512-spb7S/RUumCGyiSTg8DlrCX4bivCNmU/A1hcfkwuciTFGu8l5CDc2I6jJWWZw8/0enDGxuj5XujgXvU5tr4bxg==", + "version": "2.52.0", + "resolved": "https://registry.npmjs.org/@sentry/cli/-/cli-2.52.0.tgz", + "integrity": "sha512-PXyo7Yv7+rVMSBGZfI/eFEzzhiKedTs25sDCjz4a3goAZ/F5R5tn3MKq30pnze5wNnoQmLujAa0uUjfNcWP+uQ==", "requires": { - "@sentry/cli-darwin": "2.42.2", - "@sentry/cli-linux-arm": "2.42.2", - "@sentry/cli-linux-arm64": "2.42.2", - "@sentry/cli-linux-i686": "2.42.2", - "@sentry/cli-linux-x64": "2.42.2", - "@sentry/cli-win32-i686": "2.42.2", - "@sentry/cli-win32-x64": "2.42.2", + "@sentry/cli-darwin": "2.52.0", + "@sentry/cli-linux-arm": "2.52.0", + "@sentry/cli-linux-arm64": "2.52.0", + "@sentry/cli-linux-i686": "2.52.0", + "@sentry/cli-linux-x64": "2.52.0", + "@sentry/cli-win32-arm64": "2.52.0", + "@sentry/cli-win32-i686": "2.52.0", + "@sentry/cli-win32-x64": "2.52.0", "https-proxy-agent": "^5.0.0", "node-fetch": "^2.6.7", "progress": "^2.0.3", @@ -22160,87 +22920,103 @@ } }, "@sentry/cli-darwin": { - "version": "2.42.2", - "resolved": "https://registry.npmjs.org/@sentry/cli-darwin/-/cli-darwin-2.42.2.tgz", - "integrity": "sha512-GtJSuxER7Vrp1IpxdUyRZzcckzMnb4N5KTW7sbTwUiwqARRo+wxS+gczYrS8tdgtmXs5XYhzhs+t4d52ITHMIg==", + "version": "2.52.0", + "resolved": "https://registry.npmjs.org/@sentry/cli-darwin/-/cli-darwin-2.52.0.tgz", + "integrity": "sha512-ieQs/p4yTHT27nBzy0wtAb8BSISfWlpXdgsACcwXimYa36NJRwyCqgOXUaH/BYiTdwWSHpuANbUHGJW6zljzxw==", "optional": true }, "@sentry/cli-linux-arm": { - "version": "2.42.2", - "resolved": "https://registry.npmjs.org/@sentry/cli-linux-arm/-/cli-linux-arm-2.42.2.tgz", - "integrity": "sha512-7udCw+YL9lwq+9eL3WLspvnuG+k5Icg92YE7zsteTzWLwgPVzaxeZD2f8hwhsu+wmL+jNqbpCRmktPteh3i2mg==", + "version": "2.52.0", + "resolved": "https://registry.npmjs.org/@sentry/cli-linux-arm/-/cli-linux-arm-2.52.0.tgz", + "integrity": "sha512-tWMLU+hj+iip5Akx+S76biAOE1eMMWTDq8c0MqMv/ahHgb6/HiVngMcUsp59Oz3EczJGbTkcnS3vRTDodEcMDw==", "optional": true }, "@sentry/cli-linux-arm64": { - "version": "2.42.2", - "resolved": "https://registry.npmjs.org/@sentry/cli-linux-arm64/-/cli-linux-arm64-2.42.2.tgz", - "integrity": "sha512-BOxzI7sgEU5Dhq3o4SblFXdE9zScpz6EXc5Zwr1UDZvzgXZGosUtKVc7d1LmkrHP8Q2o18HcDWtF3WvJRb5Zpw==", + "version": "2.52.0", + "resolved": "https://registry.npmjs.org/@sentry/cli-linux-arm64/-/cli-linux-arm64-2.52.0.tgz", + "integrity": "sha512-RxT5uzxjCkcvplmx0bavJIEYerRex2Rg/2RAVBdVvWLKFOcmeerTn/VVxPZVuDIVMVyjlZsteWPYwfUm+Ia3wQ==", "optional": true }, "@sentry/cli-linux-i686": { - "version": "2.42.2", - "resolved": "https://registry.npmjs.org/@sentry/cli-linux-i686/-/cli-linux-i686-2.42.2.tgz", - "integrity": "sha512-Sw/dQp5ZPvKnq3/y7wIJyxTUJYPGoTX/YeMbDs8BzDlu9to2LWV3K3r7hE7W1Lpbaw4tSquUHiQjP5QHCOS7aQ==", + "version": "2.52.0", + "resolved": "https://registry.npmjs.org/@sentry/cli-linux-i686/-/cli-linux-i686-2.52.0.tgz", + "integrity": "sha512-sKcJmIg7QWFtlNU5Bs5OZprwdIzzyYMRpFkWioPZ4TE82yvP1+2SAX31VPUlTx+7NLU6YVEWNwvSxh8LWb7iOw==", "optional": true }, "@sentry/cli-linux-x64": { - "version": "2.42.2", - "resolved": "https://registry.npmjs.org/@sentry/cli-linux-x64/-/cli-linux-x64-2.42.2.tgz", - "integrity": "sha512-mU4zUspAal6TIwlNLBV5oq6yYqiENnCWSxtSQVzWs0Jyq97wtqGNG9U+QrnwjJZ+ta/hvye9fvL2X25D/RxHQw==", + "version": "2.52.0", + "resolved": "https://registry.npmjs.org/@sentry/cli-linux-x64/-/cli-linux-x64-2.52.0.tgz", + "integrity": "sha512-aPZ7bP02zGkuEqTiOAm4np/ggfgtzrq4ti1Xze96Csi/DV3820SCfLrPlsvcvnqq7x69IL9cI3kXjdEpgrfGxw==", + "optional": true + }, + "@sentry/cli-win32-arm64": { + "version": "2.52.0", + "resolved": "https://registry.npmjs.org/@sentry/cli-win32-arm64/-/cli-win32-arm64-2.52.0.tgz", + "integrity": "sha512-90hrB5XdwJVhRpCmVrEcYoKW8nl5/V9OfVvOGeKUPvUkApLzvsInK74FYBZEVyAn1i/NdUv+Xk9q2zqUGK1aLQ==", "optional": true }, "@sentry/cli-win32-i686": { - "version": "2.42.2", - "resolved": "https://registry.npmjs.org/@sentry/cli-win32-i686/-/cli-win32-i686-2.42.2.tgz", - "integrity": "sha512-iHvFHPGqgJMNqXJoQpqttfsv2GI3cGodeTq4aoVLU/BT3+hXzbV0x1VpvvEhncJkDgDicJpFLM8sEPHb3b8abw==", + "version": "2.52.0", + "resolved": "https://registry.npmjs.org/@sentry/cli-win32-i686/-/cli-win32-i686-2.52.0.tgz", + "integrity": "sha512-HXlSE4CaLylNrELx4KVmOQjV5bURCNuky6sjCWiTH7HyDqHEak2Rk8iLE0JNLj5RETWMvmaZnZZFfmyGlY1opg==", "optional": true }, "@sentry/cli-win32-x64": { - "version": "2.42.2", - "resolved": "https://registry.npmjs.org/@sentry/cli-win32-x64/-/cli-win32-x64-2.42.2.tgz", - "integrity": "sha512-vPPGHjYoaGmfrU7xhfFxG7qlTBacroz5NdT+0FmDn6692D8IvpNXl1K+eV3Kag44ipJBBeR8g1HRJyx/F/9ACw==", + "version": "2.52.0", + "resolved": "https://registry.npmjs.org/@sentry/cli-win32-x64/-/cli-win32-x64-2.52.0.tgz", + "integrity": "sha512-hJT0C3FwHk1Mt9oFqcci88wbO1D+yAWUL8J29HEGM5ZAqlhdh7sAtPDIC3P2LceUJOjnXihow47Bkj62juatIQ==", "optional": true }, "@sentry/core": { - "version": "7.120.1", + "version": "7.120.3", + "resolved": "https://registry.npmjs.org/@sentry/core/-/core-7.120.3.tgz", + "integrity": "sha512-vyy11fCGpkGK3qI5DSXOjgIboBZTriw0YDx/0KyX5CjIjDDNgp5AGgpgFkfZyiYiaU2Ww3iFuKo4wHmBusz1uA==", "requires": { - "@sentry/types": "7.120.1", - "@sentry/utils": "7.120.1" + "@sentry/types": "7.120.3", + "@sentry/utils": "7.120.3" } }, "@sentry/integrations": { - "version": "7.120.1", + "version": "7.120.3", + "resolved": "https://registry.npmjs.org/@sentry/integrations/-/integrations-7.120.3.tgz", + "integrity": "sha512-6i/lYp0BubHPDTg91/uxHvNui427df9r17SsIEXa2eKDwQ9gW2qRx5IWgvnxs2GV/GfSbwcx4swUB3RfEWrXrQ==", "requires": { - "@sentry/core": "7.120.1", - "@sentry/types": "7.120.1", - "@sentry/utils": "7.120.1", + "@sentry/core": "7.120.3", + "@sentry/types": "7.120.3", + "@sentry/utils": "7.120.3", "localforage": "^1.8.1" } }, "@sentry/replay": { - "version": "7.120.1", + "version": "7.120.3", + "resolved": "https://registry.npmjs.org/@sentry/replay/-/replay-7.120.3.tgz", + "integrity": "sha512-CjVq1fP6bpDiX8VQxudD5MPWwatfXk8EJ2jQhJTcWu/4bCSOQmHxnnmBM+GVn5acKUBCodWHBN+IUZgnJheZSg==", "requires": { - "@sentry-internal/tracing": "7.120.1", - "@sentry/core": "7.120.1", - "@sentry/types": "7.120.1", - "@sentry/utils": "7.120.1" + "@sentry-internal/tracing": "7.120.3", + "@sentry/core": "7.120.3", + "@sentry/types": "7.120.3", + "@sentry/utils": "7.120.3" } }, "@sentry/types": { - "version": "7.120.1" + "version": "7.120.3", + "resolved": "https://registry.npmjs.org/@sentry/types/-/types-7.120.3.tgz", + "integrity": "sha512-C4z+3kGWNFJ303FC+FxAd4KkHvxpNFYAFN8iMIgBwJdpIl25KZ8Q/VdGn0MLLUEHNLvjob0+wvwlcRBBNLXOow==" }, "@sentry/utils": { - "version": "7.120.1", + "version": "7.120.3", + "resolved": "https://registry.npmjs.org/@sentry/utils/-/utils-7.120.3.tgz", + "integrity": "sha512-UDAOQJtJDxZHQ5Nm1olycBIsz2wdGX8SdzyGVHmD8EOQYAeDZQyIlQYohDe9nazdIOQLZCIc3fU0G9gqVLkaGQ==", "requires": { - "@sentry/types": "7.120.1" + "@sentry/types": "7.120.3" } }, "@sentry/webpack-plugin": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/@sentry/webpack-plugin/-/webpack-plugin-3.4.0.tgz", - "integrity": "sha512-i+nAxxniJV5ovijojjTF5n+Yj08Xk8my+vm8+oo0C0I7xcnI2gOKft6B0sJOq01CNbo85X5m/3/edL0PKoWE9w==", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/@sentry/webpack-plugin/-/webpack-plugin-4.1.1.tgz", + "integrity": "sha512-2gFWcQMW1HdJDo/7rADeFs9crkH02l+mW4O1ORbxSjuegauyp1W8SBe7EfPoXbUmLdA3zwnpIxEXjjQpP5Etzg==", "requires": { - "@sentry/bundler-plugin-core": "3.4.0", + "@sentry/bundler-plugin-core": "4.1.1", "unplugin": "1.0.1", "uuid": "^9.0.0" }, @@ -22321,40 +23097,36 @@ } }, "@testing-library/dom": { - "version": "10.4.0", + "version": "10.4.1", + "resolved": "https://registry.npmjs.org/@testing-library/dom/-/dom-10.4.1.tgz", + "integrity": "sha512-o4PXJQidqJl82ckFaXUeoAW+XysPLauYI43Abki5hABd853iMhitooc6znOnczgbTYmEP6U6/y1ZyKAIsvMKGg==", "dev": true, "requires": { "@babel/code-frame": "^7.10.4", "@babel/runtime": "^7.12.5", "@types/aria-query": "^5.0.1", "aria-query": "5.3.0", - "chalk": "^4.1.0", "dom-accessibility-api": "^0.5.9", "lz-string": "^1.5.0", + "picocolors": "1.1.1", "pretty-format": "^27.0.2" } }, "@testing-library/jest-dom": { - "version": "6.6.3", + "version": "6.6.4", + "resolved": "https://registry.npmjs.org/@testing-library/jest-dom/-/jest-dom-6.6.4.tgz", + "integrity": "sha512-xDXgLjVunjHqczScfkCJ9iyjdNOVHvvCdqHSSxwM9L0l/wHkTRum67SDc020uAlCoqktJplgO2AAQeLP1wgqDQ==", "dev": true, "requires": { "@adobe/css-tools": "^4.4.0", "aria-query": "^5.0.0", - "chalk": "^3.0.0", "css.escape": "^1.5.1", "dom-accessibility-api": "^0.6.3", "lodash": "^4.17.21", + "picocolors": "^1.1.1", "redent": "^3.0.0" }, "dependencies": { - "chalk": { - "version": "3.0.0", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, "dom-accessibility-api": { "version": "0.6.3", "dev": true @@ -22469,6 +23241,15 @@ "@types/node": "*" } }, + "@types/chai": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/@types/chai/-/chai-5.2.2.tgz", + "integrity": "sha512-8kB30R7Hwqf40JPiKhVzodJs2Qc1ZJ5zuT3uzw5Hq/dhNCl3G3l83jfpdI1e20BP348+fV7VIL/+FxaXkqBmWg==", + "dev": true, + "requires": { + "@types/deep-eql": "*" + } + }, "@types/connect": { "version": "3.4.38", "dev": true, @@ -22489,7 +23270,15 @@ "dev": true }, "@types/debounce-promise": { - "version": "3.1.9" + "version": "3.1.9", + "resolved": "https://registry.npmjs.org/@types/debounce-promise/-/debounce-promise-3.1.9.tgz", + "integrity": "sha512-awNxydYSU+E2vL7EiOAMtiSOfL5gUM5X4YSE2A92qpxDJQ/rXz6oMPYBFDcDywlUmvIDI6zsqgq17cGm5CITQw==" + }, + "@types/deep-eql": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@types/deep-eql/-/deep-eql-4.0.2.tgz", + "integrity": "sha512-c9h9dVVMigMPc4bwTvC5dxqtqJZwQPePsWjPlpSOnojbor6pGqdk541lfA7AqFQr5pB1BRdq0juY9db81BwyFw==", + "dev": true }, "@types/eslint": { "version": "9.6.1", @@ -22592,11 +23381,11 @@ "dev": true }, "@types/node": { - "version": "22.15.1", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.15.1.tgz", - "integrity": "sha512-gSZyd0Qmv7qvbd2fJ9HGdYmv1yhNdelIA4YOtN6vkcmSwFhthxSEsBgU/JYZcXjWT6DFzoATcHrc52Ckh8SeRA==", + "version": "24.3.0", + "resolved": "https://registry.npmjs.org/@types/node/-/node-24.3.0.tgz", + "integrity": "sha512-aPTXCrfwnDLj4VvXrm+UUCQjNEvJgNA8s5F1cvwQU+3KNltTOkBm1j30uNLyqqPNe7gE3KFzImYoZEfLhp4Yow==", "requires": { - "undici-types": "~6.21.0" + "undici-types": "~7.10.0" } }, "@types/node-forge": { @@ -22710,16 +23499,16 @@ } }, "@typescript-eslint/eslint-plugin": { - "version": "8.32.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.32.1.tgz", - "integrity": "sha512-6u6Plg9nP/J1GRpe/vcjjabo6Uc5YQPAMxsgQyGC/I0RuukiG1wIe3+Vtg3IrSCVJDmqK3j8adrtzXSENRtFgg==", + "version": "8.40.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.40.0.tgz", + "integrity": "sha512-w/EboPlBwnmOBtRbiOvzjD+wdiZdgFeo17lkltrtn7X37vagKKWJABvyfsJXTlHe6XBzugmYgd4A4nW+k8Mixw==", "dev": true, "requires": { "@eslint-community/regexpp": "^4.10.0", - "@typescript-eslint/scope-manager": "8.32.1", - "@typescript-eslint/type-utils": "8.32.1", - "@typescript-eslint/utils": "8.32.1", - "@typescript-eslint/visitor-keys": "8.32.1", + "@typescript-eslint/scope-manager": "8.40.0", + "@typescript-eslint/type-utils": "8.40.0", + "@typescript-eslint/utils": "8.40.0", + "@typescript-eslint/visitor-keys": "8.40.0", "graphemer": "^1.4.0", "ignore": "^7.0.0", "natural-compare": "^1.4.0", @@ -22742,36 +23531,55 @@ } }, "@typescript-eslint/parser": { - "version": "8.32.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.32.1.tgz", - "integrity": "sha512-LKMrmwCPoLhM45Z00O1ulb6jwyVr2kr3XJp+G+tSEZcbauNnScewcQwtJqXDhXeYPDEjZ8C1SjXm015CirEmGg==", + "version": "8.40.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.40.0.tgz", + "integrity": "sha512-jCNyAuXx8dr5KJMkecGmZ8KI61KBUhkCob+SD+C+I5+Y1FWI2Y3QmY4/cxMCC5WAsZqoEtEETVhUiUMIGCf6Bw==", "dev": true, "requires": { - "@typescript-eslint/scope-manager": "8.32.1", - "@typescript-eslint/types": "8.32.1", - "@typescript-eslint/typescript-estree": "8.32.1", - "@typescript-eslint/visitor-keys": "8.32.1", + "@typescript-eslint/scope-manager": "8.40.0", + "@typescript-eslint/types": "8.40.0", + "@typescript-eslint/typescript-estree": "8.40.0", + "@typescript-eslint/visitor-keys": "8.40.0", + "debug": "^4.3.4" + } + }, + "@typescript-eslint/project-service": { + "version": "8.40.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/project-service/-/project-service-8.40.0.tgz", + "integrity": "sha512-/A89vz7Wf5DEXsGVvcGdYKbVM9F7DyFXj52lNYUDS1L9yJfqjW/fIp5PgMuEJL/KeqVTe2QSbXAGUZljDUpArw==", + "dev": true, + "requires": { + "@typescript-eslint/tsconfig-utils": "^8.40.0", + "@typescript-eslint/types": "^8.40.0", "debug": "^4.3.4" } }, "@typescript-eslint/scope-manager": { - "version": "8.32.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.32.1.tgz", - "integrity": "sha512-7IsIaIDeZn7kffk7qXC3o6Z4UblZJKV3UBpkvRNpr5NSyLji7tvTcvmnMNYuYLyh26mN8W723xpo3i4MlD33vA==", + "version": "8.40.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.40.0.tgz", + "integrity": "sha512-y9ObStCcdCiZKzwqsE8CcpyuVMwRouJbbSrNuThDpv16dFAj429IkM6LNb1dZ2m7hK5fHyzNcErZf7CEeKXR4w==", "dev": true, "requires": { - "@typescript-eslint/types": "8.32.1", - "@typescript-eslint/visitor-keys": "8.32.1" + "@typescript-eslint/types": "8.40.0", + "@typescript-eslint/visitor-keys": "8.40.0" } }, + "@typescript-eslint/tsconfig-utils": { + "version": "8.40.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.40.0.tgz", + "integrity": "sha512-jtMytmUaG9d/9kqSl/W3E3xaWESo4hFDxAIHGVW/WKKtQhesnRIJSAJO6XckluuJ6KDB5woD1EiqknriCtAmcw==", + "dev": true, + "requires": {} + }, "@typescript-eslint/type-utils": { - "version": "8.32.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.32.1.tgz", - "integrity": "sha512-mv9YpQGA8iIsl5KyUPi+FGLm7+bA4fgXaeRcFKRDRwDMu4iwrSHeDPipwueNXhdIIZltwCJv+NkxftECbIZWfA==", + "version": "8.40.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.40.0.tgz", + "integrity": "sha512-eE60cK4KzAc6ZrzlJnflXdrMqOBaugeukWICO2rB0KNvwdIMaEaYiywwHMzA1qFpTxrLhN9Lp4E/00EgWcD3Ow==", "dev": true, "requires": { - "@typescript-eslint/typescript-estree": "8.32.1", - "@typescript-eslint/utils": "8.32.1", + "@typescript-eslint/types": "8.40.0", + "@typescript-eslint/typescript-estree": "8.40.0", + "@typescript-eslint/utils": "8.40.0", "debug": "^4.3.4", "ts-api-utils": "^2.1.0" }, @@ -22786,19 +23594,21 @@ } }, "@typescript-eslint/types": { - "version": "8.32.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.32.1.tgz", - "integrity": "sha512-YmybwXUJcgGqgAp6bEsgpPXEg6dcCyPyCSr0CAAueacR/CCBi25G3V8gGQ2kRzQRBNol7VQknxMs9HvVa9Rvfg==", + "version": "8.40.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.40.0.tgz", + "integrity": "sha512-ETdbFlgbAmXHyFPwqUIYrfc12ArvpBhEVgGAxVYSwli26dn8Ko+lIo4Su9vI9ykTZdJn+vJprs/0eZU0YMAEQg==", "dev": true }, "@typescript-eslint/typescript-estree": { - "version": "8.32.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.32.1.tgz", - "integrity": "sha512-Y3AP9EIfYwBb4kWGb+simvPaqQoT5oJuzzj9m0i6FCY6SPvlomY2Ei4UEMm7+FXtlNJbor80ximyslzaQF6xhg==", + "version": "8.40.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.40.0.tgz", + "integrity": "sha512-k1z9+GJReVVOkc1WfVKs1vBrR5MIKKbdAjDTPvIK3L8De6KbFfPFt6BKpdkdk7rZS2GtC/m6yI5MYX+UsuvVYQ==", "dev": true, "requires": { - "@typescript-eslint/types": "8.32.1", - "@typescript-eslint/visitor-keys": "8.32.1", + "@typescript-eslint/project-service": "8.40.0", + "@typescript-eslint/tsconfig-utils": "8.40.0", + "@typescript-eslint/types": "8.40.0", + "@typescript-eslint/visitor-keys": "8.40.0", "debug": "^4.3.4", "fast-glob": "^3.3.2", "is-glob": "^4.0.3", @@ -22823,54 +23633,51 @@ } }, "@typescript-eslint/utils": { - "version": "8.32.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.32.1.tgz", - "integrity": "sha512-DsSFNIgLSrc89gpq1LJB7Hm1YpuhK086DRDJSNrewcGvYloWW1vZLHBTIvarKZDcAORIy/uWNx8Gad+4oMpkSA==", + "version": "8.40.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.40.0.tgz", + "integrity": "sha512-Cgzi2MXSZyAUOY+BFwGs17s7ad/7L+gKt6Y8rAVVWS+7o6wrjeFN4nVfTpbE25MNcxyJ+iYUXflbs2xR9h4UBg==", "dev": true, "requires": { "@eslint-community/eslint-utils": "^4.7.0", - "@typescript-eslint/scope-manager": "8.32.1", - "@typescript-eslint/types": "8.32.1", - "@typescript-eslint/typescript-estree": "8.32.1" + "@typescript-eslint/scope-manager": "8.40.0", + "@typescript-eslint/types": "8.40.0", + "@typescript-eslint/typescript-estree": "8.40.0" } }, "@typescript-eslint/visitor-keys": { - "version": "8.32.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.32.1.tgz", - "integrity": "sha512-ar0tjQfObzhSaW3C3QNmTc5ofj0hDoNQ5XWrCy6zDyabdr0TWhCkClp+rywGNj/odAFBVzzJrK4tEq5M4Hmu4w==", + "version": "8.40.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.40.0.tgz", + "integrity": "sha512-8CZ47QwalyRjsypfwnbI3hKy5gJDPmrkLjkgMxhi0+DZZ2QNx2naS6/hWoVYUHU7LU2zleF68V9miaVZvhFfTA==", "dev": true, "requires": { - "@typescript-eslint/types": "8.32.1", - "eslint-visitor-keys": "^4.2.0" + "@typescript-eslint/types": "8.40.0", + "eslint-visitor-keys": "^4.2.1" }, "dependencies": { "eslint-visitor-keys": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.0.tgz", - "integrity": "sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==", + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.1.tgz", + "integrity": "sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==", "dev": true } } }, - "@ungap/structured-clone": { - "version": "1.2.0", - "dev": true - }, "@unleash/proxy-client-react": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@unleash/proxy-client-react/-/proxy-client-react-5.0.0.tgz", - "integrity": "sha512-f00yLXSdA2ifB1RvqD1T4Il3Yk0CjVibKYS4cdOeLb6LhyH4kIeyJwtQO1slUrKRUy8VBt8Hmm2Rh1JEGlkfSQ==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/@unleash/proxy-client-react/-/proxy-client-react-5.0.1.tgz", + "integrity": "sha512-F/IDo853ghZkGreLWg4fSVSM4NiLg5aZb1Kvr4vG29u5/PB0JLKNgNVdadt+qrlkI1GMzmP7IuFXSnv9A0McRw==", "requires": {} }, "@vitejs/plugin-react": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/@vitejs/plugin-react/-/plugin-react-4.4.1.tgz", - "integrity": "sha512-IpEm5ZmeXAP/osiBXVVP5KjFMzbWOonMs0NaQQl+xYnUAcq4oHUBsF2+p4MgKWG4YMmFYJU8A6sxRPuowllm6w==", + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/@vitejs/plugin-react/-/plugin-react-4.7.0.tgz", + "integrity": "sha512-gUu9hwfWvvEDBBmgtAowQCojwZmJ5mcLn3aufeCsitijs3+f2NsrPtlAWIR6OPiqljl96GVCUbLe0HyqIpVaoA==", "dev": true, "requires": { - "@babel/core": "^7.26.10", - "@babel/plugin-transform-react-jsx-self": "^7.25.9", - "@babel/plugin-transform-react-jsx-source": "^7.25.9", + "@babel/core": "^7.28.0", + "@babel/plugin-transform-react-jsx-self": "^7.27.1", + "@babel/plugin-transform-react-jsx-source": "^7.27.1", + "@rolldown/pluginutils": "1.0.0-beta.27", "@types/babel__core": "^7.20.5", "react-refresh": "^0.17.0" }, @@ -22884,14 +23691,15 @@ } }, "@vitest/coverage-v8": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/@vitest/coverage-v8/-/coverage-v8-3.1.2.tgz", - "integrity": "sha512-XDdaDOeaTMAMYW7N63AqoK32sYUWbXnTkC6tEbVcu3RlU1bB9of32T+PGf8KZvxqLNqeXhafDFqCkwpf2+dyaQ==", + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/@vitest/coverage-v8/-/coverage-v8-3.2.4.tgz", + "integrity": "sha512-EyF9SXU6kS5Ku/U82E259WSnvg6c8KTjppUncuNdm5QHpe17mwREHnjDzozC8x9MZ0xfBUFSaLkRv4TMA75ALQ==", "dev": true, "requires": { "@ampproject/remapping": "^2.3.0", "@bcoe/v8-coverage": "^1.0.2", - "debug": "^4.4.0", + "ast-v8-to-istanbul": "^0.3.3", + "debug": "^4.4.1", "istanbul-lib-coverage": "^3.2.2", "istanbul-lib-report": "^3.0.1", "istanbul-lib-source-maps": "^5.0.6", @@ -22913,24 +23721,25 @@ } }, "@vitest/expect": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-3.1.2.tgz", - "integrity": "sha512-O8hJgr+zREopCAqWl3uCVaOdqJwZ9qaDwUP7vy3Xigad0phZe9APxKhPcDNqYYi0rX5oMvwJMSCAXY2afqeTSA==", + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-3.2.4.tgz", + "integrity": "sha512-Io0yyORnB6sikFlt8QW5K7slY4OjqNX9jmJQ02QDda8lyM6B5oNgVWoSoKPac8/kgnCUzuHQKrSLtu/uOqqrig==", "dev": true, "requires": { - "@vitest/spy": "3.1.2", - "@vitest/utils": "3.1.2", + "@types/chai": "^5.2.2", + "@vitest/spy": "3.2.4", + "@vitest/utils": "3.2.4", "chai": "^5.2.0", "tinyrainbow": "^2.0.0" } }, "@vitest/mocker": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/@vitest/mocker/-/mocker-3.1.2.tgz", - "integrity": "sha512-kOtd6K2lc7SQ0mBqYv/wdGedlqPdM/B38paPY+OwJ1XiNi44w3Fpog82UfOibmHaV9Wod18A09I9SCKLyDMqgw==", + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/@vitest/mocker/-/mocker-3.2.4.tgz", + "integrity": "sha512-46ryTE9RZO/rfDd7pEqFl7etuyzekzEhUbTW3BvmeO/BcCMEgq59BKhek3dXDWgAj4oMK6OZi+vRr1wPW6qjEQ==", "dev": true, "requires": { - "@vitest/spy": "3.1.2", + "@vitest/spy": "3.2.4", "estree-walker": "^3.0.3", "magic-string": "^0.30.17" }, @@ -22956,31 +23765,32 @@ } }, "@vitest/pretty-format": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-3.1.2.tgz", - "integrity": "sha512-R0xAiHuWeDjTSB3kQ3OQpT8Rx3yhdOAIm/JM4axXxnG7Q/fS8XUwggv/A4xzbQA+drYRjzkMnpYnOGAc4oeq8w==", + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-3.2.4.tgz", + "integrity": "sha512-IVNZik8IVRJRTr9fxlitMKeJeXFFFN0JaB9PHPGQ8NKQbGpfjlTx9zO4RefN8gp7eqjNy8nyK3NZmBzOPeIxtA==", "dev": true, "requires": { "tinyrainbow": "^2.0.0" } }, "@vitest/runner": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-3.1.2.tgz", - "integrity": "sha512-bhLib9l4xb4sUMPXnThbnhX2Yi8OutBMA8Yahxa7yavQsFDtwY/jrUZwpKp2XH9DhRFJIeytlyGpXCqZ65nR+g==", + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-3.2.4.tgz", + "integrity": "sha512-oukfKT9Mk41LreEW09vt45f8wx7DordoWUZMYdY/cyAk7w5TWkTRCNZYF7sX7n2wB7jyGAl74OxgwhPgKaqDMQ==", "dev": true, "requires": { - "@vitest/utils": "3.1.2", - "pathe": "^2.0.3" + "@vitest/utils": "3.2.4", + "pathe": "^2.0.3", + "strip-literal": "^3.0.0" } }, "@vitest/snapshot": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-3.1.2.tgz", - "integrity": "sha512-Q1qkpazSF/p4ApZg1vfZSQ5Yw6OCQxVMVrLjslbLFA1hMDrT2uxtqMaw8Tc/jy5DLka1sNs1Y7rBcftMiaSH/Q==", + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-3.2.4.tgz", + "integrity": "sha512-dEYtS7qQP2CjU27QBC5oUOxLE/v5eLkGqPE0ZKEIDGMs4vKWe7IjgLOeauHsR0D5YuuycGRO5oSRXnwnmA78fQ==", "dev": true, "requires": { - "@vitest/pretty-format": "3.1.2", + "@vitest/pretty-format": "3.2.4", "magic-string": "^0.30.17", "pathe": "^2.0.3" }, @@ -22997,22 +23807,22 @@ } }, "@vitest/spy": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-3.1.2.tgz", - "integrity": "sha512-OEc5fSXMws6sHVe4kOFyDSj/+4MSwst0ib4un0DlcYgQvRuYQ0+M2HyqGaauUMnjq87tmUaMNDxKQx7wNfVqPA==", + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-3.2.4.tgz", + "integrity": "sha512-vAfasCOe6AIK70iP5UD11Ac4siNUNJ9i/9PZ3NKx07sG6sUxeag1LWdNrMWeKKYBLlzuK+Gn65Yd5nyL6ds+nw==", "dev": true, "requires": { - "tinyspy": "^3.0.2" + "tinyspy": "^4.0.3" } }, "@vitest/utils": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-3.1.2.tgz", - "integrity": "sha512-5GGd0ytZ7BH3H6JTj9Kw7Prn1Nbg0wZVrIvou+UWxm54d+WoXXgAgjFJ8wn3LdagWLFSEfpPeyYrByZaGEZHLg==", + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-3.2.4.tgz", + "integrity": "sha512-fB2V0JFrQSMsCo9HiSq3Ezpdv4iYaXRG1Sx8edX3MwxfyNn83mKiGzOcH+Fkxt4MHxr3y42fQi1oeAInqgX2QA==", "dev": true, "requires": { - "@vitest/pretty-format": "3.1.2", - "loupe": "^3.1.3", + "@vitest/pretty-format": "3.2.4", + "loupe": "^3.1.4", "tinyrainbow": "^2.0.0" } }, @@ -23206,10 +24016,14 @@ } }, "acorn": { - "version": "8.14.0" + "version": "8.15.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz", + "integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==" }, "acorn-jsx": { "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", "dev": true, "requires": {} }, @@ -23338,15 +24152,19 @@ "dev": true }, "array-includes": { - "version": "3.1.8", + "version": "3.1.9", + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.9.tgz", + "integrity": "sha512-FmeCCAenzH0KH381SPT5FZmiA/TmpndpcaShhfgEN9eCVjnFBqq3l1xrI42y8+PPLI6hypzou4GXw00WHmPBLQ==", "dev": true, "requires": { - "call-bind": "^1.0.7", + "call-bind": "^1.0.8", + "call-bound": "^1.0.4", "define-properties": "^1.2.1", - "es-abstract": "^1.23.2", - "es-object-atoms": "^1.0.0", - "get-intrinsic": "^1.2.4", - "is-string": "^1.0.7" + "es-abstract": "^1.24.0", + "es-object-atoms": "^1.1.1", + "get-intrinsic": "^1.3.0", + "is-string": "^1.1.1", + "math-intrinsics": "^1.1.0" } }, "array-union": { @@ -23373,25 +24191,30 @@ } }, "array.prototype.findlastindex": { - "version": "1.2.5", + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.6.tgz", + "integrity": "sha512-F/TKATkzseUExPlfvmwQKGITM3DGTK+vkAsCZoDc5daVygbJBnjEUCbgkAvVFsgfXfX4YIqZ/27G3k3tdXrTxQ==", "dev": true, "requires": { - "call-bind": "^1.0.7", + "call-bind": "^1.0.8", + "call-bound": "^1.0.4", "define-properties": "^1.2.1", - "es-abstract": "^1.23.2", + "es-abstract": "^1.23.9", "es-errors": "^1.3.0", - "es-object-atoms": "^1.0.0", - "es-shim-unscopables": "^1.0.2" + "es-object-atoms": "^1.1.1", + "es-shim-unscopables": "^1.1.0" } }, "array.prototype.flat": { - "version": "1.3.2", + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.3.tgz", + "integrity": "sha512-rwG/ja1neyLqCuGZ5YYrznA62D4mZXg0i1cIskIUKSiqF3Cje9/wXAls9B9s1Wa2fomMsIv8czB8jZcPmxCXFg==", "dev": true, "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1", - "es-shim-unscopables": "^1.0.0" + "call-bind": "^1.0.8", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.5", + "es-shim-unscopables": "^1.0.2" } }, "array.prototype.flatmap": { @@ -23453,6 +24276,34 @@ "version": "0.0.8", "dev": true }, + "ast-v8-to-istanbul": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/ast-v8-to-istanbul/-/ast-v8-to-istanbul-0.3.3.tgz", + "integrity": "sha512-MuXMrSLVVoA6sYN/6Hke18vMzrT4TZNbZIj/hvh0fnYFpO+/kFXcLIaiPwXXWaQUPg4yJD8fj+lfJ7/1EBconw==", + "dev": true, + "requires": { + "@jridgewell/trace-mapping": "^0.3.25", + "estree-walker": "^3.0.3", + "js-tokens": "^9.0.1" + }, + "dependencies": { + "estree-walker": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz", + "integrity": "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==", + "dev": true, + "requires": { + "@types/estree": "^1.0.0" + } + }, + "js-tokens": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-9.0.1.tgz", + "integrity": "sha512-mxa9E9ITFOt0ban3j6L5MpjwegGz6lBQmM1IJkWeBZGcMxto50+eWdjC/52xDbS2vy0k7vIMK0Fe2wfL9OQSpQ==", + "dev": true + } + } + }, "astral-regex": { "version": "2.0.0", "dev": true @@ -23483,7 +24334,9 @@ "dev": true }, "attr-accept": { - "version": "2.2.5" + "version": "2.2.5", + "resolved": "https://registry.npmjs.org/attr-accept/-/attr-accept-2.2.5.tgz", + "integrity": "sha512-0bDNnY/u6pPwHDMoF0FieU354oBi0a8rD9FcsLwzcGWbc8KS8KPIi7y+s13OlVY+gMWc/9xEMUgNE6Qm8ZllYQ==" }, "available-typed-arrays": { "version": "1.0.7", @@ -23494,6 +24347,8 @@ }, "awesome-debounce-promise": { "version": "2.1.0", + "resolved": "https://registry.npmjs.org/awesome-debounce-promise/-/awesome-debounce-promise-2.1.0.tgz", + "integrity": "sha512-0Dv4j2wKk5BrNZh4jgV2HUdznaeVgEK/WTvcHhZWUElhmQ1RR+iURRoLEwICFyR0S/5VtxfcvY6gR+qSe95jNg==", "requires": { "@types/debounce-promise": "^3.1.1", "awesome-imperative-promise": "^1.0.1", @@ -23502,10 +24357,14 @@ } }, "awesome-imperative-promise": { - "version": "1.0.1" + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/awesome-imperative-promise/-/awesome-imperative-promise-1.0.1.tgz", + "integrity": "sha512-EmPr3FqbQGqlNh+WxMNcF9pO9uDQJnOC4/3rLBQNH9m4E9qI+8lbfHCmHpVAsmGqPJPKhCjJLHUQzQW/RBHRdQ==" }, "awesome-only-resolves-last-promise": { "version": "1.0.3", + "resolved": "https://registry.npmjs.org/awesome-only-resolves-last-promise/-/awesome-only-resolves-last-promise-1.0.3.tgz", + "integrity": "sha512-7q4WPsYiD8Omvi/yHL314DkvsD/lM//Z2/KcU1vWk0xJotiV0GMJTgHTpWl3n90HJqpXKg7qX+VVNs5YbQyPRQ==", "requires": { "awesome-imperative-promise": "^1.0.1" } @@ -23515,12 +24374,12 @@ "dev": true }, "axios": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/axios/-/axios-1.9.0.tgz", - "integrity": "sha512-re4CqKTJaURpzbLHtIi6XpDv20/CnpXOtjRY5/CU32L8gU8ek9UIivcfvSWvmKEngmVbrUtPpdDwWDWL7DNHvg==", + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.11.0.tgz", + "integrity": "sha512-1Lx3WLFQWm3ooKDYZD1eXmoGO9fxYQjrycfHFC8P0sCfQVXyROp0p9PFWBehewBOdCwHc+f/b8I0fMto5eSfwA==", "requires": { "follow-redirects": "^1.15.6", - "form-data": "^4.0.0", + "form-data": "^4.0.4", "proxy-from-env": "^1.1.0" } }, @@ -23547,27 +24406,33 @@ } }, "babel-plugin-polyfill-corejs2": { - "version": "0.4.12", + "version": "0.4.14", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.14.tgz", + "integrity": "sha512-Co2Y9wX854ts6U8gAAPXfn0GmAyctHuK8n0Yhfjd6t30g7yvKjspvvOo9yG+z52PZRgFErt7Ka2pYnXCjLKEpg==", "dev": true, "requires": { - "@babel/compat-data": "^7.22.6", - "@babel/helper-define-polyfill-provider": "^0.6.3", + "@babel/compat-data": "^7.27.7", + "@babel/helper-define-polyfill-provider": "^0.6.5", "semver": "^6.3.1" } }, "babel-plugin-polyfill-corejs3": { - "version": "0.11.1", + "version": "0.13.0", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.13.0.tgz", + "integrity": "sha512-U+GNwMdSFgzVmfhNm8GJUX88AadB3uo9KpJqS3FaqNIPKgySuvMb+bHPsOmmuWyIcuqZj/pzt1RUIUZns4y2+A==", "dev": true, "requires": { - "@babel/helper-define-polyfill-provider": "^0.6.3", - "core-js-compat": "^3.40.0" + "@babel/helper-define-polyfill-provider": "^0.6.5", + "core-js-compat": "^3.43.0" } }, "babel-plugin-polyfill-regenerator": { - "version": "0.6.3", + "version": "0.6.5", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.6.5.tgz", + "integrity": "sha512-ISqQ2frbiNU9vIJkzg7dlPpznPZ4jOiUQ1uSmB0fEHeowtN3COYRsXr/xexn64NpU13P06jc/L5TgiJXOgrbEg==", "dev": true, "requires": { - "@babel/helper-define-polyfill-provider": "^0.6.3" + "@babel/helper-define-polyfill-provider": "^0.6.5" } }, "balanced-match": { @@ -23670,7 +24535,9 @@ "dev": true }, "brace-expansion": { - "version": "2.0.1", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", + "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", "requires": { "balanced-match": "^1.0.0" } @@ -23689,12 +24556,14 @@ } }, "browserslist": { - "version": "4.24.4", + "version": "4.25.1", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.25.1.tgz", + "integrity": "sha512-KGj0KoOMXLpSNkkEI6Z6mShmQy0bc1I+T7K9N81k4WWMrfz+6fQ6es80B/YLAeRoKvjYE1YSHHOW1qe9xIVzHw==", "requires": { - "caniuse-lite": "^1.0.30001688", - "electron-to-chromium": "^1.5.73", + "caniuse-lite": "^1.0.30001726", + "electron-to-chromium": "^1.5.173", "node-releases": "^2.0.19", - "update-browserslist-db": "^1.1.1" + "update-browserslist-db": "^1.1.3" } }, "buffer": { @@ -23758,22 +24627,22 @@ "dev": true }, "cacheable": { - "version": "1.8.9", - "resolved": "https://registry.npmjs.org/cacheable/-/cacheable-1.8.9.tgz", - "integrity": "sha512-FicwAUyWnrtnd4QqYAoRlNs44/a1jTL7XDKqm5gJ90wz1DQPlC7U2Rd1Tydpv+E7WAr4sQHuw8Q8M3nZMAyecQ==", + "version": "1.10.3", + "resolved": "https://registry.npmjs.org/cacheable/-/cacheable-1.10.3.tgz", + "integrity": "sha512-M6p10iJ/VT0wT7TLIGUnm958oVrU2cUK8pQAVU21Zu7h8rbk/PeRtRWrvHJBql97Bhzk3g1N6+2VKC+Rjxna9Q==", "dev": true, "requires": { - "hookified": "^1.7.1", - "keyv": "^5.3.1" + "hookified": "^1.10.0", + "keyv": "^5.4.0" }, "dependencies": { "keyv": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/keyv/-/keyv-5.3.2.tgz", - "integrity": "sha512-Lji2XRxqqa5Wg+CHLVfFKBImfJZ4pCSccu9eVWK6w4c2SDFLd8JAn1zqTuSFnsxb7ope6rMsnIHfp+eBbRBRZQ==", + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-5.5.0.tgz", + "integrity": "sha512-QG7qR2tijh1ftOvClut4YKKg1iW6cx3GZsKoGyJPxHkGWK9oJhG9P3j5deP0QQOGDowBMVQFaP+Vm4NpGYvmIQ==", "dev": true, "requires": { - "@keyv/serialize": "^1.0.3" + "@keyv/serialize": "^1.1.0" } } } @@ -23792,7 +24661,6 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==", - "dev": true, "requires": { "es-errors": "^1.3.0", "function-bind": "^1.1.2" @@ -23825,7 +24693,9 @@ } }, "caniuse-lite": { - "version": "1.0.30001699" + "version": "1.0.30001727", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001727.tgz", + "integrity": "sha512-pB68nIHmbN6L/4C6MH1DokyR3bYqFwjaSs/sWDHGj4CTcFtQUQMuJftVwWkXq7mNWOybD3KhUv3oWHoGxgP14Q==" }, "chai": { "version": "5.2.0", @@ -23853,9 +24723,9 @@ "dev": true }, "chart.js": { - "version": "4.4.9", - "resolved": "https://registry.npmjs.org/chart.js/-/chart.js-4.4.9.tgz", - "integrity": "sha512-EyZ9wWKgpAU0fLJ43YAEIF8sr5F2W3LqbS40ZJyHIner2lY14ufqv2VMp69MAiZ2rpwxEUxEhIH/0U3xyRynxg==", + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/chart.js/-/chart.js-4.5.0.tgz", + "integrity": "sha512-aYeC/jDgSEx8SHWZvANYMioYMZ2KX02W6f6uVfyteuCGcadDLcYVHdfdygsTQkQ4TKn5lghoojAsPj5pu0SnvQ==", "dev": true, "requires": { "@kurkle/color": "^0.3.0" @@ -24009,7 +24879,9 @@ } }, "clsx": { - "version": "2.1.1" + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.1.1.tgz", + "integrity": "sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==" }, "color-convert": { "version": "2.0.1", @@ -24051,14 +24923,16 @@ } }, "compression": { - "version": "1.7.5", + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/compression/-/compression-1.8.1.tgz", + "integrity": "sha512-9mAqGPHLakhCLeNyxPkK4xVo746zQ/czLH1Ky+vkitMnWfWZps8r0qXuwhwizagCRttsL4lfG4pIOvaWLpAP0w==", "dev": true, "requires": { "bytes": "3.1.2", "compressible": "~2.0.18", "debug": "2.6.9", "negotiator": "~0.6.4", - "on-headers": "~1.0.2", + "on-headers": "~1.1.0", "safe-buffer": "5.2.1", "vary": "~1.1.2" }, @@ -24160,10 +25034,12 @@ } }, "core-js-compat": { - "version": "3.40.0", + "version": "3.43.0", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.43.0.tgz", + "integrity": "sha512-2GML2ZsCc5LR7hZYz4AXmjQw8zuy2T//2QntwdnpuYI7jteT6GVYJL7F6C2C57R7gSYrcqVW3lAALefdbhBLDA==", "dev": true, "requires": { - "browserslist": "^4.24.3" + "browserslist": "^4.25.0" } }, "core-js-pure": { @@ -24193,7 +25069,9 @@ "dev": true }, "cross-spawn": { - "version": "7.0.5", + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", + "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", "dev": true, "requires": { "path-key": "^3.1.0", @@ -24207,6 +25085,8 @@ }, "css-jss": { "version": "10.10.0", + "resolved": "https://registry.npmjs.org/css-jss/-/css-jss-10.10.0.tgz", + "integrity": "sha512-YyMIS/LsSKEGXEaVJdjonWe18p4vXLo8CMA4FrW/kcaEyqdIGKCFXao31gbJddXEdIxSXFFURWrenBJPlKTgAA==", "requires": { "@babel/runtime": "^7.3.1", "jss": "^10.10.0", @@ -24254,6 +25134,8 @@ }, "css-vendor": { "version": "2.0.8", + "resolved": "https://registry.npmjs.org/css-vendor/-/css-vendor-2.0.8.tgz", + "integrity": "sha512-x9Aq0XTInxrkuFeHKbYC7zWY8ai7qJ04Kxd9MnvbC1uO5DagxoHQjm4JvG+vCdXOoFtCjbL2XSZfxmoYa9uQVQ==", "requires": { "@babel/runtime": "^7.8.3", "is-in-browser": "^1.0.2" @@ -24337,10 +25219,14 @@ "dev": true }, "debounce-promise": { - "version": "3.1.2" + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/debounce-promise/-/debounce-promise-3.1.2.tgz", + "integrity": "sha512-rZHcgBkbYavBeD9ej6sP56XfG53d51CD4dnaw989YX/nZ/ZJfgRx/9ePKmTNiUiyQvh4mtrMoS3OAWW+yoYtpg==" }, "debug": { - "version": "4.4.0", + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.1.tgz", + "integrity": "sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==", "requires": { "ms": "^2.1.3" } @@ -24581,33 +25467,13 @@ "eslint-visitor-keys": "^3.4.3" } }, - "array-union": { - "version": "2.1.0", - "dev": true - }, "eslint-visitor-keys": { "version": "3.4.3", "dev": true }, - "globby": { - "version": "11.1.0", - "dev": true, - "requires": { - "array-union": "^2.1.0", - "dir-glob": "^3.0.1", - "fast-glob": "^3.2.9", - "ignore": "^5.2.0", - "merge2": "^1.4.1", - "slash": "^3.0.0" - } - }, "semver": { "version": "7.6.3", "dev": true - }, - "slash": { - "version": "3.0.0", - "dev": true } } }, @@ -24642,13 +25508,6 @@ "@leichtgewicht/ip-codec": "^2.0.1" } }, - "doctrine": { - "version": "3.0.0", - "dev": true, - "requires": { - "esutils": "^2.0.2" - } - }, "dom-accessibility-api": { "version": "0.5.16", "dev": true @@ -24709,7 +25568,6 @@ }, "dunder-proto": { "version": "1.0.1", - "dev": true, "requires": { "call-bind-apply-helpers": "^1.0.1", "es-errors": "^1.3.0", @@ -24736,7 +25594,9 @@ "dev": true }, "electron-to-chromium": { - "version": "1.5.96" + "version": "1.5.179", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.179.tgz", + "integrity": "sha512-UWKi/EbBopgfFsc5k61wFpV7WrnnSlSzW/e2XcBmS6qKYTivZlLtoll5/rdqRTxGglGHkmkW0j0pFNJG10EUIQ==" }, "emoji-regex": { "version": "9.2.2", @@ -24792,25 +25652,27 @@ } }, "es-abstract": { - "version": "1.23.9", + "version": "1.24.0", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.24.0.tgz", + "integrity": "sha512-WSzPgsdLtTcQwm4CROfS5ju2Wa1QQcVeT37jFjYzdFz1r9ahadC8B8/a4qxJxM+09F18iumCdRmlr96ZYkQvEg==", "dev": true, "requires": { "array-buffer-byte-length": "^1.0.2", "arraybuffer.prototype.slice": "^1.0.4", "available-typed-arrays": "^1.0.7", "call-bind": "^1.0.8", - "call-bound": "^1.0.3", + "call-bound": "^1.0.4", "data-view-buffer": "^1.0.2", "data-view-byte-length": "^1.0.2", "data-view-byte-offset": "^1.0.1", "es-define-property": "^1.0.1", "es-errors": "^1.3.0", - "es-object-atoms": "^1.0.0", + "es-object-atoms": "^1.1.1", "es-set-tostringtag": "^2.1.0", "es-to-primitive": "^1.3.0", "function.prototype.name": "^1.1.8", - "get-intrinsic": "^1.2.7", - "get-proto": "^1.0.0", + "get-intrinsic": "^1.3.0", + "get-proto": "^1.0.1", "get-symbol-description": "^1.1.0", "globalthis": "^1.0.4", "gopd": "^1.2.0", @@ -24822,21 +25684,24 @@ "is-array-buffer": "^3.0.5", "is-callable": "^1.2.7", "is-data-view": "^1.0.2", + "is-negative-zero": "^2.0.3", "is-regex": "^1.2.1", + "is-set": "^2.0.3", "is-shared-array-buffer": "^1.0.4", "is-string": "^1.1.1", "is-typed-array": "^1.1.15", - "is-weakref": "^1.1.0", + "is-weakref": "^1.1.1", "math-intrinsics": "^1.1.0", - "object-inspect": "^1.13.3", + "object-inspect": "^1.13.4", "object-keys": "^1.1.1", "object.assign": "^4.1.7", "own-keys": "^1.0.1", - "regexp.prototype.flags": "^1.5.3", + "regexp.prototype.flags": "^1.5.4", "safe-array-concat": "^1.1.3", "safe-push-apply": "^1.0.0", "safe-regex-test": "^1.1.0", "set-proto": "^1.0.0", + "stop-iteration-iterator": "^1.1.0", "string.prototype.trim": "^1.2.10", "string.prototype.trimend": "^1.0.9", "string.prototype.trimstart": "^1.0.8", @@ -24845,16 +25710,14 @@ "typed-array-byte-offset": "^1.0.4", "typed-array-length": "^1.0.7", "unbox-primitive": "^1.1.0", - "which-typed-array": "^1.1.18" + "which-typed-array": "^1.1.19" } }, "es-define-property": { - "version": "1.0.1", - "dev": true + "version": "1.0.1" }, "es-errors": { - "version": "1.3.0", - "dev": true + "version": "1.3.0" }, "es-iterator-helpers": { "version": "1.2.1", @@ -24879,20 +25742,20 @@ } }, "es-module-lexer": { - "version": "1.6.0" + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.7.0.tgz", + "integrity": "sha512-jEQoCwk8hyb2AZziIOLhDqpm5+2ww5uIE6lkO/6jcOCusfk6LhMHpXXfBLXTZ7Ydyt0j4VoUQv6uGNYbdW+kBA==" }, "es-object-atoms": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz", "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==", - "dev": true, "requires": { "es-errors": "^1.3.0" } }, "es-set-tostringtag": { "version": "2.1.0", - "dev": true, "requires": { "es-errors": "^1.3.0", "get-intrinsic": "^1.2.6", @@ -24901,10 +25764,12 @@ } }, "es-shim-unscopables": { - "version": "1.0.2", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.1.0.tgz", + "integrity": "sha512-d9T8ucsEhh8Bi1woXCf+TIKDIROLG5WCkxg8geBCbvk22kzwC5G2OnXVMO6FUsvQlgUUXQ2itephWDLqDzbeCw==", "dev": true, "requires": { - "hasown": "^2.0.0" + "hasown": "^2.0.2" } }, "es-to-primitive": { @@ -24981,49 +25846,54 @@ } }, "eslint": { - "version": "8.57.1", + "version": "9.33.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.33.0.tgz", + "integrity": "sha512-TS9bTNIryDzStCpJN93aC5VRSW3uTx9sClUn4B87pwiCaJh220otoI0X8mJKr+VcPtniMdN8GKjlwgWGUv5ZKA==", "dev": true, "requires": { "@eslint-community/eslint-utils": "^4.2.0", - "@eslint-community/regexpp": "^4.6.1", - "@eslint/eslintrc": "^2.1.4", - "@eslint/js": "8.57.1", - "@humanwhocodes/config-array": "^0.13.0", + "@eslint-community/regexpp": "^4.12.1", + "@eslint/config-array": "^0.21.0", + "@eslint/config-helpers": "^0.3.1", + "@eslint/core": "^0.15.2", + "@eslint/eslintrc": "^3.3.1", + "@eslint/js": "9.33.0", + "@eslint/plugin-kit": "^0.3.5", + "@humanfs/node": "^0.16.6", "@humanwhocodes/module-importer": "^1.0.1", - "@nodelib/fs.walk": "^1.2.8", - "@ungap/structured-clone": "^1.2.0", + "@humanwhocodes/retry": "^0.4.2", + "@types/estree": "^1.0.6", + "@types/json-schema": "^7.0.15", "ajv": "^6.12.4", "chalk": "^4.0.0", - "cross-spawn": "^7.0.2", + "cross-spawn": "^7.0.6", "debug": "^4.3.2", - "doctrine": "^3.0.0", "escape-string-regexp": "^4.0.0", - "eslint-scope": "^7.2.2", - "eslint-visitor-keys": "^3.4.3", - "espree": "^9.6.1", - "esquery": "^1.4.2", + "eslint-scope": "^8.4.0", + "eslint-visitor-keys": "^4.2.1", + "espree": "^10.4.0", + "esquery": "^1.5.0", "esutils": "^2.0.2", "fast-deep-equal": "^3.1.3", - "file-entry-cache": "^6.0.1", + "file-entry-cache": "^8.0.0", "find-up": "^5.0.0", "glob-parent": "^6.0.2", - "globals": "^13.19.0", - "graphemer": "^1.4.0", "ignore": "^5.2.0", "imurmurhash": "^0.1.4", "is-glob": "^4.0.0", - "is-path-inside": "^3.0.3", - "js-yaml": "^4.1.0", "json-stable-stringify-without-jsonify": "^1.0.1", - "levn": "^0.4.1", "lodash.merge": "^4.6.2", "minimatch": "^3.1.2", "natural-compare": "^1.4.0", - "optionator": "^0.9.3", - "strip-ansi": "^6.0.1", - "text-table": "^0.2.0" + "optionator": "^0.9.3" }, "dependencies": { + "@eslint/js": { + "version": "9.33.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.33.0.tgz", + "integrity": "sha512-5K1/mKhWaMfreBGJTwval43JJmkip0RmM+3+IuqupeSKNC/Th2Kc7ucaq5ovTSra/OOKB9c58CGSz3QMVbWt0A==", + "dev": true + }, "ajv": { "version": "6.12.6", "dev": true, @@ -25035,7 +25905,9 @@ } }, "brace-expansion": { - "version": "1.1.11", + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", + "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", "dev": true, "requires": { "balanced-match": "^1.0.0", @@ -25043,7 +25915,9 @@ } }, "eslint-scope": { - "version": "7.2.2", + "version": "8.4.0", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.4.0.tgz", + "integrity": "sha512-sNXOfKCn74rt8RICKMvJS7XKV/Xk9kA7DyJr8mJik3S7Cwgy3qlkkmyS2uQB3jiJg6VNdZd/pDBJu0nvG2NlTg==", "dev": true, "requires": { "esrecurse": "^4.3.0", @@ -25051,16 +25925,11 @@ } }, "eslint-visitor-keys": { - "version": "3.4.3", + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.1.tgz", + "integrity": "sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==", "dev": true }, - "globals": { - "version": "13.24.0", - "dev": true, - "requires": { - "type-fest": "^0.20.2" - } - }, "json-schema-traverse": { "version": "0.4.1", "dev": true @@ -25071,15 +25940,13 @@ "requires": { "brace-expansion": "^1.1.7" } - }, - "type-fest": { - "version": "0.20.2", - "dev": true } } }, "eslint-config-prettier": { - "version": "8.10.0", + "version": "10.1.8", + "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-10.1.8.tgz", + "integrity": "sha512-82GZUjRS0p/jganf6q1rEO25VSoHH0hKPCTrgillPjdI/3bgBhAE1QzHrHTizjpRvy6pGAvKjDJtk2pF9NDq8w==", "dev": true, "requires": {} }, @@ -25102,7 +25969,9 @@ } }, "eslint-module-utils": { - "version": "2.12.0", + "version": "2.12.1", + "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.12.1.tgz", + "integrity": "sha512-L8jSWTze7K2mTg0vos/RuLRS5soomksDPoJLXIslC7c8Wmut3bx7CPpJijDcBZtxQ5lrbUdM+s0OlNbz0DCDNw==", "dev": true, "requires": { "debug": "^3.2.7" @@ -25110,6 +25979,8 @@ "dependencies": { "debug": { "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", "dev": true, "requires": { "ms": "^2.1.1" @@ -25127,32 +25998,36 @@ } }, "eslint-plugin-import": { - "version": "2.31.0", + "version": "2.32.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.32.0.tgz", + "integrity": "sha512-whOE1HFo/qJDyX4SnXzP4N6zOWn79WhnCUY/iDR0mPfQZO8wcYE4JClzI2oZrhBnnMUCBCHZhO6VQyoBU95mZA==", "dev": true, "requires": { "@rtsao/scc": "^1.1.0", - "array-includes": "^3.1.8", - "array.prototype.findlastindex": "^1.2.5", - "array.prototype.flat": "^1.3.2", - "array.prototype.flatmap": "^1.3.2", + "array-includes": "^3.1.9", + "array.prototype.findlastindex": "^1.2.6", + "array.prototype.flat": "^1.3.3", + "array.prototype.flatmap": "^1.3.3", "debug": "^3.2.7", "doctrine": "^2.1.0", "eslint-import-resolver-node": "^0.3.9", - "eslint-module-utils": "^2.12.0", + "eslint-module-utils": "^2.12.1", "hasown": "^2.0.2", - "is-core-module": "^2.15.1", + "is-core-module": "^2.16.1", "is-glob": "^4.0.3", "minimatch": "^3.1.2", "object.fromentries": "^2.0.8", "object.groupby": "^1.0.3", - "object.values": "^1.2.0", + "object.values": "^1.2.1", "semver": "^6.3.1", - "string.prototype.trimend": "^1.0.8", + "string.prototype.trimend": "^1.0.9", "tsconfig-paths": "^3.15.0" }, "dependencies": { "brace-expansion": { - "version": "1.1.11", + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", + "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", "dev": true, "requires": { "balanced-match": "^1.0.0", @@ -25184,6 +26059,8 @@ }, "eslint-plugin-jest-dom": { "version": "5.5.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-jest-dom/-/eslint-plugin-jest-dom-5.5.0.tgz", + "integrity": "sha512-CRlXfchTr7EgC3tDI7MGHY6QjdJU5Vv2RPaeeGtkXUHnKZf04kgzMPIJUXt4qKCvYWVVIEo9ut9Oq1vgXAykEA==", "dev": true, "requires": { "@babel/runtime": "^7.16.3", @@ -25216,7 +26093,9 @@ "dev": true }, "brace-expansion": { - "version": "1.1.11", + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", + "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", "dev": true, "requires": { "balanced-match": "^1.0.0", @@ -25233,7 +26112,9 @@ } }, "eslint-plugin-playwright": { - "version": "2.2.0", + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/eslint-plugin-playwright/-/eslint-plugin-playwright-2.2.2.tgz", + "integrity": "sha512-j0jKpndIPOXRRP9uMkwb9l/nSmModOU3452nrFdgFJoEv/435J1onk8+aITzjDW8DfypxgmVaDMdmVIa6F7I0w==", "dev": true, "requires": { "globals": "^13.23.0" @@ -25253,10 +26134,13 @@ } }, "eslint-plugin-prettier": { - "version": "3.4.1", + "version": "5.5.4", + "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-5.5.4.tgz", + "integrity": "sha512-swNtI95SToIz05YINMA6Ox5R057IMAmWZ26GqPxusAp1TZzj+IdY9tXNWWD3vkF/wEqydCONcwjTFpxybBqZsg==", "dev": true, "requires": { - "prettier-linter-helpers": "^1.0.0" + "prettier-linter-helpers": "^1.0.0", + "synckit": "^0.11.7" } }, "eslint-plugin-react": { @@ -25286,7 +26170,9 @@ }, "dependencies": { "brace-expansion": { - "version": "1.1.11", + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", + "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", "dev": true, "requires": { "balanced-match": "^1.0.0", @@ -25340,9 +26226,9 @@ "dev": true }, "eslint-plugin-testing-library": { - "version": "7.2.2", - "resolved": "https://registry.npmjs.org/eslint-plugin-testing-library/-/eslint-plugin-testing-library-7.2.2.tgz", - "integrity": "sha512-PaE4gwP3tMhmlcpOV0Hl21BA5SZIz3PiQYSgnHOY4rrSWZV4+r2BwbzUt2yU0xay2GtA+VNJxzKCbNMvEG2Uig==", + "version": "7.6.6", + "resolved": "https://registry.npmjs.org/eslint-plugin-testing-library/-/eslint-plugin-testing-library-7.6.6.tgz", + "integrity": "sha512-eSexC+OPhDLuCpLbFEC7Qrk0x4IE4Mn+UW0db8YAhUatVB6CzGHdeHv4pyoInglbhhQc0Z9auY/2HKyMZW5s7Q==", "dev": true, "requires": { "@typescript-eslint/scope-manager": "^8.15.0", @@ -25367,19 +26253,25 @@ }, "eslint-visitor-keys": { "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", + "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", "dev": true }, "espree": { - "version": "9.6.1", + "version": "10.4.0", + "resolved": "https://registry.npmjs.org/espree/-/espree-10.4.0.tgz", + "integrity": "sha512-j6PAQ2uUr79PZhBjP5C5fhl8e39FmRnOjsD5lGnWrFU8i2G776tBK7+nP8KuQUTTyAZUwfQqXAgrVH5MbH9CYQ==", "dev": true, "requires": { - "acorn": "^8.9.0", + "acorn": "^8.15.0", "acorn-jsx": "^5.3.2", - "eslint-visitor-keys": "^3.4.1" + "eslint-visitor-keys": "^4.2.1" }, "dependencies": { "eslint-visitor-keys": { - "version": "3.4.3", + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.1.tgz", + "integrity": "sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==", "dev": true } } @@ -25482,7 +26374,9 @@ "dev": true }, "express": { - "version": "4.21.1", + "version": "4.21.2", + "resolved": "https://registry.npmjs.org/express/-/express-4.21.2.tgz", + "integrity": "sha512-28HqgMZAmih1Czt9ny7qr6ek2qddF4FclbMzwhCREB6OFfH+rXAnuNCwo1/wFvrtbgsQDb4kSbX9de9lFbrXnA==", "dev": true, "requires": { "accepts": "~1.3.8", @@ -25504,7 +26398,7 @@ "methods": "~1.1.2", "on-finished": "2.4.1", "parseurl": "~1.3.3", - "path-to-regexp": "0.1.10", + "path-to-regexp": "0.1.12", "proxy-addr": "~2.0.7", "qs": "6.13.0", "range-parser": "~1.2.1", @@ -25545,6 +26439,8 @@ }, "fast-diff": { "version": "1.3.0", + "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.3.0.tgz", + "integrity": "sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==", "dev": true }, "fast-glob": { @@ -25620,16 +26516,20 @@ } }, "file-entry-cache": { - "version": "6.0.1", + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-8.0.0.tgz", + "integrity": "sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==", "dev": true, "requires": { - "flat-cache": "^3.0.4" + "flat-cache": "^4.0.0" } }, "file-selector": { - "version": "0.6.0", + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/file-selector/-/file-selector-2.1.2.tgz", + "integrity": "sha512-QgXo+mXTe8ljeqUFaX3QVHc5osSItJ/Km+xpocx0aSqWGMSCf6qYs/VnzZgS864Pjn5iceMRFigeAV7AfTlaig==", "requires": { - "tslib": "^2.4.0" + "tslib": "^2.7.0" } }, "filing-cabinet": { @@ -25708,21 +26608,13 @@ "dev": true }, "flat-cache": { - "version": "3.2.0", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-4.0.1.tgz", + "integrity": "sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==", "dev": true, "requires": { "flatted": "^3.2.9", - "keyv": "^4.5.3", - "rimraf": "^3.0.2" - }, - "dependencies": { - "rimraf": { - "version": "3.0.2", - "dev": true, - "requires": { - "glob": "^7.1.3" - } - } + "keyv": "^4.5.4" } }, "flatted": { @@ -25732,7 +26624,9 @@ "dev": true }, "focus-trap": { - "version": "7.6.2", + "version": "7.6.4", + "resolved": "https://registry.npmjs.org/focus-trap/-/focus-trap-7.6.4.tgz", + "integrity": "sha512-xx560wGBk7seZ6y933idtjJQc1l+ck+pI3sKvhKozdBV1dRZoKhkW5xoCaFv9tQiX5RH1xfSxjuNu6g+lmN/gw==", "requires": { "tabbable": "^6.2.0" } @@ -25741,10 +26635,12 @@ "version": "1.15.9" }, "for-each": { - "version": "0.3.3", + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.5.tgz", + "integrity": "sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg==", "dev": true, "requires": { - "is-callable": "^1.1.3" + "is-callable": "^1.2.7" } }, "foreground-child": { @@ -25789,7 +26685,9 @@ "requires": {} }, "brace-expansion": { - "version": "1.1.11", + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", + "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", "dev": true, "requires": { "balanced-match": "^1.0.0", @@ -25823,10 +26721,14 @@ } }, "form-data": { - "version": "4.0.1", + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.4.tgz", + "integrity": "sha512-KrGhL9Q4zjj0kiUt5OO4Mr/A/jlI2jDYs5eHBpYHPcBEVSiipAvn2Ko2HnPe20rmcuuvMHNdZFp+4IlGTMF0Ow==", "requires": { "asynckit": "^0.4.0", "combined-stream": "^1.0.8", + "es-set-tostringtag": "^2.1.0", + "hasown": "^2.0.2", "mime-types": "^2.1.12" } }, @@ -25887,8 +26789,7 @@ "optional": true }, "function-bind": { - "version": "1.1.2", - "dev": true + "version": "1.1.2" }, "function.prototype.name": { "version": "1.1.8", @@ -25925,7 +26826,6 @@ "version": "1.3.0", "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz", "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==", - "dev": true, "requires": { "call-bind-apply-helpers": "^1.0.2", "es-define-property": "^1.0.1", @@ -25945,7 +26845,6 @@ }, "get-proto": { "version": "1.0.1", - "dev": true, "requires": { "dunder-proto": "^1.0.1", "es-object-atoms": "^1.0.0" @@ -26020,7 +26919,9 @@ }, "dependencies": { "brace-expansion": { - "version": "1.1.11", + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", + "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", "dev": true, "requires": { "balanced-match": "^1.0.0", @@ -26072,7 +26973,10 @@ } }, "globals": { - "version": "11.12.0" + "version": "16.3.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-16.3.0.tgz", + "integrity": "sha512-bqWEnJ1Nt3neqx2q5SFfGS8r/ahumIakg3HcwtNlrVlwXIeNumWn/c7Pn/wKzGhf6SaW6H6uWXLqC30STCMchQ==", + "dev": true }, "globalthis": { "version": "1.0.4", @@ -26082,6 +26986,28 @@ "gopd": "^1.0.1" } }, + "globby": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", + "dev": true, + "requires": { + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.9", + "ignore": "^5.2.0", + "merge2": "^1.4.1", + "slash": "^3.0.0" + }, + "dependencies": { + "array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", + "dev": true + } + } + }, "globjoin": { "version": "0.1.4", "dev": true @@ -26094,8 +27020,7 @@ } }, "gopd": { - "version": "1.2.0", - "dev": true + "version": "1.2.0" }, "graceful-fs": { "version": "4.2.11" @@ -26145,19 +27070,16 @@ } }, "has-symbols": { - "version": "1.1.0", - "dev": true + "version": "1.1.0" }, "has-tostringtag": { "version": "1.0.2", - "dev": true, "requires": { "has-symbols": "^1.0.3" } }, "hasown": { "version": "2.0.2", - "dev": true, "requires": { "function-bind": "^1.1.2" } @@ -26184,9 +27106,9 @@ } }, "hookified": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/hookified/-/hookified-1.8.1.tgz", - "integrity": "sha512-GrO2l93P8xCWBSTBX9l2BxI78VU/MAAYag+pG8curS3aBGy0++ZlxrQ7PdUOUVMbn5BwkGb6+eRrnf43ipnFEA==", + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/hookified/-/hookified-1.11.0.tgz", + "integrity": "sha512-aDdIN3GyU5I6wextPplYdfmWCo+aLmjjVbntmX6HLD5RCi/xKsivYEBhnRD+d9224zFf008ZpLMPlWF0ZodYZw==", "dev": true }, "hosted-git-info": { @@ -26407,7 +27329,9 @@ "dev": true }, "hyphenate-style-name": { - "version": "1.1.0" + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/hyphenate-style-name/-/hyphenate-style-name-1.1.0.tgz", + "integrity": "sha512-WDC/ui2VVRrz3jOVi+XtjqkDjiVjTtFaAGiW37k6b+ohyQ5wYDOGkvCZa8+H0nx3gyvv0+BST9xuOgIyGQ00gw==" }, "iconv-lite": { "version": "0.4.24", @@ -26437,7 +27361,9 @@ "dev": true }, "immediate": { - "version": "3.0.6" + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/immediate/-/immediate-3.0.6.tgz", + "integrity": "sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ==" }, "immer": { "version": "10.1.1" @@ -26619,7 +27545,9 @@ "dev": true }, "is-core-module": { - "version": "2.15.1", + "version": "2.16.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.1.tgz", + "integrity": "sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==", "dev": true, "requires": { "hasown": "^2.0.2" @@ -26674,7 +27602,9 @@ } }, "is-in-browser": { - "version": "1.1.3" + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/is-in-browser/-/is-in-browser-1.1.3.tgz", + "integrity": "sha512-FeXIBgG/CPGd/WUxuEyvgGTEfwiG9Z4EKGxjNMRqviiIIfsmgrpnHLffEDdwUHqNva1VEW91o3xBT/m8Elgl9g==" }, "is-inside-container": { "version": "1.0.0", @@ -26699,12 +27629,20 @@ "define-properties": "^1.1.3" } }, + "is-negative-zero": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.3.tgz", + "integrity": "sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==", + "dev": true + }, "is-network-error": { "version": "1.1.0", "dev": true }, "is-node-process": { "version": "1.2.0", + "resolved": "https://registry.npmjs.org/is-node-process/-/is-node-process-1.2.0.tgz", + "integrity": "sha512-Vg4o6/fqPxIjtxgUH5QLJhwZ7gW5diGCVlXpuUfELC62CuxM1iHcRe51f2W1FDy04Ai4KJkagKjx3XaqyfRKXw==", "dev": true }, "is-number": { @@ -26742,10 +27680,6 @@ } } }, - "is-path-inside": { - "version": "3.0.3", - "dev": true - }, "is-plain-obj": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-4.1.0.tgz", @@ -26837,10 +27771,12 @@ "dev": true }, "is-weakref": { - "version": "1.1.0", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.1.1.tgz", + "integrity": "sha512-6i9mGWSlqzNMEqpCp93KwRS1uUOodk2OJ6b+sq7ZPDSy2WuI5NFIxp/254TytR8ftefexkWn5xNiHUNpPOfSew==", "dev": true, "requires": { - "call-bound": "^1.0.2" + "call-bound": "^1.0.3" } }, "is-weakset": { @@ -27038,6 +27974,8 @@ }, "json-buffer": { "version": "3.0.1", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", + "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", "dev": true }, "json-parse-better-errors": { @@ -27074,6 +28012,8 @@ }, "jss": { "version": "10.10.0", + "resolved": "https://registry.npmjs.org/jss/-/jss-10.10.0.tgz", + "integrity": "sha512-cqsOTS7jqPsPMjtKYDUpdFC0AbhYFLTcuGRqymgmdJIeQ8cH7+AgX7YSgQy79wXloZq2VvATYxUOUQEvS1V/Zw==", "requires": { "@babel/runtime": "^7.3.1", "csstype": "^3.0.2", @@ -27083,6 +28023,8 @@ }, "jss-plugin-camel-case": { "version": "10.10.0", + "resolved": "https://registry.npmjs.org/jss-plugin-camel-case/-/jss-plugin-camel-case-10.10.0.tgz", + "integrity": "sha512-z+HETfj5IYgFxh1wJnUAU8jByI48ED+v0fuTuhKrPR+pRBYS2EDwbusU8aFOpCdYhtRc9zhN+PJ7iNE8pAWyPw==", "requires": { "@babel/runtime": "^7.3.1", "hyphenate-style-name": "^1.0.3", @@ -27091,6 +28033,8 @@ }, "jss-plugin-compose": { "version": "10.10.0", + "resolved": "https://registry.npmjs.org/jss-plugin-compose/-/jss-plugin-compose-10.10.0.tgz", + "integrity": "sha512-F5kgtWpI2XfZ3Z8eP78tZEYFdgTIbpA/TMuX3a8vwrNolYtN1N4qJR/Ob0LAsqIwCMLojtxN7c7Oo/+Vz6THow==", "requires": { "@babel/runtime": "^7.3.1", "jss": "10.10.0", @@ -27099,6 +28043,8 @@ }, "jss-plugin-default-unit": { "version": "10.10.0", + "resolved": "https://registry.npmjs.org/jss-plugin-default-unit/-/jss-plugin-default-unit-10.10.0.tgz", + "integrity": "sha512-SvpajxIECi4JDUbGLefvNckmI+c2VWmP43qnEy/0eiwzRUsafg5DVSIWSzZe4d2vFX1u9nRDP46WCFV/PXVBGQ==", "requires": { "@babel/runtime": "^7.3.1", "jss": "10.10.0" @@ -27106,6 +28052,8 @@ }, "jss-plugin-expand": { "version": "10.10.0", + "resolved": "https://registry.npmjs.org/jss-plugin-expand/-/jss-plugin-expand-10.10.0.tgz", + "integrity": "sha512-ymT62W2OyDxBxr7A6JR87vVX9vTq2ep5jZLIdUSusfBIEENLdkkc0lL/Xaq8W9s3opUq7R0sZQpzRWELrfVYzA==", "requires": { "@babel/runtime": "^7.3.1", "jss": "10.10.0" @@ -27113,6 +28061,8 @@ }, "jss-plugin-extend": { "version": "10.10.0", + "resolved": "https://registry.npmjs.org/jss-plugin-extend/-/jss-plugin-extend-10.10.0.tgz", + "integrity": "sha512-sKYrcMfr4xxigmIwqTjxNcHwXJIfvhvjTNxF+Tbc1NmNdyspGW47Ey6sGH8BcQ4FFQhLXctpWCQSpDwdNmXSwg==", "requires": { "@babel/runtime": "^7.3.1", "jss": "10.10.0", @@ -27121,6 +28071,8 @@ }, "jss-plugin-global": { "version": "10.10.0", + "resolved": "https://registry.npmjs.org/jss-plugin-global/-/jss-plugin-global-10.10.0.tgz", + "integrity": "sha512-icXEYbMufiNuWfuazLeN+BNJO16Ge88OcXU5ZDC2vLqElmMybA31Wi7lZ3lf+vgufRocvPj8443irhYRgWxP+A==", "requires": { "@babel/runtime": "^7.3.1", "jss": "10.10.0" @@ -27128,6 +28080,8 @@ }, "jss-plugin-nested": { "version": "10.10.0", + "resolved": "https://registry.npmjs.org/jss-plugin-nested/-/jss-plugin-nested-10.10.0.tgz", + "integrity": "sha512-9R4JHxxGgiZhurDo3q7LdIiDEgtA1bTGzAbhSPyIOWb7ZubrjQe8acwhEQ6OEKydzpl8XHMtTnEwHXCARLYqYA==", "requires": { "@babel/runtime": "^7.3.1", "jss": "10.10.0", @@ -27136,6 +28090,8 @@ }, "jss-plugin-props-sort": { "version": "10.10.0", + "resolved": "https://registry.npmjs.org/jss-plugin-props-sort/-/jss-plugin-props-sort-10.10.0.tgz", + "integrity": "sha512-5VNJvQJbnq/vRfje6uZLe/FyaOpzP/IH1LP+0fr88QamVrGJa0hpRRyAa0ea4U/3LcorJfBFVyC4yN2QC73lJg==", "requires": { "@babel/runtime": "^7.3.1", "jss": "10.10.0" @@ -27143,6 +28099,8 @@ }, "jss-plugin-rule-value-function": { "version": "10.10.0", + "resolved": "https://registry.npmjs.org/jss-plugin-rule-value-function/-/jss-plugin-rule-value-function-10.10.0.tgz", + "integrity": "sha512-uEFJFgaCtkXeIPgki8ICw3Y7VMkL9GEan6SqmT9tqpwM+/t+hxfMUdU4wQ0MtOiMNWhwnckBV0IebrKcZM9C0g==", "requires": { "@babel/runtime": "^7.3.1", "jss": "10.10.0", @@ -27151,6 +28109,8 @@ }, "jss-plugin-rule-value-observable": { "version": "10.10.0", + "resolved": "https://registry.npmjs.org/jss-plugin-rule-value-observable/-/jss-plugin-rule-value-observable-10.10.0.tgz", + "integrity": "sha512-ZLMaYrR3QE+vD7nl3oNXuj79VZl9Kp8/u6A1IbTPDcuOu8b56cFdWRZNZ0vNr8jHewooEeq2doy8Oxtymr2ZPA==", "requires": { "@babel/runtime": "^7.3.1", "jss": "10.10.0", @@ -27159,6 +28119,8 @@ }, "jss-plugin-template": { "version": "10.10.0", + "resolved": "https://registry.npmjs.org/jss-plugin-template/-/jss-plugin-template-10.10.0.tgz", + "integrity": "sha512-ocXZBIOJOA+jISPdsgkTs8wwpK6UbsvtZK5JI7VUggTD6LWKbtoxUzadd2TpfF+lEtlhUmMsCkTRNkITdPKa6w==", "requires": { "@babel/runtime": "^7.3.1", "jss": "10.10.0", @@ -27167,6 +28129,8 @@ }, "jss-plugin-vendor-prefixer": { "version": "10.10.0", + "resolved": "https://registry.npmjs.org/jss-plugin-vendor-prefixer/-/jss-plugin-vendor-prefixer-10.10.0.tgz", + "integrity": "sha512-UY/41WumgjW8r1qMCO8l1ARg7NHnfRVWRhZ2E2m0DMYsr2DD91qIXLyNhiX83hHswR7Wm4D+oDYNC1zWCJWtqg==", "requires": { "@babel/runtime": "^7.3.1", "css-vendor": "^2.0.8", @@ -27175,6 +28139,8 @@ }, "jss-preset-default": { "version": "10.10.0", + "resolved": "https://registry.npmjs.org/jss-preset-default/-/jss-preset-default-10.10.0.tgz", + "integrity": "sha512-GL175Wt2FGhjE+f+Y3aWh+JioL06/QWFgZp53CbNNq6ZkVU0TDplD8Bxm9KnkotAYn3FlplNqoW5CjyLXcoJ7Q==", "requires": { "@babel/runtime": "^7.3.1", "jss": "10.10.0", @@ -27226,6 +28192,8 @@ }, "keyv": { "version": "4.5.4", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", + "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", "dev": true, "requires": { "json-buffer": "3.0.1" @@ -27236,7 +28204,9 @@ "dev": true }, "known-css-properties": { - "version": "0.35.0", + "version": "0.37.0", + "resolved": "https://registry.npmjs.org/known-css-properties/-/known-css-properties-0.37.0.tgz", + "integrity": "sha512-JCDrsP4Z1Sb9JwG0aJ8Eo2r7k4Ou5MwmThS/6lcIe1ICyb7UBJKGRIUUdqc2ASdE/42lgz6zFUnzAIhtXnBVrQ==", "dev": true }, "language-subtag-registry": { @@ -27274,6 +28244,8 @@ }, "lie": { "version": "3.1.1", + "resolved": "https://registry.npmjs.org/lie/-/lie-3.1.1.tgz", + "integrity": "sha512-RiNhHysUjhrDQntfYSfY4MU24coXXdEOgw9WGcKHNeEwffDYbF//u87M1EWaMGzuFoSbqW0C9C6lEEhDOAswfw==", "requires": { "immediate": "~3.0.5" } @@ -27326,6 +28298,8 @@ }, "localforage": { "version": "1.10.0", + "resolved": "https://registry.npmjs.org/localforage/-/localforage-1.10.0.tgz", + "integrity": "sha512-14/H1aX7hzBBmmh7sGPd+AOMkkIrHM3Z1PAyGgZigA1H1p5O5ANnMyWzvpAETtG68/dC4pC0ncy3+PPGzXZHPg==", "requires": { "lie": "3.1.1" } @@ -27348,6 +28322,8 @@ }, "lodash.debounce": { "version": "4.0.8", + "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", + "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==", "dev": true }, "lodash.isplainobject": { @@ -27377,9 +28353,9 @@ } }, "loupe": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/loupe/-/loupe-3.1.3.tgz", - "integrity": "sha512-kkIp7XSkP78ZxJEsSxW3712C6teJVoeHHwgo9zJ380de7IYyJ2ISlxojcH2pC5OFLewESmnRi/+XCDIEEVyoug==", + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/loupe/-/loupe-3.1.4.tgz", + "integrity": "sha512-wJzkKwJrheKtknCOKNEtDK4iqg/MxmZheEMtSTYvnzRdEYaZzmgH976nenp8WdJRdx5Vc1X/9MO0Oszl6ezeXg==", "dev": true }, "lower-case": { @@ -27458,8 +28434,7 @@ "dev": true }, "math-intrinsics": { - "version": "1.1.0", - "dev": true + "version": "1.1.0" }, "mathml-tag-names": { "version": "2.1.3", @@ -27647,16 +28622,16 @@ "version": "2.1.3" }, "msw": { - "version": "2.7.5", - "resolved": "https://registry.npmjs.org/msw/-/msw-2.7.5.tgz", - "integrity": "sha512-00MyTlY3TJutBa5kiU+jWiz2z5pNJDYHn2TgPkGkh92kMmNH43RqvMXd8y/7HxNn8RjzUbvZWYZjcS36fdb6sw==", + "version": "2.10.5", + "resolved": "https://registry.npmjs.org/msw/-/msw-2.10.5.tgz", + "integrity": "sha512-0EsQCrCI1HbhpBWd89DvmxY6plmvrM96b0sCIztnvcNHQbXn5vqwm1KlXslo6u4wN9LFGLC1WFjjgljcQhe40A==", "dev": true, "requires": { "@bundled-es-modules/cookie": "^2.0.1", "@bundled-es-modules/statuses": "^1.0.1", "@bundled-es-modules/tough-cookie": "^0.1.6", "@inquirer/confirm": "^5.0.0", - "@mswjs/interceptors": "^0.37.0", + "@mswjs/interceptors": "^0.39.1", "@open-draft/deferred-promise": "^2.2.0", "@open-draft/until": "^2.1.0", "@types/cookie": "^0.6.0", @@ -27698,7 +28673,9 @@ "version": "0.2.1" }, "nanoid": { - "version": "3.3.8" + "version": "3.3.11", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz", + "integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==" }, "natural-compare": { "version": "1.4.0", @@ -27829,7 +28806,9 @@ } }, "brace-expansion": { - "version": "1.1.11", + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", + "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", "dev": true, "requires": { "balanced-match": "^1.0.0", @@ -27857,7 +28836,9 @@ "dev": true }, "cross-spawn": { - "version": "6.0.5", + "version": "6.0.6", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.6.tgz", + "integrity": "sha512-VqCUuhcd1iB+dsv8gxPttb5iZh/D0iubSP21g36KXdEuf6I5JiioesUVjpCdHV9MZRUfVFlvwtIUyPfxo5trtw==", "dev": true, "requires": { "nice-try": "^1.0.4", @@ -28045,7 +29026,9 @@ "version": "4.1.1" }, "object-inspect": { - "version": "1.13.3", + "version": "1.13.4", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.4.tgz", + "integrity": "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==", "dev": true }, "object-is": { @@ -28146,7 +29129,9 @@ } }, "on-headers": { - "version": "1.0.2", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.1.0.tgz", + "integrity": "sha512-737ZY3yNnXy37FHkQxPzt4UZ2UWPWiCZWLvFZ4fu5cueciegX0zGPnrlY6bwRg4FdQOe9YU8MkmJwGhoMybl8A==", "dev": true }, "once": { @@ -28215,6 +29200,8 @@ }, "outvariant": { "version": "1.4.3", + "resolved": "https://registry.npmjs.org/outvariant/-/outvariant-1.4.3.tgz", + "integrity": "sha512-+Sl2UErvtsoajRDKCE5/dBz4DIvHXQQnAxtQTF04OJxY0+DyZXSo5P5Bb7XYWOh81syohlYL24hbDwxedPUJCA==", "dev": true }, "own-keys": { @@ -28324,7 +29311,9 @@ "dev": true }, "parse-srcset": { - "version": "1.0.2" + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/parse-srcset/-/parse-srcset-1.0.2.tgz", + "integrity": "sha512-/2qh0lav6CmI15FzA3i/2Bzk2zCgQhGMkvhOhKNcBVQ1ldgpbfiNTVslmooUmWJcADi1f1kIeynbDRVzNlfR6Q==" }, "parse5": { "version": "7.2.1", @@ -28381,7 +29370,9 @@ } }, "path-to-regexp": { - "version": "0.1.10", + "version": "0.1.12", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.12.tgz", + "integrity": "sha512-RA1GjUVMnvYFxuqovrEqZoxxW5NUZqbwKtYz/Tt7nXerk0LbLblQmrsgdeOxV5SFHf0UDggjS/bSeOZwt1pmEQ==", "dev": true }, "path-type": { @@ -28535,17 +29526,19 @@ "dev": true }, "postcss": { - "version": "8.5.3", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.3.tgz", - "integrity": "sha512-dle9A3yYxlBSrt8Fu+IpjGT8SY8hN0mlaA6GY8t0P5PjIOZemULz/E2Bnm/2dcUOena75OTNkHI76uZBNUUq3A==", + "version": "8.5.6", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.6.tgz", + "integrity": "sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==", "requires": { - "nanoid": "^3.3.8", + "nanoid": "^3.3.11", "picocolors": "^1.1.1", "source-map-js": "^1.2.1" } }, "postcss-media-query-parser": { "version": "0.2.3", + "resolved": "https://registry.npmjs.org/postcss-media-query-parser/-/postcss-media-query-parser-0.2.3.tgz", + "integrity": "sha512-3sOlxmbKcSHMjlUXQZKQ06jOswE7oVkXPxmZdoB1r5l0q6gTFTQSHxNxOrCccElbW7dxNytifNEo8qidX2Vsig==", "dev": true }, "postcss-modules-extract-imports": { @@ -28645,11 +29638,15 @@ "dev": true }, "prettier": { - "version": "2.8.8", + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.6.2.tgz", + "integrity": "sha512-I7AIg5boAr5R0FFtJ6rCfD+LFsWHp81dolrFD8S79U9tb8Az2nGrJncnMSnys+bpQJfRUzqs9hnA81OAA3hCuQ==", "dev": true }, "prettier-linter-helpers": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz", + "integrity": "sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==", "dev": true, "requires": { "fast-diff": "^1.1.2" @@ -28850,7 +29847,9 @@ "requires": {} }, "react-display-name": { - "version": "0.2.5" + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/react-display-name/-/react-display-name-0.2.5.tgz", + "integrity": "sha512-I+vcaK9t4+kypiSgaiVWAipqHRXYmZIuAiS8vzFvXHHXVigg/sMKwlRgLy6LH2i3rmP+0Vzfl5lFsFRwF1r3pg==" }, "react-dom": { "version": "18.3.1", @@ -28860,10 +29859,12 @@ } }, "react-dropzone": { - "version": "14.2.3", + "version": "14.3.5", + "resolved": "https://registry.npmjs.org/react-dropzone/-/react-dropzone-14.3.5.tgz", + "integrity": "sha512-9nDUaEEpqZLOz5v5SUcFA0CjM4vq8YbqO0WRls+EYT7+DvxUdzDPKNCPLqGfj3YL9MsniCLCD4RFA6M95V6KMQ==", "requires": { - "attr-accept": "^2.2.2", - "file-selector": "^0.6.0", + "attr-accept": "^2.2.4", + "file-selector": "^2.1.0", "prop-types": "^15.8.1" } }, @@ -28872,6 +29873,8 @@ }, "react-jss": { "version": "10.10.0", + "resolved": "https://registry.npmjs.org/react-jss/-/react-jss-10.10.0.tgz", + "integrity": "sha512-WLiq84UYWqNBF6579/uprcIUnM1TSywYq6AIjKTTTG5ziJl9Uy+pwuvpN3apuyVwflMbD60PraeTKT7uWH9XEQ==", "requires": { "@babel/runtime": "^7.3.1", "@emotion/is-prop-valid": "^0.7.3", @@ -29022,13 +30025,31 @@ "regenerator-runtime": { "version": "0.14.1" }, - "regexp.prototype.flags": { - "version": "1.5.3", + "regexp.escape": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/regexp.escape/-/regexp.escape-2.0.1.tgz", + "integrity": "sha512-JItRb4rmyTzmERBkAf6J87LjDPy/RscIwmaJQ3gsFlAzrmZbZU8LwBw5IydFZXW9hqpgbPlGbMhtpqtuAhMgtg==", "dev": true, "requires": { "call-bind": "^1.0.7", "define-properties": "^1.2.1", + "es-abstract": "^1.23.3", "es-errors": "^1.3.0", + "for-each": "^0.3.3", + "safe-regex-test": "^1.0.3" + } + }, + "regexp.prototype.flags": { + "version": "1.5.4", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.4.tgz", + "integrity": "sha512-dYqgNSZbDwkaJ2ceRd9ojCGjBq+mOm9LmtXnAnEGyHhN/5R7iDW2TRw3h+o/jCFxus3P2LfWIIiwowAjANm7IA==", + "dev": true, + "requires": { + "call-bind": "^1.0.8", + "define-properties": "^1.2.1", + "es-errors": "^1.3.0", + "get-proto": "^1.0.1", + "gopd": "^1.2.0", "set-function-name": "^2.0.2" } }, @@ -29108,10 +30129,12 @@ "version": "5.1.1" }, "resolve": { - "version": "1.22.8", + "version": "1.22.10", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.10.tgz", + "integrity": "sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==", "dev": true, "requires": { - "is-core-module": "^2.13.0", + "is-core-module": "^2.16.0", "path-parse": "^1.0.7", "supports-preserve-symlinks-flag": "^1.0.0" } @@ -29264,7 +30287,9 @@ "dev": true }, "sanitize-html": { - "version": "2.13.1", + "version": "2.15.0", + "resolved": "https://registry.npmjs.org/sanitize-html/-/sanitize-html-2.15.0.tgz", + "integrity": "sha512-wIjst57vJGpLyBP8ioUbg6ThwJie5SuSIjHxJg53v5Fg+kUK+AXlb7bK3RNXpp315MvwM+0OBGCV6h5pPHsVhA==", "requires": { "deepmerge": "^4.2.2", "escape-string-regexp": "^4.0.0", @@ -29276,6 +30301,8 @@ "dependencies": { "dom-serializer": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz", + "integrity": "sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==", "requires": { "domelementtype": "^2.3.0", "domhandler": "^5.0.2", @@ -29284,12 +30311,16 @@ }, "domhandler": { "version": "5.0.3", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz", + "integrity": "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==", "requires": { "domelementtype": "^2.3.0" } }, "domutils": { - "version": "3.1.0", + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.2.2.tgz", + "integrity": "sha512-6kZKyUajlDuqlHKVX1w7gyslj9MPIXzIFiz/rGu35uC1wMi+kMhQwGhl4lt9unC9Vb9INnY9Z3/ZA3+FhASLaw==", "requires": { "dom-serializer": "^2.0.0", "domelementtype": "^2.3.0", @@ -29298,6 +30329,8 @@ }, "htmlparser2": { "version": "8.0.2", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-8.0.2.tgz", + "integrity": "sha512-GYdjWKDkbRLkZ5geuHs5NY1puJ+PXwP7+fHPRz06Eirsb9ugf6d8kkXav6ADhcODhFFPMIXyxkxSuMf3D6NCFA==", "requires": { "domelementtype": "^2.3.0", "domhandler": "^5.0.3", @@ -29308,9 +30341,9 @@ } }, "sass": { - "version": "1.88.0", - "resolved": "https://registry.npmjs.org/sass/-/sass-1.88.0.tgz", - "integrity": "sha512-sF6TWQqjFvr4JILXzG4ucGOLELkESHL+I5QJhh7CNaE+Yge0SI+ehCatsXhJ7ymU1hAFcIS3/PBpjdIbXoyVbg==", + "version": "1.90.0", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.90.0.tgz", + "integrity": "sha512-9GUyuksjw70uNpb1MTYWsH9MQHOHY6kwfnkafC24+7aOMZn9+rVMBxRbLvw756mrBFbIsFg6Xw9IkR2Fnn3k+Q==", "dev": true, "requires": { "@parcel/watcher": "^2.4.1", @@ -29543,7 +30576,9 @@ } }, "shallow-equal": { - "version": "1.2.1" + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/shallow-equal/-/shallow-equal-1.2.1.tgz", + "integrity": "sha512-S4vJDjHHMBaiZuT9NPb616CSmLf618jawtv3sufLl6ivK8WocjAo58cXwbRV1cgqxH0Qbv+iUt6m05eqEa2IRA==" }, "shebang-command": { "version": "2.0.0", @@ -29659,6 +30694,12 @@ "totalist": "^3.0.0" } }, + "slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true + }, "slice-ansi": { "version": "4.0.0", "dev": true, @@ -29828,6 +30869,16 @@ "integrity": "sha512-UGvjygr6F6tpH7o2qyqR6QYpwraIjKSdtzyBdyytFOHmPZY917kwdwLG0RbOjWOnKmnm3PeHjaoLLMie7kPLQw==", "dev": true }, + "stop-iteration-iterator": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/stop-iteration-iterator/-/stop-iteration-iterator-1.1.0.tgz", + "integrity": "sha512-eLoXW/DHyl62zxY4SCaIgnRhuMr6ri4juEYARS8E6sCEqzKpOiE521Ucofdx+KnDZl5xmvGYaaKCk5FEOxJCoQ==", + "dev": true, + "requires": { + "es-errors": "^1.3.0", + "internal-slot": "^1.1.0" + } + }, "stream-browserify": { "version": "3.0.0", "dev": true, @@ -29845,6 +30896,8 @@ }, "strict-event-emitter": { "version": "0.5.1", + "resolved": "https://registry.npmjs.org/strict-event-emitter/-/strict-event-emitter-0.5.1.tgz", + "integrity": "sha512-vMgjE/GGEPEFnhFub6pa4FmJBRBVOLpIII2hvCZ8Kzb7K0hlHo7mQv6xYrBvCL2LtAIBwFUK8wvuJgTVSQ5MFQ==", "dev": true }, "string_decoder": { @@ -30010,17 +31063,36 @@ }, "strip-json-comments": { "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", "dev": true }, - "stylelint": { - "version": "16.18.0", - "resolved": "https://registry.npmjs.org/stylelint/-/stylelint-16.18.0.tgz", - "integrity": "sha512-OXb68qzesv7J70BSbFwfK3yTVLEVXiQ/ro6wUE4UrSbKCMjLLA02S8Qq3LC01DxKyVjk7z8xh35aB4JzO3/sNA==", + "strip-literal": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-literal/-/strip-literal-3.0.0.tgz", + "integrity": "sha512-TcccoMhJOM3OebGhSBEmp3UZ2SfDMZUEBdRA/9ynfLi8yYajyWX3JiXArcJt4Umh4vISpspkQIY8ZZoCqjbviA==", "dev": true, "requires": { - "@csstools/css-parser-algorithms": "^3.0.4", - "@csstools/css-tokenizer": "^3.0.3", - "@csstools/media-query-list-parser": "^4.0.2", + "js-tokens": "^9.0.1" + }, + "dependencies": { + "js-tokens": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-9.0.1.tgz", + "integrity": "sha512-mxa9E9ITFOt0ban3j6L5MpjwegGz6lBQmM1IJkWeBZGcMxto50+eWdjC/52xDbS2vy0k7vIMK0Fe2wfL9OQSpQ==", + "dev": true + } + } + }, + "stylelint": { + "version": "16.23.1", + "resolved": "https://registry.npmjs.org/stylelint/-/stylelint-16.23.1.tgz", + "integrity": "sha512-dNvDTsKV1U2YtiUDfe9d2gp902veFeo3ecCWdGlmLm2WFrAV0+L5LoOj/qHSBABQwMsZPJwfC4bf39mQm1S5zw==", + "dev": true, + "requires": { + "@csstools/css-parser-algorithms": "^3.0.5", + "@csstools/css-tokenizer": "^3.0.4", + "@csstools/media-query-list-parser": "^4.0.3", "@csstools/selector-specificity": "^5.0.0", "@dual-bundle/import-meta-resolve": "^4.1.0", "balanced-match": "^2.0.0", @@ -30028,24 +31100,24 @@ "cosmiconfig": "^9.0.0", "css-functions-list": "^3.2.3", "css-tree": "^3.1.0", - "debug": "^4.3.7", + "debug": "^4.4.1", "fast-glob": "^3.3.3", "fastest-levenshtein": "^1.0.16", - "file-entry-cache": "^10.0.7", + "file-entry-cache": "^10.1.3", "global-modules": "^2.0.0", "globby": "^11.1.0", "globjoin": "^0.1.4", "html-tags": "^3.3.1", - "ignore": "^7.0.3", + "ignore": "^7.0.5", "imurmurhash": "^0.1.4", "is-plain-object": "^5.0.0", - "known-css-properties": "^0.35.0", + "known-css-properties": "^0.37.0", "mathml-tag-names": "^2.1.3", "meow": "^13.2.0", "micromatch": "^4.0.8", "normalize-path": "^3.0.0", "picocolors": "^1.1.1", - "postcss": "^8.5.3", + "postcss": "^8.5.6", "postcss-resolve-nested-selector": "^0.1.6", "postcss-safe-parser": "^7.0.1", "postcss-selector-parser": "^7.1.0", @@ -30058,10 +31130,6 @@ "write-file-atomic": "^5.0.1" }, "dependencies": { - "array-union": { - "version": "2.1.0", - "dev": true - }, "balanced-match": { "version": "2.0.0", "dev": true @@ -30077,87 +31145,81 @@ } }, "file-entry-cache": { - "version": "10.0.7", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-10.0.7.tgz", - "integrity": "sha512-txsf5fu3anp2ff3+gOJJzRImtrtm/oa9tYLN0iTuINZ++EyVR/nRrg2fKYwvG/pXDofcrvvb0scEbX3NyW/COw==", + "version": "10.1.3", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-10.1.3.tgz", + "integrity": "sha512-D+w75Ub8T55yor7fPgN06rkCAUbAYw2vpxJmmjv/GDAcvCnv9g7IvHhIZoxzRZThrXPFI2maeY24pPbtyYU7Lg==", "dev": true, "requires": { - "flat-cache": "^6.1.7" + "flat-cache": "^6.1.12" } }, "flat-cache": { - "version": "6.1.7", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-6.1.7.tgz", - "integrity": "sha512-qwZ4xf1v1m7Rc9XiORly31YaChvKt6oNVHuqqZcoED/7O+ToyNVGobKsIAopY9ODcWpEDKEBAbrSOCBHtNQvew==", + "version": "6.1.12", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-6.1.12.tgz", + "integrity": "sha512-U+HqqpZPPXP5d24bWuRzjGqVqUcw64k4nZAbruniDwdRg0H10tvN7H6ku1tjhA4rg5B9GS3siEvwO2qjJJ6f8Q==", "dev": true, "requires": { - "cacheable": "^1.8.9", + "cacheable": "^1.10.3", "flatted": "^3.3.3", - "hookified": "^1.7.1" - } - }, - "globby": { - "version": "11.1.0", - "dev": true, - "requires": { - "array-union": "^2.1.0", - "dir-glob": "^3.0.1", - "fast-glob": "^3.2.9", - "ignore": "^5.2.0", - "merge2": "^1.4.1", - "slash": "^3.0.0" - }, - "dependencies": { - "ignore": { - "version": "5.3.2", - "dev": true - } + "hookified": "^1.10.0" } }, "ignore": { - "version": "7.0.3", + "version": "7.0.5", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-7.0.5.tgz", + "integrity": "sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg==", "dev": true }, "resolve-from": { "version": "5.0.0", "dev": true - }, - "slash": { - "version": "3.0.0", - "dev": true } } }, "stylelint-config-recommended": { - "version": "14.0.1", + "version": "17.0.0", + "resolved": "https://registry.npmjs.org/stylelint-config-recommended/-/stylelint-config-recommended-17.0.0.tgz", + "integrity": "sha512-WaMSdEiPfZTSFVoYmJbxorJfA610O0tlYuU2aEwY33UQhSPgFbClrVJYWvy3jGJx+XW37O+LyNLiZOEXhKhJmA==", "dev": true, "requires": {} }, "stylelint-config-recommended-scss": { - "version": "14.1.0", + "version": "16.0.0", + "resolved": "https://registry.npmjs.org/stylelint-config-recommended-scss/-/stylelint-config-recommended-scss-16.0.0.tgz", + "integrity": "sha512-Vh09MlGgKUwgHwuTQXPI6CbwMgXEUpjv+6EpVhZtHkGUJY7yFIoJby3Wcjd12rvdp6xOMdMIKU48Qu6KwZK+mw==", "dev": true, "requires": { "postcss-scss": "^4.0.9", - "stylelint-config-recommended": "^14.0.1", - "stylelint-scss": "^6.4.0" + "stylelint-config-recommended": "^17.0.0", + "stylelint-scss": "^6.12.1" } }, "stylelint-scss": { - "version": "6.10.1", + "version": "6.12.1", + "resolved": "https://registry.npmjs.org/stylelint-scss/-/stylelint-scss-6.12.1.tgz", + "integrity": "sha512-UJUfBFIvXfly8WKIgmqfmkGKPilKB4L5j38JfsDd+OCg2GBdU0vGUV08Uw82tsRZzd4TbsUURVVNGeOhJVF7pA==", "dev": true, "requires": { "css-tree": "^3.0.1", "is-plain-object": "^5.0.0", - "known-css-properties": "^0.35.0", - "mdn-data": "^2.14.0", + "known-css-properties": "^0.36.0", + "mdn-data": "^2.21.0", "postcss-media-query-parser": "^0.2.3", "postcss-resolve-nested-selector": "^0.1.6", - "postcss-selector-parser": "^7.0.0", + "postcss-selector-parser": "^7.1.0", "postcss-value-parser": "^4.2.0" }, "dependencies": { + "known-css-properties": { + "version": "0.36.0", + "resolved": "https://registry.npmjs.org/known-css-properties/-/known-css-properties-0.36.0.tgz", + "integrity": "sha512-A+9jP+IUmuQsNdsLdcg6Yt7voiMF/D4K83ew0OpJtpu+l34ef7LaohWV0Rc6KNvzw6ZDizkqfyB5JznZnzuKQA==", + "dev": true + }, "mdn-data": { - "version": "2.15.0", + "version": "2.21.0", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.21.0.tgz", + "integrity": "sha512-+ZKPQezM5vYJIkCxaC+4DTnRrVZR1CgsKLu5zsQERQx6Tea8Y+wMx5A24rq8A8NepCeatIQufVAekKNgiBMsGQ==", "dev": true } } @@ -30233,14 +31295,27 @@ } }, "symbol-observable": { - "version": "1.2.0" + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.2.0.tgz", + "integrity": "sha512-e900nM8RRtGhlV36KGEU9k65K3mPb1WV70OdjfxlG2EAuM1noi/E/BaW/uMhL7bPEssK8QV57vN3esixjUvcXQ==" }, "symbol-tree": { "version": "3.2.4", "dev": true }, + "synckit": { + "version": "0.11.8", + "resolved": "https://registry.npmjs.org/synckit/-/synckit-0.11.8.tgz", + "integrity": "sha512-+XZ+r1XGIJGeQk3VvXhT6xx/VpbHsRzsTkGgF6E5RX9TTXD0118l87puaEBZ566FhqblC6U0d4XnubznJDm30A==", + "dev": true, + "requires": { + "@pkgr/core": "^0.2.4" + } + }, "tabbable": { - "version": "6.2.0" + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/tabbable/-/tabbable-6.2.0.tgz", + "integrity": "sha512-Cat63mxsVJlzYvN51JmVXIgNoUokrIaT2zLclCXjRd8boZ0004U4KCs/sToJ75C6sdlByWxpYnb5Boif1VSFew==" }, "table": { "version": "6.9.0", @@ -30360,12 +31435,10 @@ } } }, - "text-table": { - "version": "0.2.0", - "dev": true - }, "theming": { "version": "3.3.0", + "resolved": "https://registry.npmjs.org/theming/-/theming-3.3.0.tgz", + "integrity": "sha512-u6l4qTJRDaWZsqa8JugaNt7Xd8PPl9+gonZaIe28vAhqgHMIG/DOyFPqiKN/gQLQYj05tHv+YQdNILL4zoiAVA==", "requires": { "hoist-non-react-statics": "^3.3.0", "prop-types": "^15.5.8", @@ -30402,7 +31475,9 @@ "peer": true }, "tiny-warning": { - "version": "1.0.3" + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/tiny-warning/-/tiny-warning-1.0.3.tgz", + "integrity": "sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA==" }, "tinybench": { "version": "2.9.0", @@ -30413,9 +31488,9 @@ "dev": true }, "tinyglobby": { - "version": "0.2.13", - "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.13.tgz", - "integrity": "sha512-mEwzpUgrLySlveBwEVDMKk5B57bhLPYovRfPAXD5gA/98Opn0rCDj3GtLwFvCvH5RK9uPCExUROW5NjDwvqkxw==", + "version": "0.2.14", + "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.14.tgz", + "integrity": "sha512-tX5e7OM1HnYr2+a2C/4V0htOcSQcoSTH9KgJnVvNm5zm/cyEWKJ7j7YutsH9CxMdtOkkLFy2AHrMci9IM8IPZQ==", "dev": true, "requires": { "fdir": "^6.4.4", @@ -30438,7 +31513,9 @@ } }, "tinypool": { - "version": "1.0.2", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/tinypool/-/tinypool-1.1.1.tgz", + "integrity": "sha512-Zba82s87IFq9A9XmjiX5uZA/ARWDrB03OHlq+Vw1fSdt0I+4/Kutwy8BP4Y/y/aORMo61FQ0vIb5j44vSo5Pkg==", "dev": true }, "tinyrainbow": { @@ -30446,9 +31523,9 @@ "dev": true }, "tinyspy": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/tinyspy/-/tinyspy-3.0.2.tgz", - "integrity": "sha512-n1cw8k1k0x4pgA2+9XrOkFydTerNcJ1zWCO5Nn9scWHTD+5tp8dghT2x1uduQePZTZgd3Tupf+x9BxJjeJi77Q==", + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/tinyspy/-/tinyspy-4.0.3.tgz", + "integrity": "sha512-t2T/WLB2WRgZ9EpE4jgPJ9w+i66UZfDc8wHh0xrwiRNN+UwH98GIJkTeZqX9rg0i0ptwzqW+uYeIF0T4F8LR7A==", "dev": true }, "tldts": { @@ -30636,9 +31713,9 @@ } }, "ts-pattern": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/ts-pattern/-/ts-pattern-5.7.0.tgz", - "integrity": "sha512-0/FvIG4g3kNkYgbNwBBW5pZBkfpeYQnH+2AA3xmjkCAit/DSDPKmgwC3fKof4oYUq6gupClVOJlFl+939VRBMg==", + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/ts-pattern/-/ts-pattern-5.7.1.tgz", + "integrity": "sha512-EGs8PguQqAAUIcQfK4E9xdXxB6s2GK4sJfT/vcc9V1ELIvC4LH/zXu2t/5fajtv6oiRCxdv7BgtVK3vWgROxag==", "dev": true }, "tsconfig-paths": { @@ -30733,6 +31810,18 @@ "integrity": "sha512-p1diW6TqL9L07nNxvRMM7hMMw4c5XOo/1ibL4aAIGmSAt9slTE1Xgw5KWuof2uTOvCg9BY7ZRi+GaF+7sfgPeQ==", "dev": true }, + "typescript-eslint": { + "version": "8.40.0", + "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.40.0.tgz", + "integrity": "sha512-Xvd2l+ZmFDPEt4oj1QEXzA4A2uUK6opvKu3eGN9aGjB8au02lIVcLyi375w94hHyejTOmzIU77L8ol2sRg9n7Q==", + "dev": true, + "requires": { + "@typescript-eslint/eslint-plugin": "8.40.0", + "@typescript-eslint/parser": "8.40.0", + "@typescript-eslint/typescript-estree": "8.40.0", + "@typescript-eslint/utils": "8.40.0" + } + }, "ufo": { "version": "1.5.4", "resolved": "https://registry.npmjs.org/ufo/-/ufo-1.5.4.tgz", @@ -30750,9 +31839,9 @@ } }, "undici-types": { - "version": "6.21.0", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz", - "integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==" + "version": "7.10.0", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.10.0.tgz", + "integrity": "sha512-t5Fy/nfn+14LuOc2KNYg75vZqClpAiqscVvMygNnlsHBFpSXdJaYtXMcdNLpl/Qvc3P2cB3s6lOV51nqsFq4ag==" }, "unicode-canonical-property-names-ecmascript": { "version": "2.0.1", @@ -30833,10 +31922,12 @@ } }, "update-browserslist-db": { - "version": "1.1.1", + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.3.tgz", + "integrity": "sha512-UxhIZQ+QInVdunkDAaiazvvT/+fXL5Osr0JZlJulepYu6Jd7qJtDZjlur0emRlT71EN3ScPoE7gvsuIKKNavKw==", "requires": { "escalade": "^3.2.0", - "picocolors": "^1.1.0" + "picocolors": "^1.1.1" } }, "uri-js": { @@ -30950,44 +32041,46 @@ } }, "vite-node": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/vite-node/-/vite-node-3.1.2.tgz", - "integrity": "sha512-/8iMryv46J3aK13iUXsei5G/A3CUlW4665THCPS+K8xAaqrVWiGB4RfXMQXCLjpK9P2eK//BczrVkn5JLAk6DA==", + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/vite-node/-/vite-node-3.2.4.tgz", + "integrity": "sha512-EbKSKh+bh1E1IFxeO0pg1n4dvoOTt0UDiXMd/qn++r98+jPO1xtJilvXldeuQ8giIB5IkpjCgMleHMNEsGH6pg==", "dev": true, "requires": { "cac": "^6.7.14", - "debug": "^4.4.0", - "es-module-lexer": "^1.6.0", + "debug": "^4.4.1", + "es-module-lexer": "^1.7.0", "pathe": "^2.0.3", - "vite": "^5.0.0 || ^6.0.0" + "vite": "^5.0.0 || ^6.0.0 || ^7.0.0-0" } }, "vitest": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/vitest/-/vitest-3.1.2.tgz", - "integrity": "sha512-WaxpJe092ID1C0mr+LH9MmNrhfzi8I65EX/NRU/Ld016KqQNRgxSOlGNP1hHN+a/F8L15Mh8klwaF77zR3GeDQ==", + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/vitest/-/vitest-3.2.4.tgz", + "integrity": "sha512-LUCP5ev3GURDysTWiP47wRRUpLKMOfPh+yKTx3kVIEiu5KOMeqzpnYNsKyOoVrULivR8tLcks4+lga33Whn90A==", "dev": true, "requires": { - "@vitest/expect": "3.1.2", - "@vitest/mocker": "3.1.2", - "@vitest/pretty-format": "^3.1.2", - "@vitest/runner": "3.1.2", - "@vitest/snapshot": "3.1.2", - "@vitest/spy": "3.1.2", - "@vitest/utils": "3.1.2", + "@types/chai": "^5.2.2", + "@vitest/expect": "3.2.4", + "@vitest/mocker": "3.2.4", + "@vitest/pretty-format": "^3.2.4", + "@vitest/runner": "3.2.4", + "@vitest/snapshot": "3.2.4", + "@vitest/spy": "3.2.4", + "@vitest/utils": "3.2.4", "chai": "^5.2.0", - "debug": "^4.4.0", + "debug": "^4.4.1", "expect-type": "^1.2.1", "magic-string": "^0.30.17", "pathe": "^2.0.3", + "picomatch": "^4.0.2", "std-env": "^3.9.0", "tinybench": "^2.9.0", "tinyexec": "^0.3.2", - "tinyglobby": "^0.2.13", - "tinypool": "^1.0.2", + "tinyglobby": "^0.2.14", + "tinypool": "^1.1.1", "tinyrainbow": "^2.0.0", - "vite": "^5.0.0 || ^6.0.0", - "vite-node": "3.1.2", + "vite": "^5.0.0 || ^6.0.0 || ^7.0.0-0", + "vite-node": "3.2.4", "why-is-node-running": "^2.3.0" }, "dependencies": { @@ -30997,6 +32090,12 @@ "requires": { "@jridgewell/sourcemap-codec": "^1.5.0" } + }, + "picomatch": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.2.tgz", + "integrity": "sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==", + "dev": true } } }, @@ -31337,13 +32436,16 @@ } }, "which-typed-array": { - "version": "1.1.18", + "version": "1.1.19", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.19.tgz", + "integrity": "sha512-rEvr90Bck4WZt9HHFC4DJMsjvu7x+r6bImz0/BrbWb7A2djJ8hnZMrWnHo9F8ssv0OMErasDhftrfROTyqSDrw==", "dev": true, "requires": { "available-typed-arrays": "^1.0.7", "call-bind": "^1.0.8", - "call-bound": "^1.0.3", - "for-each": "^0.3.3", + "call-bound": "^1.0.4", + "for-each": "^0.3.5", + "get-proto": "^1.0.1", "gopd": "^1.2.0", "has-tostringtag": "^1.0.2" } @@ -31395,9 +32497,9 @@ } }, "ws": { - "version": "8.18.1", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.1.tgz", - "integrity": "sha512-RKW2aJZMXeMxVpnZ6bck+RswznaxmzdULiBr6KY7XkTnW8uvt0iT9H5DkHUChXrc+uurzwa0rVI16n/Xzjdz1w==", + "version": "8.18.3", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.3.tgz", + "integrity": "sha512-PEIGCY5tSlUt50cqyMXfCzX+oOPqN0vuGqWzbcJ2xvnkzkq46oOpz7dQaTDBdfICb4N14+GARUDw2XV2N4tvzg==", "dev": true, "requires": {} }, diff --git a/package.json b/package.json index 963f24c0..a262b49f 100644 --- a/package.json +++ b/package.json @@ -8,17 +8,18 @@ }, "dependencies": { "@ltd/j-toml": "1.38.0", - "@patternfly/patternfly": "5.4.1", - "@patternfly/react-code-editor": "5.4.1", - "@patternfly/react-core": "5.4.12", - "@patternfly/react-table": "5.4.14", - "@redhat-cloud-services/frontend-components": "5.2.6", - "@redhat-cloud-services/frontend-components-notifications": "4.1.20", - "@redhat-cloud-services/frontend-components-utilities": "5.0.11", + "@patternfly/patternfly": "6.3.1", + "@patternfly/react-code-editor": "6.3.1", + "@patternfly/react-core": "6.3.1", + "@patternfly/react-table": "6.3.1", + "@redhat-cloud-services/frontend-components": "7.0.3", + "@redhat-cloud-services/frontend-components-notifications": "6.1.5", + "@redhat-cloud-services/frontend-components-utilities": "7.0.3", + "@redhat-cloud-services/types": "3.0.1", "@reduxjs/toolkit": "2.8.2", "@scalprum/react-core": "0.9.5", - "@sentry/webpack-plugin": "3.4.0", - "@unleash/proxy-client-react": "5.0.0", + "@sentry/webpack-plugin": "4.1.1", + "@unleash/proxy-client-react": "5.0.1", "classnames": "2.5.1", "jwt-decode": "4.0.0", "lodash": "4.17.21", @@ -30,68 +31,72 @@ "redux-promise-middleware": "6.2.0" }, "devDependencies": { - "@babel/core": "7.26.10", - "@babel/preset-env": "7.27.2", + "@babel/core": "7.28.0", + "@babel/preset-env": "7.28.0", "@babel/preset-react": "7.27.1", - "@babel/preset-typescript": "7.27.0", - "@currents/playwright": "1.13.2", - "@patternfly/react-icons": "5.4.2", + "@babel/preset-typescript": "7.27.1", + "@currents/playwright": "1.15.3", + "@eslint/js": "9.32.0", + "@patternfly/react-icons": "6.3.1", "@playwright/test": "1.51.1", - "@redhat-cloud-services/eslint-config-redhat-cloud-services": "2.0.12", + "@redhat-cloud-services/eslint-config-redhat-cloud-services": "3.0.0", "@redhat-cloud-services/frontend-components-config": "6.3.8", - "@redhat-cloud-services/tsc-transform-imports": "1.0.24", + "@redhat-cloud-services/tsc-transform-imports": "1.0.25", "@rtk-query/codegen-openapi": "2.0.0", - "@testing-library/dom": "10.4.0", - "@testing-library/jest-dom": "6.6.3", + "@testing-library/dom": "10.4.1", + "@testing-library/jest-dom": "6.6.4", "@testing-library/react": "16.3.0", "@testing-library/user-event": "14.6.1", - "@types/node": "22.15.1", + "@types/node": "24.3.0", "@types/react": "18.3.12", "@types/react-dom": "18.3.1", "@types/react-redux": "7.1.34", "@types/uuid": "10.0.0", - "@typescript-eslint/eslint-plugin": "8.32.1", - "@typescript-eslint/parser": "8.32.1", - "@vitejs/plugin-react": "4.4.1", - "@vitest/coverage-v8": "3.1.2", + "@typescript-eslint/eslint-plugin": "8.40.0", + "@typescript-eslint/parser": "8.40.0", + "@vitejs/plugin-react": "4.7.0", + "@vitest/coverage-v8": "3.2.4", "babel-loader": "10.0.0", - "chart.js": "4.4.9", + "chart.js": "4.5.0", "chartjs-adapter-moment": "1.0.1", "chartjs-plugin-annotation": "3.1.0", "copy-webpack-plugin": "13.0.0", "css-loader": "7.1.2", - "eslint": "8.57.1", + "eslint": "9.33.0", "eslint-plugin-disable-autofix": "5.0.1", - "eslint-plugin-import": "2.31.0", + "eslint-plugin-import": "2.32.0", "eslint-plugin-jest-dom": "5.5.0", "eslint-plugin-jsx-a11y": "6.10.2", - "eslint-plugin-playwright": "2.2.0", + "eslint-plugin-playwright": "2.2.2", + "eslint-plugin-prettier": "5.5.4", "eslint-plugin-react": "7.37.5", "eslint-plugin-react-hooks": "5.2.0", "eslint-plugin-react-redux": "4.2.2", - "eslint-plugin-testing-library": "7.2.2", + "eslint-plugin-testing-library": "7.6.6", "git-revision-webpack-plugin": "5.0.0", + "globals": "16.3.0", "history": "5.3.0", "identity-obj-proxy": "3.0.0", "jsdom": "26.1.0", "madge": "8.0.0", "mini-css-extract-plugin": "2.9.2", "moment": "2.30.1", - "msw": "2.7.5", + "msw": "2.10.5", "npm-run-all": "4.1.5", "path-browserify": "1.0.1", "postcss-scss": "4.0.9", "react-chartjs-2": "5.3.0", "redux-mock-store": "1.5.5", - "sass": "1.88.0", + "sass": "1.90.0", "sass-loader": "16.0.5", - "stylelint": "16.18.0", - "stylelint-config-recommended-scss": "14.1.0", + "stylelint": "16.23.1", + "stylelint-config-recommended-scss": "16.0.0", "ts-node": "10.9.2", "ts-patch": "3.3.0", "typescript": "5.8.3", + "typescript-eslint": "8.40.0", "uuid": "11.1.0", - "vitest": "3.1.2", + "vitest": "3.2.4", "vitest-canvas-mock": "0.3.3", "webpack-bundle-analyzer": "4.10.2", "whatwg-fetch": "3.6.20" @@ -112,9 +117,7 @@ "test:cockpit": "src/test/cockpit-tests.sh", "build": "fec build", "build:cockpit": "webpack --config cockpit/webpack.config.ts", - "api": "npm-run-all api:pull api:generate", - "api:generate": "bash api/codegen.sh", - "api:pull": "bash api/pull.sh", + "api": "bash api/codegen.sh", "verify": "npm-run-all build lint test", "postinstall": "ts-patch install", "circular": "madge --circular ./src --extensions js,ts,tsx", diff --git a/packit.yaml b/packit.yaml index bd019940..2cbf432b 100644 --- a/packit.yaml +++ b/packit.yaml @@ -16,6 +16,15 @@ srpm_build_deps: - npm jobs: + - job: tests + identifier: self + trigger: pull_request + tmt_plan: /plans/all/main + targets: + - centos-stream-10 + - fedora-41 + - fedora-42 + - job: copr_build trigger: pull_request targets: &build_targets @@ -24,7 +33,6 @@ jobs: - centos-stream-10 - centos-stream-10-aarch64 - fedora-all - - fedora-all-aarch64 - job: copr_build trigger: commit diff --git a/plans/all.fmf b/plans/all.fmf new file mode 100644 index 00000000..66deae89 --- /dev/null +++ b/plans/all.fmf @@ -0,0 +1,14 @@ +summary: cockpit-image-builder playwright tests +prepare: + how: install + package: + - cockpit-image-builder +discover: + how: fmf +execute: + how: tmt + +/main: + summary: playwright tests + discover+: + test: /schutzbot/playwright diff --git a/playwright.config.ts b/playwright.config.ts index fde83958..c6be20e7 100644 --- a/playwright.config.ts +++ b/playwright.config.ts @@ -34,9 +34,14 @@ export default defineConfig({ ignoreHTTPSErrors: true, }, projects: [ + { name: 'setup', testMatch: /.*\.setup\.ts/ }, { name: 'chromium', - use: { ...devices['Desktop Chrome'] }, + use: { + ...devices['Desktop Chrome'], + storageState: '.auth/user.json', + }, + dependencies: ['setup'], }, ], }); diff --git a/playwright/Customizations/AAP.spec.ts b/playwright/Customizations/AAP.spec.ts new file mode 100644 index 00000000..f550257c --- /dev/null +++ b/playwright/Customizations/AAP.spec.ts @@ -0,0 +1,214 @@ +import { expect } from '@playwright/test'; +import { v4 as uuidv4 } from 'uuid'; + +import { test } from '../fixtures/customizations'; +import { isHosted } from '../helpers/helpers'; +import { ensureAuthenticated } from '../helpers/login'; +import { + ibFrame, + navigateToLandingPage, + navigateToOptionalSteps, +} from '../helpers/navHelpers'; +import { + createBlueprint, + deleteBlueprint, + exportBlueprint, + fillInDetails, + fillInImageOutputGuest, + importBlueprint, + registerLater, +} from '../helpers/wizardHelpers'; + +const validCallbackUrl = + 'https://controller.url/api/controller/v2/job_templates/9/callback/'; +const validHttpCallbackUrl = + 'http://controller.url/api/controller/v2/job_templates/9/callback/'; +const validHostConfigKey = 'hostconfigkey'; +const validCertificate = `-----BEGIN CERTIFICATE----- +MIIDXTCCAkWgAwIBAgIJAOEzx5ezZ9EIMA0GCSqGSIb3DQEBCwUAMEUxCzAJBgNV +BAYTAklOMQswCQYDVQQIDAJLUjEMMAoGA1UEBwwDS1JHMRAwDgYDVQQKDAdUZXN0 +IENBMB4XDTI1MDUxNTEyMDAwMFoXDTI2MDUxNTEyMDAwMFowRTELMAkGA1UEBhMC +SU4xCzAJBgNVBAgMAktSMQwwCgYDVQQHDANSR0sxEDAOBgNVBAoMB1Rlc3QgQ0Ew +ggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC+R4gfN5pyJQo5qBTTtN+7 +eE9CSXZJ8SVVaE3U54IgqQoqsSoBY5QtExy7v5C6l6mW4E6dzK/JecmvTTO/BvlG +A5k2hxB6bOQxtxYwfgElH+RFWN9P4xxhtEiQgHoG1rDfnXuDJk1U3YEkCQELUebz +fF3EIDU1yR0Sz2bA+Sl2VXe8og1MEZfytq8VZUVltxtn2PfW7zI5gOllBR2sKeUc +K6h8HXN7qMgfEvsLIXxTw7fU/zA3ibcxfRCl3m6QhF8hwRh6F9Wtz2s8hCzGegV5 +z0M39nY7X8C3GZQ4Ly8v8DdY+FbEix7K3SSBRbWtdPfAHRFlX9Er2Wf8DAr7O2hH +AgMBAAGjUDBOMB0GA1UdDgQWBBTXXz2eIDgK+BhzDUAGzptn0OMcpDAfBgNVHSME +GDAWgBTXXz2eIDgK+BhzDUAGzptn0OMcpDAMBgNVHRMEBTADAQH/MA0GCSqGSIb3 +DQEBCwUAA4IBAQAoUgY4jsuBMB3el9cc7JS2rcOhhJzn47Hj2UANfJq52g5lbjo7 +XDc7Wb3VDcV+1LzjdzayT1qO1WzHb6FDPW9L9f6h4s8lj6MvJ+xhOWgD11srdIt3 +vbQaQW4zDfeVRcKXzqbcUX8BLXAdzJPqVwZ+Z4EDjYrJ7lF9k+IqfZm0MsYX7el9 +kvdRHbLuF4Q0sZ05CXMFkhM0Ulhu4MZ+1FcsQa7nWfZzTmbjHOuWJPB4z5WwrB7z +U8YYvWJ3qxToWGbATqJxkRKGGqLrNrmwcfzgPqkpuCRYi0Kky6gJ1RvL+DRopY9x +uD+ckf3oH2wYAB6RpPRMkfVxe7lGMvq/yEZ6 +-----END CERTIFICATE-----`; +const invalidCertificate = `-----BEGIN CERTIFICATE----- +ThisIs*Not+Valid/Base64== +-----END CERTIFICATE-----`; + +test('Create a blueprint with AAP registration customization', async ({ + page, + cleanup, +}) => { + const blueprintName = 'test-' + uuidv4(); + + // Skip entirely in Cockpit/on-premise where AAP customization is unavailable + test.skip(!isHosted(), 'AAP customization is not available in the plugin'); + + // Delete the blueprint after the run fixture + await cleanup.add(() => deleteBlueprint(page, blueprintName)); + await ensureAuthenticated(page); + + // Navigate to IB landing page and get the frame + await navigateToLandingPage(page); + const frame = await ibFrame(page); + + await test.step('Navigate to optional steps in Wizard', async () => { + await navigateToOptionalSteps(frame); + await registerLater(frame); + }); + + await test.step('Select and fill the AAP step with valid configuration', async () => { + await frame + .getByRole('button', { name: 'Ansible Automation Platform' }) + .click(); + await frame + .getByRole('textbox', { name: 'ansible callback url' }) + .fill(validCallbackUrl); + await frame + .getByRole('textbox', { name: 'host config key' }) + .fill(validHostConfigKey); + await frame + .getByRole('textbox', { name: 'File upload' }) + .fill(validCertificate); + await expect(frame.getByRole('button', { name: 'Next' })).toBeEnabled(); + }); + + await test.step('Test TLS confirmation checkbox for HTTPS URLs', async () => { + // TLS confirmation checkbox should appear for HTTPS URLs + await expect( + frame.getByRole('checkbox', { + name: 'Insecure', + }), + ).toBeVisible(); + + // Check TLS confirmation and verify CA input is hidden + await frame + .getByRole('checkbox', { + name: 'Insecure', + }) + .check(); + await expect( + frame.getByRole('textbox', { name: 'File upload' }), + ).toBeHidden(); + + await frame + .getByRole('checkbox', { + name: 'Insecure', + }) + .uncheck(); + + await expect( + frame.getByRole('textbox', { name: 'File upload' }), + ).toBeVisible(); + }); + + await test.step('Test certificate validation', async () => { + await frame.getByRole('textbox', { name: 'File upload' }).clear(); + await frame + .getByRole('textbox', { name: 'File upload' }) + .fill(invalidCertificate); + await expect(frame.getByText(/Certificate.*is not valid/)).toBeVisible(); + + await frame.getByRole('textbox', { name: 'File upload' }).clear(); + await frame + .getByRole('textbox', { name: 'File upload' }) + .fill(validCertificate); + + await expect(frame.getByText('Certificate was uploaded')).toBeVisible(); + }); + + await test.step('Test HTTP URL behavior', async () => { + await frame.getByRole('textbox', { name: 'ansible callback url' }).clear(); + await frame + .getByRole('textbox', { name: 'ansible callback url' }) + .fill(validHttpCallbackUrl); + + // TLS confirmation checkbox should NOT appear for HTTP URLs + await expect( + frame.getByRole('checkbox', { + name: 'Insecure', + }), + ).toBeHidden(); + await expect( + frame.getByRole('textbox', { name: 'File upload' }), + ).toBeVisible(); + + await frame.getByRole('textbox', { name: 'ansible callback url' }).clear(); + await frame + .getByRole('textbox', { name: 'ansible callback url' }) + .fill(validCallbackUrl); + }); + + await test.step('Complete AAP configuration and proceed to review', async () => { + await frame.getByRole('button', { name: 'Review and finish' }).click(); + }); + + await test.step('Fill the BP details', async () => { + await fillInDetails(frame, blueprintName); + }); + + await test.step('Create BP', async () => { + await createBlueprint(frame, blueprintName); + }); + + await test.step('Edit BP and verify AAP configuration persists', async () => { + await frame.getByRole('button', { name: 'Edit blueprint' }).click(); + await frame.getByLabel('Revisit Ansible Automation Platform step').click(); + + await expect( + frame.getByRole('textbox', { name: 'ansible callback url' }), + ).toHaveValue(validCallbackUrl); + await expect( + frame.getByRole('textbox', { name: 'host config key' }), + ).toHaveValue(validHostConfigKey); + await expect( + frame.getByRole('textbox', { name: 'File upload' }), + ).toHaveValue(validCertificate); + + await frame.getByRole('button', { name: 'Review and finish' }).click(); + await frame + .getByRole('button', { name: 'Save changes to blueprint' }) + .click(); + }); + // This is for hosted service only as these features are not available in cockpit plugin + await test.step('Export BP', async (step) => { + step.skip(!isHosted(), 'Exporting is not available in the plugin'); + await exportBlueprint(page, blueprintName); + }); + + await test.step('Import BP', async (step) => { + step.skip(!isHosted(), 'Importing is not available in the plugin'); + await importBlueprint(page, blueprintName); + }); + + await test.step('Review imported BP', async (step) => { + step.skip(!isHosted(), 'Importing is not available in the plugin'); + await fillInImageOutputGuest(page); + await page + .getByRole('button', { name: 'Ansible Automation Platform' }) + .click(); + await expect( + page.getByRole('textbox', { name: 'ansible callback url' }), + ).toHaveValue(validCallbackUrl); + await expect( + page.getByRole('textbox', { name: 'host config key' }), + ).toBeEmpty(); + await expect( + page.getByRole('textbox', { name: 'File upload' }), + ).toHaveValue(validCertificate); + await page.getByRole('button', { name: 'Cancel' }).click(); + }); +}); diff --git a/playwright/Customizations/Filesystem.spec.ts b/playwright/Customizations/Filesystem.spec.ts new file mode 100644 index 00000000..31f669f5 --- /dev/null +++ b/playwright/Customizations/Filesystem.spec.ts @@ -0,0 +1,230 @@ +import { expect } from '@playwright/test'; +import { v4 as uuidv4 } from 'uuid'; + +import { FILE_SYSTEM_CUSTOMIZATION_URL } from '../../src/constants'; +import { test } from '../fixtures/cleanup'; +import { isHosted } from '../helpers/helpers'; +import { ensureAuthenticated } from '../helpers/login'; +import { + ibFrame, + navigateToLandingPage, + navigateToOptionalSteps, +} from '../helpers/navHelpers'; +import { + createBlueprint, + deleteBlueprint, + exportBlueprint, + fillInDetails, + fillInImageOutputGuest, + importBlueprint, + registerLater, +} from '../helpers/wizardHelpers'; + +test('Create a blueprint with Filesystem customization', async ({ + page, + cleanup, +}) => { + const blueprintName = 'test-' + uuidv4(); + + // Delete the blueprint after the run fixture + await cleanup.add(() => deleteBlueprint(page, blueprintName)); + + await ensureAuthenticated(page); + + // Login, navigate to IB and get the frame + await navigateToLandingPage(page); + const frame = await ibFrame(page); + + await test.step('Navigate to optional steps in Wizard', async () => { + await navigateToOptionalSteps(frame); + await registerLater(frame); + }); + + await test.step('Check URLs for documentation', async () => { + await frame + .getByRole('button', { name: 'File system configuration' }) + .click(); + await frame + .getByRole('radio', { name: 'Use automatic partitioning' }) + .click(); + const [newPageAutomatic] = await Promise.all([ + page.context().waitForEvent('page'), + frame + .getByRole('link', { + name: 'Customizing file systems during the image creation', + }) + .click(), + ]); + await newPageAutomatic.waitForLoadState(); + const finalUrlAutomatic = newPageAutomatic.url(); + expect(finalUrlAutomatic).toContain(FILE_SYSTEM_CUSTOMIZATION_URL); + await newPageAutomatic.close(); + + await frame + .getByRole('radio', { name: 'Manually configure partitions' }) + .click(); + const [newPageManual] = await Promise.all([ + page.context().waitForEvent('page'), + frame + .getByRole('link', { + name: 'Read more about manual configuration here', + }) + .click(), + ]); + await newPageManual.waitForLoadState(); + const finalUrlManual = newPageManual.url(); + expect(finalUrlManual).toContain(FILE_SYSTEM_CUSTOMIZATION_URL); + await newPageManual.close(); + }); + + await test.step('Fill manually selected partitions', async () => { + await expect(frame.getByRole('button', { name: '/' })).toBeDisabled(); + const closeRootButton = frame + .getByRole('row', { + name: 'Draggable row draggable button / xfs 10 GiB', + }) + .getByRole('button') + .nth(3); + await expect(closeRootButton).toBeDisabled(); + + await frame.getByRole('button', { name: 'Add partition' }).click(); + await frame.getByRole('button', { name: '/home' }).click(); + await frame.getByRole('option', { name: '/tmp' }).click(); + + await frame + .getByRole('textbox', { name: 'mountpoint suffix' }) + .fill('/usb'); + await frame + .getByRole('gridcell', { name: '1', exact: true }) + .getByPlaceholder('File system') + .fill('1000'); + await frame.getByRole('button', { name: 'GiB' }).nth(1).click(); + await frame.getByRole('option', { name: 'KiB' }).click(); + + const closeTmpButton = frame + .getByRole('row', { + name: 'Draggable row draggable button /tmp /usb xfs 1000 KiB', + }) + .getByRole('button') + .nth(3); + + await expect(closeTmpButton).toBeEnabled(); + }); + + await test.step('Fill the BP details', async () => { + await frame.getByRole('button', { name: 'Review and finish' }).click(); + await fillInDetails(frame, blueprintName); + }); + + await test.step('Create BP', async () => { + await createBlueprint(frame, blueprintName); + }); + + await test.step('Edit BP', async () => { + await frame.getByRole('button', { name: 'Edit blueprint' }).click(); + await frame.getByLabel('Revisit File system configuration step').click(); + + const closeRootButton = frame + .getByRole('row', { + name: 'Draggable row draggable button / xfs 10 GiB', + }) + .getByRole('button') + .nth(3); + await expect(closeRootButton).toBeDisabled(); + + const closeTmpButton = frame + .getByRole('row', { + name: 'Draggable row draggable button /tmp /usb xfs 1000 KiB', + }) + .getByRole('button') + .nth(3); + await expect(closeTmpButton).toBeEnabled(); + + const usbTextbox = frame.getByRole('textbox', { + name: 'mountpoint suffix', + }); + await expect(usbTextbox).toHaveValue('/usb'); + + await frame + .getByRole('gridcell', { name: '1000', exact: true }) + .getByPlaceholder('File system') + .click(); + await frame + .getByRole('gridcell', { name: '1000', exact: true }) + .getByPlaceholder('File system') + .fill('1024'); + + await frame.getByRole('button', { name: '/tmp' }).click(); + await frame.getByRole('option', { name: '/usr' }).click(); + await expect( + frame.getByText( + 'Sub-directories for the /usr mount point are no longer supported', + ), + ).toBeVisible(); + + await frame.getByRole('button', { name: '/usr' }).click(); + await frame.getByRole('option', { name: '/srv' }).click(); + + await frame + .getByRole('textbox', { name: 'mountpoint suffix' }) + .fill('/data'); + + await frame.getByRole('button', { name: 'KiB' }).click(); + await frame.getByRole('option', { name: 'MiB' }).click(); + + await frame.getByRole('button', { name: 'Review and finish' }).click(); + await frame + .getByRole('button', { name: 'Save changes to blueprint' }) + .click(); + }); + + // This is for hosted service only as these features are not available in cockpit plugin + await test.step('Export BP', async (step) => { + step.skip(!isHosted(), 'Exporting is not available in the plugin'); + await exportBlueprint(page, blueprintName); + }); + + await test.step('Import BP', async (step) => { + step.skip(!isHosted(), 'Importing is not available in the plugin'); + await importBlueprint(page, blueprintName); + }); + + await test.step('Review imported BP', async (step) => { + step.skip(!isHosted(), 'Importing is not available in the plugin'); + await fillInImageOutputGuest(page); + await frame + .getByRole('button', { name: 'File system configuration' }) + .click(); + + const closeRootButton = frame + .getByRole('row', { + name: 'Draggable row draggable button / xfs 10 GiB', + }) + .getByRole('button') + .nth(3); + await expect(closeRootButton).toBeDisabled(); + + const closeTmpButton = frame + .getByRole('row', { + name: 'Draggable row draggable button /srv /data xfs 1 GiB', + }) + .getByRole('button') + .nth(3); + await expect(closeTmpButton).toBeEnabled(); + + const dataTextbox = frame.getByRole('textbox', { + name: 'mountpoint suffix', + }); + await expect(dataTextbox).toHaveValue('/data'); + + const size = frame + .getByRole('gridcell', { name: '1', exact: true }) + .getByPlaceholder('File system'); + await expect(size).toHaveValue('1'); + + const unitButton = frame.getByRole('button', { name: 'GiB' }).nth(1); + await expect(unitButton).toBeVisible(); + + await page.getByRole('button', { name: 'Cancel' }).click(); + }); +}); diff --git a/playwright/Customizations/Firewall.spec.ts b/playwright/Customizations/Firewall.spec.ts index e2fa5481..1bfba62c 100644 --- a/playwright/Customizations/Firewall.spec.ts +++ b/playwright/Customizations/Firewall.spec.ts @@ -1,18 +1,22 @@ import { expect } from '@playwright/test'; import { v4 as uuidv4 } from 'uuid'; -import { test } from '../fixtures/cleanup'; +import { test } from '../fixtures/customizations'; import { isHosted } from '../helpers/helpers'; -import { login } from '../helpers/login'; -import { navigateToOptionalSteps, ibFrame } from '../helpers/navHelpers'; +import { ensureAuthenticated } from '../helpers/login'; +import { + ibFrame, + navigateToLandingPage, + navigateToOptionalSteps, +} from '../helpers/navHelpers'; import { - registerLater, - fillInDetails, createBlueprint, - fillInImageOutputGuest, deleteBlueprint, exportBlueprint, + fillInDetails, + fillInImageOutputGuest, importBlueprint, + registerLater, } from '../helpers/wizardHelpers'; test('Create a blueprint with Firewall customization', async ({ @@ -24,8 +28,10 @@ test('Create a blueprint with Firewall customization', async ({ // Delete the blueprint after the run fixture await cleanup.add(() => deleteBlueprint(page, blueprintName)); - // Login, navigate to IB and get the frame - await login(page); + await ensureAuthenticated(page); + + // Navigate to IB landing page and get the frame + await navigateToLandingPage(page); const frame = await ibFrame(page); await test.step('Navigate to optional steps in Wizard', async () => { @@ -57,19 +63,29 @@ test('Create a blueprint with Firewall customization', async ({ await test.step('Select and incorrectly fill the ports in Firewall step', async () => { await frame.getByPlaceholder('Add ports').fill('x'); await frame.getByRole('button', { name: 'Add ports' }).click(); - await expect(frame.getByText('Invalid format.').nth(0)).toBeVisible(); + await expect( + frame + .getByText( + 'Expected format: :. Example: 8080:tcp, ssh:tcp', + ) + .nth(0), + ).toBeVisible(); }); await test.step('Select and incorrectly fill the disabled services in Firewall step', async () => { await frame.getByPlaceholder('Add disabled service').fill('1'); await frame.getByRole('button', { name: 'Add disabled service' }).click(); - await expect(frame.getByText('Invalid format.').nth(1)).toBeVisible(); + await expect( + frame.getByText('Expected format: . Example: sshd').nth(0), + ).toBeVisible(); }); await test.step('Select and incorrectly fill the enabled services in Firewall step', async () => { await frame.getByPlaceholder('Add enabled service').fill('ťčš'); await frame.getByRole('button', { name: 'Add enabled service' }).click(); - await expect(frame.getByText('Invalid format.').nth(2)).toBeVisible(); + await expect( + frame.getByText('Expected format: . Example: sshd').nth(1), + ).toBeVisible(); }); await test.step('Fill the BP details', async () => { diff --git a/playwright/Customizations/Hostname.spec.ts b/playwright/Customizations/Hostname.spec.ts index 509635b3..fa475178 100644 --- a/playwright/Customizations/Hostname.spec.ts +++ b/playwright/Customizations/Hostname.spec.ts @@ -1,18 +1,22 @@ import { expect } from '@playwright/test'; import { v4 as uuidv4 } from 'uuid'; -import { test } from '../fixtures/cleanup'; +import { test } from '../fixtures/customizations'; import { isHosted } from '../helpers/helpers'; -import { login } from '../helpers/login'; -import { navigateToOptionalSteps, ibFrame } from '../helpers/navHelpers'; +import { ensureAuthenticated } from '../helpers/login'; +import { + ibFrame, + navigateToLandingPage, + navigateToOptionalSteps, +} from '../helpers/navHelpers'; import { - registerLater, - fillInDetails, createBlueprint, - fillInImageOutputGuest, deleteBlueprint, exportBlueprint, + fillInDetails, + fillInImageOutputGuest, importBlueprint, + registerLater, } from '../helpers/wizardHelpers'; test('Create a blueprint with Hostname customization', async ({ @@ -25,8 +29,10 @@ test('Create a blueprint with Hostname customization', async ({ // Delete the blueprint after the run fixture await cleanup.add(() => deleteBlueprint(page, blueprintName)); - // Login, navigate to IB and get the frame - await login(page); + await ensureAuthenticated(page); + + // Navigate to IB landing page and get the frame + await navigateToLandingPage(page); const frame = await ibFrame(page); await test.step('Navigate to optional steps in Wizard', async () => { @@ -77,7 +83,7 @@ test('Create a blueprint with Hostname customization', async ({ await fillInImageOutputGuest(page); await page.getByRole('button', { name: 'Hostname' }).click(); await expect( - page.getByRole('textbox', { name: 'hostname input' }) + page.getByRole('textbox', { name: 'hostname input' }), ).toHaveValue(hostname + 'edited'); await page.getByRole('button', { name: 'Cancel' }).click(); }); diff --git a/playwright/Customizations/Kernel.spec.ts b/playwright/Customizations/Kernel.spec.ts new file mode 100644 index 00000000..14137446 --- /dev/null +++ b/playwright/Customizations/Kernel.spec.ts @@ -0,0 +1,133 @@ +import { expect } from '@playwright/test'; +import { v4 as uuidv4 } from 'uuid'; + +import { test } from '../fixtures/customizations'; +import { isHosted } from '../helpers/helpers'; +import { ensureAuthenticated } from '../helpers/login'; +import { + ibFrame, + navigateToLandingPage, + navigateToOptionalSteps, +} from '../helpers/navHelpers'; +import { + createBlueprint, + deleteBlueprint, + exportBlueprint, + fillInDetails, + fillInImageOutputGuest, + importBlueprint, + registerLater, +} from '../helpers/wizardHelpers'; + +test('Create a blueprint with Kernel customization', async ({ + page, + cleanup, +}) => { + const blueprintName = 'test-' + uuidv4(); + + // Delete the blueprint after the run fixture + await cleanup.add(() => deleteBlueprint(page, blueprintName)); + + await ensureAuthenticated(page); + + // Navigate to IB landing page and get the frame + await navigateToLandingPage(page); + const frame = await ibFrame(page); + + await test.step('Navigate to optional steps in Wizard', async () => { + await navigateToOptionalSteps(frame); + await registerLater(frame); + }); + + await test.step('Select and fill the Kernel step', async () => { + await frame.getByRole('button', { name: 'Kernel' }).click(); + await frame.getByRole('button', { name: 'Menu toggle' }).click(); + await frame.getByRole('option', { name: 'kernel', exact: true }).click(); + await frame.getByPlaceholder('Add kernel argument').fill('rootwait'); + await frame.getByRole('button', { name: 'Add kernel argument' }).click(); + await frame + .getByPlaceholder('Add kernel argument') + .fill('invalid$argument'); + await frame.getByRole('button', { name: 'Add kernel argument' }).click(); + await expect( + frame.getByText( + 'Expected format: . Example: console=tty0', + ), + ).toBeVisible(); + await frame.getByPlaceholder('Select kernel package').fill('new-package'); + await frame + .getByRole('option', { name: 'Custom kernel package "new-' }) + .click(); + await expect( + frame.getByRole('heading', { name: 'Warning alert: Custom kernel' }), + ).toBeVisible(); + await frame.getByRole('button', { name: 'Clear input' }).first().click(); + await frame.getByRole('button', { name: 'Menu toggle' }).click(); + await expect( + frame.getByRole('option', { name: 'new-package' }), + ).toBeVisible(); + await frame.getByPlaceholder('Select kernel package').fill('f'); + await expect( + frame.getByRole('option', { + name: '"f" is not a valid kernel package name', + }), + ).toBeVisible(); + await frame.getByPlaceholder('Add kernel argument').fill('console=tty0'); + await frame.getByRole('button', { name: 'Add kernel argument' }).click(); + await frame.getByPlaceholder('Add kernel argument').fill('xxnosmp'); + await frame.getByRole('button', { name: 'Add kernel argument' }).click(); + await frame + .getByPlaceholder('Add kernel argument') + .fill('console=ttyS0,115200n8'); + await frame.getByRole('button', { name: 'Add kernel argument' }).click(); + await frame.getByRole('button', { name: 'Review and finish' }).click(); + }); + + await test.step('Fill the BP details', async () => { + await fillInDetails(frame, blueprintName); + }); + + await test.step('Create BP', async () => { + await createBlueprint(frame, blueprintName); + }); + + await test.step('Edit BP', async () => { + await frame.getByRole('button', { name: 'Edit blueprint' }).click(); + await frame.getByLabel('Revisit Kernel step').click(); + await frame.getByRole('button', { name: 'Menu toggle' }).click(); + await frame.getByRole('option', { name: 'kernel', exact: true }).click(); + await frame.getByPlaceholder('Add kernel argument').fill('new=argument'); + await frame.getByRole('button', { name: 'Add kernel argument' }).click(); + await frame.getByRole('button', { name: 'Close xxnosmp' }).click(); + await frame.getByRole('button', { name: 'Review and finish' }).click(); + await frame + .getByRole('button', { name: 'Save changes to blueprint' }) + .click(); + }); + + // This is for hosted service only as these features are not available in cockpit plugin + await test.step('Export BP', async (step) => { + step.skip(!isHosted(), 'Exporting is not available in the plugin'); + await exportBlueprint(page, blueprintName); + }); + + await test.step('Import BP', async (step) => { + step.skip(!isHosted(), 'Importing is not available in the plugin'); + await importBlueprint(page, blueprintName); + }); + + await test.step('Review imported BP', async (step) => { + step.skip(!isHosted(), 'Importing is not available in the plugin'); + await fillInImageOutputGuest(frame); + await frame.getByRole('button', { name: 'Kernel' }).click(); + await expect(frame.getByPlaceholder('Select kernel package')).toHaveValue( + 'kernel', + ); + await expect(frame.getByText('rootwait')).toBeVisible(); + await expect(frame.getByText('console=tty0')).toBeVisible(); + await expect(frame.getByText('console=ttyS0,115200n8')).toBeVisible(); + await expect(frame.getByText('new=argument')).toBeVisible(); + await expect(frame.getByText('xxnosmp')).toBeHidden(); + await frame.getByRole('button', { name: 'Cancel' }).click(); + }); +}); diff --git a/playwright/Customizations/Locale.spec.ts b/playwright/Customizations/Locale.spec.ts index af580176..53956a73 100644 --- a/playwright/Customizations/Locale.spec.ts +++ b/playwright/Customizations/Locale.spec.ts @@ -1,18 +1,22 @@ import { expect } from '@playwright/test'; import { v4 as uuidv4 } from 'uuid'; -import { test } from '../fixtures/cleanup'; +import { test } from '../fixtures/customizations'; import { isHosted } from '../helpers/helpers'; -import { login } from '../helpers/login'; -import { navigateToOptionalSteps, ibFrame } from '../helpers/navHelpers'; +import { ensureAuthenticated } from '../helpers/login'; +import { + ibFrame, + navigateToLandingPage, + navigateToOptionalSteps, +} from '../helpers/navHelpers'; import { - registerLater, - fillInDetails, createBlueprint, - fillInImageOutputGuest, deleteBlueprint, exportBlueprint, + fillInDetails, + fillInImageOutputGuest, importBlueprint, + registerLater, } from '../helpers/wizardHelpers'; test('Create a blueprint with Locale customization', async ({ @@ -24,8 +28,10 @@ test('Create a blueprint with Locale customization', async ({ // Delete the blueprint after the run fixture await cleanup.add(() => deleteBlueprint(page, blueprintName)); - // Login, navigate to IB and get the frame - await login(page); + await ensureAuthenticated(page); + + // Navigate to IB landing page and get the frame + await navigateToLandingPage(page); const frame = await ibFrame(page); await test.step('Navigate to optional steps in Wizard', async () => { @@ -36,27 +42,45 @@ test('Create a blueprint with Locale customization', async ({ await test.step('Select and fill the Locale step', async () => { await frame.getByRole('button', { name: 'Locale' }).click(); await frame.getByPlaceholder('Select a language').fill('fy'); - await frame.getByRole('option', { name: 'fy_DE.UTF-' }).click(); + await frame + .getByRole('option', { name: 'Western Frisian - Germany (fy_DE.UTF-8)' }) + .click(); await expect( - frame.getByRole('button', { name: 'Close fy_DE.UTF-' }) + frame.getByRole('button', { + name: 'Close Western Frisian - Germany (fy_DE.UTF-8)', + }), ).toBeEnabled(); - await frame.getByRole('button', { name: 'Close fy_DE.UTF-' }).click(); + await frame + .getByRole('button', { + name: 'Close Western Frisian - Germany (fy_DE.UTF-8)', + }) + .click(); await expect( - frame.getByRole('button', { name: 'Close fy_DE.UTF-' }) + frame.getByRole('button', { + name: 'Close Western Frisian - Germany (fy_DE.UTF-8)', + }), ).toBeHidden(); await frame.getByPlaceholder('Select a language').fill('fy'); - await frame.getByRole('option', { name: 'fy_DE.UTF-' }).click(); + await frame + .getByRole('option', { name: 'Western Frisian - Germany (fy_DE.UTF-8)' }) + .click(); await expect( - frame.getByRole('button', { name: 'Close fy_DE.UTF-' }) + frame.getByRole('button', { + name: 'Close Western Frisian - Germany (fy_DE.UTF-8)', + }), ).toBeEnabled(); await frame.getByPlaceholder('Select a language').fill('aa'); - await frame.getByRole('option', { name: 'aa_DJ.UTF-' }).click(); + await frame + .getByRole('option', { name: 'aa - Djibouti (aa_DJ.UTF-8)' }) + .click(); await expect( - frame.getByRole('button', { name: 'Close aa_DJ.UTF-' }) + frame.getByRole('button', { name: 'Close aa - Djibouti (aa_DJ.UTF-8)' }), ).toBeEnabled(); await frame.getByPlaceholder('Select a language').fill('aa'); await expect( - frame.getByText('aa_DJ.UTF-8Language already addedaa_ER.UTF-8aa_ET.UTF-') + frame.getByText( + 'aa - Djibouti (aa_DJ.UTF-8)Language already addedaa - Eritrea (aa_ER.UTF-8)aa - Ethiopia (aa_ET.UTF-8)', + ), ).toBeAttached(); await frame.getByPlaceholder('Select a language').fill('xxx'); await expect(frame.getByText('No results found for')).toBeAttached(); @@ -78,15 +102,19 @@ test('Create a blueprint with Locale customization', async ({ await frame.getByRole('button', { name: 'Edit blueprint' }).click(); await frame.getByLabel('Revisit Locale step').click(); await expect( - frame.getByRole('button', { name: 'Close fy_DE.UTF-' }) + frame.getByRole('button', { + name: 'Close Western Frisian - Germany (fy_DE.UTF-8)', + }), ).toBeEnabled(); await expect( - frame.getByRole('button', { name: 'Close aa_DJ.UTF-' }) + frame.getByRole('button', { name: 'Close aa - Djibouti (aa_DJ.UTF-8)' }), ).toBeEnabled(); await frame.getByPlaceholder('Select a language').fill('aa'); - await frame.getByRole('option', { name: 'aa_ER.UTF-' }).click(); + await frame + .getByRole('option', { name: 'aa - Eritrea (aa_ER.UTF-8)' }) + .click(); await expect( - frame.getByRole('button', { name: 'Close aa_ER.UTF-' }) + frame.getByRole('button', { name: 'Close aa - Eritrea (aa_ER.UTF-8)' }), ).toBeEnabled(); await frame.getByRole('button', { name: 'Clear input' }).click(); await frame.getByRole('button', { name: 'Menu toggle' }).nth(1).click(); @@ -113,16 +141,18 @@ test('Create a blueprint with Locale customization', async ({ await fillInImageOutputGuest(page); await page.getByRole('button', { name: 'Locale' }).click(); await expect( - frame.getByRole('button', { name: 'Close fy_DE.UTF-' }) + frame.getByRole('button', { + name: 'Close Western Frisian - Germany (fy_DE.UTF-8)', + }), ).toBeEnabled(); await expect( - frame.getByRole('button', { name: 'Close aa_DJ.UTF-' }) + frame.getByRole('button', { name: 'Close aa - Djibouti (aa_DJ.UTF-8)' }), ).toBeEnabled(); await expect( - frame.getByRole('button', { name: 'Close aa_ER.UTF-' }) + frame.getByRole('button', { name: 'Close aa - Eritrea (aa_ER.UTF-8)' }), ).toBeEnabled(); await expect(frame.getByPlaceholder('Select a keyboard')).toHaveValue( - 'ANSI-dvorak' + 'ANSI-dvorak', ); await page.getByRole('button', { name: 'Cancel' }).click(); }); diff --git a/playwright/Customizations/OpenSCAP.spec.ts b/playwright/Customizations/OpenSCAP.spec.ts new file mode 100644 index 00000000..111daf39 --- /dev/null +++ b/playwright/Customizations/OpenSCAP.spec.ts @@ -0,0 +1,189 @@ +import { expect } from '@playwright/test'; +import { v4 as uuidv4 } from 'uuid'; + +import { test } from '../fixtures/cleanup'; +import { isHosted } from '../helpers/helpers'; +import { ensureAuthenticated } from '../helpers/login'; +import { ibFrame, navigateToLandingPage } from '../helpers/navHelpers'; +import { + createBlueprint, + deleteBlueprint, + exportBlueprint, + fillInDetails, + fillInImageOutputGuest, + importBlueprint, + registerLater, +} from '../helpers/wizardHelpers'; + +test('Create a blueprint with OpenSCAP customization', async ({ + page, + cleanup, +}) => { + const blueprintName = 'test-' + uuidv4(); + test.skip(!isHosted(), 'Exporting is not available in the plugin'); + // Delete the blueprint after the run fixture + await cleanup.add(() => deleteBlueprint(page, blueprintName)); + + await ensureAuthenticated(page); + + // Navigate to IB landing page and get the frame + await navigateToLandingPage(page); + const frame = await ibFrame(page); + + await test.step('Select RHEL 9 and go to optional steps in Wizard', async () => { + await frame.getByRole('button', { name: 'Create image blueprint' }).click(); + await frame.getByTestId('release_select').click(); + await frame + .getByRole('option', { + name: 'Red Hat Enterprise Linux (RHEL) 9 Full support ends: May 2027 | Maintenance', + }) + .click(); + await frame.getByRole('checkbox', { name: 'Virtualization' }).click(); + await frame.getByRole('button', { name: 'Next' }).click(); + await registerLater(frame); + }); + + await test.step('Select only OpenSCAP, and check if dependencies are preselected', async () => { + await frame.getByRole('button', { name: 'Compliance' }).click(); + await frame.getByRole('textbox', { name: 'Type to filter' }).fill('cis'); + await frame + .getByRole('option', { + name: 'CIS Red Hat Enterprise Linux 9 Benchmark for Level 1 - Server This profile', + }) + .click(); + await frame + .getByRole('button', { name: 'File system configuration' }) + .click(); + await expect( + frame + .getByRole('row', { + name: 'Draggable row draggable button /tmp xfs 1 GiB', + }) + .getByRole('button') + .nth(3), + ).toBeVisible(); + await frame.getByRole('button', { name: 'Additional packages' }).click(); + await frame.getByRole('button', { name: 'Selected (8)' }).click(); + await expect(frame.getByRole('gridcell', { name: 'aide' })).toBeVisible(); + await expect(frame.getByRole('gridcell', { name: 'chrony' })).toBeVisible(); + await expect( + frame.getByRole('gridcell', { name: 'firewalld' }), + ).toBeVisible(); + await expect( + frame.getByRole('gridcell', { name: 'libpwquality' }), + ).toBeVisible(); + await expect( + frame.getByRole('gridcell', { name: 'libselinux' }), + ).toBeVisible(); + await expect( + frame.getByRole('gridcell', { name: 'nftables' }), + ).toBeVisible(); + await expect(frame.getByRole('gridcell', { name: 'sudo' })).toBeVisible(); + await expect( + frame.getByRole('gridcell', { name: 'systemd-journal-remote' }), + ).toBeVisible(); + await frame.getByRole('button', { name: 'Systemd services' }).click(); + await expect( + frame.getByText('Required by OpenSCAPcrondfirewalldsystemd-journald'), + ).toBeVisible(); + await frame.getByPlaceholder('Add masked service').fill('nftables'); + await frame.getByPlaceholder('Add masked service').press('Enter'); + await expect( + frame.getByText('Masked service already exists'), + ).toBeVisible(); + await expect(frame.getByText('Required by OpenSCAPcupsnfs-')).toBeVisible(); + await expect(frame.getByText('nfs-server')).toBeVisible(); + await expect(frame.getByText('rpcbind')).toBeVisible(); + await expect(frame.getByText('avahi-daemon')).toBeVisible(); + await expect(frame.getByText('autofs')).toBeVisible(); + await expect(frame.getByText('bluetooth')).toBeVisible(); + await expect(frame.getByText('nftables')).toBeVisible(); + await frame.getByRole('button', { name: 'Review and finish' }).click(); + }); + + await test.step('Fill the BP details', async () => { + await fillInDetails(frame, blueprintName); + }); + + await test.step('Create BP', async () => { + await createBlueprint(frame, blueprintName); + }); + + await test.step('Edit BP', async () => { + await frame.getByRole('button', { name: 'Edit blueprint' }).click(); + await frame.getByRole('button', { name: 'Compliance' }).click(); + await expect(frame.getByText('Level 1 - Server')).toBeVisible(); + await frame.getByRole('textbox', { name: 'Type to filter' }).fill('cis'); + await frame + .getByRole('option', { + name: 'CIS Red Hat Enterprise Linux 9 Benchmark for Level 2 - Server This profile', + }) + .click(); + + await frame.getByRole('button', { name: 'Kernel' }).click(); + + await expect( + frame.getByText('Required by OpenSCAPaudit_backlog_limit=8192audit='), + ).toBeVisible(); + await frame.getByRole('button', { name: 'Additional packages' }).click(); + await frame.getByRole('button', { name: 'Selected (10)' }).click(); + await expect(frame.getByRole('gridcell', { name: 'aide' })).toBeVisible(); + await expect( + frame.getByRole('gridcell', { name: 'audit-libs' }), + ).toBeVisible(); + await expect(frame.getByRole('gridcell', { name: 'chrony' })).toBeVisible(); + await expect( + frame.getByRole('gridcell', { name: 'firewalld' }), + ).toBeVisible(); + await expect( + frame.getByRole('gridcell', { name: 'libpwquality' }), + ).toBeVisible(); + await expect( + frame.getByRole('gridcell', { name: 'libselinux' }), + ).toBeVisible(); + await expect( + frame.getByRole('gridcell', { name: 'nftables' }), + ).toBeVisible(); + await expect(frame.getByRole('gridcell', { name: 'sudo' })).toBeVisible(); + await frame.getByRole('button', { name: 'Systemd services' }).click(); + await expect( + frame.getByText( + 'Required by OpenSCAPauditdcrondfirewalldsystemd-journald', + ), + ).toBeVisible(); + await frame.getByPlaceholder('Add masked service').fill('nftables'); + await frame.getByPlaceholder('Add masked service').press('Enter'); + await expect( + frame.getByText('Masked service already exists'), + ).toBeVisible(); + await expect(frame.getByText('Required by OpenSCAPcupsnfs-')).toBeVisible(); + await expect(frame.getByText('nfs-server')).toBeVisible(); + await expect(frame.getByText('rpcbind')).toBeVisible(); + await expect(frame.getByText('avahi-daemon')).toBeVisible(); + await expect(frame.getByText('autofs')).toBeVisible(); + await expect(frame.getByText('bluetooth')).toBeVisible(); + await expect(frame.getByText('nftables')).toBeVisible(); + await frame.getByRole('button', { name: 'Review and finish' }).click(); + await frame + .getByRole('button', { name: 'Save changes to blueprint' }) + .click(); + }); + + // This is for hosted service only as these features are not available in cockpit plugin + await test.step('Export BP', async () => { + await exportBlueprint(page, blueprintName); + }); + + await test.step('Import BP', async () => { + await importBlueprint(page, blueprintName); + }); + + await test.step('Review imported BP', async () => { + await fillInImageOutputGuest(page); + await page.getByRole('button', { name: 'Compliance' }).click(); + + await expect(frame.getByText('Level 2 - Server')).toBeVisible(); + + await page.getByRole('button', { name: 'Cancel' }).click(); + }); +}); diff --git a/playwright/Customizations/Systemd.spec.ts b/playwright/Customizations/Systemd.spec.ts index 0586f01c..a7360ca9 100644 --- a/playwright/Customizations/Systemd.spec.ts +++ b/playwright/Customizations/Systemd.spec.ts @@ -1,18 +1,22 @@ import { expect } from '@playwright/test'; import { v4 as uuidv4 } from 'uuid'; -import { test } from '../fixtures/cleanup'; +import { test } from '../fixtures/customizations'; import { isHosted } from '../helpers/helpers'; -import { login } from '../helpers/login'; -import { navigateToOptionalSteps, ibFrame } from '../helpers/navHelpers'; +import { ensureAuthenticated } from '../helpers/login'; +import { + ibFrame, + navigateToLandingPage, + navigateToOptionalSteps, +} from '../helpers/navHelpers'; import { - registerLater, - fillInDetails, createBlueprint, - fillInImageOutputGuest, deleteBlueprint, exportBlueprint, + fillInDetails, + fillInImageOutputGuest, importBlueprint, + registerLater, } from '../helpers/wizardHelpers'; test('Create a blueprint with Systemd customization', async ({ @@ -24,8 +28,10 @@ test('Create a blueprint with Systemd customization', async ({ // Delete the blueprint after the run fixture await cleanup.add(() => deleteBlueprint(page, blueprintName)); - // Login, navigate to IB and get the frame - await login(page); + await ensureAuthenticated(page); + + // Navigate to IB landing page and get the frame + await navigateToLandingPage(page); const frame = await ibFrame(page); await test.step('Navigate to optional steps in Wizard', async () => { @@ -58,15 +64,21 @@ test('Create a blueprint with Systemd customization', async ({ await test.step('Select and incorrectly fill all of the service fields', async () => { await frame.getByPlaceholder('Add disabled service').fill('&&'); await frame.getByRole('button', { name: 'Add disabled service' }).click(); - await expect(frame.getByText('Invalid format.').nth(0)).toBeVisible(); + await expect( + frame.getByText('Expected format: . Example: sshd').nth(0), + ).toBeVisible(); await frame.getByPlaceholder('Add enabled service').fill('áá'); await frame.getByRole('button', { name: 'Add enabled service' }).click(); - await expect(frame.getByText('Invalid format.').nth(1)).toBeVisible(); + await expect( + frame.getByText('Expected format: . Example: sshd').nth(1), + ).toBeVisible(); await frame.getByPlaceholder('Add masked service').fill('78'); await frame.getByRole('button', { name: 'Add masked service' }).click(); - await expect(frame.getByText('Invalid format.').nth(2)).toBeVisible(); + await expect( + frame.getByText('Expected format: . Example: sshd').nth(2), + ).toBeVisible(); }); await test.step('Fill the BP details', async () => { diff --git a/playwright/Customizations/Timezone.spec.ts b/playwright/Customizations/Timezone.spec.ts index 3c78e2d2..8a3c51cf 100644 --- a/playwright/Customizations/Timezone.spec.ts +++ b/playwright/Customizations/Timezone.spec.ts @@ -1,18 +1,22 @@ import { expect } from '@playwright/test'; import { v4 as uuidv4 } from 'uuid'; -import { test } from '../fixtures/cleanup'; +import { test } from '../fixtures/customizations'; import { isHosted } from '../helpers/helpers'; -import { login } from '../helpers/login'; -import { navigateToOptionalSteps, ibFrame } from '../helpers/navHelpers'; +import { ensureAuthenticated } from '../helpers/login'; +import { + ibFrame, + navigateToLandingPage, + navigateToOptionalSteps, +} from '../helpers/navHelpers'; import { - registerLater, - fillInDetails, createBlueprint, - fillInImageOutputGuest, deleteBlueprint, exportBlueprint, + fillInDetails, + fillInImageOutputGuest, importBlueprint, + registerLater, } from '../helpers/wizardHelpers'; test('Create a blueprint with Timezone customization', async ({ @@ -24,8 +28,10 @@ test('Create a blueprint with Timezone customization', async ({ // Delete the blueprint after the run fixture await cleanup.add(() => deleteBlueprint(page, blueprintName)); - // Login, navigate to IB and get the frame - await login(page); + await ensureAuthenticated(page); + + // Navigate to IB landing page and get the frame + await navigateToLandingPage(page); const frame = await ibFrame(page); await test.step('Navigate to optional steps in Wizard', async () => { @@ -49,7 +55,11 @@ test('Create a blueprint with Timezone customization', async ({ await expect(frame.getByText('NTP server already exists.')).toBeVisible(); await frame.getByPlaceholder('Add NTP servers').fill('xxxx'); await frame.getByRole('button', { name: 'Add NTP server' }).click(); - await expect(frame.getByText('Invalid format.')).toBeVisible(); + await expect( + frame + .getByText('Expected format: . Example: time.redhat.com') + .nth(0), + ).toBeVisible(); await frame.getByPlaceholder('Add NTP servers').fill('0.cz.pool.ntp.org'); await frame.getByRole('button', { name: 'Add NTP server' }).click(); await expect(frame.getByText('0.cz.pool.ntp.org')).toBeVisible(); @@ -76,12 +86,12 @@ test('Create a blueprint with Timezone customization', async ({ await frame.getByLabel('Revisit Timezone step').click(); await expect(frame.getByText('Canada/Saskatchewan')).toBeHidden(); await expect(frame.getByPlaceholder('Select a timezone')).toHaveValue( - 'Europe/Stockholm' + 'Europe/Stockholm', ); await frame.getByPlaceholder('Select a timezone').fill('Europe'); await frame.getByRole('option', { name: 'Europe/Oslo' }).click(); await expect(frame.getByPlaceholder('Select a timezone')).toHaveValue( - 'Europe/Oslo' + 'Europe/Oslo', ); await expect(frame.getByText('0.nl.pool.ntp.org')).toBeVisible(); await expect(frame.getByText('0.de.pool.ntp.org')).toBeVisible(); @@ -108,7 +118,7 @@ test('Create a blueprint with Timezone customization', async ({ await fillInImageOutputGuest(page); await frame.getByRole('button', { name: 'Timezone' }).click(); await expect(frame.getByPlaceholder('Select a timezone')).toHaveValue( - 'Europe/Oslo' + 'Europe/Oslo', ); await expect(frame.getByText('0.nl.pool.ntp.org')).toBeVisible(); await expect(frame.getByText('0.de.pool.ntp.org')).toBeVisible(); diff --git a/playwright/fixtures/cleanup.ts b/playwright/fixtures/cleanup.ts index 05c860f3..74f1cb8c 100644 --- a/playwright/fixtures/cleanup.ts +++ b/playwright/fixtures/cleanup.ts @@ -11,7 +11,6 @@ export interface Cleanup { } export const test = oldTest.extend({ - // eslint-disable-next-line no-empty-pattern cleanup: async ({}, use) => { const cleanupFns: Map Promise> = new Map(); @@ -39,7 +38,7 @@ export const test = oldTest.extend({ async () => { await Promise.all(Array.from(cleanupFns).map(([, fn]) => fn())); }, - { box: true } + { box: true }, ); }, }); diff --git a/playwright/fixtures/customizations.ts b/playwright/fixtures/customizations.ts new file mode 100644 index 00000000..ea926454 --- /dev/null +++ b/playwright/fixtures/customizations.ts @@ -0,0 +1,8 @@ +// This is a common fixture for the customizations tests +import { mergeTests } from '@playwright/test'; + +import { test as cleanupTest } from './cleanup'; +import { test as popupTest } from './popupHandler'; + +// Combine the fixtures into one +export const test = mergeTests(cleanupTest, popupTest); diff --git a/playwright/fixtures/popupHandler.ts b/playwright/fixtures/popupHandler.ts new file mode 100644 index 00000000..806e0e2d --- /dev/null +++ b/playwright/fixtures/popupHandler.ts @@ -0,0 +1,18 @@ +import { test as base } from '@playwright/test'; + +import { closePopupsIfExist } from '../helpers/helpers'; + +export interface PopupHandlerFixture { + popupHandler: void; +} + +// This fixture will close any popups that might get opened during the test execution +export const test = base.extend({ + popupHandler: [ + async ({ page }, use) => { + await closePopupsIfExist(page); + await use(undefined); + }, + { auto: true }, + ], +}); diff --git a/playwright/global.setup.ts b/playwright/global.setup.ts new file mode 100644 index 00000000..78a8f071 --- /dev/null +++ b/playwright/global.setup.ts @@ -0,0 +1,12 @@ +import { test as setup } from '@playwright/test'; + +import { login, storeStorageStateAndToken } from './helpers/login'; + +setup.describe('Setup', () => { + setup.describe.configure({ retries: 3 }); + + setup('Authenticate', async ({ page }) => { + await login(page); + await storeStorageStateAndToken(page); + }); +}); diff --git a/playwright/helpers/helpers.ts b/playwright/helpers/helpers.ts index ce5cf047..9b086de7 100644 --- a/playwright/helpers/helpers.ts +++ b/playwright/helpers/helpers.ts @@ -1,4 +1,7 @@ -import { type Page, expect } from '@playwright/test'; +import { execSync } from 'child_process'; +import { readFileSync } from 'node:fs'; + +import { expect, type Page } from '@playwright/test'; export const togglePreview = async (page: Page) => { const toggleSwitch = page.locator('#preview-toggle'); @@ -21,19 +24,64 @@ export const isHosted = (): boolean => { export const closePopupsIfExist = async (page: Page) => { const locatorsToCheck = [ - page.locator('.pf-v5-c-alert.notification-item button'), // This closes all toast pop-ups + page.locator('.pf-v6-c-alert.notification-item button'), // This closes all toast pop-ups page.locator(`button[id^="pendo-close-guide-"]`), // This closes the pendo guide pop-up page.locator(`button[id="truste-consent-button"]`), // This closes the trusted consent pop-up page.getByLabel('close-notification'), // This closes a one off info notification (May be covered by the toast above, needs recheck.) page .locator('iframe[name="intercom-modal-frame"]') .contentFrame() - .getByRole('button', { name: 'Close' }), + .getByRole('button', { name: 'Close' }), // This closes the intercom pop-up + page + .locator('iframe[name="intercom-notifications-frame"]') + .contentFrame() + .getByRole('button', { name: 'Profile image for Rob Rob' }) + .last(), // This closes the intercom pop-up notification at the bottom of the screen, the last notification is displayed first if stacked (different from the modal popup handled above) ]; for (const locator of locatorsToCheck) { await page.addLocatorHandler(locator, async () => { - await locator.first().click(); // There can be multiple toast pop-ups + await locator.first().click({ timeout: 10_000, noWaitAfter: true }); // There can be multiple toast pop-ups }); } }; + +// copied over from constants +const ON_PREM_RELEASES = new Map([ + ['centos-10', 'CentOS Stream 10'], + ['fedora-41', 'Fedora Linux 41'], + ['fedora-42', 'Fedora Linux 42'], + ['rhel-10', 'Red Hat Enterprise Linux (RHEL) 10'], +]); + +/* eslint-disable @typescript-eslint/no-explicit-any */ +export const getHostDistroName = (): string => { + const osRelData = readFileSync('/etc/os-release'); + const lines = osRelData + .toString('utf-8') + .split('\n') + .filter((l) => l !== ''); + const osRel = {}; + + for (const l of lines) { + const lineData = l.split('='); + (osRel as any)[lineData[0]] = lineData[1].replace(/"/g, ''); + } + + // strip minor version from rhel + const distro = ON_PREM_RELEASES.get( + `${(osRel as any)['ID']}-${(osRel as any)['VERSION_ID'].split('.')[0]}`, + ); + + if (distro === undefined) { + /* eslint-disable no-console */ + console.error('getHostDistroName failed, os-release config:', osRel); + throw new Error('getHostDistroName failed, distro undefined'); + } + + return distro; +}; + +export const getHostArch = (): string => { + return execSync('uname -m').toString('utf-8').replace(/\s/g, ''); +}; diff --git a/playwright/helpers/login.ts b/playwright/helpers/login.ts index b283bba3..4ae5531b 100644 --- a/playwright/helpers/login.ts +++ b/playwright/helpers/login.ts @@ -1,4 +1,6 @@ -import { type Page, expect } from '@playwright/test'; +import path from 'path'; + +import { expect, type Page } from '@playwright/test'; import { closePopupsIfExist, isHosted, togglePreview } from './helpers'; import { ibFrame } from './navHelpers'; @@ -21,6 +23,38 @@ export const login = async (page: Page) => { return loginCockpit(page, user, password); }; +/** + * Checks if the user is already authenticated, if not, logs them in + * @param page - the page object + */ +export const ensureAuthenticated = async (page: Page) => { + // Navigate to the target page + if (isHosted()) { + await page.goto('/insights/image-builder/landing'); + } else { + await page.goto('/cockpit-image-builder'); + } + + // Check for authentication success indicator + const successIndicator = isHosted() + ? page.getByRole('heading', { name: 'All images' }) + : ibFrame(page).getByRole('heading', { name: 'All images' }); + + let isAuthenticated = false; + try { + // Give it a 30 second period to load, it's less expensive than having to rerun the test + await expect(successIndicator).toBeVisible({ timeout: 30000 }); + isAuthenticated = true; + } catch { + isAuthenticated = false; + } + + if (!isAuthenticated) { + // Not authenticated, need to login + await login(page); + } +}; + const loginCockpit = async (page: Page, user: string, password: string) => { await page.goto('/cockpit-image-builder'); @@ -31,46 +65,74 @@ const loginCockpit = async (page: Page, user: string, password: string) => { // image-builder lives inside an iframe const frame = ibFrame(page); - // cockpit-image-builder needs superuser, expect an error message - // when the user does not have admin priviliges - await expect( - frame.getByRole('heading', { name: 'Access is limited' }) - ).toBeVisible(); - await page.getByRole('button', { name: 'Limited access' }).click(); + try { + // Check if the user already has administrative access + await expect( + page.getByRole('button', { name: 'Administrative access' }), + ).toBeVisible(); + } catch { + // If not, try to gain it + // cockpit-image-builder needs superuser, expect an error message + // when the user does not have admin priviliges + await expect( + frame.getByRole('heading', { name: 'Access is limited' }), + ).toBeVisible(); + await page.getByRole('button', { name: 'Limited access' }).click(); - // different popup opens based on type of account (can be passwordless) - const authenticateButton = page.getByRole('button', { name: 'Authenticate' }); - const closeButton = page.getByText('Close'); - await expect(authenticateButton.or(closeButton)).toBeVisible(); + // different popup opens based on type of account (can be passwordless) + const authenticateButton = page.getByRole('button', { + name: 'Authenticate', + }); + const closeButton = page.getByText('Close'); + await expect(authenticateButton.or(closeButton)).toBeVisible(); - if (await authenticateButton.isVisible()) { - // with password - await page.getByRole('textbox', { name: 'Password' }).fill(password); - await authenticateButton.click(); - } - if (await closeButton.isVisible()) { - // passwordless - await closeButton.click(); + if (await authenticateButton.isVisible()) { + // with password + await page.getByRole('textbox', { name: 'Password' }).fill(password); + await authenticateButton.click(); + } + if (await closeButton.isVisible()) { + // passwordless + await closeButton.click(); + } } // expect to have administrative access await expect( - page.getByRole('button', { name: 'Administrative access' }) + page.getByRole('button', { name: 'Administrative access' }), ).toBeVisible(); await expect( - frame.getByRole('heading', { name: 'All images' }) + frame.getByRole('heading', { name: 'All images' }), ).toBeVisible(); }; const loginConsole = async (page: Page, user: string, password: string) => { await closePopupsIfExist(page); await page.goto('/insights/image-builder/landing'); - await page - .getByRole('textbox', { name: 'Red Hat login or email' }) - .fill(user); + await page.getByRole('textbox', { name: 'Red Hat login' }).fill(user); await page.getByRole('button', { name: 'Next' }).click(); await page.getByRole('textbox', { name: 'Password' }).fill(password); await page.getByRole('button', { name: 'Log in' }).click(); await togglePreview(page); await expect(page.getByRole('heading', { name: 'All images' })).toBeVisible(); }; + +export const storeStorageStateAndToken = async (page: Page) => { + const { cookies } = await page + .context() + .storageState({ path: path.join(__dirname, '../../.auth/user.json') }); + if (isHosted()) { + // For hosted service, look for cs_jwt token + process.env.TOKEN = `Bearer ${ + cookies.find((cookie) => cookie.name === 'cs_jwt')?.value + }`; + } else { + // For Cockpit, we don't need a TOKEN but we can still store it for consistency + const cockpitCookie = cookies.find((cookie) => cookie.name === 'cockpit'); + if (cockpitCookie) { + process.env.TOKEN = cockpitCookie.value; + } + } + // eslint-disable-next-line playwright/no-wait-for-timeout + await page.waitForTimeout(100); +}; diff --git a/playwright/helpers/navHelpers.ts b/playwright/helpers/navHelpers.ts index 2ef83ce4..0fa6fe1d 100644 --- a/playwright/helpers/navHelpers.ts +++ b/playwright/helpers/navHelpers.ts @@ -1,13 +1,20 @@ -import type { FrameLocator, Page } from '@playwright/test'; +import { expect, FrameLocator, Page } from '@playwright/test'; -import { isHosted } from './helpers'; +import { getHostArch, getHostDistroName, isHosted } from './helpers'; /** * Opens the wizard, fills out the "Image Output" step, and navigates to the optional steps * @param page - the page object */ export const navigateToOptionalSteps = async (page: Page | FrameLocator) => { - await page.getByRole('button', { name: 'Create blueprint' }).click(); + await page.getByRole('button', { name: 'Create image blueprint' }).click(); + if (!isHosted()) { + // wait until the distro and architecture aligns with the host + await expect(page.getByTestId('release_select')).toHaveText( + getHostDistroName(), + ); + await expect(page.getByTestId('arch_select')).toHaveText(getHostArch()); + } await page.getByRole('checkbox', { name: 'Virtualization' }).click(); await page.getByRole('button', { name: 'Next' }).click(); }; @@ -24,3 +31,15 @@ export const ibFrame = (page: Page): FrameLocator | Page => { .locator('iframe[name="cockpit1\\:localhost\\/cockpit-image-builder"]') .contentFrame(); }; + +/** + * Navigates to the landing page of the Image Builder + * @param page - the page object + */ +export const navigateToLandingPage = async (page: Page) => { + if (isHosted()) { + await page.goto('/insights/image-builder/landing'); + } else { + await page.goto('/cockpit-image-builder'); + } +}; diff --git a/playwright/helpers/wizardHelpers.ts b/playwright/helpers/wizardHelpers.ts index 0dcbe5b3..3d44a6b6 100644 --- a/playwright/helpers/wizardHelpers.ts +++ b/playwright/helpers/wizardHelpers.ts @@ -1,7 +1,7 @@ import { expect, FrameLocator, type Page, test } from '@playwright/test'; -import { isHosted } from './helpers'; -import { ibFrame } from './navHelpers'; +import { closePopupsIfExist, isHosted } from './helpers'; +import { ibFrame, navigateToLandingPage } from './navHelpers'; /** * Clicks the create button, handles the modal, clicks the button again and selecets the BP in the list @@ -10,13 +10,15 @@ import { ibFrame } from './navHelpers'; */ export const createBlueprint = async ( page: Page | FrameLocator, - blueprintName: string + blueprintName: string, ) => { await page.getByRole('button', { name: 'Create blueprint' }).click(); await page.getByRole('button', { name: 'Close' }).first().click(); await page.getByRole('button', { name: 'Create blueprint' }).click(); await page.getByRole('textbox', { name: 'Search input' }).fill(blueprintName); - await page.getByTestId('blueprint-card').getByText(blueprintName).click(); + // the clickable blueprint cards are a bit awkward, so use the + // button's id instead + await page.locator(`button[id="${blueprintName}"]`).click(); }; /** @@ -29,7 +31,7 @@ export const createBlueprint = async ( */ export const fillInDetails = async ( page: Page | FrameLocator, - blueprintName: string + blueprintName: string, ) => { await page.getByRole('listitem').filter({ hasText: 'Details' }).click(); await page @@ -65,27 +67,41 @@ export const fillInImageOutputGuest = async (page: Page | FrameLocator) => { /** * Delete the blueprint with the given name * Will locate to the Image Builder page and search for the blueprint first + * If the blueprint is not found, it will fail gracefully * @param page - the page object * @param blueprintName - the name of the blueprint to delete */ export const deleteBlueprint = async (page: Page, blueprintName: string) => { + // Since new browser is opened during the BP cleanup, we need to call the popup closer again + await closePopupsIfExist(page); await test.step( 'Delete the blueprint with name: ' + blueprintName, async () => { // Locate back to the Image Builder page every time because the test can fail at any stage + await navigateToLandingPage(page); const frame = await ibFrame(page); await frame .getByRole('textbox', { name: 'Search input' }) .fill(blueprintName); - await frame - .getByTestId('blueprint-card') - .getByText(blueprintName) - .click(); + // Check if no blueprints found -> that means no blueprint was created -> fail gracefully and do not raise error + try { + await expect( + frame.getByRole('heading', { name: 'No blueprints found' }), + ).toBeVisible({ timeout: 5_000 }); // Shorter timeout to avoid hanging uncessarily + return; // Fail gracefully, no blueprint to delete + // eslint-disable-next-line @typescript-eslint/no-unused-vars + } catch (error) { + // If the No BP heading was not found, it means the blueprint (possibly) was created -> continue with deletion + } + + // the clickable blueprint cards are a bit awkward, so use the + // button's id instead + await frame.locator(`button[id="${blueprintName}"]`).click(); await frame.getByRole('button', { name: 'Menu toggle' }).click(); await frame.getByRole('menuitem', { name: 'Delete blueprint' }).click(); await frame.getByRole('button', { name: 'Delete' }).click(); }, - { box: true } + { box: true }, ); }; @@ -113,7 +129,7 @@ export const exportBlueprint = async (page: Page, blueprintName: string) => { */ export const importBlueprint = async ( page: Page | FrameLocator, - blueprintName: string + blueprintName: string, ) => { if (isHosted()) { await page.getByRole('button', { name: 'Import' }).click(); @@ -122,7 +138,7 @@ export const importBlueprint = async ( .locator('input[type=file]') .setInputFiles('../../downloads/' + blueprintName + '.json'); await expect( - page.getByRole('textbox', { name: 'File upload' }) + page.getByRole('textbox', { name: 'File upload' }), ).not.toBeEmpty(); await page.getByRole('button', { name: 'Review and Finish' }).click(); } diff --git a/playwright/test.spec.ts b/playwright/test.spec.ts index 8027d9fd..593247ae 100644 --- a/playwright/test.spec.ts +++ b/playwright/test.spec.ts @@ -1,75 +1,88 @@ +import { readFileSync } from 'node:fs'; + +import TOML from '@ltd/j-toml'; import { expect, test } from '@playwright/test'; import { v4 as uuidv4 } from 'uuid'; -import { isHosted } from './helpers/helpers'; -import { login } from './helpers/login'; -import { ibFrame } from './helpers/navHelpers'; +import { closePopupsIfExist, isHosted } from './helpers/helpers'; +import { ensureAuthenticated } from './helpers/login'; +import { ibFrame, navigateToLandingPage } from './helpers/navHelpers'; test.describe.serial('test', () => { const blueprintName = uuidv4(); test('create blueprint', async ({ page }) => { - await login(page); + await ensureAuthenticated(page); + await closePopupsIfExist(page); + // Navigate to IB landing page and get the frame + await navigateToLandingPage(page); const frame = await ibFrame(page); - await frame.getByRole('heading', { name: 'Images About image builder' }); - await frame.getByRole('heading', { name: 'Blueprints' }); + frame.getByRole('heading', { name: 'Images About image builder' }); + frame.getByRole('heading', { name: 'Blueprints' }); await frame.getByTestId('blueprints-create-button').click(); - await frame.getByRole('heading', { name: 'Image output' }); - await frame.getByTestId('checkbox-guest-image').click(); + frame.getByRole('heading', { name: 'Image output' }); + await frame + .getByRole('checkbox', { name: /Virtualization guest image/i }) + .click(); await frame.getByRole('button', { name: 'Next', exact: true }).click(); if (isHosted()) { - await frame.getByRole('heading', { + frame.getByRole('heading', { name: 'Register systems using this image', }); - await page.getByTestId('register-later-radio').click(); + await page.getByRole('radio', { name: /Register later/i }).click(); await frame.getByRole('button', { name: 'Next', exact: true }).click(); } - await frame.getByRole('heading', { name: 'Compliance' }); + frame.getByRole('heading', { name: 'Compliance' }); await frame.getByRole('button', { name: 'Next', exact: true }).click(); - await frame.getByRole('heading', { name: 'File system configuration' }); + frame.getByRole('heading', { name: 'File system configuration' }); await frame.getByRole('button', { name: 'Next', exact: true }).click(); if (isHosted()) { - await frame.getByRole('heading', { name: 'Repository snapshot' }); + frame.getByRole('heading', { name: 'Repository snapshot' }); await frame.getByRole('button', { name: 'Next', exact: true }).click(); - await frame.getByRole('heading', { name: 'Custom repositories' }); + frame.getByRole('heading', { name: 'Custom repositories' }); await frame.getByRole('button', { name: 'Next', exact: true }).click(); } - await frame.getByRole('heading', { name: 'Additional packages' }); + frame.getByRole('heading', { name: 'Additional packages' }); await frame.getByRole('button', { name: 'Next', exact: true }).click(); - await frame.getByRole('heading', { name: 'Users' }); + frame.getByRole('heading', { name: 'Users' }); await frame.getByRole('button', { name: 'Next', exact: true }).click(); - await frame.getByRole('heading', { name: 'Timezone' }); + frame.getByRole('heading', { name: 'Timezone' }); await frame.getByRole('button', { name: 'Next', exact: true }).click(); - await frame.getByRole('heading', { name: 'Locale' }); + frame.getByRole('heading', { name: 'Locale' }); await frame.getByRole('button', { name: 'Next', exact: true }).click(); - await frame.getByRole('heading', { name: 'Hostname' }); + frame.getByRole('heading', { name: 'Hostname' }); await frame.getByRole('button', { name: 'Next', exact: true }).click(); - await frame.getByRole('heading', { name: 'Kernel' }); + frame.getByRole('heading', { name: 'Kernel' }); await frame.getByRole('button', { name: 'Next', exact: true }).click(); - await frame.getByRole('heading', { name: 'Firewall' }); + frame.getByRole('heading', { name: 'Firewall' }); await frame.getByRole('button', { name: 'Next', exact: true }).click(); - await frame.getByRole('heading', { name: 'Systemd services' }); + frame.getByRole('heading', { name: 'Systemd services' }); await frame.getByRole('button', { name: 'Next', exact: true }).click(); if (isHosted()) { - await frame.getByRole('heading', { name: 'First boot configuration' }); + frame.getByRole('heading', { name: 'Ansible Automation Platform' }); await frame.getByRole('button', { name: 'Next', exact: true }).click(); } - await frame.getByRole('heading', { name: 'Details' }); + if (isHosted()) { + frame.getByRole('heading', { name: 'First boot configuration' }); + await frame.getByRole('button', { name: 'Next', exact: true }).click(); + } + + frame.getByRole('heading', { name: 'Details' }); await frame.getByTestId('blueprint').fill(blueprintName); await expect(frame.getByTestId('blueprint')).toHaveValue(blueprintName); await frame.getByRole('button', { name: 'Next', exact: true }).click(); @@ -79,22 +92,32 @@ test.describe.serial('test', () => { await frame.getByRole('button', { name: 'Create blueprint' }).click(); await expect( - frame.locator('.pf-v5-c-card__title-text').getByText(blueprintName) + frame.locator('.pf-v6-c-card__title-text').getByText( + // if the name is too long, the blueprint card will have a truncated name. + blueprintName.length > 24 + ? blueprintName.slice(0, 24) + '...' + : blueprintName, + ), ).toBeVisible(); }); test('edit blueprint', async ({ page }) => { + await ensureAuthenticated(page); + await closePopupsIfExist(page); // package searching is really slow the first time in cockpit if (!isHosted()) { test.setTimeout(300000); } - await login(page); + // Navigate to IB landing page and get the frame + await navigateToLandingPage(page); const frame = await ibFrame(page); await frame .getByRole('textbox', { name: 'Search input' }) .fill(blueprintName); - await frame.getByText(blueprintName, { exact: true }).first().click(); + // the clickable blueprint cards are a bit awkward, so use the + // button's id instead + await frame.locator(`button[id="${blueprintName}"]`).click(); await frame.getByRole('button', { name: 'Edit blueprint' }).click(); await frame.getByRole('button', { name: 'Additional packages' }).click(); @@ -102,30 +125,37 @@ test.describe.serial('test', () => { .getByTestId('packages-search-input') .locator('input') .fill('osbuild-composer'); - await frame.getByTestId('packages-table').getByText('Searching'); - await frame.getByRole('gridcell', { name: 'osbuild-composer' }).first(); + frame.getByTestId('packages-table').getByText('Searching'); + frame.getByRole('gridcell', { name: 'osbuild-composer' }).first(); await frame.getByRole('checkbox', { name: 'Select row 0' }).check(); await frame.getByRole('button', { name: 'Review and finish' }).click(); await frame.getByRole('button', { name: 'About packages' }).click(); - await frame.getByRole('gridcell', { name: 'osbuild-composer' }); + frame.getByRole('gridcell', { name: 'osbuild-composer' }); + await frame.getByRole('button', { name: 'Close', exact: true }).click(); await frame .getByRole('button', { name: 'Save changes to blueprint' }) .click(); await frame.getByRole('button', { name: 'Edit blueprint' }).click(); await frame.getByRole('button', { name: 'About packages' }).click(); - await frame.getByRole('gridcell', { name: 'osbuild-composer' }); + frame.getByRole('gridcell', { name: 'osbuild-composer' }); + await frame.getByRole('button', { name: 'Close', exact: true }).click(); await frame.getByRole('button', { name: 'Cancel', exact: true }).click(); - await frame.getByRole('heading', { name: 'All images' }); + frame.getByRole('heading', { name: 'All images' }); }); test('build blueprint', async ({ page }) => { - await login(page); + await ensureAuthenticated(page); + await closePopupsIfExist(page); + // Navigate to IB landing page and get the frame + await navigateToLandingPage(page); const frame = await ibFrame(page); await frame .getByRole('textbox', { name: 'Search input' }) .fill(blueprintName); - await frame.getByText(blueprintName, { exact: true }).first().click(); + // the clickable blueprint cards are a bit awkward, so use the + // button's id instead + await frame.locator(`button[id="${blueprintName}"]`).click(); await frame.getByTestId('blueprint-build-image-menu-option').click(); // make sure the image is present @@ -133,18 +163,152 @@ test.describe.serial('test', () => { .getByTestId('images-table') .getByRole('button', { name: 'Details' }) .click(); - await frame.getByText('Build Information'); + frame.getByText('Build Information'); }); test('delete blueprint', async ({ page }) => { - await login(page); + await ensureAuthenticated(page); + await closePopupsIfExist(page); + // Navigate to IB landing page and get the frame + await navigateToLandingPage(page); const frame = await ibFrame(page); await frame .getByRole('textbox', { name: 'Search input' }) .fill(blueprintName); - await frame.getByText(blueprintName, { exact: true }).first().click(); - await frame.getByTestId('blueprint-action-menu-toggle').click(); + // the clickable blueprint cards are a bit awkward, so use the + // button's id instead + await frame.locator(`button[id="${blueprintName}"]`).click(); + await frame.getByRole('button', { name: /blueprint menu toggle/i }).click(); await frame.getByRole('menuitem', { name: 'Delete blueprint' }).click(); await frame.getByRole('button', { name: 'Delete' }).click(); }); + + test('cockpit worker config', async ({ page }) => { + if (isHosted()) { + return; + } + + await ensureAuthenticated(page); + await closePopupsIfExist(page); + // Navigate to IB landing page and get the frame + await navigateToLandingPage(page); + await page.goto('/cockpit-image-builder'); + const frame = ibFrame(page); + + const header = frame.getByText('Configure AWS Uploads'); + if (!(await header.isVisible())) { + await frame + .getByRole('button', { name: 'Configure Cloud Providers' }) + .click(); + await expect(header).toBeVisible(); + } + + const bucket = 'cockpit-ib-playwright-bucket'; + const credentials = '/test/credentials'; + const switchInput = frame.locator('#aws-config-switch'); + await expect(switchInput).toBeVisible(); + + // introduce a wait time, since it takes some time to load the + // worker config file. + await page.waitForTimeout(1000); + + // If this test fails for any reason, the config should already be loaded + // and visible on the retury. If it is go back to the landing page + if (await switchInput.isChecked()) { + await frame.getByRole('button', { name: 'Cancel' }).click(); + await expect( + frame.getByRole('heading', { name: 'All images' }), + ).toBeVisible(); + } else { + const switchToggle = frame.locator('.pf-v6-c-switch'); + await switchToggle.click(); + + await frame + .getByPlaceholder('AWS bucket') + // this doesn't need to exist, we're just testing that + // the form works as expected + .fill(bucket); + await frame.getByPlaceholder('Path to AWS credentials').fill(credentials); + await frame.getByRole('button', { name: 'Submit' }).click(); + await expect( + frame.getByRole('heading', { name: 'All images' }), + ).toBeVisible(); + } + + await frame + .getByRole('button', { name: 'Configure Cloud Providers' }) + .click(); + await expect(header).toBeVisible(); + + // introduce a wait time, since it takes some time to load the + // worker config file. + await page.waitForTimeout(1500); + + await expect(frame.locator('#aws-config-switch')).toBeChecked(); + + await expect(frame.getByPlaceholder('AWS bucket')).toHaveValue(bucket); + await expect(frame.getByPlaceholder('Path to AWS credentials')).toHaveValue( + credentials, + ); + await frame.getByRole('button', { name: 'Cancel' }).click(); + + const config = readFileSync('/etc/osbuild-worker/osbuild-worker.toml'); + // this is for testing, the field `aws` should exist + // eslint-disable-next-line + const parsed = TOML.parse(config) as any; + expect(parsed.aws?.bucket).toBe(bucket); + expect(parsed.aws?.credentials).toBe(credentials); + }); + + const cockpitBlueprintname = uuidv4(); + test('cockpit cloud upload', async ({ page }) => { + if (isHosted()) { + return; + } + + await ensureAuthenticated(page); + await closePopupsIfExist(page); + // Navigate to IB landing page and get the frame + await navigateToLandingPage(page); + await page.goto('/cockpit-image-builder'); + const frame = ibFrame(page); + + frame.getByRole('heading', { name: 'Images About image builder' }); + frame.getByRole('heading', { name: 'Blueprints' }); + await frame.getByTestId('blueprints-create-button').click(); + + frame.getByRole('heading', { name: 'Image output' }); + // the first card should be the AWS card + await frame.locator('.pf-v6-c-card').first().click(); + await frame.getByRole('button', { name: 'Next', exact: true }).click(); + await frame.getByRole('button', { name: 'Next', exact: true }).click(); + await frame.getByRole('button', { name: 'Review and finish' }).click(); + await frame.getByRole('button', { name: 'Back', exact: true }).click(); + + frame.getByRole('heading', { name: 'Details' }); + await frame.getByTestId('blueprint').fill(cockpitBlueprintname); + await expect(frame.getByTestId('blueprint')).toHaveValue( + cockpitBlueprintname, + ); + await frame.getByRole('button', { name: 'Next', exact: true }).click(); + + await frame.getByRole('button', { name: 'Create blueprint' }).click(); + await frame.getByTestId('close-button-saveandbuild-modal').click(); + await frame.getByRole('button', { name: 'Create blueprint' }).click(); + + await frame + .getByRole('textbox', { name: 'Search input' }) + .fill(cockpitBlueprintname); + // the clickable blueprint cards are a bit awkward, so use the + // button's id instead + await frame.locator(`button[id="${cockpitBlueprintname}"]`).click(); + await frame.getByTestId('blueprint-build-image-menu-option').click(); + + // make sure the image is present + await frame + .getByTestId('images-table') + .getByRole('button', { name: 'Details' }) + .click(); + frame.getByText('Build Information'); + }); }); diff --git a/pr_check.sh b/pr_check.sh deleted file mode 100755 index ecdba696..00000000 --- a/pr_check.sh +++ /dev/null @@ -1,57 +0,0 @@ -#!/bin/bash - -# -------------------------------------------- -# Export vars for helper scripts to use -# -------------------------------------------- -# name of app-sre "application" folder this component lives in; needs to match for quay -export COMPONENT_NAME="image-builder-frontend" -# IMAGE should match the quay repo set by app.yaml in app-interface -export IMAGE="quay.io/cloudservices/image-builder-frontend" -export WORKSPACE=${WORKSPACE:-$APP_ROOT} # if running in jenkins, use the build's workspace -export APP_ROOT=$(pwd) -#16 is the default Node version. Change this to override it. -export NODE_BUILD_VERSION=20 -# skip unit tests on frontend-build -export SKIP_VERIFY=True -COMMON_BUILDER=https://raw.githubusercontent.com/RedHatInsights/insights-frontend-builder-common/master - -# -------------------------------------------- -# Options that must be configured by app owner -# -------------------------------------------- -export IQE_PLUGINS="image-builder" -export IQE_CJI_TIMEOUT="90m" -export IQE_MARKER_EXPRESSION="fe_pr_check" -export IQE_SELENIUM="true" -export IQE_ENV="ephemeral" -export IQE_IMAGE_TAG="image-builder" -export IQE_PARALLEL_ENABLED="false" -export RESERVE_DURATION="2h" - -# bootstrap bonfire and it's config -CICD_URL=https://raw.githubusercontent.com/RedHatInsights/bonfire/master/cicd -curl -s "$CICD_URL"/bootstrap.sh >.cicd_bootstrap.sh && source .cicd_bootstrap.sh - -# # source is preferred to | bash -s in this case to avoid a subshell -source <(curl -sSL $COMMON_BUILDER/src/frontend-build.sh) - -# reserve ephemeral namespace -export DEPLOY_FRONTENDS="true" -export EXTRA_DEPLOY_ARGS="provisioning sources rhsm-api-proxy --set-template-ref rhsm-api-proxy=master" -export APP_NAME="image-builder-crc" -export DEPLOY_TIMEOUT="1200" -export REF_ENV="insights-stage" -# overwrites any resource limits imposed by bonfire -export COMPONENTS_W_RESOURCES="compliance notifications-backend notifications-engine" - -source "$CICD_ROOT"/deploy_ephemeral_env.sh - -# Run smoke tests using a ClowdJobInvocation (preferred) -# The contents of this script can be found at: -# https://raw.githubusercontent.com/RedHatInsights/bonfire/master/cicd/cji_smoke_test.sh -export COMPONENT_NAME="image-builder" -source "$CICD_ROOT"/cji_smoke_test.sh - -# Post a comment with test run IDs to the PR -# The contents of this script can be found at: -# https://raw.githubusercontent.com/RedHatInsights/bonfire/master/cicd/post_test_results.sh -source "$CICD_ROOT"/post_test_results.sh diff --git a/schutzbot/playwright.fmf b/schutzbot/playwright.fmf new file mode 100644 index 00000000..bbc5721a --- /dev/null +++ b/schutzbot/playwright.fmf @@ -0,0 +1,8 @@ +summary: run playwright tests +test: ./playwright_tests.sh +require: + - cockpit-image-builder + - podman + - nodejs + - nodejs-npm +duration: 30m diff --git a/schutzbot/playwright_tests.sh b/schutzbot/playwright_tests.sh index 21fcd9ef..052faed2 100755 --- a/schutzbot/playwright_tests.sh +++ b/schutzbot/playwright_tests.sh @@ -1,16 +1,16 @@ #!/bin/bash set -euo pipefail -# As playwright isn't supported on fedora/el, install dependencies -# beforehand. -sudo dnf install -y \ - alsa-lib \ - libXrandr-devel \ - libXdamage-devel \ - libXcomposite-devel \ - at-spi2-atk-devel \ - cups \ - atk +TMT_SOURCE_DIR=${TMT_SOURCE_DIR:-} +if [ -n "$TMT_SOURCE_DIR" ]; then + # Move to the directory with sources + cd "${TMT_SOURCE_DIR}/cockpit-image-builder" + npm ci +elif [ "${CI:-}" != "true" ]; then + # packit drops us into the schutzbot directory + cd ../ + npm ci +fi sudo systemctl enable --now cockpit.socket @@ -19,10 +19,13 @@ sudo usermod -aG wheel admin echo "admin ALL=(ALL:ALL) NOPASSWD: ALL" | sudo tee "/etc/sudoers.d/admin-nopasswd" function upload_artifacts { - mkdir -p /tmp/artifacts/extra-screenshots - USER="$(whoami)" - sudo chown -R "$USER:$USER" playwright-report - mv playwright-report /tmp/artifacts/ + if [ -n "${TMT_TEST_DATA:-}" ]; then + mv playwright-report "$TMT_TEST_DATA"/playwright-report + else + USER="$(whoami)" + sudo chown -R "$USER:$USER" playwright-report + mv playwright-report /tmp/artifacts/ + fi } trap upload_artifacts EXIT @@ -73,10 +76,12 @@ sudo podman run \ -e "CI=true" \ -e "PLAYWRIGHT_USER=admin" \ -e "PLAYWRIGHT_PASSWORD=foobar" \ - -e "CURRENTS_PROJECT_ID=$CURRENTS_PROJECT_ID" \ - -e "CURRENTS_RECORD_KEY=$CURRENTS_RECORD_KEY" \ + -e "CURRENTS_PROJECT_ID=${CURRENTS_PROJECT_ID:-}" \ + -e "CURRENTS_RECORD_KEY=${CURRENTS_RECORD_KEY:-}" \ --net=host \ -v "$PWD:/tests" \ + -v '/etc:/etc' \ + -v '/etc/os-release:/etc/os-release' \ --privileged \ --rm \ --init \ diff --git a/schutzbot/terraform b/schutzbot/terraform index 9a64fd4c..a3ddc921 100644 --- a/schutzbot/terraform +++ b/schutzbot/terraform @@ -1 +1 @@ -7b4735d287dd0950e0a6f47dde65b62b0f239da1 +cf0a810fd3b75fa27139746c4dfe72222e13dcba diff --git a/schutzbot/update_github_status.sh b/schutzbot/update_github_status.sh index df4e39f8..11633cfd 100755 --- a/schutzbot/update_github_status.sh +++ b/schutzbot/update_github_status.sh @@ -1,7 +1,7 @@ #!/bin/bash # if a user is logged in to the runner, wait until they're done -while (( $(who -s | wc -l) > 0 )); do +while (( $(who -u | grep -v '?' | wc -l) > 0 )); do echo "Waiting for user(s) to log off" sleep 30 done diff --git a/src/App.tsx b/src/App.tsx index c00f4f57..fadac91d 100644 --- a/src/App.tsx +++ b/src/App.tsx @@ -1,7 +1,7 @@ import React, { useEffect } from 'react'; -import { useChrome } from '@redhat-cloud-services/frontend-components/useChrome'; -import NotificationsPortal from '@redhat-cloud-services/frontend-components-notifications/NotificationPortal'; +import useChrome from '@redhat-cloud-services/frontend-components/useChrome'; +import NotificationsProvider from '@redhat-cloud-services/frontend-components-notifications/NotificationsProvider'; import '@patternfly/patternfly/patternfly-addons.css'; import { Router } from './Router'; @@ -14,10 +14,21 @@ const App = () => { hideGlobalFilter(true); }, [hideGlobalFilter, updateDocumentTitle]); + // Necessary for in-page wizard overflow to behave properly + // The .chr-render class is defined in Insights Chrome: + // https://github.com/RedHatInsights/insights-chrome/blob/fe573705020ff64003ac9e6101aa978b471fe6f2/src/sass/chrome.scss#L82 + useEffect(() => { + const chrRenderDiv = document.querySelector('.chr-render'); + if (chrRenderDiv) { + (chrRenderDiv as HTMLElement).style.overflow = 'auto'; + } + }, []); + return ( - - + + + ); }; diff --git a/src/AppCockpit.scss b/src/AppCockpit.scss new file mode 100644 index 00000000..90624edf --- /dev/null +++ b/src/AppCockpit.scss @@ -0,0 +1,78 @@ +@font-face { + font-family: 'Red Hat Text'; + font-style: normal; + font-weight: 400 500; + src: url('/cockpit/static/fonts/RedHatText/RedHatTextVF.woff2') + format('woff2-variations'); + font-display: fallback; +} + +@font-face { + font-family: 'Red Hat Text'; + font-style: italic; + font-weight: 400 500; + src: url('/cockpit/static/fonts/RedHatText/RedHatTextVF-Italic.woff2') + format('woff2-variations'); + font-display: fallback; +} + +@font-face { + font-family: 'Red Hat Display'; + font-style: normal; + font-weight: 400 700; + src: url('/cockpit/static/fonts/RedHatDisplay/RedHatDisplayVF.woff2') + format('woff2-variations'); + font-display: fallback; +} + +@font-face { + font-family: 'Red Hat Display'; + font-style: italic; + font-weight: 400 700; + src: url('/cockpit/static/fonts/RedHatDisplay/RedHatDisplayVF-Italic.woff2') + format('woff2-variations'); + font-display: fallback; +} + +@font-face { + font-family: RedHatText; + font-style: normal; + font-weight: 400; + src: url('/cockpit/static/fonts/RedHatText-Regular.woff2') format('woff2'); + font-display: fallback; +} + +@font-face { + font-family: RedHatText; + font-style: normal; + font-weight: 700; + src: url('/cockpit/static/fonts/RedHatText-Medium.woff2') format('woff2'); + font-display: fallback; +} + +// Override as PF Page doesn't allow empty masthead and sidebar +@media (min-width: 75rem) { + .pf-v6-c-page.no-masthead-sidebar { + /* custom class to scope this style to a specific page component instance */ + --pf-v6-c-page__main-container--GridArea: var( + --pf-v6-c-page--masthead--main-container--GridArea + ); + } +} + +.pf-v6-c-page__main-section { + padding-inline: 0; + padding-block-start: 0; +} + +.pf-v6-c-page__main > section.pf-v6-c-page__main-section:not(.pf-m-padding) { + padding-inline: 0; +} + +.pf-v6-c-card { + &.pf-m-clickable::before, + &.pf-m-selectable::before { + border: var(--pf-v6-c-card--BorderColor) var(--pf-v6-c-card--BorderStyle) + var(--pf-v6-c-card--BorderWidth) !important; + } +} diff --git a/src/AppCockpit.tsx b/src/AppCockpit.tsx index 412f9fb6..4c825be2 100644 --- a/src/AppCockpit.tsx +++ b/src/AppCockpit.tsx @@ -3,11 +3,14 @@ import '@patternfly/patternfly/patternfly-addons.css'; import React from 'react'; -import NotificationsPortal from '@redhat-cloud-services/frontend-components-notifications/NotificationPortal'; +import 'cockpit-dark-theme'; +import { Page, PageSection } from '@patternfly/react-core'; +import NotificationsProvider from '@redhat-cloud-services/frontend-components-notifications/NotificationsProvider'; import { createRoot } from 'react-dom/client'; import { Provider } from 'react-redux'; import { HashRouter } from 'react-router-dom'; +import './AppCockpit.scss'; import { NotReady, RequireAdmin } from './Components/Cockpit'; import { Router } from './Router'; import { onPremStore as store } from './store'; @@ -28,16 +31,21 @@ const Application = () => { return ( - - - - + + + + + ); }; const ImageBuilder = () => ( - + + + + + ); diff --git a/src/Components/Blueprints/BlueprintActionsMenu.tsx b/src/Components/Blueprints/BlueprintActionsMenu.tsx index a759bf92..cee7447e 100644 --- a/src/Components/Blueprints/BlueprintActionsMenu.tsx +++ b/src/Components/Blueprints/BlueprintActionsMenu.tsx @@ -30,7 +30,7 @@ export const BlueprintActionsMenu: React.FunctionComponent< setShowBlueprintActionsMenu(!showBlueprintActionsMenu); }; const importExportFlag = useFlagWithEphemDefault( - 'image-builder.import.enabled' + 'image-builder.import.enabled', ); const [trigger] = useLazyExportBlueprintQuery(); @@ -58,11 +58,10 @@ export const BlueprintActionsMenu: React.FunctionComponent< ref={toggleRef} isExpanded={showBlueprintActionsMenu} onClick={() => setShowBlueprintActionsMenu(!showBlueprintActionsMenu)} - variant="plain" - aria-label="blueprint menu toggle" - data-testid="blueprint-action-menu-toggle" + variant='plain' + aria-label='blueprint menu toggle' > -