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 17c88763..5e6ee70e 100644 --- a/.github/workflows/playwright.yml +++ b/.github/workflows/playwright.yml @@ -4,12 +4,19 @@ 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: runs-on: - codebuild-image-builder-frontend-${{ github.run_id }}-${{ github.run_attempt }} - - instance-size:medium + - instance-size:large - buildspec-override:true steps: @@ -30,8 +37,8 @@ jobs: - name: Set up Node.js uses: actions/setup-node@v4 with: - node-version: 20 - cache: 'npm' + node-version: 22 + cache: "npm" - name: Install front-end dependencies run: npm ci @@ -48,8 +55,11 @@ jobs: - name: Start front-end server run: | - npm run start:stage & - npx wait-on https://localhost:1337 + npm run start:federated & + npx wait-on http://localhost:8003/apps/image-builder/ + + - name: Run testing proxy + run: docker run -d --network=host -e HTTPS_PROXY=$RH_PROXY_URL -v "$(pwd)/config:/config:ro,Z" --name consoledot-testing-proxy quay.io/dvagner/consoledot-testing-proxy - name: Run front-end Playwright tests env: 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 c18d2444..9cbc9f7a 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -30,8 +30,9 @@ test: parallel: matrix: - RUNNER: - - aws/rhel-9.6-nightly-x86_64 - - aws/rhel-10.0-nightly-x86_64 + - aws/fedora-41-x86_64 + - aws/fedora-42-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 feed4cfd..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:04f15cbce548e1db7770eee3f155ccb2cc0140a6c371dc67e9a34d83673ea0c0 + 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:870d9a04d9784840a90b7bf6817cd0d0c4edfcda04b1ba1868cae625a3c3bfcc + 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:aac8127bc10c95fae3ca1248c1dd96576315f3313bca90c5c9378dbf37954a08 + 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:69d578ec4d61fffffd67c54a2c7ef834ed4be7f94c7b9f83d0752cf0d57f2c3d + 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:029190a49bb0c6c6487fc2cd0be3a2fb4faa1091bc5a3bc2547722895353470b + 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:70f2fe8ab9909c2bc8bb853ed5b880969f0de5022658f3af86f7dea15f95ff73 + 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:9475a2d05f4d18898dc10c27c6e7c6842d99979f8851c4039d9d3c3097cd9564 + value: quay.io/konflux-ci/tekton-catalog/task-source-build:0.3@sha256:96ed9431854ecf9805407dca77b063abdf7aba1b3b9d1925a5c6145c6b7e95fd - name: kind value: task resolver: bundles @@ -312,52 +310,54 @@ spec: workspace: workspace - name: sast-shell-check params: - - name: image-digest - value: $(tasks.build-image-index.results.IMAGE_DIGEST) - - name: image-url - value: $(tasks.build-image-index.results.IMAGE_URL) + - name: image-digest + value: $(tasks.build-image-index.results.IMAGE_DIGEST) + - name: image-url + value: $(tasks.build-image-index.results.IMAGE_URL) runAfter: - - build-image-index + - build-image-index taskRef: params: - - name: name - value: sast-shell-check - - name: bundle - value: quay.io/konflux-ci/tekton-catalog/task-sast-shell-check:0.1@sha256:188a4f6a582ac43d4de46c3998ded3c2a8ee237fb0604d90559a3b6e0aa62b0f - - name: kind - value: task + - name: name + value: sast-shell-check + - name: bundle + value: quay.io/konflux-ci/tekton-catalog/task-sast-shell-check:0.1@sha256:4a63982791a1a68f560c486f524ef5b9fdbeee0c16fe079eee3181a2cfd1c1bf + - name: kind + value: task resolver: bundles when: - - input: $(params.skip-checks) - operator: in - values: - - "false" + - input: $(params.skip-checks) + operator: in + values: + - "false" workspaces: - - name: workspace - workspace: workspace + - name: workspace + workspace: workspace - name: sast-unicode-check params: - - name: image-url - value: $(tasks.build-image-index.results.IMAGE_URL) + - 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 + - build-image-index taskRef: params: - - name: name - value: sast-unicode-check - - name: bundle - value: quay.io/konflux-ci/tekton-catalog/task-sast-unicode-check:0.2@sha256:e4a5215b45b1886a185a9db8ab392f8440c2b0848f76d719885637cf8d2628ed - - name: kind - value: task + - name: name + value: sast-unicode-check + - name: bundle + value: quay.io/konflux-ci/tekton-catalog/task-sast-unicode-check:0.3@sha256:bec18fa5e82e801c3f267f29bf94535a5024e72476f2b27cca7271d506abb5ad + - name: kind + value: task resolver: bundles when: - - input: $(params.skip-checks) - operator: in - values: - - "false" + - input: $(params.skip-checks) + operator: in + values: + - "false" workspaces: - - name: workspace - workspace: workspace + - name: workspace + workspace: workspace - name: deprecated-base-image-check params: - name: IMAGE_URL @@ -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:eb8136b543147b4a3e88ca3cc661ca6a11e303f35f0db44059f69151beea8496 + 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:7c73e2beca9b8306387efeaf775831440ec799b05a5f5c008a65bb941a1e91f6 + 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:e16e33931bccd678b6b10b87636f37a08a0288b65a662ff76b5dad6fcbbb077f + 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:0d22dbaa528c8edf59aafab3600a0537b5408b80a4f69dd9cb616620795ecdc8 + 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:11b1684965b64f1fa7c65f90a3524413022246a3863eaba188c84eb4bf0b687a + 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:4973fa42a8f06238613447fbdb3d0c55eb2d718fd16f2f2591a577c29c1edb17 + 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:6124587dffebd15b2123f73ca25807c5e69ff349489b31d4af6ff46a5d0228d6 + 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:eeaee239eabec8ba9cfd0f80382ad34114c93393c35d1eae77c5d73d57aa824d + value: quay.io/konflux-ci/tekton-catalog/task-rpms-signature-scan:0.2@sha256:1b6c20ab3dbfb0972803d3ebcb2fa72642e59400c77bd66dfd82028bdd09e120 - name: kind value: task resolver: bundles @@ -536,12 +538,13 @@ spec: optional: true - name: netrc optional: true - taskRunTemplate: {} + taskRunTemplate: + serviceAccountName: build-pipeline-image-builder-frontend workspaces: - 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 5f112c89..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:04f15cbce548e1db7770eee3f155ccb2cc0140a6c371dc67e9a34d83673ea0c0 + 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:870d9a04d9784840a90b7bf6817cd0d0c4edfcda04b1ba1868cae625a3c3bfcc + 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:aac8127bc10c95fae3ca1248c1dd96576315f3313bca90c5c9378dbf37954a08 + 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:69d578ec4d61fffffd67c54a2c7ef834ed4be7f94c7b9f83d0752cf0d57f2c3d + 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:029190a49bb0c6c6487fc2cd0be3a2fb4faa1091bc5a3bc2547722895353470b + 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:70f2fe8ab9909c2bc8bb853ed5b880969f0de5022658f3af86f7dea15f95ff73 + 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:9475a2d05f4d18898dc10c27c6e7c6842d99979f8851c4039d9d3c3097cd9564 + value: quay.io/konflux-ci/tekton-catalog/task-source-build:0.3@sha256:96ed9431854ecf9805407dca77b063abdf7aba1b3b9d1925a5c6145c6b7e95fd - name: kind value: task resolver: bundles @@ -309,52 +307,54 @@ spec: workspace: workspace - name: sast-shell-check params: - - name: image-digest - value: $(tasks.build-image-index.results.IMAGE_DIGEST) - - name: image-url - value: $(tasks.build-image-index.results.IMAGE_URL) + - name: image-digest + value: $(tasks.build-image-index.results.IMAGE_DIGEST) + - name: image-url + value: $(tasks.build-image-index.results.IMAGE_URL) runAfter: - - build-image-index + - build-image-index taskRef: params: - - name: name - value: sast-shell-check - - name: bundle - value: quay.io/konflux-ci/tekton-catalog/task-sast-shell-check:0.1@sha256:188a4f6a582ac43d4de46c3998ded3c2a8ee237fb0604d90559a3b6e0aa62b0f - - name: kind - value: task + - name: name + value: sast-shell-check + - name: bundle + value: quay.io/konflux-ci/tekton-catalog/task-sast-shell-check:0.1@sha256:4a63982791a1a68f560c486f524ef5b9fdbeee0c16fe079eee3181a2cfd1c1bf + - name: kind + value: task resolver: bundles when: - - input: $(params.skip-checks) - operator: in - values: - - "false" + - input: $(params.skip-checks) + operator: in + values: + - "false" workspaces: - - name: workspace - workspace: workspace + - name: workspace + workspace: workspace - name: sast-unicode-check params: - - name: image-url - value: $(tasks.build-image-index.results.IMAGE_URL) + - 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 + - build-image-index taskRef: params: - - name: name - value: sast-unicode-check - - name: bundle - value: quay.io/konflux-ci/tekton-catalog/task-sast-unicode-check:0.2@sha256:e4a5215b45b1886a185a9db8ab392f8440c2b0848f76d719885637cf8d2628ed - - name: kind - value: task + - name: name + value: sast-unicode-check + - name: bundle + value: quay.io/konflux-ci/tekton-catalog/task-sast-unicode-check:0.3@sha256:bec18fa5e82e801c3f267f29bf94535a5024e72476f2b27cca7271d506abb5ad + - name: kind + value: task resolver: bundles when: - - input: $(params.skip-checks) - operator: in - values: - - "false" + - input: $(params.skip-checks) + operator: in + values: + - "false" workspaces: - - name: workspace - workspace: workspace + - name: workspace + workspace: workspace - name: deprecated-base-image-check params: - name: IMAGE_URL @@ -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:eb8136b543147b4a3e88ca3cc661ca6a11e303f35f0db44059f69151beea8496 + 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:7c73e2beca9b8306387efeaf775831440ec799b05a5f5c008a65bb941a1e91f6 + 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:e16e33931bccd678b6b10b87636f37a08a0288b65a662ff76b5dad6fcbbb077f + 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:0d22dbaa528c8edf59aafab3600a0537b5408b80a4f69dd9cb616620795ecdc8 + 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:11b1684965b64f1fa7c65f90a3524413022246a3863eaba188c84eb4bf0b687a + 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:4973fa42a8f06238613447fbdb3d0c55eb2d718fd16f2f2591a577c29c1edb17 + 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:6124587dffebd15b2123f73ca25807c5e69ff349489b31d4af6ff46a5d0228d6 + 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:eeaee239eabec8ba9cfd0f80382ad34114c93393c35d1eae77c5d73d57aa824d + value: quay.io/konflux-ci/tekton-catalog/task-rpms-signature-scan:0.2@sha256:1b6c20ab3dbfb0972803d3ebcb2fa72642e59400c77bd66dfd82028bdd09e120 - name: kind value: task resolver: bundles @@ -533,12 +535,13 @@ spec: optional: true - name: netrc optional: true - taskRunTemplate: {} + taskRunTemplate: + serviceAccountName: build-pipeline-image-builder-frontend workspaces: - 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 34f82fa8..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', @@ -19,6 +20,7 @@ const config: ConfigFile = { 'getPackages', 'getOscapProfiles', 'getOscapCustomizations', + 'getOscapCustomizationsForPolicy', 'createBlueprint', 'updateBlueprint', 'composeBlueprint', 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 23b02a1b..00000000 --- a/api/schema/compliance.json +++ /dev/null @@ -1,17420 +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": "0990aa76-2ef9-475d-9054-a4d239dc19fe", - "title": "Id repellat iure qui.", - "description": "Commodi dolor voluptatem. Eveniet qui vero. Beatae non iure.", - "business_objective": null, - "compliance_threshold": 10.0, - "total_system_count": 0, - "type": "policy", - "os_major_version": 7, - "profile_title": "Nemo vitae adipisci sint.", - "ref_id": "xccdf_org.ssgproject.content_profile_63071a98e16e01a81a6bdd4434de40cf" - }, - { - "id": "0c071ddb-113a-4441-aaef-ef3180e6891a", - "title": "Voluptatem rerum repellat ut.", - "description": "Quasi aut dolor. Dolorem sit error. Culpa provident maiores.", - "business_objective": null, - "compliance_threshold": 23.0, - "total_system_count": 0, - "type": "policy", - "os_major_version": 7, - "profile_title": "Ducimus ea sint quia.", - "ref_id": "xccdf_org.ssgproject.content_profile_245a48ad0b7d262f5abdd037d7af76af" - }, - { - "id": "0eeccab7-a518-459e-836d-ed9da35fb8c3", - "title": "Adipisci quia dolores et.", - "description": "Tempora ex minus. Enim aliquam quisquam. Voluptatem magni blanditiis.", - "business_objective": null, - "compliance_threshold": 49.0, - "total_system_count": 0, - "type": "policy", - "os_major_version": 7, - "profile_title": "Sint est consequuntur quas.", - "ref_id": "xccdf_org.ssgproject.content_profile_5acf87174393220bc81c9c6d3f4fca5b" - }, - { - "id": "28edce87-63f7-4cf9-beab-507deb3556f2", - "title": "Autem vel laudantium exercitationem.", - "description": "Et ipsa non. Eos reiciendis soluta. Qui omnis iure.", - "business_objective": null, - "compliance_threshold": 66.0, - "total_system_count": 0, - "type": "policy", - "os_major_version": 7, - "profile_title": "Unde autem possimus ipsam.", - "ref_id": "xccdf_org.ssgproject.content_profile_4f416f0b6b07cc2ddaa24a346ae2d811" - }, - { - "id": "2bd8a569-55f6-48ef-8e86-f5fa28aa5d78", - "title": "Possimus ipsam reprehenderit non.", - "description": "Ex voluptas sed. Voluptate neque praesentium. Autem ipsam consequatur.", - "business_objective": null, - "compliance_threshold": 51.0, - "total_system_count": 0, - "type": "policy", - "os_major_version": 7, - "profile_title": "Et quo libero repellat.", - "ref_id": "xccdf_org.ssgproject.content_profile_476aeed88bb6887a8235e53c1c9eeed8" - }, - { - "id": "334a08a4-c0d0-4b00-806f-033ea3d492c0", - "title": "Quia consequuntur sint necessitatibus.", - "description": "Accusantium minima et. Reprehenderit rerum quisquam. Quos ut in.", - "business_objective": null, - "compliance_threshold": 92.0, - "total_system_count": 0, - "type": "policy", - "os_major_version": 7, - "profile_title": "Unde est error sit.", - "ref_id": "xccdf_org.ssgproject.content_profile_387d9689fcf0f29ef44c3430c1a6dc82" - }, - { - "id": "348ebab8-129c-4051-97a7-acbb1d1bd8e3", - "title": "Harum nemo repellat libero.", - "description": "Sunt autem consectetur. Ea earum qui. Quia est eaque.", - "business_objective": null, - "compliance_threshold": 82.0, - "total_system_count": 0, - "type": "policy", - "os_major_version": 7, - "profile_title": "Architecto sed ut vel.", - "ref_id": "xccdf_org.ssgproject.content_profile_ea682656d8f578c3bfe064a5f5539216" - }, - { - "id": "3580f4ad-260a-453c-8b18-abd30b8bb0f3", - "title": "Nobis voluptatem earum necessitatibus.", - "description": "Accusantium sint ex. Officiis delectus fugit. Error odio aliquam.", - "business_objective": null, - "compliance_threshold": 49.0, - "total_system_count": 0, - "type": "policy", - "os_major_version": 7, - "profile_title": "Amet quia voluptas atque.", - "ref_id": "xccdf_org.ssgproject.content_profile_6a57e626e9c5adba12c5dc820d701043" - }, - { - "id": "390b4fc7-71d9-446e-b920-99139dc4210c", - "title": "Aut quia hic iure.", - "description": "Et aut quisquam. Eos doloribus nihil. Non sequi non.", - "business_objective": null, - "compliance_threshold": 41.0, - "total_system_count": 0, - "type": "policy", - "os_major_version": 7, - "profile_title": "Rerum consequatur explicabo aspernatur.", - "ref_id": "xccdf_org.ssgproject.content_profile_ee5f572824c12144f8284f6b821d4227" - }, - { - "id": "40461be3-c8fe-404e-94de-6a991b80d8e1", - "title": "Reiciendis sunt doloribus dolorum.", - "description": "Placeat ratione et. Nulla expedita eos. Adipisci a nihil.", - "business_objective": null, - "compliance_threshold": 89.0, - "total_system_count": 0, - "type": "policy", - "os_major_version": 7, - "profile_title": "Distinctio sit blanditiis ducimus.", - "ref_id": "xccdf_org.ssgproject.content_profile_6548891ced849710b49f968cf5067f87" - } - ], - "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": "302485d1-3f07-433d-a22f-290f0bdf3f79", - "title": "Est nostrum numquam quis.", - "description": "Qui aut explicabo. Sequi ut dolorem. Praesentium non sed.", - "business_objective": null, - "compliance_threshold": 65.0, - "total_system_count": 0, - "type": "policy", - "os_major_version": 7, - "profile_title": "Id totam provident enim.", - "ref_id": "xccdf_org.ssgproject.content_profile_497677e2e61a3fd6c512baa6ccd34560" - }, - { - "id": "429ceb90-2753-45af-94f6-487062a785a5", - "title": "Sint quia nihil quis.", - "description": "Quia ullam fuga. Rerum qui nihil. Quos dicta vero.", - "business_objective": null, - "compliance_threshold": 46.0, - "total_system_count": 0, - "type": "policy", - "os_major_version": 7, - "profile_title": "Sit incidunt nemo vel.", - "ref_id": "xccdf_org.ssgproject.content_profile_feb09c31c9c553a696f20f8655bc26e7" - }, - { - "id": "4525d696-2af3-42a1-a62a-2e15b7c7d092", - "title": "Libero et doloribus assumenda.", - "description": "Officiis molestiae aut. Quibusdam a cupiditate. Minus voluptates non.", - "business_objective": null, - "compliance_threshold": 60.0, - "total_system_count": 0, - "type": "policy", - "os_major_version": 7, - "profile_title": "Eos nesciunt praesentium omnis.", - "ref_id": "xccdf_org.ssgproject.content_profile_3ef8dd278d591399834ad716d3f6f51d" - }, - { - "id": "45d7ab17-b765-455a-a020-1e17019f05be", - "title": "Perferendis sapiente et consequatur.", - "description": "Libero iste quod. Dolores consequatur rerum. Deserunt unde labore.", - "business_objective": null, - "compliance_threshold": 31.0, - "total_system_count": 0, - "type": "policy", - "os_major_version": 7, - "profile_title": "Eos at in accusamus.", - "ref_id": "xccdf_org.ssgproject.content_profile_15df05d9701e39aab7be8f8b4e60b3fa" - }, - { - "id": "47a89231-1357-4078-a67d-a1e67223fd42", - "title": "Labore doloribus molestiae quisquam.", - "description": "Itaque cupiditate fugiat. Et delectus nam. Explicabo magnam est.", - "business_objective": null, - "compliance_threshold": 39.0, - "total_system_count": 0, - "type": "policy", - "os_major_version": 7, - "profile_title": "Autem molestiae fugit alias.", - "ref_id": "xccdf_org.ssgproject.content_profile_d310a053262cad8f8c8edceaef0578d4" - }, - { - "id": "4c7cabae-23df-4318-aa22-ba3ac02caf68", - "title": "Tempore similique illum aliquid.", - "description": "Maiores placeat dignissimos. Nisi iste est. Magnam et enim.", - "business_objective": null, - "compliance_threshold": 29.0, - "total_system_count": 0, - "type": "policy", - "os_major_version": 7, - "profile_title": "Animi ab dolor et.", - "ref_id": "xccdf_org.ssgproject.content_profile_2fdbb1a5bd0ef4cc52f6634098875bb8" - }, - { - "id": "51806dca-5a0c-423f-8895-e3fec274e968", - "title": "Hic voluptatem tempora officiis.", - "description": "Deleniti est molestiae. Voluptatem nisi soluta. Doloribus nemo saepe.", - "business_objective": null, - "compliance_threshold": 13.0, - "total_system_count": 0, - "type": "policy", - "os_major_version": 7, - "profile_title": "Officiis rerum unde voluptas.", - "ref_id": "xccdf_org.ssgproject.content_profile_6b523f80b303c3f9d48e94e2f5703a89" - }, - { - "id": "5a786df3-2c95-4885-8954-cbdd2020f5f6", - "title": "Ut repellat velit eligendi.", - "description": "Voluptatum ut sint. Tempore voluptatem amet. Perferendis et aspernatur.", - "business_objective": null, - "compliance_threshold": 54.0, - "total_system_count": 0, - "type": "policy", - "os_major_version": 7, - "profile_title": "Esse explicabo delectus ipsum.", - "ref_id": "xccdf_org.ssgproject.content_profile_a6be4b81cff0ac5d31d03de10461c15f" - }, - { - "id": "663612dd-90a3-46f1-bfc2-b0e20645818c", - "title": "Placeat sequi delectus qui.", - "description": "Laboriosam est debitis. Provident iusto optio. Atque quis saepe.", - "business_objective": null, - "compliance_threshold": 25.0, - "total_system_count": 0, - "type": "policy", - "os_major_version": 7, - "profile_title": "Aut exercitationem adipisci et.", - "ref_id": "xccdf_org.ssgproject.content_profile_fe0537254b6bb4957219c813c0575a7f" - }, - { - "id": "76dca7cf-704d-4e1a-b54b-b68a58a8f3d9", - "title": "Blanditiis dolorem ut eos.", - "description": "Dolor qui esse. Dolore sit cumque. Qui quia aut.", - "business_objective": null, - "compliance_threshold": 90.0, - "total_system_count": 0, - "type": "policy", - "os_major_version": 7, - "profile_title": "Et aliquid ea vel.", - "ref_id": "xccdf_org.ssgproject.content_profile_30242815dee87cd7576bceb07212bed9" - } - ], - "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": "47bd4d66-eee2-4341-ad67-87b239343aaf", - "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": "Alias non blanditiis quo.", - "ref_id": "xccdf_org.ssgproject.content_profile_2ecf004ec13348bd9fdcde36b3534048" - } - }, - "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": "6a9ad61b-aec1-4167-82c5-facd25a3833b", - "title": "Voluptas sit sit non.", - "description": "Quia inventore ipsum. Consequatur maiores ratione. Rerum error sint.", - "business_objective": null, - "compliance_threshold": 66.0, - "total_system_count": 0, - "type": "policy", - "os_major_version": 7, - "profile_title": "Mollitia enim placeat asperiores.", - "ref_id": "xccdf_org.ssgproject.content_profile_d707ce24bfa3498aa98e837bce9af612" - } - }, - "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 27416cde-0adb-494a-9c4e-44bbcfefc818" - ] - }, - "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": "8faebe67-dfff-48bd-a1aa-69bf9b10271e", - "title": "Dicta ex laudantium commodi.", - "description": "Ut dolor aspernatur. Voluptatem inventore voluptatibus. Cumque deserunt eos.", - "business_objective": null, - "compliance_threshold": 100.0, - "total_system_count": 0, - "type": "policy", - "os_major_version": 7, - "profile_title": "Consequatur odio distinctio iusto.", - "ref_id": "xccdf_org.ssgproject.content_profile_b922137c2eecaeb1cf03eb96a6a2f69c" - } - }, - "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": "6e030ef3-6d07-4b43-b793-351015b52026", - "title": "Vero magnam et non.", - "description": "Id earum tempora. Laboriosam pariatur sunt. Nihil asperiores rerum.", - "business_objective": null, - "compliance_threshold": 44.0, - "total_system_count": 0, - "type": "policy", - "os_major_version": 7, - "profile_title": "Autem sint error inventore.", - "ref_id": "xccdf_org.ssgproject.content_profile_8dbe1a5a1c9d4029b6183a087289c5ee" - } - }, - "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": "07ea6fdf-9c56-4852-9969-5470663f5272", - "title": "Aliquid enim nesciunt dignissimos.", - "description": "Tenetur qui amet. Neque laboriosam blanditiis. Omnis dolorum est.", - "business_objective": null, - "compliance_threshold": 87.0, - "total_system_count": 1, - "type": "policy", - "os_major_version": 7, - "profile_title": "Aut quia rerum magnam.", - "ref_id": "xccdf_org.ssgproject.content_profile_fd5b746a4b48f74b6e997ea09feb1b3a" - }, - { - "id": "0a6cecf9-043c-41c6-83a1-f2152ef6cb98", - "title": "Deserunt officia harum alias.", - "description": "Dolores quisquam ratione. Laboriosam id maiores. Qui vel harum.", - "business_objective": null, - "compliance_threshold": 57.0, - "total_system_count": 1, - "type": "policy", - "os_major_version": 7, - "profile_title": "Blanditiis quaerat repellendus est.", - "ref_id": "xccdf_org.ssgproject.content_profile_6ae0bae57baf10328a803d98bd8e946e" - }, - { - "id": "1e6fbe32-403a-4cfb-85c4-575a7b73a3c0", - "title": "Et saepe dolores maxime.", - "description": "Architecto ipsam et. Ipsa aut non. Maxime ea enim.", - "business_objective": null, - "compliance_threshold": 71.0, - "total_system_count": 1, - "type": "policy", - "os_major_version": 7, - "profile_title": "Ipsam et quisquam ad.", - "ref_id": "xccdf_org.ssgproject.content_profile_07316282dc2778ba1212cd52f1f1cac5" - }, - { - "id": "29f2a4fb-a855-425d-964e-99322fc02b77", - "title": "Voluptates quia voluptatem sed.", - "description": "Laborum ipsa fugit. Blanditiis culpa adipisci. Eum perspiciatis magni.", - "business_objective": null, - "compliance_threshold": 38.0, - "total_system_count": 1, - "type": "policy", - "os_major_version": 7, - "profile_title": "Modi soluta non amet.", - "ref_id": "xccdf_org.ssgproject.content_profile_a5e94c9fe48a36e63086e3ac3cd306e2" - }, - { - "id": "3608c6af-9614-4da2-9fae-c9542af8a9d4", - "title": "Neque et doloremque rerum.", - "description": "Necessitatibus ullam consequatur. Itaque voluptas commodi. Minima non sit.", - "business_objective": null, - "compliance_threshold": 51.0, - "total_system_count": 1, - "type": "policy", - "os_major_version": 7, - "profile_title": "Modi velit quam nisi.", - "ref_id": "xccdf_org.ssgproject.content_profile_5277b1cca06358dcd7b4d90f5aa52fa8" - }, - { - "id": "3b14ce71-fbe2-4e2e-a5ff-36b7b1f53bd6", - "title": "Magni in sed repellat.", - "description": "Sed quibusdam itaque. Neque voluptatum tenetur. Qui quia hic.", - "business_objective": null, - "compliance_threshold": 9.0, - "total_system_count": 1, - "type": "policy", - "os_major_version": 7, - "profile_title": "Accusantium maxime voluptatem facere.", - "ref_id": "xccdf_org.ssgproject.content_profile_ba9273cad74e57a3a85790073acf2618" - }, - { - "id": "6796b6d7-9979-4499-b9fd-50cc918e6e9a", - "title": "Quis neque et ipsum.", - "description": "Repudiandae quis optio. Iusto sequi qui. Qui autem quia.", - "business_objective": null, - "compliance_threshold": 1.0, - "total_system_count": 1, - "type": "policy", - "os_major_version": 7, - "profile_title": "Qui deserunt totam minima.", - "ref_id": "xccdf_org.ssgproject.content_profile_6e0b39b8b841fded9c71fcf6855e5805" - }, - { - "id": "6bd5adfc-1e9c-453a-9cbe-97da8a1b1e60", - "title": "Est eos in voluptatem.", - "description": "At omnis quos. Totam sint assumenda. Molestias voluptas atque.", - "business_objective": null, - "compliance_threshold": 77.0, - "total_system_count": 1, - "type": "policy", - "os_major_version": 7, - "profile_title": "Eaque nemo ipsam alias.", - "ref_id": "xccdf_org.ssgproject.content_profile_07ffe0bd037c715785e701bbafc6bc64" - }, - { - "id": "7b54be7c-2b4f-4d04-818a-c1cf5c5f46af", - "title": "Id molestiae adipisci odio.", - "description": "Eos soluta placeat. Est qui labore. Aliquid voluptas in.", - "business_objective": null, - "compliance_threshold": 45.0, - "total_system_count": 1, - "type": "policy", - "os_major_version": 7, - "profile_title": "Facilis deleniti quia eos.", - "ref_id": "xccdf_org.ssgproject.content_profile_d103aba340ab8c38e86f0c4f3416c369" - }, - { - "id": "7e79379a-3711-4a1f-8f91-a46d19d06e38", - "title": "Ut odio reiciendis quas.", - "description": "Et nihil inventore. Aut est eos. Officiis ut et.", - "business_objective": null, - "compliance_threshold": 33.0, - "total_system_count": 1, - "type": "policy", - "os_major_version": 7, - "profile_title": "Ut nostrum asperiores non.", - "ref_id": "xccdf_org.ssgproject.content_profile_9e8712f4a2776beac6d93c3698de5aab" - } - ], - "meta": { - "total": 25, - "limit": 10, - "offset": 0 - }, - "links": { - "first": "/api/compliance/v2/systems/5645de5c-7deb-4066-80f9-aad63355f095/policies?limit=10&offset=0", - "last": "/api/compliance/v2/systems/5645de5c-7deb-4066-80f9-aad63355f095/policies?limit=10&offset=20", - "next": "/api/compliance/v2/systems/5645de5c-7deb-4066-80f9-aad63355f095/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": "07d65b35-1668-4280-96ed-0cd3a0407d1c", - "ref_id": "xccdf_org.ssgproject.content_profile_5db606d0895cb34012faeea217ff61ab", - "title": "Qui ut asperiores voluptatem.", - "description": "Voluptatibus sequi aliquam. Consectetur nisi vero. Dolores ex fuga.", - "value_overrides": {}, - "type": "profile" - }, - { - "id": "1627d0d1-99ac-4970-ba32-e1124403da90", - "ref_id": "xccdf_org.ssgproject.content_profile_14af14565ba6a59a86ec094d2a057b84", - "title": "Dignissimos sint suscipit corrupti.", - "description": "Qui iusto id. Eos culpa eveniet. Magni earum commodi.", - "value_overrides": {}, - "type": "profile" - }, - { - "id": "1dca85a9-fa5c-482b-8d7c-f428d056b7d1", - "ref_id": "xccdf_org.ssgproject.content_profile_6f6b0770b8b95b3205d02625a94cec8f", - "title": "Omnis eos quos consequatur.", - "description": "Nobis sed alias. Qui est sequi. Saepe dignissimos autem.", - "value_overrides": {}, - "type": "profile" - }, - { - "id": "2899c76a-c868-4e5d-8d92-355b3a1869d1", - "ref_id": "xccdf_org.ssgproject.content_profile_8567923df1cafafda4b3555bbd4849e1", - "title": "Dolore rem ut eaque.", - "description": "Laboriosam voluptatem dolores. Dignissimos ullam enim. Velit modi quis.", - "value_overrides": {}, - "type": "profile" - }, - { - "id": "29f6ef31-14c7-4556-b955-005c0eb440e9", - "ref_id": "xccdf_org.ssgproject.content_profile_c1dbf01254c2144f9ff6fd9b2835c7ad", - "title": "Voluptas autem ex temporibus.", - "description": "Fuga provident et. Ullam aut similique. Est illum inventore.", - "value_overrides": {}, - "type": "profile" - }, - { - "id": "43e72c4f-f368-428b-a780-fef166048d7b", - "ref_id": "xccdf_org.ssgproject.content_profile_04450c5f388181248ce6d0ae9453cf45", - "title": "Laudantium qui repellendus maiores.", - "description": "Velit ipsa fugiat. Dicta fuga optio. Consequatur commodi rerum.", - "value_overrides": {}, - "type": "profile" - }, - { - "id": "4efd738f-d97c-4573-98d7-0acba76b95ee", - "ref_id": "xccdf_org.ssgproject.content_profile_e6fa7d7c275a0151e24f74acf61ccfeb", - "title": "Blanditiis qui a quisquam.", - "description": "Vero voluptas iusto. Earum sit eum. Maxime qui ratione.", - "value_overrides": {}, - "type": "profile" - }, - { - "id": "6bfe4997-c5d1-4ba3-85e4-9b9c4377c898", - "ref_id": "xccdf_org.ssgproject.content_profile_ddb18836b5f5d83fa6d2029eeca05e6f", - "title": "Quo illum cumque exercitationem.", - "description": "Voluptas quis dolorum. Asperiores maxime et. Vero voluptatum ut.", - "value_overrides": {}, - "type": "profile" - }, - { - "id": "6d04cd02-31de-43f4-ab0c-9cc0e33d5b9c", - "ref_id": "xccdf_org.ssgproject.content_profile_0e559b1264a53b03a2c256a76cd5a3ca", - "title": "Aut culpa est ratione.", - "description": "Ipsam enim rerum. Et voluptatem aut. Exercitationem nihil non.", - "value_overrides": {}, - "type": "profile" - }, - { - "id": "87d0969e-747d-4fdd-a4ea-721468c4dd3e", - "ref_id": "xccdf_org.ssgproject.content_profile_dea3b30708f4a28bb65f397dd63f1130", - "title": "Voluptatem provident assumenda voluptatem.", - "description": "Consequatur amet voluptas. Omnis tenetur voluptas. Assumenda minus totam.", - "value_overrides": {}, - "type": "profile" - } - ], - "meta": { - "total": 25, - "limit": 10, - "offset": 0 - }, - "links": { - "first": "/api/compliance/v2/security_guides/8f2e3379-a58e-42f5-9a90-dbe9f6301bad/profiles?limit=10&offset=0", - "last": "/api/compliance/v2/security_guides/8f2e3379-a58e-42f5-9a90-dbe9f6301bad/profiles?limit=10&offset=20", - "next": "/api/compliance/v2/security_guides/8f2e3379-a58e-42f5-9a90-dbe9f6301bad/profiles?limit=10&offset=10" - } - }, - "summary": "", - "description": "" - }, - "List of Profiles sorted by \"title:asc\"": { - "value": { - "data": [ - { - "id": "cd0adc92-8fa1-4724-a466-80c3820c1279", - "ref_id": "xccdf_org.ssgproject.content_profile_4912a087debf2f56674a15ad9b1c9fe8", - "title": "Aliquid quisquam ut in.", - "description": "Ut ad minima. Enim voluptates optio. Aperiam mollitia id.", - "value_overrides": {}, - "type": "profile" - }, - { - "id": "5995d4f1-052b-45f7-9ed5-03acc3c94a89", - "ref_id": "xccdf_org.ssgproject.content_profile_ed245fb9ebae710320af30f3f263f94d", - "title": "Animi omnis molestiae dolores.", - "description": "Enim nemo dolores. Aliquam quaerat dignissimos. Quos ea fugiat.", - "value_overrides": {}, - "type": "profile" - }, - { - "id": "96e7abba-7fd8-43b2-bb3b-e9445e07b28b", - "ref_id": "xccdf_org.ssgproject.content_profile_8263349ba6ae24f2a6de63c75d36baf5", - "title": "Aut ut aspernatur nemo.", - "description": "Provident error aut. Quam voluptatem neque. Neque ducimus dolor.", - "value_overrides": {}, - "type": "profile" - }, - { - "id": "771216aa-7aa1-4b54-8689-8052084d226f", - "ref_id": "xccdf_org.ssgproject.content_profile_563eacbcbd97cd364b50e9a176f2bcc1", - "title": "Blanditiis ipsam molestiae quidem.", - "description": "Enim nemo eum. Atque illum vitae. Sit assumenda minus.", - "value_overrides": {}, - "type": "profile" - }, - { - "id": "65238cdc-1b71-4ce7-9617-8b44659e55c1", - "ref_id": "xccdf_org.ssgproject.content_profile_149299735be04c9ecc45d3993fa909a8", - "title": "Dignissimos quia quidem ipsam.", - "description": "Perferendis repellat nihil. Laudantium suscipit alias. Deserunt ut ut.", - "value_overrides": {}, - "type": "profile" - }, - { - "id": "3a69f01d-d25d-4216-89f5-222bf377bcb7", - "ref_id": "xccdf_org.ssgproject.content_profile_d6d83c7137258c91a7bf9dbdf8f00e6f", - "title": "Distinctio sit sunt quaerat.", - "description": "Magnam velit et. Debitis exercitationem soluta. Itaque debitis ducimus.", - "value_overrides": {}, - "type": "profile" - }, - { - "id": "bb382e31-e998-45a8-8be2-68a2fc233f9b", - "ref_id": "xccdf_org.ssgproject.content_profile_692542bc3ba54fc37ebc0c288e68e8ec", - "title": "Dolores assumenda animi omnis.", - "description": "Molestias culpa in. Porro et quia. Quam sequi occaecati.", - "value_overrides": {}, - "type": "profile" - }, - { - "id": "389d4d53-7842-480c-8216-dd560cd170d3", - "ref_id": "xccdf_org.ssgproject.content_profile_35584f020de1f8070daea8b59c09c4ee", - "title": "Ea assumenda et omnis.", - "description": "Ex eum debitis. Maiores ut tempore. Esse officiis suscipit.", - "value_overrides": {}, - "type": "profile" - }, - { - "id": "b7a8dd90-3c5f-4868-879e-f725416e9637", - "ref_id": "xccdf_org.ssgproject.content_profile_7257f624790936bb870438ab21adaf20", - "title": "Earum ut non et.", - "description": "Deleniti aliquid at. Eligendi ipsum necessitatibus. Delectus et ad.", - "value_overrides": {}, - "type": "profile" - }, - { - "id": "7b48429e-3c1c-4079-9022-98ce8bfacdfb", - "ref_id": "xccdf_org.ssgproject.content_profile_a3a6fd43444e8bc0aaaa3491c6baf67e", - "title": "Et qui qui natus.", - "description": "Consequatur earum consequuntur. A eos velit. Adipisci consequatur nostrum.", - "value_overrides": {}, - "type": "profile" - } - ], - "meta": { - "total": 25, - "limit": 10, - "offset": 0, - "sort_by": "title" - }, - "links": { - "first": "/api/compliance/v2/security_guides/d376b00a-7bdf-4a47-adc7-005633d94d2e/profiles?limit=10&offset=0&sort_by=title", - "last": "/api/compliance/v2/security_guides/d376b00a-7bdf-4a47-adc7-005633d94d2e/profiles?limit=10&offset=20&sort_by=title", - "next": "/api/compliance/v2/security_guides/d376b00a-7bdf-4a47-adc7-005633d94d2e/profiles?limit=10&offset=10&sort_by=title" - } - }, - "summary": "", - "description": "" - }, - "List of Profiles filtered by '(title=Voluptates corporis soluta quo.)'": { - "value": { - "data": [ - { - "id": "070c60e6-847c-4788-935a-769e4701f548", - "ref_id": "xccdf_org.ssgproject.content_profile_e7f84c1951a5107f5383618c4c314d2f", - "title": "Voluptates corporis soluta quo.", - "description": "Aliquid minima voluptatem. Eum est fuga. Maxime et aliquid.", - "value_overrides": {}, - "type": "profile" - } - ], - "meta": { - "total": 1, - "filter": "(title=\"Voluptates corporis soluta quo.\")", - "limit": 10, - "offset": 0 - }, - "links": { - "first": "/api/compliance/v2/security_guides/d74924e0-2048-4f99-aed7-712db8ed7fb7/profiles?filter=%28title%3D%22Voluptates+corporis+soluta+quo.%22%29&limit=10&offset=0", - "last": "/api/compliance/v2/security_guides/d74924e0-2048-4f99-aed7-712db8ed7fb7/profiles?filter=%28title%3D%22Voluptates+corporis+soluta+quo.%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": "122538af-96d9-4e29-93eb-6a0f987535f0", - "ref_id": "xccdf_org.ssgproject.content_profile_2b15d0dd2c3657415c5bc35bd906bba5", - "title": "Aut autem qui molestiae.", - "description": "Repudiandae expedita aut. Maiores autem ratione. Vitae ipsam 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 d9974252-35ae-4a19-b5b1-02cfa930950f" - ] - }, - "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": "4f2742a4-21c8-4802-9070-677267d089a0", - "type": "rule_group", - "children": [ - { - "id": "362fdc78-bf18-4cd0-8e17-e0d3ed9dadf9", - "type": "rule" - } - ] - }, - { - "id": "722868cc-b215-43f3-825e-b1afea4fb686", - "type": "rule_group", - "children": [ - { - "id": "3accb4b8-0802-498b-8830-df6819ddd753", - "type": "rule" - } - ] - }, - { - "id": "0c85372a-26dc-4839-b165-b34f6b63afce", - "type": "rule_group", - "children": [ - { - "id": "e164946c-cd14-4c0d-9398-3bc04b87c986", - "type": "rule" - } - ] - }, - { - "id": "110074dc-f557-4495-84f2-0f823d21dd5f", - "type": "rule_group", - "children": [ - { - "id": "28af52d9-eb1c-499e-ade2-0d45e305e40a", - "type": "rule" - } - ] - }, - { - "id": "9e94d5ee-c2c1-421f-a6bb-3023cbda0d28", - "type": "rule_group", - "children": [ - { - "id": "f5acbcec-4f3a-40ad-a9f2-5baf2f7244e8", - "type": "rule" - } - ] - }, - { - "id": "1df84d9a-c5b5-4d51-93d1-2deb17f82a98", - "type": "rule_group", - "children": [ - { - "id": "d39d2614-4153-4416-9e86-24267751f2e4", - "type": "rule" - } - ] - }, - { - "id": "bc89c44a-be59-4e65-813b-d5c5e6ed6de0", - "type": "rule_group", - "children": [ - { - "id": "982405f3-b324-44da-962d-4d50b7b19b7d", - "type": "rule" - } - ] - }, - { - "id": "5f9d49fd-bf78-4680-925a-d8813706890d", - "type": "rule_group", - "children": [ - { - "id": "7a5ef937-33c5-4ed9-a00e-916c74eb0124", - "type": "rule" - } - ] - }, - { - "id": "6b10f416-b378-43af-ab0d-e3fa7ee3b210", - "type": "rule_group", - "children": [ - { - "id": "18296152-da13-4fa1-9e6c-46bb0ee651db", - "type": "rule" - } - ] - }, - { - "id": "726d7730-4f23-4c17-aad9-334fcd2d4222", - "type": "rule_group", - "children": [ - { - "id": "be498731-0ebf-4ca6-930d-48937a2cde37", - "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 071e763e-f8c2-4e72-895b-464caeee3117" - ] - }, - "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": "5d9b991a-25c6-44ba-b2f5-ab38beb5a71d", - "title": "Voluptas ullam autem enim.", - "description": "Rem esse facere. Placeat voluptatem dignissimos. Excepturi maiores inventore.", - "business_objective": "bus", - "compliance_threshold": 90.0, - "type": "report", - "os_major_version": 8, - "profile_title": "Numquam eos ut eligendi.", - "ref_id": "xccdf_org.ssgproject.content_profile_bf9ea1d9c302d2c0c5046f3614d0cae9", - "all_systems_exposed": true, - "percent_compliant": 25, - "assigned_system_count": 4, - "compliant_system_count": 1, - "unsupported_system_count": 2, - "reported_system_count": 4 - }, - { - "id": "5df7cfb6-5944-4de9-927a-70a8ddb3ca8d", - "title": "Alias quisquam quia ea.", - "description": "Quasi similique numquam. Soluta nulla libero. Aut animi eligendi.", - "business_objective": "monitor", - "compliance_threshold": 90.0, - "type": "report", - "os_major_version": 8, - "profile_title": "Debitis quae ut necessitatibus.", - "ref_id": "xccdf_org.ssgproject.content_profile_a2e3078148410d4a27a79a3da2a0bdd8", - "all_systems_exposed": true, - "percent_compliant": 25, - "assigned_system_count": 4, - "compliant_system_count": 1, - "unsupported_system_count": 2, - "reported_system_count": 4 - }, - { - "id": "8b14d568-26e7-46db-a507-79b82f0f5e5f", - "title": "Sint sed tempora vitae.", - "description": "Odit laborum eaque. Sunt et veritatis. Mollitia hic cum.", - "business_objective": "panel", - "compliance_threshold": 90.0, - "type": "report", - "os_major_version": 8, - "profile_title": "Quis in error consequatur.", - "ref_id": "xccdf_org.ssgproject.content_profile_0f6c6af82b22dc74db630c262ff56071", - "all_systems_exposed": true, - "percent_compliant": 25, - "assigned_system_count": 4, - "compliant_system_count": 1, - "unsupported_system_count": 2, - "reported_system_count": 4 - }, - { - "id": "8e45f5f4-68d6-42e1-8078-6ee34e66be30", - "title": "Nam deleniti aspernatur quis.", - "description": "Corporis omnis dolorum. Sed quo maxime. Nobis qui voluptates.", - "business_objective": "port", - "compliance_threshold": 90.0, - "type": "report", - "os_major_version": 8, - "profile_title": "Nemo quia magni ad.", - "ref_id": "xccdf_org.ssgproject.content_profile_22643e3f11aa1d14444fff6e470a9b19", - "all_systems_exposed": true, - "percent_compliant": 25, - "assigned_system_count": 4, - "compliant_system_count": 1, - "unsupported_system_count": 2, - "reported_system_count": 4 - }, - { - "id": "f0cf8e2f-0e0e-45c8-b622-d5eab9dd669e", - "title": "Modi libero harum illum.", - "description": "Nemo voluptatum vel. Explicabo in id. Et vero aut.", - "business_objective": "card", - "compliance_threshold": 90.0, - "type": "report", - "os_major_version": 8, - "profile_title": "Debitis est soluta consequatur.", - "ref_id": "xccdf_org.ssgproject.content_profile_062e80211d5ffdf2693f77bdac1ecc55", - "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": "4feb0f0e-f093-4d5b-8927-a7ea4e0f3aa0", - "title": "Nemo quod repellendus explicabo.", - "description": "Et accusantium et. Est repellendus ratione. In unde aut.", - "business_objective": "transmitter", - "compliance_threshold": 90.0, - "type": "report", - "os_major_version": 8, - "profile_title": "Error tenetur excepturi cupiditate.", - "ref_id": "xccdf_org.ssgproject.content_profile_25871e4537ce2c8b475c69118f80e2e0", - "all_systems_exposed": true, - "percent_compliant": 25, - "assigned_system_count": 4, - "compliant_system_count": 1, - "unsupported_system_count": 2, - "reported_system_count": 4 - }, - { - "id": "9f124d21-1efc-443c-a860-f7cf4890a1fc", - "title": "Quo sequi distinctio voluptatem.", - "description": "Reiciendis omnis ducimus. Numquam eveniet occaecati. Voluptas quisquam velit.", - "business_objective": "pixel", - "compliance_threshold": 90.0, - "type": "report", - "os_major_version": 8, - "profile_title": "Dolor amet recusandae adipisci.", - "ref_id": "xccdf_org.ssgproject.content_profile_2cdaa157fe0f0b328c615aa50378b8dd", - "all_systems_exposed": true, - "percent_compliant": 25, - "assigned_system_count": 4, - "compliant_system_count": 1, - "unsupported_system_count": 2, - "reported_system_count": 4 - }, - { - "id": "b41212fa-53d9-4b69-b63d-143114656b6e", - "title": "Voluptate alias quam porro.", - "description": "Doloremque et quia. Facere et occaecati. Sunt tenetur esse.", - "business_objective": "hard drive", - "compliance_threshold": 90.0, - "type": "report", - "os_major_version": 8, - "profile_title": "Inventore nihil facilis debitis.", - "ref_id": "xccdf_org.ssgproject.content_profile_ea45d3acd06e409de4b827f25a503f1b", - "all_systems_exposed": true, - "percent_compliant": 25, - "assigned_system_count": 4, - "compliant_system_count": 1, - "unsupported_system_count": 2, - "reported_system_count": 4 - }, - { - "id": "c7f552e9-fb6c-40eb-9ff3-cc1ede70dd34", - "title": "Aut facilis repellat quia.", - "description": "Est animi minima. Consequatur blanditiis aut. Beatae et vero.", - "business_objective": "capacitor", - "compliance_threshold": 90.0, - "type": "report", - "os_major_version": 8, - "profile_title": "Corporis et placeat quasi.", - "ref_id": "xccdf_org.ssgproject.content_profile_48a70c88caee6a1c81564e23f857ac92", - "all_systems_exposed": true, - "percent_compliant": 25, - "assigned_system_count": 4, - "compliant_system_count": 1, - "unsupported_system_count": 2, - "reported_system_count": 4 - }, - { - "id": "fd51e8a6-8ed7-4db1-b46f-f36010df3eb0", - "title": "Occaecati qui officiis saepe.", - "description": "Cumque sint reprehenderit. Earum et ex. Rem non velit.", - "business_objective": "protocol", - "compliance_threshold": 90.0, - "type": "report", - "os_major_version": 8, - "profile_title": "Exercitationem illo est tempore.", - "ref_id": "xccdf_org.ssgproject.content_profile_9454924d5b4a02098893d2f8506d269d", - "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": "52da2f6f-2f81-4a50-9f9a-0de4ce58127a", - "title": "Error excepturi est voluptatibus.", - "description": "Incidunt maiores mollitia. Non velit totam. Tenetur sint eos.", - "business_objective": "pixel", - "compliance_threshold": 90.0, - "type": "report", - "os_major_version": 9, - "profile_title": "Molestiae nesciunt dolores fugit.", - "ref_id": "xccdf_org.ssgproject.content_profile_c98098558c117df3e171921bdd6887dc", - "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 389fab5c-813d-4f95-8513-f86f6823c45d" - ] - }, - "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": "d9a507c2-09b8-4fc0-9fda-7ea6156cc2a4", - "title": "Repellat est reiciendis corporis.", - "description": "Omnis sint qui. Aliquam repellat est. Occaecati est eaque.", - "business_objective": "array", - "compliance_threshold": 90.0, - "type": "report", - "os_major_version": 9, - "profile_title": "Ut similique facere cupiditate.", - "ref_id": "xccdf_org.ssgproject.content_profile_cdb9efa3105777c0eda11f4521861606", - "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 2383bbd2-694f-4d7e-a57e-afff8f094fd0" - ] - }, - "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": "1045540e-6c46-4b70-8ef2-0e43457eb7c8", - "title": "Ad molestiae nihil saepe.", - "description": "Rerum veniam voluptatem. Corporis ipsum enim. Minima magni magnam.", - "business_objective": "card", - "compliance_threshold": 90.0, - "type": "report", - "os_major_version": 8, - "profile_title": "Iste est sint quam.", - "ref_id": "xccdf_org.ssgproject.content_profile_4201c73cd85f16b064332e9cb5e51eac", - "all_systems_exposed": false, - "percent_compliant": 0, - "compliant_system_count": 0, - "unsupported_system_count": 0, - "reported_system_count": 0 - }, - { - "id": "2f165d0d-356d-4518-95fd-a8cd03339593", - "title": "Laudantium ut quasi officiis.", - "description": "Cupiditate et et. Atque consequatur doloribus. Delectus sit dolore.", - "business_objective": "feed", - "compliance_threshold": 90.0, - "type": "report", - "os_major_version": 8, - "profile_title": "Enim molestiae suscipit expedita.", - "ref_id": "xccdf_org.ssgproject.content_profile_d88a67bdccffbcebc1e6e21e46a4f226", - "all_systems_exposed": false, - "percent_compliant": 0, - "compliant_system_count": 0, - "unsupported_system_count": 0, - "reported_system_count": 0 - }, - { - "id": "49acfb05-3c0b-4b9b-a6ed-1f28bce50b9d", - "title": "Eos temporibus et consectetur.", - "description": "Vero natus qui. Porro sunt illum. Voluptas modi quia.", - "business_objective": "hard drive", - "compliance_threshold": 90.0, - "type": "report", - "os_major_version": 8, - "profile_title": "Aut ut molestias et.", - "ref_id": "xccdf_org.ssgproject.content_profile_6d096c2019e6275822ef2816ba4d3c22", - "all_systems_exposed": false, - "percent_compliant": 0, - "compliant_system_count": 0, - "unsupported_system_count": 0, - "reported_system_count": 0 - }, - { - "id": "b87ca013-80ca-46df-bb60-a3a69f540a33", - "title": "Aut dolor consectetur sunt.", - "description": "Dolores est voluptatum. Minus ipsa velit. Cumque rerum voluptate.", - "business_objective": "driver", - "compliance_threshold": 90.0, - "type": "report", - "os_major_version": 8, - "profile_title": "Officiis enim praesentium sed.", - "ref_id": "xccdf_org.ssgproject.content_profile_faf092eaf73f32312dcc58e8d7a6d7f1", - "all_systems_exposed": false, - "percent_compliant": 0, - "compliant_system_count": 0, - "unsupported_system_count": 0, - "reported_system_count": 0 - }, - { - "id": "d2debf24-a6eb-429a-8d96-a02dd6551520", - "title": "Sit nobis earum aut.", - "description": "Eligendi mollitia illum. Maiores aut debitis. Facere tempore ut.", - "business_objective": "program", - "compliance_threshold": 90.0, - "type": "report", - "os_major_version": 8, - "profile_title": "Omnis nulla quod tenetur.", - "ref_id": "xccdf_org.ssgproject.content_profile_e2b98652448b001f4e91443ca5fcc4fa", - "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/0b67edf2-d8f5-496f-9fd2-12eb2e6be8a9/reports?limit=10&offset=0", - "last": "/api/compliance/v2/systems/0b67edf2-d8f5-496f-9fd2-12eb2e6be8a9/reports?limit=10&offset=0" - } - }, - "summary": "", - "description": "" - }, - "List of Reports sorted by \"title:asc\"": { - "value": { - "data": [ - { - "id": "b1c5cd71-0a27-4f8a-bc4a-4ffde66fab4d", - "title": "Aspernatur nisi libero adipisci.", - "description": "Optio qui consequuntur. Debitis ex fugiat. Tempore molestiae et.", - "business_objective": "transmitter", - "compliance_threshold": 90.0, - "type": "report", - "os_major_version": 8, - "profile_title": "Hic omnis in quas.", - "ref_id": "xccdf_org.ssgproject.content_profile_a9bdd251a8ebc6cbe0dcb85d5f31948e", - "all_systems_exposed": false, - "percent_compliant": 0, - "compliant_system_count": 0, - "unsupported_system_count": 0, - "reported_system_count": 0 - }, - { - "id": "9940b4a6-533a-44c3-b93b-619205203eca", - "title": "Culpa et facere minus.", - "description": "Rem sint deleniti. Et itaque tenetur. Non rem ut.", - "business_objective": "pixel", - "compliance_threshold": 90.0, - "type": "report", - "os_major_version": 8, - "profile_title": "Blanditiis soluta qui quam.", - "ref_id": "xccdf_org.ssgproject.content_profile_9bd4519e9ee7957886ad76196a2a6729", - "all_systems_exposed": false, - "percent_compliant": 0, - "compliant_system_count": 0, - "unsupported_system_count": 0, - "reported_system_count": 0 - }, - { - "id": "ea29e699-7192-42a4-968b-f7b9c21ac5a8", - "title": "Dolorem iste nulla officia.", - "description": "Quibusdam nemo dolore. Et delectus quae. Excepturi odit blanditiis.", - "business_objective": "firewall", - "compliance_threshold": 90.0, - "type": "report", - "os_major_version": 8, - "profile_title": "Dolores voluptas et inventore.", - "ref_id": "xccdf_org.ssgproject.content_profile_7d8ffdd1ee0468f11fa8b0a6b9551b66", - "all_systems_exposed": false, - "percent_compliant": 0, - "compliant_system_count": 0, - "unsupported_system_count": 0, - "reported_system_count": 0 - }, - { - "id": "1474f93d-c000-4ac6-afbf-b1e36618eb41", - "title": "Explicabo id unde omnis.", - "description": "Aut molestiae incidunt. Aut qui numquam. Nesciunt ipsa dolorem.", - "business_objective": "driver", - "compliance_threshold": 90.0, - "type": "report", - "os_major_version": 8, - "profile_title": "Odit quas doloribus omnis.", - "ref_id": "xccdf_org.ssgproject.content_profile_cbfbb4677100e80f8afde92e022f8466", - "all_systems_exposed": false, - "percent_compliant": 0, - "compliant_system_count": 0, - "unsupported_system_count": 0, - "reported_system_count": 0 - }, - { - "id": "aac1d7cb-67f0-4e2a-871a-7f6fd24d71a7", - "title": "Libero et consequatur et.", - "description": "Dolorem ad voluptatem. Voluptatem itaque quo. Sit molestiae vitae.", - "business_objective": "protocol", - "compliance_threshold": 90.0, - "type": "report", - "os_major_version": 8, - "profile_title": "Molestiae consequatur id aut.", - "ref_id": "xccdf_org.ssgproject.content_profile_2edc6352f875fb708a83efea52403f67", - "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/c11e5a81-e792-45dc-9d45-eb0796278fb2/reports?limit=10&offset=0&sort_by=title", - "last": "/api/compliance/v2/systems/c11e5a81-e792-45dc-9d45-eb0796278fb2/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": "Rule Groups", - "responses": { - "200": { - "description": "Lists Rule Groups", - "content": { - "application/vnd.api+json": { - "examples": { - "List of Rule Groups": { - "value": { - "data": [ - { - "id": "078ef155-6843-4256-a4e7-c6dd4aae3059", - "ref_id": "xccdf_org.ssgproject.content_rule_group_83a98e4e596653d4536e33e41280a425", - "title": "Dicta veniam dolor itaque.", - "rationale": "Quas autem nihil. At rerum excepturi. Velit atque et.", - "description": "Voluptas veniam tenetur. Ut et sapiente. Et aliquid et.", - "precedence": null, - "type": "rule_group" - }, - { - "id": "208cc49a-b210-4bee-b85a-dffc79ca794e", - "ref_id": "xccdf_org.ssgproject.content_rule_group_acdf81816a4240ffa409a7830e4d5f97", - "title": "Exercitationem rerum quisquam quis.", - "rationale": "Et ea distinctio. Quo est dolorum. Voluptas sit assumenda.", - "description": "Dolores omnis consequatur. Iste provident ratione. Et dicta aut.", - "precedence": null, - "type": "rule_group" - }, - { - "id": "2e52897b-8a7e-4c86-8722-e09190c4b8d8", - "ref_id": "xccdf_org.ssgproject.content_rule_group_3c41faac6966ab204e3c5e42b234f6bd", - "title": "Sed sequi dignissimos eum.", - "rationale": "Sed veritatis error. Aut error optio. Quos nobis quisquam.", - "description": "Error saepe nesciunt. Est esse et. Aut exercitationem ratione.", - "precedence": null, - "type": "rule_group" - }, - { - "id": "425fad25-9a69-4cd9-8e39-72ee0ff252dd", - "ref_id": "xccdf_org.ssgproject.content_rule_group_2c92b609a358ff15e4b1edfcfadbe22d", - "title": "Qui est dolor cum.", - "rationale": "Nihil explicabo laudantium. Mollitia repellat sunt. A aut libero.", - "description": "Quia ullam assumenda. Atque et eligendi. Eos reiciendis esse.", - "precedence": null, - "type": "rule_group" - }, - { - "id": "462928f6-28fe-4050-a75a-13044923b790", - "ref_id": "xccdf_org.ssgproject.content_rule_group_3f0faeb00c96a234267237da265dab98", - "title": "Illo nisi reprehenderit molestias.", - "rationale": "Iste eligendi excepturi. Iusto distinctio aspernatur. Ut et consequatur.", - "description": "Cupiditate et inventore. Nostrum sunt corrupti. Dolor adipisci dolorem.", - "precedence": null, - "type": "rule_group" - }, - { - "id": "4c8c6028-ab9c-401d-9800-754d7e26cea3", - "ref_id": "xccdf_org.ssgproject.content_rule_group_cd1e0490da35d0107af41ee37ab1d1ed", - "title": "Nihil dolorum qui explicabo.", - "rationale": "Soluta totam eos. Accusamus dignissimos occaecati. Unde odit est.", - "description": "Ipsa modi occaecati. Dignissimos mollitia commodi. Veritatis provident iure.", - "precedence": null, - "type": "rule_group" - }, - { - "id": "598803d3-2a01-4e28-b4b8-277960790213", - "ref_id": "xccdf_org.ssgproject.content_rule_group_2033f094c9472d9fcebdaf6ff516a776", - "title": "Repudiandae voluptas ex at.", - "rationale": "Explicabo asperiores velit. Consequatur rerum repellat. Animi nihil ipsam.", - "description": "Mollitia omnis laudantium. Aspernatur amet et. Fugiat dolorem molestias.", - "precedence": null, - "type": "rule_group" - }, - { - "id": "5fad53f8-b0c5-441a-8b06-bd2eb2c85102", - "ref_id": "xccdf_org.ssgproject.content_rule_group_299e76bb5596c7290e9f7dec8e7ccc0e", - "title": "Tenetur accusamus error autem.", - "rationale": "Sed mollitia suscipit. Praesentium architecto occaecati. Eius necessitatibus minus.", - "description": "Est voluptatibus eaque. Quis enim omnis. Qui enim ut.", - "precedence": null, - "type": "rule_group" - }, - { - "id": "84cc51e2-ae8c-4a9b-bf54-759f0a4cdbdd", - "ref_id": "xccdf_org.ssgproject.content_rule_group_66da208d7411088dad9670ed0b5de186", - "title": "Qui hic pariatur perspiciatis.", - "rationale": "Unde consectetur rerum. Sit nam vel. Laudantium unde quam.", - "description": "Sunt neque occaecati. Ut quod illum. Qui necessitatibus aut.", - "precedence": null, - "type": "rule_group" - }, - { - "id": "8a8ec3ba-7f54-4868-bf92-db90ffc01d4e", - "ref_id": "xccdf_org.ssgproject.content_rule_group_887b8a41a1171a24a60b6d38ebbfa1cc", - "title": "Magni doloremque beatae nisi.", - "rationale": "Corrupti aspernatur non. Necessitatibus omnis dolor. In voluptates velit.", - "description": "Tempore velit incidunt. Dolore quisquam aut. Aperiam minus consectetur.", - "precedence": null, - "type": "rule_group" - } - ], - "meta": { - "total": 25, - "limit": 10, - "offset": 0 - }, - "links": { - "first": "/api/compliance/v2/security_guides/74aef497-7112-43b4-8cf1-5aba9b69292f/rule_groups?limit=10&offset=0", - "last": "/api/compliance/v2/security_guides/74aef497-7112-43b4-8cf1-5aba9b69292f/rule_groups?limit=10&offset=20", - "next": "/api/compliance/v2/security_guides/74aef497-7112-43b4-8cf1-5aba9b69292f/rule_groups?limit=10&offset=10" - } - }, - "summary": "", - "description": "" - }, - "List of Rule Groups sorted by \"precedence:asc\"": { - "value": { - "data": [ - { - "id": "0110d29a-069e-432e-b0bf-b229ae4e25b1", - "ref_id": "xccdf_org.ssgproject.content_rule_group_8d04f32c96a0396de4683c1a0c2ef3e6", - "title": "Neque in sunt quia.", - "rationale": "Rem nostrum reiciendis. Cum rem qui. Esse autem occaecati.", - "description": "Quis cum necessitatibus. Neque eos est. Voluptas sequi aspernatur.", - "precedence": null, - "type": "rule_group" - }, - { - "id": "042329d6-ed03-4f24-b7ee-561e9b9d6826", - "ref_id": "xccdf_org.ssgproject.content_rule_group_cf909dceb48ee572edff5acd535eefcf", - "title": "Aliquid tempore id animi.", - "rationale": "Accusantium laborum voluptas. Exercitationem est quasi. Itaque doloribus ullam.", - "description": "Architecto beatae nobis. Enim quis ut. Aut sed aut.", - "precedence": null, - "type": "rule_group" - }, - { - "id": "0c47410b-38f9-45d2-a5bf-0400d70d06d8", - "ref_id": "xccdf_org.ssgproject.content_rule_group_aeae14ac6ba873afe3c5137cc81807e4", - "title": "Qui quas harum earum.", - "rationale": "Vitae eos ratione. Tempore ab ex. Dolore similique reprehenderit.", - "description": "Commodi possimus vel. Accusamus fuga voluptatem. Magnam vel eveniet.", - "precedence": null, - "type": "rule_group" - }, - { - "id": "11eda7af-2c97-45b1-9f04-4a381058e264", - "ref_id": "xccdf_org.ssgproject.content_rule_group_2b86ba7d0a9e9c3a6181ca98cee2090b", - "title": "Fuga dolores cupiditate quo.", - "rationale": "Dolores nihil ea. Officiis neque voluptatem. Similique modi eum.", - "description": "Molestiae sed nesciunt. Unde et temporibus. Qui consequatur laboriosam.", - "precedence": null, - "type": "rule_group" - }, - { - "id": "14482e58-27ff-47aa-86bf-9c66fb69806e", - "ref_id": "xccdf_org.ssgproject.content_rule_group_de07c90abbe998b92cb4fe3623c8401c", - "title": "Velit porro et incidunt.", - "rationale": "Aperiam sed rerum. Fugiat dolores totam. Et minima autem.", - "description": "Nisi velit provident. Voluptatem ipsam ut. Quasi laudantium vero.", - "precedence": null, - "type": "rule_group" - }, - { - "id": "3ebbd4dc-11c6-4d6f-a9ab-59de76af1274", - "ref_id": "xccdf_org.ssgproject.content_rule_group_901b04677739d5b9ce926fe90a14c15c", - "title": "Veritatis quis architecto unde.", - "rationale": "Dolorem in eligendi. Aut enim deserunt. Magnam sit necessitatibus.", - "description": "Aliquam nemo molestias. Quod consequatur quasi. Corporis tempore dolor.", - "precedence": null, - "type": "rule_group" - }, - { - "id": "40dd7b9c-1aa7-4eca-b708-df4523af3b0a", - "ref_id": "xccdf_org.ssgproject.content_rule_group_b23dac92f5225e17d13787e6e66357e7", - "title": "Nisi ullam omnis totam.", - "rationale": "Itaque beatae voluptatibus. Dolore blanditiis unde. Est rerum at.", - "description": "Non necessitatibus consequatur. Excepturi sequi dolorem. Quia ab est.", - "precedence": null, - "type": "rule_group" - }, - { - "id": "48d6c641-5567-4948-92db-83c8fb6ef6c6", - "ref_id": "xccdf_org.ssgproject.content_rule_group_fd019f22d521dfd9324e13bcdfe0072b", - "title": "Aut deserunt placeat id.", - "rationale": "Et voluptatem sed. Aut qui eos. Et voluptatem rem.", - "description": "Ducimus a officiis. Cum minus quae. In natus ipsam.", - "precedence": null, - "type": "rule_group" - }, - { - "id": "4d43801c-9277-41db-908f-e521f878081b", - "ref_id": "xccdf_org.ssgproject.content_rule_group_0a936931819a923ae4bc8f4c6ba8232c", - "title": "Accusamus esse omnis ea.", - "rationale": "Sequi id sed. Itaque fugiat minima. Et et tenetur.", - "description": "Deleniti tempora consequatur. Eius consequatur natus. At ea omnis.", - "precedence": null, - "type": "rule_group" - }, - { - "id": "5066781f-75b1-40f1-bd6d-f5cc76e29a85", - "ref_id": "xccdf_org.ssgproject.content_rule_group_6887cb166c7385f803e365f26b527e18", - "title": "Aspernatur illum asperiores ut.", - "rationale": "Aut similique omnis. Iure voluptas asperiores. Commodi omnis quidem.", - "description": "Non aliquam architecto. Distinctio maxime ullam. Voluptatibus eum et.", - "precedence": null, - "type": "rule_group" - } - ], - "meta": { - "total": 25, - "limit": 10, - "offset": 0, - "sort_by": "precedence" - }, - "links": { - "first": "/api/compliance/v2/security_guides/45bf4927-78ac-42e5-bdc2-753b5f4f60ab/rule_groups?limit=10&offset=0&sort_by=precedence", - "last": "/api/compliance/v2/security_guides/45bf4927-78ac-42e5-bdc2-753b5f4f60ab/rule_groups?limit=10&offset=20&sort_by=precedence", - "next": "/api/compliance/v2/security_guides/45bf4927-78ac-42e5-bdc2-753b5f4f60ab/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": "a6658d06-d2b4-4b23-b257-f12355f6688c", - "ref_id": "xccdf_org.ssgproject.content_rule_group_71922db513036645467d0b0c1585c111", - "title": "Quia voluptatem repellat consectetur.", - "rationale": "Inventore enim voluptas. Dignissimos et reprehenderit. Nemo voluptas maiores.", - "description": "Aut dolores inventore. Enim tempora autem. Rerum odio nihil.", - "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 847e156a-cfd7-4f6b-b91f-44f515661b8c" - ] - }, - "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": [], - "meta": { - "total": 0, - "limit": 10, - "offset": 0 - }, - "links": { - "first": "/api/compliance/v2/reports/7a5013da-d4ee-49e0-9871-03e6158f3fc9/test_results/696754a8-10ae-4ac1-8e0e-8c4085b7027c/rule_results?limit=10&offset=0", - "last": "/api/compliance/v2/reports/7a5013da-d4ee-49e0-9871-03e6158f3fc9/test_results/696754a8-10ae-4ac1-8e0e-8c4085b7027c/rule_results?limit=10&offset=0" - } - }, - "summary": "", - "description": "" - }, - "List of Rule Results sorted by \"result:asc\"": { - "value": { - "data": [], - "meta": { - "total": 0, - "limit": 10, - "offset": 0, - "sort_by": "result" - }, - "links": { - "first": "/api/compliance/v2/reports/808cc829-83bf-4b37-a4ce-49041f9043d6/test_results/71b6c0f3-0947-45f2-a903-439c2221868b/rule_results?limit=10&offset=0&sort_by=result", - "last": "/api/compliance/v2/reports/808cc829-83bf-4b37-a4ce-49041f9043d6/test_results/71b6c0f3-0947-45f2-a903-439c2221868b/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/3b57140e-5a78-4b1e-bb87-b8ddeab39d73/test_results/814a0992-7185-49a3-abc8-e1de54d38f9e/rule_results?filter=%28title%3Dfoo%29&limit=10&offset=0", - "last": "/api/compliance/v2/reports/3b57140e-5a78-4b1e-bb87-b8ddeab39d73/test_results/814a0992-7185-49a3-abc8-e1de54d38f9e/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": "0ccb1695-2aae-403b-9f4b-1af47246f707", - "ref_id": "xccdf_org.ssgproject.content_rule_bf0e184f0269219e83eadd934ef14324", - "title": "Sit provident sint quis.", - "rationale": "Voluptatem illum unde. Rem nam repellendus. Vero occaecati aperiam.", - "description": "Dolore iusto neque. Tenetur magnam facilis. Qui hic error.", - "severity": "medium", - "precedence": 3541, - "identifier": { - "href": "http://keeling.test/eloise", - "label": "Uffo Boffin" - }, - "references": [ - { - "href": "http://gusikowski-vonrueden.example/lea.stark", - "label": "Angrod" - }, - { - "href": "http://mccullough-labadie.test/garry.bruen", - "label": "Huan" - }, - { - "href": "http://hartmann-corwin.test/franklyn", - "label": "Aratan" - }, - { - "href": "http://hickle-daniel.test/shelba", - "label": "Togo Goodbody" - }, - { - "href": "http://gorczany-ullrich.example/erasmo_wolff", - "label": "Faramir Took" - } - ], - "value_checks": null, - "remediation_available": false, - "rule_group_id": "79a481a6-fcc3-4378-8ff5-86831ee3580e", - "type": "rule" - }, - { - "id": "11af15c7-bb6a-4f18-a493-fdfbd5a97ae7", - "ref_id": "xccdf_org.ssgproject.content_rule_f95019aa8c71d7f1b9e2e30e3b2fce0a", - "title": "Dolor ipsa sunt voluptates.", - "rationale": "Nihil sunt non. Ab earum explicabo. Officiis eveniet id.", - "description": "Magni accusamus odit. Eius voluptas quod. Ut voluptatum consequuntur.", - "severity": "low", - "precedence": 7915, - "identifier": { - "href": "http://schuster-spencer.test/maisha.kuvalis", - "label": "Nurwë" - }, - "references": [ - { - "href": "http://lesch-cummings.test/clifford", - "label": "Indis" - }, - { - "href": "http://grimes-miller.test/leonida_christiansen", - "label": "Harding of the Hill" - }, - { - "href": "http://dach.test/adalberto", - "label": "Valandur" - }, - { - "href": "http://smith.example/dean_kuhlman", - "label": "Hazad" - }, - { - "href": "http://moen.example/arlette.harvey", - "label": "Buffo Boffin" - } - ], - "value_checks": null, - "remediation_available": false, - "rule_group_id": "dc867ad7-026b-4ac7-bb18-f46362cb7f86", - "type": "rule" - }, - { - "id": "174d62cb-6472-42a5-9cff-7a9e45ae0c98", - "ref_id": "xccdf_org.ssgproject.content_rule_3e318c7246858ea9d60162d4d4df2abf", - "title": "Distinctio impedit et ut.", - "rationale": "Dolor rerum voluptas. Qui in tempore. Rerum tempore autem.", - "description": "Impedit iste pariatur. Accusantium sed et. Nesciunt molestiae et.", - "severity": "high", - "precedence": 5357, - "identifier": { - "href": "http://ondricka-hudson.example/adrian", - "label": "Tar-Meneldur" - }, - "references": [ - { - "href": "http://stokes-roob.test/nanette", - "label": "Calimmacil" - }, - { - "href": "http://mann.example/carmen_reinger", - "label": "Lothíriel" - }, - { - "href": "http://lowe.example/jeannetta.zboncak", - "label": "Elmo" - }, - { - "href": "http://bernier.test/bridget_okuneva", - "label": "Araglas" - }, - { - "href": "http://wilkinson.example/luisa", - "label": "Artamir" - } - ], - "value_checks": null, - "remediation_available": false, - "rule_group_id": "c2e61530-05f3-44c0-9e2e-dda25b483a55", - "type": "rule" - }, - { - "id": "186a512c-79de-4f3f-aecd-2a34e20a1876", - "ref_id": "xccdf_org.ssgproject.content_rule_bde2089f5500e53c95bc98ee1a2b7e4d", - "title": "Mollitia itaque quasi consequatur.", - "rationale": "Iste expedita quia. Facere ut est. Illo quos nobis.", - "description": "Tempore quidem eos. Facilis occaecati culpa. Quas vero sequi.", - "severity": "high", - "precedence": 5844, - "identifier": { - "href": "http://dickinson-jones.test/jina.boyer", - "label": "Asphodel Brandybuck" - }, - "references": [ - { - "href": "http://pollich.example/malka", - "label": "Ivorwen" - }, - { - "href": "http://brakus.test/cristie", - "label": "Arahad" - }, - { - "href": "http://weimann-hand.test/lynwood.blanda", - "label": "Otho Sackville-Baggins" - }, - { - "href": "http://gibson.example/antoine", - "label": "Gerda Boffin" - }, - { - "href": "http://mills.test/wei", - "label": "Núneth" - } - ], - "value_checks": null, - "remediation_available": false, - "rule_group_id": "c637cd63-8e28-47d6-94e0-b33346fd290e", - "type": "rule" - }, - { - "id": "1b0b6ae3-2b9d-49dc-8854-639dc5b22634", - "ref_id": "xccdf_org.ssgproject.content_rule_0e889ecb697d2e5fdaef1c72cd5a7beb", - "title": "Et eligendi autem quidem.", - "rationale": "Autem dolore minus. Ut temporibus inventore. Aut aut esse.", - "description": "Quos in libero. Aut reiciendis quibusdam. Pariatur quia et.", - "severity": "high", - "precedence": 4945, - "identifier": { - "href": "http://keeling.test/eddie", - "label": "Robin Smallburrow" - }, - "references": [ - { - "href": "http://moen.example/andrea", - "label": "Aranuir" - }, - { - "href": "http://johns.example/maranda.mcdermott", - "label": "Folco Burrowes" - }, - { - "href": "http://auer.example/micheal", - "label": "Salvia Brandybuck" - }, - { - "href": "http://rohan.test/alton", - "label": "Ragnir" - }, - { - "href": "http://goldner-barton.test/chadwick_littel", - "label": "Ondoher" - } - ], - "value_checks": null, - "remediation_available": false, - "rule_group_id": "7e898e11-e64c-4a6e-81ca-156370647f30", - "type": "rule" - }, - { - "id": "281d4c0a-b952-4e8d-ba9d-97f38f3ec57a", - "ref_id": "xccdf_org.ssgproject.content_rule_2f4ddd3851e0c0440381f15d6f62dfc2", - "title": "Dolore totam cupiditate sint.", - "rationale": "Eligendi reiciendis eos. Ut assumenda ex. Est et repudiandae.", - "description": "Temporibus magnam voluptatem. Aut eos aspernatur. Enim voluptates qui.", - "severity": "medium", - "precedence": 6682, - "identifier": { - "href": "http://howe.test/neely", - "label": "Gwaihir" - }, - "references": [ - { - "href": "http://gislason.test/bettyann_bergnaum", - "label": "Porto Baggins" - }, - { - "href": "http://hahn-mueller.example/betsy", - "label": "Maglor" - }, - { - "href": "http://damore.example/stephan", - "label": "Nora Bolger" - }, - { - "href": "http://wehner.test/marybelle", - "label": "Anborn" - }, - { - "href": "http://kuphal.example/claud", - "label": "Erkenbrand" - } - ], - "value_checks": null, - "remediation_available": false, - "rule_group_id": "58e34cab-14db-4944-b527-2b073a2e8906", - "type": "rule" - }, - { - "id": "29c80c2c-ffc4-4f98-aba2-797aae3db7a0", - "ref_id": "xccdf_org.ssgproject.content_rule_d38236e85017d29a1b1af4688bdf8d5f", - "title": "Asperiores dignissimos quis aspernatur.", - "rationale": "Aut labore aut. Culpa repellat aliquid. Sed quo deserunt.", - "description": "Aut voluptas vitae. Voluptas voluptatem harum. Repellendus molestiae et.", - "severity": "high", - "precedence": 582, - "identifier": { - "href": "http://boyle.test/morgan", - "label": "Adelard Took" - }, - "references": [ - { - "href": "http://casper.test/salome", - "label": "Polo Baggins" - }, - { - "href": "http://powlowski.test/william_robel", - "label": "Thorin" - }, - { - "href": "http://ryan-treutel.example/bruce", - "label": "Amrod" - }, - { - "href": "http://marquardt.example/vanna", - "label": "Caranthir" - }, - { - "href": "http://reynolds.example/milo", - "label": "Calimehtar" - } - ], - "value_checks": null, - "remediation_available": false, - "rule_group_id": "2cbdec98-6930-4d7d-8406-e0731850b86c", - "type": "rule" - }, - { - "id": "3e75dc18-03cb-4304-9dea-c9af7b013b38", - "ref_id": "xccdf_org.ssgproject.content_rule_bc4e777bff480f656a9ca0f8e8a01e77", - "title": "Officiis eveniet eum cupiditate.", - "rationale": "Tenetur natus similique. Ut corrupti et. Possimus quidem non.", - "description": "Pariatur nulla dolores. Eos doloribus repellendus. Sit enim quidem.", - "severity": "high", - "precedence": 4174, - "identifier": { - "href": "http://kirlin-bruen.example/yolande", - "label": "Erien" - }, - "references": [ - { - "href": "http://crooks-dooley.test/darnell", - "label": "Ivorwen" - }, - { - "href": "http://blanda.test/ema", - "label": "Lúthien" - }, - { - "href": "http://kuhn-wunsch.example/joe", - "label": "Moro Burrows" - }, - { - "href": "http://hettinger.test/rickey.weimann", - "label": "Nori" - }, - { - "href": "http://nienow.example/kenton", - "label": "Ornil" - } - ], - "value_checks": null, - "remediation_available": false, - "rule_group_id": "78aaee66-0408-41cd-a12b-c29171cc346c", - "type": "rule" - }, - { - "id": "6b2a6b34-d246-4b82-bc8d-1361d17e19e8", - "ref_id": "xccdf_org.ssgproject.content_rule_544db98aa1cb53756d0122c8fa37d717", - "title": "Quia non ut doloremque.", - "rationale": "Ea dolorum sunt. Ut in debitis. Officia iusto autem.", - "description": "Sed optio illo. Consequatur sit rerum. Officiis quae nesciunt.", - "severity": "high", - "precedence": 3542, - "identifier": { - "href": "http://bogisich.example/nada_skiles", - "label": "Amdír" - }, - "references": [ - { - "href": "http://ritchie.example/joseph", - "label": "Mogru" - }, - { - "href": "http://jenkins-monahan.example/elda", - "label": "Adrahil" - }, - { - "href": "http://quitzon-kreiger.example/jeremy", - "label": "Estelmo" - }, - { - "href": "http://graham.test/amber_schmidt", - "label": "Otto Boffin" - }, - { - "href": "http://maggio-gusikowski.example/lou_krajcik", - "label": "Náin" - } - ], - "value_checks": null, - "remediation_available": false, - "rule_group_id": "6c9221d4-c0ac-4e22-9ba8-e1a5862c60d2", - "type": "rule" - }, - { - "id": "6f4e1876-896e-45d9-8d10-d1870cad27ce", - "ref_id": "xccdf_org.ssgproject.content_rule_922b1b704fc84d74a50cdcd84ffcff06", - "title": "Porro velit eveniet culpa.", - "rationale": "Fugit in ut. Et quidem distinctio. Omnis necessitatibus commodi.", - "description": "Esse nemo corrupti. Dignissimos ipsam asperiores. Sint cum maiores.", - "severity": "medium", - "precedence": 8229, - "identifier": { - "href": "http://hirthe.test/merilyn", - "label": "Fastred" - }, - "references": [ - { - "href": "http://lemke.example/bob_schneider", - "label": "Argeleb" - }, - { - "href": "http://kohler.test/krysten", - "label": "Valacar" - }, - { - "href": "http://beahan.test/leta", - "label": "Ban" - }, - { - "href": "http://powlowski.example/jacquetta_corkery", - "label": "Bilbo Gardner" - }, - { - "href": "http://hagenes.test/jerilyn.marvin", - "label": "Nimrodel" - } - ], - "value_checks": null, - "remediation_available": false, - "rule_group_id": "0d51ee35-7a54-4c8c-9cf0-0f8062e397f5", - "type": "rule" - } - ], - "meta": { - "total": 25, - "limit": 10, - "offset": 0 - }, - "links": { - "first": "/api/compliance/v2/security_guides/292e1a0e-bf83-4c6f-9c6c-2757f345f1f0/rules?limit=10&offset=0", - "last": "/api/compliance/v2/security_guides/292e1a0e-bf83-4c6f-9c6c-2757f345f1f0/rules?limit=10&offset=20", - "next": "/api/compliance/v2/security_guides/292e1a0e-bf83-4c6f-9c6c-2757f345f1f0/rules?limit=10&offset=10" - } - }, - "summary": "", - "description": "" - }, - "List of Rules sorted by \"precedence:asc\"": { - "value": { - "data": [ - { - "id": "63aaa894-3a1d-4650-b127-5c33886a809f", - "ref_id": "xccdf_org.ssgproject.content_rule_d3b01c1707e5a74167eaa9056ac90c1e", - "title": "Repellendus ad quo et.", - "rationale": "Asperiores ex sed. Et autem est. Sed nemo eum.", - "description": "Omnis voluptatibus sint. Quia deserunt voluptatum. Rerum et earum.", - "severity": "high", - "precedence": 18, - "identifier": { - "href": "http://upton.example/quinton", - "label": "Tar-Anárion" - }, - "references": [ - { - "href": "http://sauer.example/stephani.bergnaum", - "label": "Flói" - }, - { - "href": "http://ryan.example/moises", - "label": "Duilin" - }, - { - "href": "http://witting.test/trula_stamm", - "label": "Bereg" - }, - { - "href": "http://rohan-bartell.test/roland_reinger", - "label": "Iago Grubb" - }, - { - "href": "http://gutkowski-wiegand.test/somer_tromp", - "label": "Gríma" - } - ], - "value_checks": null, - "remediation_available": false, - "rule_group_id": "5290606d-ec5c-48d8-b645-fdcafc6b9d25", - "type": "rule" - }, - { - "id": "31b6e1b5-5089-4a38-ad78-b3e4423563fc", - "ref_id": "xccdf_org.ssgproject.content_rule_595502b985289467e83ef8e0a7fb9bd5", - "title": "Molestias laborum accusamus dolorem.", - "rationale": "Et alias sed. Voluptatem ipsa praesentium. Id possimus ea.", - "description": "Est at harum. Et maxime fuga. Dolores rem magni.", - "severity": "low", - "precedence": 516, - "identifier": { - "href": "http://hagenes.test/aron", - "label": "Eärendur" - }, - "references": [ - { - "href": "http://oreilly.test/magdalene", - "label": "Saradoc Brandybuck" - }, - { - "href": "http://robel.test/manuel", - "label": "Amdír" - }, - { - "href": "http://reinger-tremblay.test/hans", - "label": "Déor" - }, - { - "href": "http://labadie-kirlin.test/ileana", - "label": "Bungo Baggins" - }, - { - "href": "http://treutel-kassulke.example/jayson", - "label": "Minardil" - } - ], - "value_checks": null, - "remediation_available": false, - "rule_group_id": "cc6768b0-b50e-444c-b105-e8117618ab9a", - "type": "rule" - }, - { - "id": "6104987b-16cb-462c-b993-8bcc76e523f0", - "ref_id": "xccdf_org.ssgproject.content_rule_ed73427b0426bcbee8f6900d51cbf640", - "title": "Sit aut commodi voluptatem.", - "rationale": "Eaque delectus omnis. Modi eos enim. Aut et consequatur.", - "description": "Quos reiciendis voluptatem. Beatae tempore sequi. Porro debitis asperiores.", - "severity": "high", - "precedence": 625, - "identifier": { - "href": "http://russel-durgan.test/arlena", - "label": "Mrs. Bunce" - }, - "references": [ - { - "href": "http://shanahan-deckow.test/gregg", - "label": "Rowan" - }, - { - "href": "http://erdman.test/kirk", - "label": "Dairuin" - }, - { - "href": "http://mayer.test/shayla.harber", - "label": "Théodwyn" - }, - { - "href": "http://zulauf.example/elden", - "label": "Landroval" - }, - { - "href": "http://muller.test/janis.smith", - "label": "Forthwini" - } - ], - "value_checks": null, - "remediation_available": false, - "rule_group_id": "f991d9d1-15fe-42b5-a71a-803dfba806f5", - "type": "rule" - }, - { - "id": "1fb16959-48f2-44e1-b4dd-f6a6ee45bf7f", - "ref_id": "xccdf_org.ssgproject.content_rule_01f5a3b43b096c3434eea30c2b1c799b", - "title": "Rerum aut quidem tempore.", - "rationale": "Fugiat fugit facere. Maxime aliquam ex. Quasi quas provident.", - "description": "Id delectus ipsam. Molestiae totam autem. Delectus doloribus est.", - "severity": "high", - "precedence": 1449, - "identifier": { - "href": "http://bosco-grimes.test/javier", - "label": "Blodren" - }, - "references": [ - { - "href": "http://zboncak.example/vernita.lakin", - "label": "Edrahil" - }, - { - "href": "http://vandervort.test/laurence.tillman", - "label": "Angrod" - }, - { - "href": "http://mayer.example/roberto.dibbert", - "label": "Eärwen" - }, - { - "href": "http://gibson-bode.example/percy", - "label": "Mirabella Took" - }, - { - "href": "http://herman.test/rocky", - "label": "Amlaith" - } - ], - "value_checks": null, - "remediation_available": false, - "rule_group_id": "b6c5e9a0-2730-4e64-b749-c6b59316bfa6", - "type": "rule" - }, - { - "id": "68147c11-9a5f-4d4b-b2ab-b237b3bed879", - "ref_id": "xccdf_org.ssgproject.content_rule_3dc100c6ad680d4111c759b628c54a1a", - "title": "Rerum qui quasi illo.", - "rationale": "Autem sed eum. Rerum quia qui. Quisquam et est.", - "description": "Laborum atque aspernatur. Consequatur et voluptas. Accusantium sit vitae.", - "severity": "low", - "precedence": 2259, - "identifier": { - "href": "http://kilback-brakus.example/gena_rau", - "label": "Dís" - }, - "references": [ - { - "href": "http://paucek.test/abby_johnston", - "label": "Hathaldir" - }, - { - "href": "http://koelpin.test/hans.hintz", - "label": "Leaflock" - }, - { - "href": "http://rempel.example/ebony", - "label": "Carl Cotton" - }, - { - "href": "http://botsford.test/rocky.cummings", - "label": "Grimbold" - }, - { - "href": "http://gerhold.test/noble", - "label": "Belba Baggins" - } - ], - "value_checks": null, - "remediation_available": false, - "rule_group_id": "6827c1fb-1af8-4c36-b8fd-e04a158bac1f", - "type": "rule" - }, - { - "id": "8c8a635b-1d8c-4383-84fe-59687cd77d74", - "ref_id": "xccdf_org.ssgproject.content_rule_00bcdd56bbcb773212ce5c44c48bdec2", - "title": "Cupiditate modi non ab.", - "rationale": "Incidunt soluta et. Voluptas facere dolorem. Harum deserunt quod.", - "description": "Tenetur qui eos. Reprehenderit dolorem esse. Minima sapiente et.", - "severity": "high", - "precedence": 2671, - "identifier": { - "href": "http://borer.test/milan.berge", - "label": "Tosto Boffin" - }, - "references": [ - { - "href": "http://bartell.example/gary.hamill", - "label": "Flambard Took" - }, - { - "href": "http://brakus.test/cuc.prosacco", - "label": "Dernhelm" - }, - { - "href": "http://moen.example/damion.gleason", - "label": "Hildibrand Took" - }, - { - "href": "http://kerluke.example/nelle_kihn", - "label": "Tar-Súrion" - }, - { - "href": "http://gutkowski-jones.test/annika.abernathy", - "label": "Ostoher" - } - ], - "value_checks": null, - "remediation_available": false, - "rule_group_id": "01baf9c9-6e2b-41d7-a93c-ffbd1e8ac0e3", - "type": "rule" - }, - { - "id": "44a4391e-81ba-47b1-a815-0c6dc1943666", - "ref_id": "xccdf_org.ssgproject.content_rule_61a32e2abe2cb2846fbccda0ce92fbd1", - "title": "Quia dolor veniam quo.", - "rationale": "Eos excepturi cupiditate. Voluptatibus eos non. Fugit debitis molestias.", - "description": "At magnam nisi. Natus suscipit culpa. Repudiandae eum explicabo.", - "severity": "low", - "precedence": 2928, - "identifier": { - "href": "http://parker.test/guadalupe_mertz", - "label": "Beregar" - }, - "references": [ - { - "href": "http://berge-hickle.example/kaley_oreilly", - "label": "Mrs. Bunce" - }, - { - "href": "http://wunsch.example/denise.johns", - "label": "Gorbadoc Brandybuck" - }, - { - "href": "http://schroeder-lynch.test/rupert", - "label": "Farmer Cotton" - }, - { - "href": "http://steuber-glover.test/tammie", - "label": "Angrim" - }, - { - "href": "http://okeefe-bode.test/branden", - "label": "Camellia Sackville" - } - ], - "value_checks": null, - "remediation_available": false, - "rule_group_id": "68650a94-c1c3-4b27-9324-e17709bef454", - "type": "rule" - }, - { - "id": "593e9eb1-4266-41ad-9e3f-b98c3a98ad34", - "ref_id": "xccdf_org.ssgproject.content_rule_2b77d99596ea1d83775f5ca9b873918a", - "title": "Consequatur asperiores quas dolor.", - "rationale": "Qui enim quos. Ea distinctio voluptatem. Dolor non modi.", - "description": "Earum libero corporis. Inventore reiciendis culpa. Porro et eum.", - "severity": "high", - "precedence": 2996, - "identifier": { - "href": "http://connelly-beahan.example/lanita.simonis", - "label": "Ivriniel" - }, - "references": [ - { - "href": "http://denesik.example/rhett", - "label": "Elemmírë" - }, - { - "href": "http://walter-torphy.example/rudolph.hessel", - "label": "Bór" - }, - { - "href": "http://schroeder.example/warren_gorczany", - "label": "Théodred" - }, - { - "href": "http://heller.test/casey", - "label": "Lindissë" - }, - { - "href": "http://baumbach-dietrich.test/corrin", - "label": "Anairë" - } - ], - "value_checks": null, - "remediation_available": false, - "rule_group_id": "62d97dd8-ce8a-438b-a6f4-2a37dbacb967", - "type": "rule" - }, - { - "id": "33faa775-859f-4d70-9cff-214ddf2becc2", - "ref_id": "xccdf_org.ssgproject.content_rule_2b37c1aa9cb85d1fab3ec8875b2a0858", - "title": "Et laborum perspiciatis nesciunt.", - "rationale": "Quae ad aperiam. Nihil molestiae doloremque. Sunt voluptatum alias.", - "description": "Ipsum occaecati hic. Qui non magnam. Doloremque laudantium incidunt.", - "severity": "high", - "precedence": 3724, - "identifier": { - "href": "http://cormier.example/mercy", - "label": "Valacar" - }, - "references": [ - { - "href": "http://daugherty.test/gino", - "label": "Shelob" - }, - { - "href": "http://pfeffer.example/edmundo.damore", - "label": "Uffo Boffin" - }, - { - "href": "http://windler.example/ramiro", - "label": "Pansy Baggins" - }, - { - "href": "http://upton-reynolds.example/zackary", - "label": "Tata" - }, - { - "href": "http://weissnat.test/dalene", - "label": "Ciryon" - } - ], - "value_checks": null, - "remediation_available": false, - "rule_group_id": "0202e057-0873-487d-8aac-297faa88965b", - "type": "rule" - }, - { - "id": "7f414ff6-3721-400a-b383-7dd3d8a8659e", - "ref_id": "xccdf_org.ssgproject.content_rule_ed88aa237278422787d2c142618a73f9", - "title": "Deserunt nostrum incidunt nemo.", - "rationale": "Occaecati velit corrupti. Iure aut qui. Quibusdam omnis minus.", - "description": "At ut unde. Aut quia nostrum. Voluptates quod odit.", - "severity": "low", - "precedence": 3739, - "identifier": { - "href": "http://shanahan.example/jay", - "label": "Pansy Baggins" - }, - "references": [ - { - "href": "http://marvin.test/maia", - "label": "Belen" - }, - { - "href": "http://runolfsson-blanda.test/arlene", - "label": "Goldberry" - }, - { - "href": "http://cruickshank.test/isaac_emmerich", - "label": "Malantur" - }, - { - "href": "http://green.example/oscar_langworth", - "label": "Ungoliant" - }, - { - "href": "http://mills-hane.example/ralph", - "label": "Khamûl" - } - ], - "value_checks": null, - "remediation_available": false, - "rule_group_id": "8e9ac00f-26b5-4e9b-a9d6-29041a3f7ad4", - "type": "rule" - } - ], - "meta": { - "total": 25, - "limit": 10, - "offset": 0, - "sort_by": "precedence" - }, - "links": { - "first": "/api/compliance/v2/security_guides/fcf01d0c-e1a1-4b2d-a952-b4c50e1b1e15/rules?limit=10&offset=0&sort_by=precedence", - "last": "/api/compliance/v2/security_guides/fcf01d0c-e1a1-4b2d-a952-b4c50e1b1e15/rules?limit=10&offset=20&sort_by=precedence", - "next": "/api/compliance/v2/security_guides/fcf01d0c-e1a1-4b2d-a952-b4c50e1b1e15/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": "08b54df0-c55f-4ed2-acea-dc9ac2d99d67", - "ref_id": "xccdf_org.ssgproject.content_rule_a6559cc6f6f67536dc33e105fa1d2ae8", - "title": "Ut nobis aut cupiditate.", - "rationale": "Libero aut autem. Saepe eius dolorum. Dolores cupiditate sed.", - "description": "Totam delectus aut. Et ab inventore. Omnis optio delectus.", - "severity": "medium", - "precedence": 5750, - "identifier": { - "href": "http://lemke-ernser.test/mammie", - "label": "Elrond" - }, - "references": [ - { - "href": "http://huel-reynolds.example/selma", - "label": "Bard" - }, - { - "href": "http://cormier-heidenreich.example/jimmie", - "label": "Larnach" - }, - { - "href": "http://weissnat-jenkins.example/rigoberto", - "label": "Almarian" - }, - { - "href": "http://hane.example/natosha", - "label": "Aratan" - }, - { - "href": "http://ryan.test/reda_anderson", - "label": "Dinodas Brandybuck" - } - ], - "value_checks": null, - "remediation_available": false, - "rule_group_id": "b2f2fc76-677c-4726-b5bb-410ad7ce8071", - "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 73245bc0-5bd6-49e2-a40a-0025dcafa74d" - ] - }, - "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": "006cffc7-6ac9-4668-88ff-a952db0d1c6d", - "ref_id": "xccdf_org.ssgproject.content_rule_3418846fa3da94c8332ccc1f6422c6f3", - "title": "Porro nihil dolores voluptatum.", - "rationale": "Quia debitis odio. Nulla assumenda sunt. Minus repellendus et.", - "description": "Et blanditiis eveniet. Officiis ea quam. Quia numquam sequi.", - "severity": "low", - "precedence": 6763, - "identifier": { - "href": "http://thiel.example/ruben", - "label": "Willie Banks" - }, - "references": [ - { - "href": "http://spinka.test/jarrod", - "label": "Old Noakes" - }, - { - "href": "http://dickinson.test/janette", - "label": "Soronto" - }, - { - "href": "http://zulauf.test/vance.douglas", - "label": "Ulfast" - }, - { - "href": "http://cummings.example/maxwell.stroman", - "label": "Ardamir" - }, - { - "href": "http://tremblay-bergnaum.test/marvel.durgan", - "label": "Ingold" - } - ], - "value_checks": null, - "remediation_available": false, - "rule_group_id": "62b05a6e-c14f-4859-93e8-b33b85e91aac", - "type": "rule", - "remediation_issue_id": null - }, - { - "id": "0521fe25-57c1-41c1-b71f-b688c2579db3", - "ref_id": "xccdf_org.ssgproject.content_rule_3d155fa5ede4d57f23f9f6ece09df054", - "title": "Voluptates temporibus est in.", - "rationale": "Quo cupiditate facilis. Voluptate nulla et. Illum aut eum.", - "description": "Non sunt amet. Omnis doloribus numquam. Temporibus facere ipsam.", - "severity": "low", - "precedence": 2403, - "identifier": { - "href": "http://morissette.example/brett", - "label": "Celebrían" - }, - "references": [ - { - "href": "http://nikolaus-kub.example/casie_rau", - "label": "Angelimir" - }, - { - "href": "http://hane-dare.test/gregorio_ward", - "label": "Belba Baggins" - }, - { - "href": "http://waters-doyle.example/arnold_walsh", - "label": "Posco Baggins" - }, - { - "href": "http://padberg.test/micheal.ankunding", - "label": "Léod" - }, - { - "href": "http://hirthe-quigley.example/eugene", - "label": "Malva Headstrong" - } - ], - "value_checks": null, - "remediation_available": false, - "rule_group_id": "7414f2df-291f-4cda-b8ff-66146b7cb83c", - "type": "rule", - "remediation_issue_id": null - }, - { - "id": "14fff630-b579-42ee-ba49-20cb437c88cf", - "ref_id": "xccdf_org.ssgproject.content_rule_95ae8cfe8099c3630ef929b717f9d849", - "title": "Hic officia qui dicta.", - "rationale": "Ut veniam sed. Vel maiores laudantium. Velit dolor dolorum.", - "description": "Voluptatem dolorem consequatur. Reiciendis sequi tempora. Fugiat impedit atque.", - "severity": "low", - "precedence": 3594, - "identifier": { - "href": "http://kuhn.example/vanesa", - "label": "Khîm" - }, - "references": [ - { - "href": "http://hoppe.test/lavon", - "label": "Gelmir" - }, - { - "href": "http://gutkowski.test/lynda.lind", - "label": "Rúmil" - }, - { - "href": "http://treutel-bradtke.test/marion_carter", - "label": "Oropher" - }, - { - "href": "http://leffler-bode.test/paul", - "label": "Rowan" - }, - { - "href": "http://dooley.example/tennie.lynch", - "label": "Valandil" - } - ], - "value_checks": null, - "remediation_available": false, - "rule_group_id": "fac5a5f2-ab27-4b53-99a1-88ed1229780f", - "type": "rule", - "remediation_issue_id": null - }, - { - "id": "1517b56a-611e-46e5-8aed-780d42c583cd", - "ref_id": "xccdf_org.ssgproject.content_rule_494a23471d3b7c69fd4ca9e82f65e23f", - "title": "Numquam vero illum odit.", - "rationale": "Omnis omnis dignissimos. Numquam minus impedit. Dolores magnam aut.", - "description": "Autem molestias perspiciatis. Sint provident officiis. Corrupti nihil vitae.", - "severity": "medium", - "precedence": 3145, - "identifier": { - "href": "http://bogisich-beahan.test/alden", - "label": "Bungo Baggins" - }, - "references": [ - { - "href": "http://christiansen.example/carmelo", - "label": "Telumehtar Umbardacil" - }, - { - "href": "http://schumm-mann.test/alita_denesik", - "label": "Orgulas Brandybuck" - }, - { - "href": "http://denesik-heller.test/mazie_hodkiewicz", - "label": "Elendur" - }, - { - "href": "http://mosciski.test/marcel", - "label": "Freca" - }, - { - "href": "http://zemlak-rippin.example/savanna.luettgen", - "label": "Imin" - } - ], - "value_checks": null, - "remediation_available": false, - "rule_group_id": "2e528b02-9205-4266-9ed9-09dea61e1cc1", - "type": "rule", - "remediation_issue_id": null - }, - { - "id": "17f5f188-82f8-4c74-a42c-b85f82f8e5e9", - "ref_id": "xccdf_org.ssgproject.content_rule_56230486fd0e5782a9da3b65f409bd0d", - "title": "Ut cupiditate reiciendis porro.", - "rationale": "Atque nostrum saepe. Quia ut numquam. Dolores deleniti tempore.", - "description": "Unde perspiciatis molestiae. Veritatis vel qui. Sunt voluptates sed.", - "severity": "high", - "precedence": 3586, - "identifier": { - "href": "http://ondricka.example/alphonse_haag", - "label": "Dírhaval" - }, - "references": [ - { - "href": "http://fritsch.example/colin", - "label": "Borlas" - }, - { - "href": "http://kessler.example/willow.herman", - "label": "Poldor" - }, - { - "href": "http://bayer-casper.test/kristopher", - "label": "Bodruith" - }, - { - "href": "http://cruickshank-wehner.example/cari", - "label": "Olo Proudfoot" - }, - { - "href": "http://harber.test/dewayne_mcdermott", - "label": "Ardamir" - } - ], - "value_checks": null, - "remediation_available": false, - "rule_group_id": "d7392c08-21de-45d9-a2da-ad1b0a1fe24c", - "type": "rule", - "remediation_issue_id": null - }, - { - "id": "31ce0475-f128-4723-8f22-7221ddc24ae7", - "ref_id": "xccdf_org.ssgproject.content_rule_28bd29ba44a9f30853bfde40c92c8b4a", - "title": "Nisi provident minus voluptatibus.", - "rationale": "Velit quisquam aperiam. Quam dicta et. Et officiis sit.", - "description": "Tenetur aut repudiandae. Quo architecto est. Magni repudiandae eligendi.", - "severity": "medium", - "precedence": 1504, - "identifier": { - "href": "http://gulgowski.test/otha.gleichner", - "label": "Gwaihir" - }, - "references": [ - { - "href": "http://mccullough-rice.example/dorethea.bradtke", - "label": "Imin" - }, - { - "href": "http://braun-ward.example/earl", - "label": "Enerdhil" - }, - { - "href": "http://nitzsche-bosco.example/chae.ledner", - "label": "Cora Goodbody" - }, - { - "href": "http://vandervort.test/hipolito.smitham", - "label": "Vidugavia" - }, - { - "href": "http://jacobson.test/xavier", - "label": "Marhwini" - } - ], - "value_checks": null, - "remediation_available": false, - "rule_group_id": "dca87a6c-a4cb-4883-9ca6-a45dee2b3dcc", - "type": "rule", - "remediation_issue_id": null - }, - { - "id": "4a53e165-1960-4972-95a0-fb3dc072449d", - "ref_id": "xccdf_org.ssgproject.content_rule_29672637868cf8c6bedf82830a746a95", - "title": "Totam quo ducimus autem.", - "rationale": "Consequatur aut quos. Sed cumque rerum. Ut dolorem quaerat.", - "description": "Eum tempora non. Et voluptates vel. Maiores quia sint.", - "severity": "low", - "precedence": 1835, - "identifier": { - "href": "http://hodkiewicz-cronin.test/alfredo", - "label": "Nina Lightfoot" - }, - "references": [ - { - "href": "http://ohara.test/meghan_stehr", - "label": "Bell Goodchild" - }, - { - "href": "http://smitham.test/guillermo_jacobi", - "label": "Eärnil" - }, - { - "href": "http://upton.test/kathryne", - "label": "Bandobras Took" - }, - { - "href": "http://bartell.test/stephan_yost", - "label": "Aravir" - }, - { - "href": "http://schoen.test/deandre_hoppe", - "label": "Glaurung" - } - ], - "value_checks": null, - "remediation_available": false, - "rule_group_id": "c519a6d1-75b7-4418-9590-38ab472edb5e", - "type": "rule", - "remediation_issue_id": null - }, - { - "id": "4a612d49-7fa3-4258-b612-999a7a783282", - "ref_id": "xccdf_org.ssgproject.content_rule_2e14b83cd143baf955adee522813bf30", - "title": "Est voluptatem et ut.", - "rationale": "Quidem ut omnis. Hic exercitationem dolore. Impedit quasi hic.", - "description": "Dolorem ipsum totam. Corporis saepe eum. Voluptas aspernatur dolore.", - "severity": "medium", - "precedence": 1774, - "identifier": { - "href": "http://bosco.example/gavin", - "label": "Glirhuin" - }, - "references": [ - { - "href": "http://pagac.test/junior", - "label": "Forhend" - }, - { - "href": "http://brakus-bayer.example/oscar_kulas", - "label": "Orchaldor" - }, - { - "href": "http://goldner.example/roger", - "label": "Ostoher" - }, - { - "href": "http://marquardt.test/brunilda", - "label": "Yávien" - }, - { - "href": "http://schimmel.example/hassie", - "label": "Erestor" - } - ], - "value_checks": null, - "remediation_available": false, - "rule_group_id": "05c484a5-02f3-46a6-95b5-7a11e37cfcb7", - "type": "rule", - "remediation_issue_id": null - }, - { - "id": "59567a1d-09c2-439c-a3c5-1060a9a42b4f", - "ref_id": "xccdf_org.ssgproject.content_rule_87725fe152a02e7d45c54b906e1a62a2", - "title": "Totam cum sequi illo.", - "rationale": "Magni blanditiis velit. Illum deleniti ut. Quasi dicta dolore.", - "description": "Ut neque impedit. Eveniet perspiciatis quas. Ipsum molestias et.", - "severity": "medium", - "precedence": 8841, - "identifier": { - "href": "http://schinner-reilly.test/mary", - "label": "Fundin" - }, - "references": [ - { - "href": "http://murazik-mraz.test/buck_graham", - "label": "Landroval" - }, - { - "href": "http://deckow-zemlak.example/coleman", - "label": "Almiel" - }, - { - "href": "http://zboncak.test/tommy_mcdermott", - "label": "Enthor" - }, - { - "href": "http://shields.test/devon", - "label": "Marigold Gamgee" - }, - { - "href": "http://brown-langworth.example/rosalinda", - "label": "Iago Grubb" - } - ], - "value_checks": null, - "remediation_available": false, - "rule_group_id": "632f1140-7515-4041-8fb2-10b688be7eb2", - "type": "rule", - "remediation_issue_id": null - }, - { - "id": "5ba80e1e-83f7-4176-b423-7fd8aa381925", - "ref_id": "xccdf_org.ssgproject.content_rule_7c57b1333be32ef7f02fa773f2f5c6de", - "title": "Veritatis accusantium quas voluptas.", - "rationale": "Neque fugit nobis. Explicabo fugit minima. Aut voluptatem nam.", - "description": "Et et officia. Porro tempore et. Quasi assumenda deleniti.", - "severity": "medium", - "precedence": 1002, - "identifier": { - "href": "http://corkery-rolfson.example/deedee.lockman", - "label": "Théoden" - }, - "references": [ - { - "href": "http://parisian-cartwright.example/takisha_hermann", - "label": "Saeros" - }, - { - "href": "http://deckow.example/lisette_flatley", - "label": "Castamir" - }, - { - "href": "http://kessler.example/quintin", - "label": "Aldor" - }, - { - "href": "http://murray.example/jacob", - "label": "Haldar" - }, - { - "href": "http://rempel.example/emeline.kuvalis", - "label": "Ferumbras Took" - } - ], - "value_checks": null, - "remediation_available": false, - "rule_group_id": "251da085-a0fa-4025-b38f-07b7785cd327", - "type": "rule", - "remediation_issue_id": null - } - ], - "meta": { - "total": 25, - "limit": 10, - "offset": 0 - }, - "links": { - "first": "/api/compliance/v2/security_guides/df3b3deb-e941-4e4e-b7c1-025b425dc103/profiles/0e796fbc-db37-4526-8752-f8846369e89d/rules?limit=10&offset=0", - "last": "/api/compliance/v2/security_guides/df3b3deb-e941-4e4e-b7c1-025b425dc103/profiles/0e796fbc-db37-4526-8752-f8846369e89d/rules?limit=10&offset=20", - "next": "/api/compliance/v2/security_guides/df3b3deb-e941-4e4e-b7c1-025b425dc103/profiles/0e796fbc-db37-4526-8752-f8846369e89d/rules?limit=10&offset=10" - } - }, - "summary": "", - "description": "" - }, - "List of Rules sorted by \"precedence:asc\"": { - "value": { - "data": [ - { - "id": "9ab0c01f-8562-4fe5-9933-77cd30cd7497", - "ref_id": "xccdf_org.ssgproject.content_rule_f70a25ae275f3a465182589c4890a720", - "title": "Deleniti eius quibusdam in.", - "rationale": "Illo quos nostrum. Rerum veniam recusandae. Deleniti rerum pariatur.", - "description": "Sed similique modi. Possimus aut ipsa. Nostrum quod est.", - "severity": "low", - "precedence": 21, - "identifier": { - "href": "http://schaden-buckridge.example/donte.hirthe", - "label": "Gollum" - }, - "references": [ - { - "href": "http://schuster.test/kaley", - "label": "Castamir" - }, - { - "href": "http://mayert.test/walter", - "label": "Ori" - }, - { - "href": "http://gorczany-cruickshank.test/aurelia.heidenreich", - "label": "Alphros" - }, - { - "href": "http://dach-kub.example/nicholas", - "label": "Durin" - }, - { - "href": "http://maggio.test/devon.reichel", - "label": "Arador" - } - ], - "value_checks": null, - "remediation_available": false, - "rule_group_id": "a981905c-9d04-4cad-b607-b6b7d1704412", - "type": "rule", - "remediation_issue_id": null - }, - { - "id": "e4800f80-ef9e-4174-b327-457fe56df8c3", - "ref_id": "xccdf_org.ssgproject.content_rule_cbcb5ab3495db2dc56a26cf5a9b524d8", - "title": "Voluptatem deleniti quia omnis.", - "rationale": "Magnam voluptas atque. Qui adipisci est. Eum omnis quasi.", - "description": "Repellendus in aut. Rerum ut facilis. Quidem dolor placeat.", - "severity": "medium", - "precedence": 114, - "identifier": { - "href": "http://damore.test/neely", - "label": "Finwë" - }, - "references": [ - { - "href": "http://moore.example/otis", - "label": "Hob Gammidge" - }, - { - "href": "http://hyatt-corkery.test/ashly", - "label": "Olo Proudfoot" - }, - { - "href": "http://gislason.example/leanne.keebler", - "label": "Déor" - }, - { - "href": "http://hickle.example/lorna_hahn", - "label": "Gethron" - }, - { - "href": "http://fadel-white.test/tyrone", - "label": "Dúnhere" - } - ], - "value_checks": null, - "remediation_available": false, - "rule_group_id": "89f81e4f-7d45-4346-8c59-955b94aa4eb4", - "type": "rule", - "remediation_issue_id": null - }, - { - "id": "df3ea966-0cc0-49c5-85f5-253c6c744503", - "ref_id": "xccdf_org.ssgproject.content_rule_9c29df41e1b08833a60d9090fee25d8c", - "title": "Similique asperiores accusantium alias.", - "rationale": "Hic dolores architecto. Ut eligendi dolor. Est ut doloremque.", - "description": "Vero consequatur ut. Sed adipisci blanditiis. Adipisci culpa quam.", - "severity": "low", - "precedence": 379, - "identifier": { - "href": "http://wolf-kerluke.test/debbra.corwin", - "label": "Wiseman Gamwich" - }, - "references": [ - { - "href": "http://beer.example/ranee_vandervort", - "label": "Finduilas" - }, - { - "href": "http://rogahn.test/andrew.mccullough", - "label": "Déorwine" - }, - { - "href": "http://bayer.example/giuseppe", - "label": "Radagast" - }, - { - "href": "http://reynolds-sauer.example/sheryl_dickinson", - "label": "Everard Took" - }, - { - "href": "http://wolff-hand.test/iona", - "label": "Borin" - } - ], - "value_checks": null, - "remediation_available": false, - "rule_group_id": "73eda76a-8a28-42df-b354-1d4d42b873ff", - "type": "rule", - "remediation_issue_id": null - }, - { - "id": "e06fc5a8-731f-4ade-a2a6-7893305b87aa", - "ref_id": "xccdf_org.ssgproject.content_rule_2edde6470a21f674924d299514fb9dfc", - "title": "At dolorum commodi delectus.", - "rationale": "Voluptatem sapiente doloremque. Maiores sunt voluptatem. Dolor quis recusandae.", - "description": "Enim et animi. Molestias corporis consequuntur. Quas animi qui.", - "severity": "medium", - "precedence": 534, - "identifier": { - "href": "http://bednar-kuvalis.test/edmond_stark", - "label": "Gundahad Bolger" - }, - "references": [ - { - "href": "http://langworth.test/cara", - "label": "Ori" - }, - { - "href": "http://reichert.test/brooks", - "label": "Tolman Cotton Junior" - }, - { - "href": "http://douglas.test/mitzi", - "label": "Daddy Twofoot" - }, - { - "href": "http://schroeder.test/trinidad", - "label": "Angbor" - }, - { - "href": "http://larson-mohr.example/stephan", - "label": "Walda" - } - ], - "value_checks": null, - "remediation_available": false, - "rule_group_id": "c02e3aff-9007-4b74-9715-394898e478e0", - "type": "rule", - "remediation_issue_id": null - }, - { - "id": "1e910adf-b1de-4c98-a3c7-2efbdb648597", - "ref_id": "xccdf_org.ssgproject.content_rule_374a6cc59cc154b1d3c0b99f75d48449", - "title": "Voluptas qui nostrum nihil.", - "rationale": "Id omnis sunt. Quasi neque in. Ipsum assumenda ut.", - "description": "Aut hic corrupti. Ut quam quaerat. Voluptatibus natus omnis.", - "severity": "medium", - "precedence": 865, - "identifier": { - "href": "http://schowalter.test/mickey", - "label": "Manwendil" - }, - "references": [ - { - "href": "http://metz.example/iva.shanahan", - "label": "Dori" - }, - { - "href": "http://jenkins.test/corie", - "label": "Agathor" - }, - { - "href": "http://mueller.example/bong", - "label": "Tata" - }, - { - "href": "http://sipes.test/jesica_rogahn", - "label": "Dudo Baggins" - }, - { - "href": "http://kling-mccullough.example/hettie.schroeder", - "label": "Arwen" - } - ], - "value_checks": null, - "remediation_available": false, - "rule_group_id": "5936b36b-6f52-4a41-b4b8-0c718e6a9ccf", - "type": "rule", - "remediation_issue_id": null - }, - { - "id": "afa573ff-0ac7-440b-a413-a540af7696af", - "ref_id": "xccdf_org.ssgproject.content_rule_0b85d182322ca249e33366facb10193c", - "title": "Ab ut debitis vel.", - "rationale": "Omnis dolores non. Ad enim occaecati. Mollitia eveniet voluptate.", - "description": "Quas in rerum. Autem et ipsa. Aspernatur suscipit consequatur.", - "severity": "low", - "precedence": 1270, - "identifier": { - "href": "http://kuhic-bayer.test/adan", - "label": "Fredegar Bolger" - }, - "references": [ - { - "href": "http://osinski.test/berry.senger", - "label": "Pippin Gardner" - }, - { - "href": "http://torphy.test/maurita.hodkiewicz", - "label": "Îbal" - }, - { - "href": "http://lowe-pfeffer.test/stefan.cruickshank", - "label": "Borthand" - }, - { - "href": "http://wintheiser-ritchie.test/adaline", - "label": "Rómendacil" - }, - { - "href": "http://kunze-waelchi.test/yolonda", - "label": "Gorlim" - } - ], - "value_checks": null, - "remediation_available": false, - "rule_group_id": "5bb609ae-1ba8-4957-98ba-bf85a437c055", - "type": "rule", - "remediation_issue_id": null - }, - { - "id": "7cc57b47-34b4-433b-8a31-4210eee70c87", - "ref_id": "xccdf_org.ssgproject.content_rule_4ce5792861aa2214384377602159afd7", - "title": "Aut molestias vel nihil.", - "rationale": "Consequuntur laboriosam eos. Modi rem ut. Consequatur ratione sequi.", - "description": "Magni dicta aut. Natus expedita et. Ad occaecati voluptatem.", - "severity": "low", - "precedence": 1443, - "identifier": { - "href": "http://doyle.example/michael_purdy", - "label": "Tarannon Falastur" - }, - "references": [ - { - "href": "http://veum.test/isobel", - "label": "Yávien" - }, - { - "href": "http://hyatt.test/sergio", - "label": "Farmer Maggot" - }, - { - "href": "http://rau-kautzer.example/oren", - "label": "Frerin" - }, - { - "href": "http://bartoletti.example/kenny_bode", - "label": "Brand" - }, - { - "href": "http://grant-lindgren.test/forest_kunze", - "label": "Rufus Burrows" - } - ], - "value_checks": null, - "remediation_available": false, - "rule_group_id": "57b93273-a01a-4243-9d7b-7a12ab0be0cd", - "type": "rule", - "remediation_issue_id": null - }, - { - "id": "a8704d72-aae3-415b-99f7-b357270f68d5", - "ref_id": "xccdf_org.ssgproject.content_rule_4c8fd20bc7ea5a9a12647bf74e9c3e91", - "title": "Eum perferendis ut commodi.", - "rationale": "Sint aliquid veniam. Cumque nisi facilis. Sit quo harum.", - "description": "Hic aut explicabo. Et hic expedita. Non dolorum voluptatibus.", - "severity": "high", - "precedence": 1690, - "identifier": { - "href": "http://renner-kirlin.test/adella", - "label": "Hannar" - }, - "references": [ - { - "href": "http://oconner-bednar.test/ernesto", - "label": "Herubrand" - }, - { - "href": "http://smith.test/kasey", - "label": "Amlach" - }, - { - "href": "http://parisian-schroeder.test/sherwood_cole", - "label": "Elwing" - }, - { - "href": "http://sipes-littel.example/ebony.blick", - "label": "Anborn" - }, - { - "href": "http://torphy-rau.test/daniella", - "label": "Ragnor" - } - ], - "value_checks": null, - "remediation_available": false, - "rule_group_id": "7674ec94-a271-48c1-9f67-0f976ebc9b63", - "type": "rule", - "remediation_issue_id": null - }, - { - "id": "76d06f75-69fd-451f-b4eb-8c9cb5989d68", - "ref_id": "xccdf_org.ssgproject.content_rule_92c3362b0e1c028a86083fce73972cd8", - "title": "Facilis accusantium sint harum.", - "rationale": "In ut dignissimos. Sit veniam et. Et ut aut.", - "description": "Sit minima tenetur. Iure dignissimos aspernatur. Animi ut dolore.", - "severity": "high", - "precedence": 2798, - "identifier": { - "href": "http://harvey-kohler.test/erika.hauck", - "label": "Minardil" - }, - "references": [ - { - "href": "http://wuckert-stark.test/ehtel", - "label": "Elemmírë" - }, - { - "href": "http://mcglynn.example/abigail_kris", - "label": "Forweg" - }, - { - "href": "http://hessel-gulgowski.example/lucien", - "label": "Tar-Vanimeldë" - }, - { - "href": "http://stiedemann-ledner.example/lacresha_daniel", - "label": "Hazad" - }, - { - "href": "http://willms-kuhlman.example/glenna_lemke", - "label": "Orchaldor" - } - ], - "value_checks": null, - "remediation_available": false, - "rule_group_id": "6a157b31-7789-4213-9a4f-5eaac83f2bf0", - "type": "rule", - "remediation_issue_id": null - }, - { - "id": "4e5030df-d287-4188-b3ca-5f9a9316f08b", - "ref_id": "xccdf_org.ssgproject.content_rule_339c9b3d182164160d21592590dfaa7c", - "title": "Rerum est quae nisi.", - "rationale": "Corrupti nisi minus. Qui laborum atque. Officiis velit nesciunt.", - "description": "Qui quam aliquid. Qui doloremque est. In aut et.", - "severity": "medium", - "precedence": 3152, - "identifier": { - "href": "http://parisian.test/rhett", - "label": "Eluréd" - }, - "references": [ - { - "href": "http://schultz-lebsack.example/allison.gottlieb", - "label": "Merimac Brandybuck" - }, - { - "href": "http://lubowitz.test/trisha.friesen", - "label": "Ingwion" - }, - { - "href": "http://abshire.test/margurite", - "label": "Eilinel" - }, - { - "href": "http://lang.example/desmond", - "label": "Sapphira Brockhouse" - }, - { - "href": "http://walker-macejkovic.test/rosalie", - "label": "Beleg" - } - ], - "value_checks": null, - "remediation_available": false, - "rule_group_id": "021a9880-5c46-469f-8853-62ab5aec73da", - "type": "rule", - "remediation_issue_id": null - } - ], - "meta": { - "total": 25, - "limit": 10, - "offset": 0, - "sort_by": "precedence" - }, - "links": { - "first": "/api/compliance/v2/security_guides/930201f4-66ba-425c-b161-4a9bd171e70c/profiles/5840a5e9-06c2-4b49-a081-f554122896d5/rules?limit=10&offset=0&sort_by=precedence", - "last": "/api/compliance/v2/security_guides/930201f4-66ba-425c-b161-4a9bd171e70c/profiles/5840a5e9-06c2-4b49-a081-f554122896d5/rules?limit=10&offset=20&sort_by=precedence", - "next": "/api/compliance/v2/security_guides/930201f4-66ba-425c-b161-4a9bd171e70c/profiles/5840a5e9-06c2-4b49-a081-f554122896d5/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": "b23b367e-0d38-47cc-ae4e-3a012525d69c", - "ref_id": "xccdf_org.ssgproject.content_rule_aec06cf7c8b739f8cc9c0af836408b9e", - "title": "Explicabo distinctio veniam numquam.", - "rationale": "Enim sed itaque. Beatae blanditiis rem. Expedita sint earum.", - "description": "Tenetur itaque incidunt. Suscipit voluptatem eum. Enim saepe aut.", - "severity": "high", - "precedence": 227, - "identifier": { - "href": "http://johns.test/roy", - "label": "Arahad" - }, - "references": [ - { - "href": "http://hartmann-rowe.example/josiah", - "label": "Lily Baggins" - }, - { - "href": "http://bradtke.test/talia", - "label": "Malva Headstrong" - }, - { - "href": "http://goldner-von.test/sanda_glover", - "label": "Annael" - }, - { - "href": "http://damore.test/harris_barrows", - "label": "Idril" - }, - { - "href": "http://purdy.test/romelia_morar", - "label": "King of the Dead" - } - ], - "value_checks": null, - "remediation_available": false, - "rule_group_id": "db7d9cea-fe27-4f36-a07d-fd13f4fbfb01", - "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 06f20a37-b83e-481a-81dc-f3c94dbc03dd" - ] - }, - "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": "6b45bd23-7e9f-4ac0-bd8c-56ea81cb807f", - "ref_id": "xccdf_org.ssgproject.content_rule_16b164eabba56ca201c00f81efef2369", - "title": "Voluptates et itaque eius.", - "rationale": "Totam iure culpa. Esse excepturi reiciendis. Quibusdam quo aut.", - "description": "Ea ut eius. Voluptatem voluptatem optio. Sit perferendis in.", - "severity": "medium", - "precedence": 9343, - "identifier": { - "href": "http://lindgren-larkin.example/tiera.shields", - "label": "Thengel" - }, - "references": [ - { - "href": "http://abbott.test/armand.lind", - "label": "Porto Baggins" - }, - { - "href": "http://mccullough-wiza.example/marilynn", - "label": "Eärendur" - }, - { - "href": "http://reilly.test/garfield", - "label": "Ibun" - }, - { - "href": "http://bernier.test/young", - "label": "Aragost" - }, - { - "href": "http://king.test/forest", - "label": "Tarciryan" - } - ], - "value_checks": null, - "remediation_available": false, - "rule_group_id": "ada2b6d4-0c87-45da-8ab4-f31406c739a7", - "type": "rule" - } - ], - "meta": { - "total": 1, - "limit": 10, - "offset": 0 - }, - "links": { - "first": "/api/compliance/v2/policies/ad4a5530-a11a-4116-9b7e-6f0284875722/tailorings/1a1d41bd-f7b3-4633-b82b-50d442d307de/rules?limit=10&offset=0", - "last": "/api/compliance/v2/policies/ad4a5530-a11a-4116-9b7e-6f0284875722/tailorings/1a1d41bd-f7b3-4633-b82b-50d442d307de/rules?limit=10&offset=0" - } - }, - "summary": "", - "description": "" - }, - "List of Rules sorted by \"precedence:asc\"": { - "value": { - "data": [ - { - "id": "5a9ccc7b-0ed2-4dc9-9348-b868dee6ddfe", - "ref_id": "xccdf_org.ssgproject.content_rule_78efc2269072e8d57d72679aebc708cc", - "title": "Quasi aliquam sunt aut.", - "rationale": "Porro culpa voluptas. Ut distinctio ea. Sint eius magni.", - "description": "Ea molestiae amet. Sunt magnam eaque. Debitis temporibus et.", - "severity": "high", - "precedence": 2974, - "identifier": { - "href": "http://wiegand-huel.example/jaime_mraz", - "label": "Amroth" - }, - "references": [ - { - "href": "http://labadie.example/gertha", - "label": "Almarian" - }, - { - "href": "http://franecki.test/marcelina_prosacco", - "label": "Idis" - }, - { - "href": "http://jones.example/monroe", - "label": "Tobold Hornblower" - }, - { - "href": "http://dietrich-keeling.test/florencio_zieme", - "label": "Daisy Baggins" - }, - { - "href": "http://marks.test/alberto", - "label": "Legolas" - } - ], - "value_checks": null, - "remediation_available": false, - "rule_group_id": "15de67ac-48b8-48dd-a6d4-ac5a441675df", - "type": "rule" - } - ], - "meta": { - "total": 1, - "limit": 10, - "offset": 0, - "sort_by": "precedence" - }, - "links": { - "first": "/api/compliance/v2/policies/7225ba52-6178-4daf-a0e4-0c52f58556f6/tailorings/0a633736-5ccf-4caa-a4ae-dc7b46ca4c8d/rules?limit=10&offset=0&sort_by=precedence", - "last": "/api/compliance/v2/policies/7225ba52-6178-4daf-a0e4-0c52f58556f6/tailorings/0a633736-5ccf-4caa-a4ae-dc7b46ca4c8d/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": "013b252c-5ee4-4693-b870-1901bcd958ca", - "ref_id": "xccdf_org.ssgproject.content_rule_e05376eff2424720dcc2f3daa2f9b4b0", - "title": "Nam exercitationem laborum doloribus.", - "rationale": "Saepe ex autem. Ut non magni. Quae est eos.", - "description": "Excepturi iste nemo. Omnis nobis dolor. Quod aut sed.", - "severity": "low", - "precedence": 2769, - "identifier": { - "href": "http://harber.test/savanna.bartell", - "label": "Halfred Greenhand" - }, - "references": [ - { - "href": "http://lehner.example/cathie", - "label": "Hobson" - }, - { - "href": "http://hahn.example/floria.west", - "label": "Lonely Troll" - }, - { - "href": "http://sauer-gerhold.example/monet", - "label": "Barliman Butterbur" - }, - { - "href": "http://hamill.test/alan", - "label": "Ruby Gardner" - }, - { - "href": "http://lowe-lynch.example/xochitl.barton", - "label": "Muzgash" - } - ], - "value_checks": null, - "remediation_available": false, - "rule_group_id": "c5c82668-f381-4920-980b-26ecc9045c56", - "type": "rule" - }, - { - "id": "15248ada-01b3-4bbb-83ce-c4d231d48fed", - "ref_id": "xccdf_org.ssgproject.content_rule_b9ec4c3098dccd565d2f96e1b00ffb94", - "title": "Est eveniet voluptatem deleniti.", - "rationale": "Laborum adipisci consequatur. Voluptatum error inventore. Nesciunt dolores officia.", - "description": "Vel perspiciatis quia. Autem qui asperiores. Perspiciatis reprehenderit cupiditate.", - "severity": "medium", - "precedence": 7814, - "identifier": { - "href": "http://veum-weber.example/juliann", - "label": "Fram" - }, - "references": [ - { - "href": "http://strosin.test/james_morissette", - "label": "Aegnor" - }, - { - "href": "http://brakus-christiansen.example/zachariah", - "label": "Fréaláf" - }, - { - "href": "http://runte-robel.test/ninfa", - "label": "Ar-Adûnakhôr" - }, - { - "href": "http://bergnaum-glover.test/burl_ondricka", - "label": "Larnach" - }, - { - "href": "http://dubuque.example/antonette", - "label": "Gildis" - } - ], - "value_checks": null, - "remediation_available": false, - "rule_group_id": "382f94c1-3346-433b-a1c1-675d0e9ade15", - "type": "rule" - }, - { - "id": "199f5682-68d9-40a3-b1eb-8583e2eee7b7", - "ref_id": "xccdf_org.ssgproject.content_rule_71006c4d3aa93d890a29f03d3c1a5bbe", - "title": "Et suscipit occaecati aut.", - "rationale": "Maxime labore nisi. Quis qui maxime. Animi explicabo voluptatibus.", - "description": "Consequatur nobis repellat. Totam aspernatur quaerat. Et soluta ducimus.", - "severity": "low", - "precedence": 2797, - "identifier": { - "href": "http://jast-weissnat.test/jody.hagenes", - "label": "Prisca Baggins" - }, - "references": [ - { - "href": "http://mertz-ernser.example/simon", - "label": "Gorhendad Oldbuck" - }, - { - "href": "http://jones.example/moon.gerlach", - "label": "Ostoher" - }, - { - "href": "http://purdy.example/guy", - "label": "Mat Heathertoes" - }, - { - "href": "http://kihn-fahey.example/angel", - "label": "Arantar" - }, - { - "href": "http://sporer.example/hal_johnson", - "label": "Argeleb" - } - ], - "value_checks": null, - "remediation_available": false, - "rule_group_id": "5019c74d-c952-4b72-b6d4-3fda7b7708ad", - "type": "rule" - }, - { - "id": "2074e056-9a15-4755-9500-d1166d316122", - "ref_id": "xccdf_org.ssgproject.content_rule_42a4ac72eac6dfbf97e34e70f147711a", - "title": "Voluptas perspiciatis explicabo omnis.", - "rationale": "Minima eius vitae. Consequatur ab dolorem. Id molestiae doloremque.", - "description": "Dolorum perspiciatis saepe. Ullam quia vitae. Est nulla in.", - "severity": "high", - "precedence": 8546, - "identifier": { - "href": "http://roob-schmidt.test/douglas", - "label": "Hugo Bracegirdle" - }, - "references": [ - { - "href": "http://will.test/marlyn", - "label": "Halfred Greenhand" - }, - { - "href": "http://legros.example/bethel_russel", - "label": "Araglas" - }, - { - "href": "http://heller.test/keeley_cronin", - "label": "Inziladûn" - }, - { - "href": "http://kshlerin.example/lou", - "label": "Merimas Brandybuck" - }, - { - "href": "http://renner-wisoky.example/margarite", - "label": "Elurín" - } - ], - "value_checks": null, - "remediation_available": false, - "rule_group_id": "1bc26057-87c0-426e-b9f2-523c0eba1826", - "type": "rule" - }, - { - "id": "20a8ac7a-1814-4a64-96f2-764b60dcfc40", - "ref_id": "xccdf_org.ssgproject.content_rule_3fdf6a4cb6c086b482211313162bf1b1", - "title": "Minus est aut magni.", - "rationale": "Et voluptatem molestiae. Explicabo et eum. Dolores tempora ipsam.", - "description": "Odio commodi quisquam. Culpa aperiam quidem. Quia amet voluptate.", - "severity": "high", - "precedence": 8900, - "identifier": { - "href": "http://daniel.test/judson", - "label": "Mauhúr" - }, - "references": [ - { - "href": "http://bashirian-kozey.example/lesley_glover", - "label": "Carc" - }, - { - "href": "http://ebert.example/angeles_kuvalis", - "label": "Ciryatur" - }, - { - "href": "http://oconnell-kihn.example/viva", - "label": "Mithrellas" - }, - { - "href": "http://stoltenberg.test/roosevelt_hauck", - "label": "Myrtle Burrows" - }, - { - "href": "http://kautzer.example/penney.hagenes", - "label": "Eärendil" - } - ], - "value_checks": null, - "remediation_available": false, - "rule_group_id": "b2ac72fd-ad3c-4cd9-8f10-0ddd4ffe7295", - "type": "rule" - }, - { - "id": "220e226c-adf0-465d-849b-461e760ba6f1", - "ref_id": "xccdf_org.ssgproject.content_rule_5f352636e7281dfb7bf2cf37515b9ee3", - "title": "Ullam minus perferendis quia.", - "rationale": "Error facilis voluptatibus. Amet ut ipsa. Sapiente repellat voluptas.", - "description": "Omnis et amet. Et natus porro. Sed et impedit.", - "severity": "medium", - "precedence": 55, - "identifier": { - "href": "http://dubuque-klocko.test/alfredo.goyette", - "label": "Fosco Baggins" - }, - "references": [ - { - "href": "http://parisian.example/alfredo", - "label": "Snaga" - }, - { - "href": "http://hauck-gorczany.example/korey.kohler", - "label": "Argon" - }, - { - "href": "http://price-reichert.test/karren", - "label": "Valandil" - }, - { - "href": "http://kuhn-feeney.example/malcolm_senger", - "label": "Dáin" - }, - { - "href": "http://hermann.test/michaela.simonis", - "label": "Rían" - } - ], - "value_checks": null, - "remediation_available": false, - "rule_group_id": "adf3bfa5-e809-4354-aeae-4e836fd90afe", - "type": "rule" - }, - { - "id": "24c68d1d-0241-44f9-8c36-d03e321673a1", - "ref_id": "xccdf_org.ssgproject.content_rule_abad5e336dfb8846b06b5fc6c439e465", - "title": "Eaque accusantium pariatur laudantium.", - "rationale": "Distinctio eos ut. Et repellendus voluptatem. Sapiente ratione harum.", - "description": "Blanditiis qui dolor. Voluptatem beatae perferendis. Quia aperiam et.", - "severity": "medium", - "precedence": 4217, - "identifier": { - "href": "http://wyman.test/rocco_bartoletti", - "label": "Iorlas" - }, - "references": [ - { - "href": "http://hegmann-koelpin.example/ollie_predovic", - "label": "Minohtar" - }, - { - "href": "http://medhurst.test/pearly", - "label": "Isengrim" - }, - { - "href": "http://gleichner-pfannerstill.example/billie.haley", - "label": "Brego" - }, - { - "href": "http://borer-dooley.example/laverne", - "label": "Walda" - }, - { - "href": "http://waters-smith.test/brittany_durgan", - "label": "Elwing" - } - ], - "value_checks": null, - "remediation_available": false, - "rule_group_id": "4ef67299-23ff-4351-ada1-9103133abdb2", - "type": "rule" - }, - { - "id": "31a9f544-e695-47ba-a9f7-109ff84ee35a", - "ref_id": "xccdf_org.ssgproject.content_rule_ab2e22663c0377fc35a1c18e68aec6b5", - "title": "Quo aperiam fuga voluptate.", - "rationale": "Itaque nam illo. Rem molestias est. Soluta assumenda voluptatibus.", - "description": "Occaecati et eveniet. Quo et atque. Tempora itaque sint.", - "severity": "medium", - "precedence": 4833, - "identifier": { - "href": "http://gislason.test/raleigh", - "label": "Pippin Gardner" - }, - "references": [ - { - "href": "http://rosenbaum.test/grady", - "label": "Mrs. Bunce" - }, - { - "href": "http://damore-beier.test/adrian_weimann", - "label": "Bandobras Took" - }, - { - "href": "http://heaney.test/azzie_franecki", - "label": "Gwindor" - }, - { - "href": "http://nader.test/melonie.cronin", - "label": "Mallor" - }, - { - "href": "http://kuhic-wintheiser.test/lahoma", - "label": "Hanna Goldworthy" - } - ], - "value_checks": null, - "remediation_available": false, - "rule_group_id": "eb3d6404-a968-4321-87b3-d3522d008825", - "type": "rule" - }, - { - "id": "4c319c41-0d6f-4087-aa75-c81b8259e2d6", - "ref_id": "xccdf_org.ssgproject.content_rule_f19438b3df077948e18e35c15017e533", - "title": "Commodi molestiae quae sequi.", - "rationale": "Quis eos architecto. Fuga quisquam accusantium. Distinctio voluptas doloremque.", - "description": "Accusantium et harum. Ut vel dolorem. Nihil molestiae accusamus.", - "severity": "low", - "precedence": 2587, - "identifier": { - "href": "http://beier-thiel.example/micheline.altenwerth", - "label": "Axantur" - }, - "references": [ - { - "href": "http://hauck.test/ernest_boyle", - "label": "Hilda Bracegirdle" - }, - { - "href": "http://franecki-dickens.example/tim", - "label": "Farmer Cotton" - }, - { - "href": "http://howell.example/letty", - "label": "Alphros" - }, - { - "href": "http://ziemann.example/mervin.graham", - "label": "Halfred Greenhand" - }, - { - "href": "http://okeefe.example/june.hoeger", - "label": "Marigold Gamgee" - } - ], - "value_checks": null, - "remediation_available": false, - "rule_group_id": "a5517577-e327-4a87-84b0-eecf126c2d04", - "type": "rule" - }, - { - "id": "5ec95381-899b-422f-8604-1b83537d67f6", - "ref_id": "xccdf_org.ssgproject.content_rule_71c297818e969c42ac685fffdaeb88df", - "title": "Ex voluptas expedita consequuntur.", - "rationale": "Aut magni dicta. Dolor explicabo et. Rerum nemo est.", - "description": "Et cumque voluptas. Doloribus aut et. Vel fugiat ducimus.", - "severity": "high", - "precedence": 5151, - "identifier": { - "href": "http://friesen.example/jannet", - "label": "Bregor" - }, - "references": [ - { - "href": "http://auer.example/kristopher_robel", - "label": "Amandil" - }, - { - "href": "http://moore-hane.example/alanna_kautzer", - "label": "Marhari" - }, - { - "href": "http://muller-heathcote.example/rudolph", - "label": "Gothmog" - }, - { - "href": "http://swift-sanford.test/marquita.carter", - "label": "Kíli" - }, - { - "href": "http://ryan-beer.test/norberto", - "label": "Gilraen" - } - ], - "value_checks": null, - "remediation_available": false, - "rule_group_id": "7213c5e0-b457-43d8-9402-6e2c6b45235a", - "type": "rule" - } - ], - "meta": { - "total": 25, - "limit": 10, - "offset": 0 - }, - "links": { - "first": "/api/compliance/v2/policies/d5c9c85e-a2ae-49a8-b95b-162e94723148/tailorings/3fbfcd5b-69cc-4cc4-93ea-e6213a3580bf/rules?limit=10&offset=0", - "last": "/api/compliance/v2/policies/d5c9c85e-a2ae-49a8-b95b-162e94723148/tailorings/3fbfcd5b-69cc-4cc4-93ea-e6213a3580bf/rules?limit=10&offset=20", - "next": "/api/compliance/v2/policies/d5c9c85e-a2ae-49a8-b95b-162e94723148/tailorings/3fbfcd5b-69cc-4cc4-93ea-e6213a3580bf/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": "7b7562c5-4030-42a9-99de-297328b7cea6", - "ref_id": "xccdf_org.ssgproject.content_rule_2dc58996780307d234f2497a1de033d4", - "title": "Aut error distinctio pariatur.", - "rationale": "Non laboriosam praesentium. Repellendus exercitationem tenetur. Tempore voluptatum expedita.", - "description": "Perferendis provident unde. Possimus sed quidem. Corporis ab cumque.", - "severity": "medium", - "precedence": 7152, - "identifier": { - "href": "http://rath.example/tomiko", - "label": "Sagroth" - }, - "references": [ - { - "href": "http://frami.test/modesto", - "label": "Thrór" - }, - { - "href": "http://daugherty.test/matthew.ritchie", - "label": "Tar-Súrion" - }, - { - "href": "http://lowe.example/ahmed_monahan", - "label": "Baldor" - }, - { - "href": "http://klocko.test/mildred_feeney", - "label": "Muzgash" - }, - { - "href": "http://lebsack.test/delsie.kiehn", - "label": "Bill Butcher" - } - ], - "value_checks": null, - "remediation_available": false, - "rule_group_id": "c0100a3d-0480-4d2d-9db1-f0ba27bf66eb", - "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 6a6dc020-6a9f-4615-bc8d-adf4b7bd2750" - ] - }, - "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": "95462941-f328-4a55-afc5-83b08acb6c90", - "ref_id": "xccdf_org.ssgproject.content_rule_451ba303d3a9bca742f793436c203216", - "title": "Est quod eligendi tenetur.", - "rationale": "Corporis cumque quidem. Labore neque assumenda. Eos qui aut.", - "description": "Ab iste sint. Aut error distinctio. Illum architecto quisquam.", - "severity": "low", - "precedence": 8606, - "identifier": { - "href": "http://greenholt.example/toshiko", - "label": "Fíli" - }, - "references": [ - { - "href": "http://dibbert.test/jonas", - "label": "Lobelia Sackville-Baggins" - }, - { - "href": "http://hills.example/jacques", - "label": "Menegilda Goold" - }, - { - "href": "http://casper-macejkovic.test/catina.will", - "label": "Gwindor" - }, - { - "href": "http://block-dicki.example/melodee", - "label": "Aulendil" - }, - { - "href": "http://cronin.test/kimiko", - "label": "Haldar" - } - ], - "value_checks": null, - "remediation_available": false, - "rule_group_id": "91dd65d7-1b6d-49ab-8235-35b456a0004a", - "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 07c155cf-c491-49fb-8573-10db919568dc" - ] - }, - "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": "1bb442f5-0d59-4f01-9ce0-066b20b8b4a1", - "ref_id": "xccdf_org.ssgproject.content_benchmark_RHEL-7", - "title": "Numquam quo voluptatem vel.", - "version": "100.82.6", - "description": "Quos omnis corporis. Accusantium sapiente temporibus. Fuga officia repellendus.", - "os_major_version": 7, - "type": "security_guide" - }, - { - "id": "37ff2248-36bb-4326-a041-3dff8700a716", - "ref_id": "xccdf_org.ssgproject.content_benchmark_RHEL-7", - "title": "Rem non qui eveniet.", - "version": "100.82.14", - "description": "Rerum blanditiis autem. Consectetur mollitia qui. Labore impedit soluta.", - "os_major_version": 7, - "type": "security_guide" - }, - { - "id": "3de81f54-c649-4a56-b8ce-99199dd83ad1", - "ref_id": "xccdf_org.ssgproject.content_benchmark_RHEL-7", - "title": "Dolores iste commodi repellat.", - "version": "100.82.13", - "description": "Ducimus maxime nesciunt. Maiores possimus doloremque. Rerum dignissimos consequatur.", - "os_major_version": 7, - "type": "security_guide" - }, - { - "id": "547be6c3-f86d-4eef-adc9-311867363545", - "ref_id": "xccdf_org.ssgproject.content_benchmark_RHEL-7", - "title": "Accusamus voluptatem perspiciatis dolores.", - "version": "100.82.17", - "description": "Quia beatae ut. Accusamus ut corrupti. Repellat ut consequuntur.", - "os_major_version": 7, - "type": "security_guide" - }, - { - "id": "564e1a8a-9134-4b31-ba74-09f57f97534e", - "ref_id": "xccdf_org.ssgproject.content_benchmark_RHEL-7", - "title": "Aliquam molestias dolor sit.", - "version": "100.82.7", - "description": "Repellat neque aut. Expedita iusto neque. Qui sed dolore.", - "os_major_version": 7, - "type": "security_guide" - }, - { - "id": "59dd7a81-dcaf-4831-9ff1-0f5e03899e40", - "ref_id": "xccdf_org.ssgproject.content_benchmark_RHEL-7", - "title": "Et qui molestias autem.", - "version": "100.82.1", - "description": "Odit reprehenderit aut. Est magni consequatur. Et magnam reiciendis.", - "os_major_version": 7, - "type": "security_guide" - }, - { - "id": "784d1d13-86cc-4c1f-8012-2f71f256ef6a", - "ref_id": "xccdf_org.ssgproject.content_benchmark_RHEL-7", - "title": "Ipsum corrupti nihil sint.", - "version": "100.81.47", - "description": "Ea minus adipisci. Laboriosam et dolorem. Illum numquam voluptate.", - "os_major_version": 7, - "type": "security_guide" - }, - { - "id": "7d14f199-d550-44bc-8931-32d55cf247be", - "ref_id": "xccdf_org.ssgproject.content_benchmark_RHEL-7", - "title": "Et consequuntur omnis velit.", - "version": "100.82.10", - "description": "Harum fugiat quam. Et sint accusamus. Adipisci deserunt quisquam.", - "os_major_version": 7, - "type": "security_guide" - }, - { - "id": "831d9422-50a2-43df-9062-a5f739a7ec0c", - "ref_id": "xccdf_org.ssgproject.content_benchmark_RHEL-7", - "title": "Autem officia ratione fugit.", - "version": "100.81.48", - "description": "Ea dolor ea. Soluta ut eligendi. Modi dolor laboriosam.", - "os_major_version": 7, - "type": "security_guide" - }, - { - "id": "8ea5eced-aac3-4be5-94a9-8d23a7a11c59", - "ref_id": "xccdf_org.ssgproject.content_benchmark_RHEL-7", - "title": "Earum in enim est.", - "version": "100.82.19", - "description": "Dolorum qui consequatur. Tempore qui repellat. Dolores sint cupiditate.", - "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": "08061444-eab6-416d-be88-a652f9732c7d", - "ref_id": "xccdf_org.ssgproject.content_benchmark_RHEL-7", - "title": "Est eum soluta autem.", - "version": "100.82.43", - "description": "Necessitatibus et dicta. Officia minima enim. Sint et aut.", - "os_major_version": 7, - "type": "security_guide" - }, - { - "id": "13f30d78-2a38-4ffe-969e-10a86fa6a21d", - "ref_id": "xccdf_org.ssgproject.content_benchmark_RHEL-7", - "title": "Nobis unde aut molestiae.", - "version": "100.82.21", - "description": "Saepe amet necessitatibus. Facere enim qui. Et corporis in.", - "os_major_version": 7, - "type": "security_guide" - }, - { - "id": "1fbc80b3-e3ca-42b4-825b-a7c69d9705d7", - "ref_id": "xccdf_org.ssgproject.content_benchmark_RHEL-7", - "title": "Eius eos nobis ut.", - "version": "100.82.37", - "description": "Inventore in omnis. Temporibus non et. Culpa suscipit eaque.", - "os_major_version": 7, - "type": "security_guide" - }, - { - "id": "2330bf62-b95d-40ac-a5ef-3d59f498d958", - "ref_id": "xccdf_org.ssgproject.content_benchmark_RHEL-7", - "title": "Sit dolores voluptatibus nulla.", - "version": "100.82.32", - "description": "Quis assumenda sint. Sed ut atque. A voluptas quisquam.", - "os_major_version": 7, - "type": "security_guide" - }, - { - "id": "2391ab70-b41e-4045-b544-9caa55dca422", - "ref_id": "xccdf_org.ssgproject.content_benchmark_RHEL-7", - "title": "Aut assumenda accusamus architecto.", - "version": "100.82.23", - "description": "Temporibus blanditiis totam. Consequatur rerum rem. Sunt unde sed.", - "os_major_version": 7, - "type": "security_guide" - }, - { - "id": "3eec89cb-7d63-4f99-8ac5-37c2b2906fb9", - "ref_id": "xccdf_org.ssgproject.content_benchmark_RHEL-7", - "title": "Est culpa vitae eius.", - "version": "100.82.42", - "description": "Vel porro id. Ut magni magnam. Repudiandae soluta minus.", - "os_major_version": 7, - "type": "security_guide" - }, - { - "id": "4e76c2e9-f9e8-4699-b94e-441840abcd41", - "ref_id": "xccdf_org.ssgproject.content_benchmark_RHEL-7", - "title": "Sed debitis minus nobis.", - "version": "100.82.34", - "description": "Magnam consequuntur excepturi. Quam neque doloremque. Et voluptatem et.", - "os_major_version": 7, - "type": "security_guide" - }, - { - "id": "533dad4c-b66d-4a0b-be00-47ec1de8169e", - "ref_id": "xccdf_org.ssgproject.content_benchmark_RHEL-7", - "title": "Sequi est iusto vitae.", - "version": "100.82.35", - "description": "Hic ullam similique. Dolores dolore tempora. Dolor et nulla.", - "os_major_version": 7, - "type": "security_guide" - }, - { - "id": "5841e6ea-6cac-4ffd-acb7-c5c12edc9bd9", - "ref_id": "xccdf_org.ssgproject.content_benchmark_RHEL-7", - "title": "Ut qui dolores nemo.", - "version": "100.82.40", - "description": "Enim deserunt et. Numquam commodi qui. Illum quibusdam quia.", - "os_major_version": 7, - "type": "security_guide" - }, - { - "id": "5b49c624-0992-4a5f-86c0-98a791c40f87", - "ref_id": "xccdf_org.ssgproject.content_benchmark_RHEL-7", - "title": "Tenetur eum est animi.", - "version": "100.82.28", - "description": "Voluptatem quaerat nihil. Sit quo corrupti. Et inventore sequi.", - "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": "a2f32164-690e-48da-b33f-eb68e8546a20", - "ref_id": "xccdf_org.ssgproject.content_benchmark_RHEL-7", - "title": "Pariatur esse labore vel.", - "version": "100.84.46", - "description": "Aut autem quo. Voluptatum exercitationem ea. Earum error incidunt.", - "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 c763bd06-aabc-48f5-9b51-3320c2bf41db" - ] - }, - "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": "db7bac32-8045-4cd5-a819-4bc52096335e", - "type": "rule_group", - "children": [ - { - "id": "7637f74a-853e-4486-a9a1-cfac5d502a96", - "type": "rule" - } - ] - }, - { - "id": "316a36e8-7449-4768-a0f6-26ae7c1a86c5", - "type": "rule_group", - "children": [ - { - "id": "fcffebd3-26e0-450c-b25d-586e06187722", - "type": "rule" - } - ] - }, - { - "id": "ecc039b0-a964-4f88-849e-a57e51401375", - "type": "rule_group", - "children": [ - { - "id": "b0f04074-3902-4b43-8c9d-34ba0da6ff80", - "type": "rule" - } - ] - }, - { - "id": "5b21d879-ac6c-48e8-a951-e1ba4c0deafb", - "type": "rule_group", - "children": [ - { - "id": "894c6827-e8f7-4e41-97e1-4aa3878206d0", - "type": "rule" - } - ] - }, - { - "id": "4dfd32e4-5696-416f-9295-98dcdd10977f", - "type": "rule_group", - "children": [ - { - "id": "718e572f-6288-4ca8-9d44-8d1bd0274b55", - "type": "rule" - } - ] - }, - { - "id": "22802c68-1b00-472d-b9bf-868887d8bb89", - "type": "rule_group", - "children": [ - { - "id": "5c2c72fd-b626-48af-85d4-67be814063e6", - "type": "rule" - } - ] - }, - { - "id": "2b49d2ac-3019-41fa-b32d-fed23bf272ca", - "type": "rule_group", - "children": [ - { - "id": "7929170b-0478-4f5e-b540-4f4e8fd6c88f", - "type": "rule" - } - ] - }, - { - "id": "92b4a7de-12fb-435d-89bc-a43ffa407500", - "type": "rule_group", - "children": [ - { - "id": "e2cfa4c4-2db7-4a1c-97a8-1e7b413f7446", - "type": "rule" - } - ] - }, - { - "id": "71fca18d-f6a0-4092-9d6c-a3344dce6b94", - "type": "rule_group", - "children": [ - { - "id": "f9efb361-4c67-4519-850e-00293a271e6b", - "type": "rule" - } - ] - }, - { - "id": "2c49f09d-d710-4fa8-b9f6-8f25d478888f", - "type": "rule_group", - "children": [ - { - "id": "21abaceb-1ab4-460e-abe6-016ed77f9cdd", - "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 4b84b6e2-ee16-4f40-b868-eab24f0aa65d" - ] - }, - "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": "02669ae8-fbf4-432a-b33d-a36ecf993a5a", - "title": "Aperiam sunt perferendis sunt.", - "description": "Voluptatibus officia rerum. Quia recusandae reiciendis. Illum soluta nihil.", - "ref_id": "xccdf_org.ssgproject.content_profile_1ce77e1fc03c8bf202cd608c406c37bb", - "security_guide_id": "f1644a45-a376-47bf-8951-e3e12c343323", - "security_guide_version": "100.85.32", - "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": "10350845-9120-4015-93b8-1cfa7ee88d4e", - "title": "Reiciendis est ducimus voluptatem.", - "description": "Qui enim sit. Sequi porro eligendi. Veritatis fugit incidunt.", - "ref_id": "xccdf_org.ssgproject.content_profile_fda0ecfc2e837d6840447ae139535628", - "security_guide_id": "c7f71bb4-0a76-442f-bc0d-38e5f278f485", - "security_guide_version": "100.85.33", - "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": "0af14c82-e5f7-44b7-993c-8e0394993ee3", - "display_name": "klein.test", - "groups": [], - "culled_timestamp": "2034-12-12T14:44:45.756Z", - "stale_timestamp": "2034-11-28T14:44:45.756Z", - "stale_warning_timestamp": "2034-12-05T14:44:45.756Z", - "updated": "2024-11-28T14:44:45.756Z", - "insights_id": null, - "tags": [ - { - "key": "driver", - "value": "bluetooth", - "namespace": "connecting" - }, - { - "key": "driver", - "value": "wireless", - "namespace": "copying" - }, - { - "key": "microchip", - "value": "mobile", - "namespace": "navigating" - }, - { - "key": "bandwidth", - "value": "open-source", - "namespace": "connecting" - }, - { - "key": "port", - "value": "virtual", - "namespace": "synthesizing" - } - ], - "type": "system", - "os_major_version": 8, - "os_minor_version": 0, - "policies": [] - }, - { - "id": "14b945dc-a61e-4e83-b50b-82f8e4e614a4", - "display_name": "mcdermott.test", - "groups": [], - "culled_timestamp": "2034-12-12T14:44:45.754Z", - "stale_timestamp": "2034-11-28T14:44:45.754Z", - "stale_warning_timestamp": "2034-12-05T14:44:45.754Z", - "updated": "2024-11-28T14:44:45.754Z", - "insights_id": null, - "tags": [ - { - "key": "hard drive", - "value": "open-source", - "namespace": "quantifying" - }, - { - "key": "application", - "value": "primary", - "namespace": "quantifying" - }, - { - "key": "program", - "value": "virtual", - "namespace": "quantifying" - }, - { - "key": "feed", - "value": "1080p", - "namespace": "programming" - }, - { - "key": "monitor", - "value": "back-end", - "namespace": "programming" - } - ], - "type": "system", - "os_major_version": 8, - "os_minor_version": 0, - "policies": [] - }, - { - "id": "1be2d94e-02bd-400c-9663-eacda4418457", - "display_name": "mcdermott-windler.test", - "groups": [], - "culled_timestamp": "2034-12-12T14:44:45.753Z", - "stale_timestamp": "2034-11-28T14:44:45.753Z", - "stale_warning_timestamp": "2034-12-05T14:44:45.753Z", - "updated": "2024-11-28T14:44:45.753Z", - "insights_id": null, - "tags": [ - { - "key": "monitor", - "value": "virtual", - "namespace": "parsing" - }, - { - "key": "monitor", - "value": "wireless", - "namespace": "backing up" - }, - { - "key": "driver", - "value": "solid state", - "namespace": "connecting" - }, - { - "key": "transmitter", - "value": "primary", - "namespace": "hacking" - }, - { - "key": "bandwidth", - "value": "primary", - "namespace": "synthesizing" - } - ], - "type": "system", - "os_major_version": 8, - "os_minor_version": 0, - "policies": [] - }, - { - "id": "2107468c-776d-465f-9c5d-491794e301a1", - "display_name": "veum.example", - "groups": [], - "culled_timestamp": "2034-12-12T14:44:45.760Z", - "stale_timestamp": "2034-11-28T14:44:45.760Z", - "stale_warning_timestamp": "2034-12-05T14:44:45.760Z", - "updated": "2024-11-28T14:44:45.760Z", - "insights_id": null, - "tags": [ - { - "key": "bandwidth", - "value": "wireless", - "namespace": "parsing" - }, - { - "key": "alarm", - "value": "solid state", - "namespace": "compressing" - }, - { - "key": "driver", - "value": "primary", - "namespace": "indexing" - }, - { - "key": "interface", - "value": "neural", - "namespace": "programming" - }, - { - "key": "capacitor", - "value": "online", - "namespace": "generating" - } - ], - "type": "system", - "os_major_version": 8, - "os_minor_version": 0, - "policies": [] - }, - { - "id": "2230669d-1008-425c-9980-3241ba291995", - "display_name": "koelpin.example", - "groups": [], - "culled_timestamp": "2034-12-12T14:44:45.761Z", - "stale_timestamp": "2034-11-28T14:44:45.761Z", - "stale_warning_timestamp": "2034-12-05T14:44:45.761Z", - "updated": "2024-11-28T14:44:45.761Z", - "insights_id": null, - "tags": [ - { - "key": "capacitor", - "value": "neural", - "namespace": "backing up" - }, - { - "key": "matrix", - "value": "multi-byte", - "namespace": "overriding" - }, - { - "key": "bus", - "value": "virtual", - "namespace": "generating" - }, - { - "key": "capacitor", - "value": "haptic", - "namespace": "generating" - }, - { - "key": "array", - "value": "multi-byte", - "namespace": "parsing" - } - ], - "type": "system", - "os_major_version": 8, - "os_minor_version": 0, - "policies": [] - }, - { - "id": "23e41e62-65dd-41f1-87fc-88758dbb31aa", - "display_name": "zemlak.test", - "groups": [], - "culled_timestamp": "2034-12-12T14:44:45.755Z", - "stale_timestamp": "2034-11-28T14:44:45.755Z", - "stale_warning_timestamp": "2034-12-05T14:44:45.755Z", - "updated": "2024-11-28T14:44:45.755Z", - "insights_id": null, - "tags": [ - { - "key": "microchip", - "value": "primary", - "namespace": "synthesizing" - }, - { - "key": "capacitor", - "value": "cross-platform", - "namespace": "backing up" - }, - { - "key": "application", - "value": "multi-byte", - "namespace": "synthesizing" - }, - { - "key": "interface", - "value": "neural", - "namespace": "connecting" - }, - { - "key": "sensor", - "value": "solid state", - "namespace": "quantifying" - } - ], - "type": "system", - "os_major_version": 8, - "os_minor_version": 0, - "policies": [] - }, - { - "id": "273fa47f-4d86-4783-926c-666f8ea53394", - "display_name": "ondricka.test", - "groups": [], - "culled_timestamp": "2034-12-12T14:44:45.749Z", - "stale_timestamp": "2034-11-28T14:44:45.749Z", - "stale_warning_timestamp": "2034-12-05T14:44:45.749Z", - "updated": "2024-11-28T14:44:45.749Z", - "insights_id": null, - "tags": [ - { - "key": "pixel", - "value": "solid state", - "namespace": "parsing" - }, - { - "key": "bandwidth", - "value": "neural", - "namespace": "calculating" - }, - { - "key": "capacitor", - "value": "mobile", - "namespace": "quantifying" - }, - { - "key": "panel", - "value": "cross-platform", - "namespace": "programming" - }, - { - "key": "interface", - "value": "cross-platform", - "namespace": "overriding" - } - ], - "type": "system", - "os_major_version": 8, - "os_minor_version": 0, - "policies": [] - }, - { - "id": "2fdefcfb-85f2-4bff-a90e-dc31d77169db", - "display_name": "fritsch.test", - "groups": [], - "culled_timestamp": "2034-12-12T14:44:45.758Z", - "stale_timestamp": "2034-11-28T14:44:45.758Z", - "stale_warning_timestamp": "2034-12-05T14:44:45.758Z", - "updated": "2024-11-28T14:44:45.758Z", - "insights_id": null, - "tags": [ - { - "key": "application", - "value": "digital", - "namespace": "bypassing" - }, - { - "key": "matrix", - "value": "online", - "namespace": "programming" - }, - { - "key": "port", - "value": "multi-byte", - "namespace": "transmitting" - }, - { - "key": "program", - "value": "wireless", - "namespace": "backing up" - }, - { - "key": "matrix", - "value": "multi-byte", - "namespace": "quantifying" - } - ], - "type": "system", - "os_major_version": 8, - "os_minor_version": 0, - "policies": [] - }, - { - "id": "4347a3ba-cb66-45dc-bc32-abd3c7711e98", - "display_name": "waters.example", - "groups": [], - "culled_timestamp": "2034-12-12T14:44:45.747Z", - "stale_timestamp": "2034-11-28T14:44:45.747Z", - "stale_warning_timestamp": "2034-12-05T14:44:45.747Z", - "updated": "2024-11-28T14:44:45.747Z", - "insights_id": null, - "tags": [ - { - "key": "firewall", - "value": "solid state", - "namespace": "backing up" - }, - { - "key": "alarm", - "value": "digital", - "namespace": "copying" - }, - { - "key": "transmitter", - "value": "haptic", - "namespace": "overriding" - }, - { - "key": "sensor", - "value": "haptic", - "namespace": "quantifying" - }, - { - "key": "capacitor", - "value": "solid state", - "namespace": "hacking" - } - ], - "type": "system", - "os_major_version": 8, - "os_minor_version": 0, - "policies": [] - }, - { - "id": "4a21a90a-3786-46b9-a6f4-e6b0183d661a", - "display_name": "corkery.test", - "groups": [], - "culled_timestamp": "2034-12-12T14:44:45.757Z", - "stale_timestamp": "2034-11-28T14:44:45.757Z", - "stale_warning_timestamp": "2034-12-05T14:44:45.757Z", - "updated": "2024-11-28T14:44:45.757Z", - "insights_id": null, - "tags": [ - { - "key": "monitor", - "value": "open-source", - "namespace": "connecting" - }, - { - "key": "monitor", - "value": "solid state", - "namespace": "overriding" - }, - { - "key": "alarm", - "value": "back-end", - "namespace": "indexing" - }, - { - "key": "application", - "value": "open-source", - "namespace": "indexing" - }, - { - "key": "monitor", - "value": "1080p", - "namespace": "programming" - } - ], - "type": "system", - "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": "18478a70-5916-4e3c-9c57-b568ccdcc094", - "display_name": "stamm-mclaughlin.example", - "groups": [], - "culled_timestamp": "2034-12-12T14:44:45.812Z", - "stale_timestamp": "2034-11-28T14:44:45.812Z", - "stale_warning_timestamp": "2034-12-05T14:44:45.812Z", - "updated": "2024-11-28T14:44:45.812Z", - "insights_id": null, - "tags": [ - { - "key": "driver", - "value": "open-source", - "namespace": "copying" - }, - { - "key": "transmitter", - "value": "back-end", - "namespace": "generating" - }, - { - "key": "card", - "value": "solid state", - "namespace": "overriding" - }, - { - "key": "circuit", - "value": "virtual", - "namespace": "transmitting" - }, - { - "key": "interface", - "value": "bluetooth", - "namespace": "overriding" - } - ], - "type": "system", - "os_major_version": 8, - "os_minor_version": 0, - "policies": [] - }, - { - "id": "1caa0074-bfe4-4191-b238-89eccb42acc2", - "display_name": "kuphal.test", - "groups": [], - "culled_timestamp": "2034-12-12T14:44:45.811Z", - "stale_timestamp": "2034-11-28T14:44:45.811Z", - "stale_warning_timestamp": "2034-12-05T14:44:45.811Z", - "updated": "2024-11-28T14:44:45.811Z", - "insights_id": null, - "tags": [ - { - "key": "transmitter", - "value": "cross-platform", - "namespace": "indexing" - }, - { - "key": "card", - "value": "optical", - "namespace": "indexing" - }, - { - "key": "sensor", - "value": "redundant", - "namespace": "quantifying" - }, - { - "key": "application", - "value": "1080p", - "namespace": "overriding" - }, - { - "key": "pixel", - "value": "neural", - "namespace": "overriding" - } - ], - "type": "system", - "os_major_version": 8, - "os_minor_version": 0, - "policies": [] - }, - { - "id": "331b4221-4b24-43a3-bbfb-894c2925893a", - "display_name": "harber.example", - "groups": [], - "culled_timestamp": "2034-12-12T14:44:45.801Z", - "stale_timestamp": "2034-11-28T14:44:45.801Z", - "stale_warning_timestamp": "2034-12-05T14:44:45.801Z", - "updated": "2024-11-28T14:44:45.801Z", - "insights_id": null, - "tags": [ - { - "key": "feed", - "value": "solid state", - "namespace": "copying" - }, - { - "key": "capacitor", - "value": "redundant", - "namespace": "overriding" - }, - { - "key": "capacitor", - "value": "primary", - "namespace": "overriding" - }, - { - "key": "transmitter", - "value": "digital", - "namespace": "navigating" - }, - { - "key": "firewall", - "value": "bluetooth", - "namespace": "generating" - } - ], - "type": "system", - "os_major_version": 8, - "os_minor_version": 0, - "policies": [] - }, - { - "id": "3d0c315e-1913-4699-bc17-33f87b0df8a6", - "display_name": "hayes.test", - "groups": [], - "culled_timestamp": "2034-12-12T14:44:45.798Z", - "stale_timestamp": "2034-11-28T14:44:45.798Z", - "stale_warning_timestamp": "2034-12-05T14:44:45.798Z", - "updated": "2024-11-28T14:44:45.798Z", - "insights_id": null, - "tags": [ - { - "key": "transmitter", - "value": "open-source", - "namespace": "backing up" - }, - { - "key": "capacitor", - "value": "multi-byte", - "namespace": "synthesizing" - }, - { - "key": "panel", - "value": "open-source", - "namespace": "quantifying" - }, - { - "key": "feed", - "value": "virtual", - "namespace": "connecting" - }, - { - "key": "firewall", - "value": "1080p", - "namespace": "transmitting" - } - ], - "type": "system", - "os_major_version": 8, - "os_minor_version": 0, - "policies": [] - }, - { - "id": "3f41ce07-0dd5-4950-ae82-3d004b0c3e73", - "display_name": "wuckert.test", - "groups": [], - "culled_timestamp": "2034-12-12T14:44:45.788Z", - "stale_timestamp": "2034-11-28T14:44:45.788Z", - "stale_warning_timestamp": "2034-12-05T14:44:45.788Z", - "updated": "2024-11-28T14:44:45.788Z", - "insights_id": null, - "tags": [ - { - "key": "protocol", - "value": "primary", - "namespace": "compressing" - }, - { - "key": "port", - "value": "solid state", - "namespace": "transmitting" - }, - { - "key": "pixel", - "value": "digital", - "namespace": "hacking" - }, - { - "key": "microchip", - "value": "bluetooth", - "namespace": "calculating" - }, - { - "key": "transmitter", - "value": "mobile", - "namespace": "overriding" - } - ], - "type": "system", - "os_major_version": 8, - "os_minor_version": 0, - "policies": [] - }, - { - "id": "4512fd77-dfbb-4bca-9430-df132100fe19", - "display_name": "crist.example", - "groups": [], - "culled_timestamp": "2034-12-12T14:44:45.799Z", - "stale_timestamp": "2034-11-28T14:44:45.799Z", - "stale_warning_timestamp": "2034-12-05T14:44:45.799Z", - "updated": "2024-11-28T14:44:45.799Z", - "insights_id": null, - "tags": [ - { - "key": "array", - "value": "digital", - "namespace": "overriding" - }, - { - "key": "bandwidth", - "value": "haptic", - "namespace": "quantifying" - }, - { - "key": "circuit", - "value": "virtual", - "namespace": "navigating" - }, - { - "key": "program", - "value": "online", - "namespace": "bypassing" - }, - { - "key": "protocol", - "value": "redundant", - "namespace": "programming" - } - ], - "type": "system", - "os_major_version": 8, - "os_minor_version": 0, - "policies": [] - }, - { - "id": "4752f810-e316-41b0-aabd-85531f16c4b0", - "display_name": "medhurst.example", - "groups": [], - "culled_timestamp": "2034-12-12T14:44:45.789Z", - "stale_timestamp": "2034-11-28T14:44:45.789Z", - "stale_warning_timestamp": "2034-12-05T14:44:45.789Z", - "updated": "2024-11-28T14:44:45.789Z", - "insights_id": null, - "tags": [ - { - "key": "driver", - "value": "redundant", - "namespace": "generating" - }, - { - "key": "program", - "value": "redundant", - "namespace": "compressing" - }, - { - "key": "circuit", - "value": "online", - "namespace": "synthesizing" - }, - { - "key": "interface", - "value": "digital", - "namespace": "parsing" - }, - { - "key": "matrix", - "value": "mobile", - "namespace": "transmitting" - } - ], - "type": "system", - "os_major_version": 8, - "os_minor_version": 0, - "policies": [] - }, - { - "id": "52677641-fbcb-4895-958c-062e2056d9e3", - "display_name": "fay-considine.test", - "groups": [], - "culled_timestamp": "2034-12-12T14:44:45.793Z", - "stale_timestamp": "2034-11-28T14:44:45.793Z", - "stale_warning_timestamp": "2034-12-05T14:44:45.793Z", - "updated": "2024-11-28T14:44:45.793Z", - "insights_id": null, - "tags": [ - { - "key": "alarm", - "value": "digital", - "namespace": "compressing" - }, - { - "key": "bus", - "value": "bluetooth", - "namespace": "generating" - }, - { - "key": "bandwidth", - "value": "solid state", - "namespace": "programming" - }, - { - "key": "firewall", - "value": "online", - "namespace": "programming" - }, - { - "key": "firewall", - "value": "back-end", - "namespace": "bypassing" - } - ], - "type": "system", - "os_major_version": 8, - "os_minor_version": 0, - "policies": [] - }, - { - "id": "555150d5-c1ac-459b-b51b-713cf9b988f7", - "display_name": "waelchi-pollich.example", - "groups": [], - "culled_timestamp": "2034-12-12T14:44:45.800Z", - "stale_timestamp": "2034-11-28T14:44:45.800Z", - "stale_warning_timestamp": "2034-12-05T14:44:45.800Z", - "updated": "2024-11-28T14:44:45.800Z", - "insights_id": null, - "tags": [ - { - "key": "bus", - "value": "auxiliary", - "namespace": "indexing" - }, - { - "key": "feed", - "value": "bluetooth", - "namespace": "copying" - }, - { - "key": "driver", - "value": "open-source", - "namespace": "programming" - }, - { - "key": "interface", - "value": "back-end", - "namespace": "overriding" - }, - { - "key": "array", - "value": "digital", - "namespace": "bypassing" - } - ], - "type": "system", - "os_major_version": 8, - "os_minor_version": 0, - "policies": [] - }, - { - "id": "5d6c8c81-5cfe-4002-af41-e2b9e6a98e82", - "display_name": "murphy.example", - "groups": [], - "culled_timestamp": "2034-12-12T14:44:45.794Z", - "stale_timestamp": "2034-11-28T14:44:45.794Z", - "stale_warning_timestamp": "2034-12-05T14:44:45.794Z", - "updated": "2024-11-28T14:44:45.794Z", - "insights_id": null, - "tags": [ - { - "key": "monitor", - "value": "virtual", - "namespace": "compressing" - }, - { - "key": "program", - "value": "back-end", - "namespace": "programming" - }, - { - "key": "transmitter", - "value": "bluetooth", - "namespace": "copying" - }, - { - "key": "program", - "value": "online", - "namespace": "transmitting" - }, - { - "key": "interface", - "value": "auxiliary", - "namespace": "generating" - } - ], - "type": "system", - "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": "0aff5551-0155-44de-b736-9e744d0d8128", - "display_name": "lebsack.example", - "groups": [], - "culled_timestamp": "2034-12-12T14:44:45.844Z", - "stale_timestamp": "2034-11-28T14:44:45.844Z", - "stale_warning_timestamp": "2034-12-05T14:44:45.844Z", - "updated": "2024-11-28T14:44:45.844Z", - "insights_id": null, - "tags": [ - { - "key": "alarm", - "value": "open-source", - "namespace": "indexing" - }, - { - "key": "system", - "value": "bluetooth", - "namespace": "bypassing" - }, - { - "key": "matrix", - "value": "open-source", - "namespace": "indexing" - }, - { - "key": "bandwidth", - "value": "optical", - "namespace": "compressing" - }, - { - "key": "sensor", - "value": "redundant", - "namespace": "backing up" - } - ], - "type": "system", - "os_major_version": 8, - "os_minor_version": 0, - "policies": [] - }, - { - "id": "0e33315a-16d3-422c-89be-a7b5ad0acaea", - "display_name": "corkery.example", - "groups": [], - "culled_timestamp": "2034-12-12T14:44:45.833Z", - "stale_timestamp": "2034-11-28T14:44:45.833Z", - "stale_warning_timestamp": "2034-12-05T14:44:45.833Z", - "updated": "2024-11-28T14:44:45.833Z", - "insights_id": null, - "tags": [ - { - "key": "interface", - "value": "open-source", - "namespace": "synthesizing" - }, - { - "key": "bandwidth", - "value": "multi-byte", - "namespace": "programming" - }, - { - "key": "port", - "value": "redundant", - "namespace": "connecting" - }, - { - "key": "bandwidth", - "value": "online", - "namespace": "synthesizing" - }, - { - "key": "circuit", - "value": "multi-byte", - "namespace": "hacking" - } - ], - "type": "system", - "os_major_version": 8, - "os_minor_version": 0, - "policies": [] - }, - { - "id": "13c5693c-4c07-4edf-9130-725383253b2d", - "display_name": "kshlerin.test", - "groups": [], - "culled_timestamp": "2034-12-12T14:44:45.838Z", - "stale_timestamp": "2034-11-28T14:44:45.838Z", - "stale_warning_timestamp": "2034-12-05T14:44:45.838Z", - "updated": "2024-11-28T14:44:45.838Z", - "insights_id": null, - "tags": [ - { - "key": "feed", - "value": "multi-byte", - "namespace": "backing up" - }, - { - "key": "feed", - "value": "back-end", - "namespace": "hacking" - }, - { - "key": "capacitor", - "value": "auxiliary", - "namespace": "programming" - }, - { - "key": "port", - "value": "open-source", - "namespace": "transmitting" - }, - { - "key": "microchip", - "value": "open-source", - "namespace": "parsing" - } - ], - "type": "system", - "os_major_version": 8, - "os_minor_version": 0, - "policies": [] - }, - { - "id": "23d8e2c2-432d-4f1c-8084-90f444286b76", - "display_name": "konopelski.test", - "groups": [], - "culled_timestamp": "2034-12-12T14:44:45.842Z", - "stale_timestamp": "2034-11-28T14:44:45.842Z", - "stale_warning_timestamp": "2034-12-05T14:44:45.842Z", - "updated": "2024-11-28T14:44:45.842Z", - "insights_id": null, - "tags": [ - { - "key": "capacitor", - "value": "digital", - "namespace": "calculating" - }, - { - "key": "bandwidth", - "value": "primary", - "namespace": "indexing" - }, - { - "key": "application", - "value": "neural", - "namespace": "hacking" - }, - { - "key": "application", - "value": "back-end", - "namespace": "calculating" - }, - { - "key": "application", - "value": "multi-byte", - "namespace": "overriding" - } - ], - "type": "system", - "os_major_version": 8, - "os_minor_version": 0, - "policies": [] - }, - { - "id": "242505cd-fa83-4d72-ac3e-664317f81de7", - "display_name": "emard.test", - "groups": [], - "culled_timestamp": "2034-12-12T14:44:45.840Z", - "stale_timestamp": "2034-11-28T14:44:45.840Z", - "stale_warning_timestamp": "2034-12-05T14:44:45.840Z", - "updated": "2024-11-28T14:44:45.840Z", - "insights_id": null, - "tags": [ - { - "key": "feed", - "value": "mobile", - "namespace": "copying" - }, - { - "key": "array", - "value": "optical", - "namespace": "compressing" - }, - { - "key": "circuit", - "value": "open-source", - "namespace": "programming" - }, - { - "key": "microchip", - "value": "optical", - "namespace": "programming" - }, - { - "key": "hard drive", - "value": "bluetooth", - "namespace": "navigating" - } - ], - "type": "system", - "os_major_version": 8, - "os_minor_version": 0, - "policies": [] - }, - { - "id": "29ebee90-afb3-4899-942a-d563aa182318", - "display_name": "emmerich.example", - "groups": [], - "culled_timestamp": "2034-12-12T14:44:45.847Z", - "stale_timestamp": "2034-11-28T14:44:45.847Z", - "stale_warning_timestamp": "2034-12-05T14:44:45.847Z", - "updated": "2024-11-28T14:44:45.847Z", - "insights_id": null, - "tags": [ - { - "key": "capacitor", - "value": "multi-byte", - "namespace": "hacking" - }, - { - "key": "hard drive", - "value": "open-source", - "namespace": "quantifying" - }, - { - "key": "microchip", - "value": "multi-byte", - "namespace": "calculating" - }, - { - "key": "program", - "value": "back-end", - "namespace": "hacking" - }, - { - "key": "port", - "value": "redundant", - "namespace": "transmitting" - } - ], - "type": "system", - "os_major_version": 8, - "os_minor_version": 0, - "policies": [] - }, - { - "id": "35f46c64-d646-41e7-8b9c-6b9576602489", - "display_name": "schowalter-graham.example", - "groups": [], - "culled_timestamp": "2034-12-12T14:44:45.849Z", - "stale_timestamp": "2034-11-28T14:44:45.849Z", - "stale_warning_timestamp": "2034-12-05T14:44:45.849Z", - "updated": "2024-11-28T14:44:45.849Z", - "insights_id": null, - "tags": [ - { - "key": "feed", - "value": "mobile", - "namespace": "parsing" - }, - { - "key": "panel", - "value": "neural", - "namespace": "calculating" - }, - { - "key": "transmitter", - "value": "digital", - "namespace": "quantifying" - }, - { - "key": "panel", - "value": "digital", - "namespace": "programming" - }, - { - "key": "protocol", - "value": "primary", - "namespace": "backing up" - } - ], - "type": "system", - "os_major_version": 8, - "os_minor_version": 0, - "policies": [] - }, - { - "id": "36368d5b-a95a-4061-a9b7-2a68b24f3de0", - "display_name": "johns-schoen.example", - "groups": [], - "culled_timestamp": "2034-12-12T14:44:45.848Z", - "stale_timestamp": "2034-11-28T14:44:45.848Z", - "stale_warning_timestamp": "2034-12-05T14:44:45.848Z", - "updated": "2024-11-28T14:44:45.848Z", - "insights_id": null, - "tags": [ - { - "key": "feed", - "value": "digital", - "namespace": "calculating" - }, - { - "key": "monitor", - "value": "redundant", - "namespace": "calculating" - }, - { - "key": "capacitor", - "value": "open-source", - "namespace": "copying" - }, - { - "key": "transmitter", - "value": "online", - "namespace": "connecting" - }, - { - "key": "program", - "value": "solid state", - "namespace": "compressing" - } - ], - "type": "system", - "os_major_version": 8, - "os_minor_version": 0, - "policies": [] - }, - { - "id": "48ba339a-8ebe-47a4-aee8-979fb7703b7a", - "display_name": "kunze-jones.example", - "groups": [], - "culled_timestamp": "2034-12-12T14:44:45.839Z", - "stale_timestamp": "2034-11-28T14:44:45.839Z", - "stale_warning_timestamp": "2034-12-05T14:44:45.839Z", - "updated": "2024-11-28T14:44:45.839Z", - "insights_id": null, - "tags": [ - { - "key": "bandwidth", - "value": "solid state", - "namespace": "bypassing" - }, - { - "key": "panel", - "value": "cross-platform", - "namespace": "generating" - }, - { - "key": "capacitor", - "value": "1080p", - "namespace": "navigating" - }, - { - "key": "transmitter", - "value": "open-source", - "namespace": "generating" - }, - { - "key": "sensor", - "value": "back-end", - "namespace": "bypassing" - } - ], - "type": "system", - "os_major_version": 8, - "os_minor_version": 0, - "policies": [] - }, - { - "id": "5ad2d160-87f7-44a8-a27c-2e3af8d95cef", - "display_name": "shanahan.test", - "groups": [], - "culled_timestamp": "2034-12-12T14:44:45.832Z", - "stale_timestamp": "2034-11-28T14:44:45.832Z", - "stale_warning_timestamp": "2034-12-05T14:44:45.832Z", - "updated": "2024-11-28T14:44:45.832Z", - "insights_id": null, - "tags": [ - { - "key": "firewall", - "value": "neural", - "namespace": "transmitting" - }, - { - "key": "pixel", - "value": "wireless", - "namespace": "bypassing" - }, - { - "key": "application", - "value": "mobile", - "namespace": "hacking" - }, - { - "key": "sensor", - "value": "virtual", - "namespace": "parsing" - }, - { - "key": "program", - "value": "auxiliary", - "namespace": "bypassing" - } - ], - "type": "system", - "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": "6979dd8f-b684-47f7-8f78-2fd5f2bf9d4c", - "display_name": "muller.example", - "groups": [], - "culled_timestamp": "2034-12-12T14:44:45.973Z", - "stale_timestamp": "2034-11-28T14:44:45.973Z", - "stale_warning_timestamp": "2034-12-05T14:44:45.973Z", - "updated": "2024-11-28T14:44:45.973Z", - "insights_id": null, - "tags": [ - { - "key": "driver", - "value": "auxiliary", - "namespace": "indexing" - }, - { - "key": "panel", - "value": "solid state", - "namespace": "hacking" - }, - { - "key": "hard drive", - "value": "online", - "namespace": "synthesizing" - }, - { - "key": "application", - "value": "online", - "namespace": "overriding" - }, - { - "key": "feed", - "value": "auxiliary", - "namespace": "transmitting" - } - ], - "type": "system", - "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 3b838870-8634-4294-8e87-686511d98193" - ] - }, - "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": "0107d137-89dd-4c27-b90a-6e99da598af8", - "display_name": "paucek.example", - "groups": [], - "culled_timestamp": "2034-12-12T14:44:46.140Z", - "stale_timestamp": "2034-11-28T14:44:46.140Z", - "stale_warning_timestamp": "2034-12-05T14:44:46.140Z", - "updated": "2024-11-28T14:44:46.140Z", - "insights_id": null, - "tags": [ - { - "key": "microchip", - "value": "mobile", - "namespace": "backing up" - }, - { - "key": "capacitor", - "value": "1080p", - "namespace": "hacking" - }, - { - "key": "firewall", - "value": "solid state", - "namespace": "generating" - }, - { - "key": "interface", - "value": "cross-platform", - "namespace": "backing up" - }, - { - "key": "capacitor", - "value": "digital", - "namespace": "navigating" - } - ], - "type": "system", - "os_major_version": 8, - "os_minor_version": 0 - }, - { - "id": "07bf2f70-e8f6-4e28-8bc9-163b694b4d3b", - "display_name": "gibson.example", - "groups": [], - "culled_timestamp": "2034-12-12T14:44:46.086Z", - "stale_timestamp": "2034-11-28T14:44:46.086Z", - "stale_warning_timestamp": "2034-12-05T14:44:46.086Z", - "updated": "2024-11-28T14:44:46.086Z", - "insights_id": null, - "tags": [ - { - "key": "driver", - "value": "haptic", - "namespace": "bypassing" - }, - { - "key": "alarm", - "value": "digital", - "namespace": "copying" - }, - { - "key": "panel", - "value": "cross-platform", - "namespace": "hacking" - }, - { - "key": "circuit", - "value": "cross-platform", - "namespace": "hacking" - }, - { - "key": "matrix", - "value": "wireless", - "namespace": "generating" - } - ], - "type": "system", - "os_major_version": 8, - "os_minor_version": 0 - }, - { - "id": "12c47d00-78ae-4dc8-a6c4-8ceee17ddb0a", - "display_name": "schultz.test", - "groups": [], - "culled_timestamp": "2034-12-12T14:44:46.037Z", - "stale_timestamp": "2034-11-28T14:44:46.037Z", - "stale_warning_timestamp": "2034-12-05T14:44:46.037Z", - "updated": "2024-11-28T14:44:46.037Z", - "insights_id": null, - "tags": [ - { - "key": "alarm", - "value": "neural", - "namespace": "backing up" - }, - { - "key": "bus", - "value": "optical", - "namespace": "hacking" - }, - { - "key": "matrix", - "value": "cross-platform", - "namespace": "backing up" - }, - { - "key": "panel", - "value": "1080p", - "namespace": "generating" - }, - { - "key": "pixel", - "value": "back-end", - "namespace": "overriding" - } - ], - "type": "system", - "os_major_version": 8, - "os_minor_version": 0 - }, - { - "id": "3b863926-7476-40d7-a52b-31219070c7e8", - "display_name": "kozey.example", - "groups": [], - "culled_timestamp": "2034-12-12T14:44:46.133Z", - "stale_timestamp": "2034-11-28T14:44:46.133Z", - "stale_warning_timestamp": "2034-12-05T14:44:46.133Z", - "updated": "2024-11-28T14:44:46.133Z", - "insights_id": null, - "tags": [ - { - "key": "matrix", - "value": "redundant", - "namespace": "backing up" - }, - { - "key": "feed", - "value": "virtual", - "namespace": "copying" - }, - { - "key": "application", - "value": "auxiliary", - "namespace": "connecting" - }, - { - "key": "application", - "value": "optical", - "namespace": "parsing" - }, - { - "key": "transmitter", - "value": "optical", - "namespace": "transmitting" - } - ], - "type": "system", - "os_major_version": 8, - "os_minor_version": 0 - }, - { - "id": "421fe28e-f8ee-44cf-b24d-be295d351e90", - "display_name": "oreilly.example", - "groups": [], - "culled_timestamp": "2034-12-12T14:44:46.027Z", - "stale_timestamp": "2034-11-28T14:44:46.027Z", - "stale_warning_timestamp": "2034-12-05T14:44:46.027Z", - "updated": "2024-11-28T14:44:46.027Z", - "insights_id": null, - "tags": [ - { - "key": "transmitter", - "value": "1080p", - "namespace": "hacking" - }, - { - "key": "protocol", - "value": "primary", - "namespace": "hacking" - }, - { - "key": "sensor", - "value": "open-source", - "namespace": "parsing" - }, - { - "key": "matrix", - "value": "neural", - "namespace": "programming" - }, - { - "key": "alarm", - "value": "online", - "namespace": "generating" - } - ], - "type": "system", - "os_major_version": 8, - "os_minor_version": 0 - }, - { - "id": "5e2e4fc2-9946-4794-a3e0-8fc93b5be6d9", - "display_name": "rowe.test", - "groups": [], - "culled_timestamp": "2034-12-12T14:44:46.032Z", - "stale_timestamp": "2034-11-28T14:44:46.032Z", - "stale_warning_timestamp": "2034-12-05T14:44:46.032Z", - "updated": "2024-11-28T14:44:46.032Z", - "insights_id": null, - "tags": [ - { - "key": "alarm", - "value": "virtual", - "namespace": "overriding" - }, - { - "key": "transmitter", - "value": "back-end", - "namespace": "backing up" - }, - { - "key": "alarm", - "value": "virtual", - "namespace": "programming" - }, - { - "key": "card", - "value": "optical", - "namespace": "parsing" - }, - { - "key": "pixel", - "value": "mobile", - "namespace": "hacking" - } - ], - "type": "system", - "os_major_version": 8, - "os_minor_version": 0 - }, - { - "id": "61f98e4d-41c4-4517-bbd5-4a71cf3de699", - "display_name": "thiel.test", - "groups": [], - "culled_timestamp": "2034-12-12T14:44:46.123Z", - "stale_timestamp": "2034-11-28T14:44:46.123Z", - "stale_warning_timestamp": "2034-12-05T14:44:46.123Z", - "updated": "2024-11-28T14:44:46.123Z", - "insights_id": null, - "tags": [ - { - "key": "microchip", - "value": "primary", - "namespace": "hacking" - }, - { - "key": "firewall", - "value": "digital", - "namespace": "compressing" - }, - { - "key": "feed", - "value": "virtual", - "namespace": "bypassing" - }, - { - "key": "protocol", - "value": "redundant", - "namespace": "calculating" - }, - { - "key": "driver", - "value": "optical", - "namespace": "bypassing" - } - ], - "type": "system", - "os_major_version": 8, - "os_minor_version": 0 - }, - { - "id": "648b262c-af90-4c43-8048-358a54abd84a", - "display_name": "batz.example", - "groups": [], - "culled_timestamp": "2034-12-12T14:44:46.062Z", - "stale_timestamp": "2034-11-28T14:44:46.062Z", - "stale_warning_timestamp": "2034-12-05T14:44:46.062Z", - "updated": "2024-11-28T14:44:46.062Z", - "insights_id": null, - "tags": [ - { - "key": "microchip", - "value": "haptic", - "namespace": "compressing" - }, - { - "key": "system", - "value": "virtual", - "namespace": "copying" - }, - { - "key": "bus", - "value": "optical", - "namespace": "generating" - }, - { - "key": "hard drive", - "value": "virtual", - "namespace": "overriding" - }, - { - "key": "port", - "value": "cross-platform", - "namespace": "parsing" - } - ], - "type": "system", - "os_major_version": 8, - "os_minor_version": 0 - }, - { - "id": "689f858a-b5c1-47dd-bc9b-51f18ab1f130", - "display_name": "grimes-fahey.example", - "groups": [], - "culled_timestamp": "2034-12-12T14:44:46.097Z", - "stale_timestamp": "2034-11-28T14:44:46.097Z", - "stale_warning_timestamp": "2034-12-05T14:44:46.097Z", - "updated": "2024-11-28T14:44:46.097Z", - "insights_id": null, - "tags": [ - { - "key": "panel", - "value": "redundant", - "namespace": "programming" - }, - { - "key": "card", - "value": "virtual", - "namespace": "bypassing" - }, - { - "key": "program", - "value": "redundant", - "namespace": "quantifying" - }, - { - "key": "array", - "value": "optical", - "namespace": "compressing" - }, - { - "key": "circuit", - "value": "digital", - "namespace": "navigating" - } - ], - "type": "system", - "os_major_version": 8, - "os_minor_version": 0 - }, - { - "id": "70395f63-be94-4b63-a031-127be7047946", - "display_name": "rempel.test", - "groups": [], - "culled_timestamp": "2034-12-12T14:44:46.080Z", - "stale_timestamp": "2034-11-28T14:44:46.080Z", - "stale_warning_timestamp": "2034-12-05T14:44:46.080Z", - "updated": "2024-11-28T14:44:46.081Z", - "insights_id": null, - "tags": [ - { - "key": "array", - "value": "online", - "namespace": "transmitting" - }, - { - "key": "firewall", - "value": "open-source", - "namespace": "quantifying" - }, - { - "key": "card", - "value": "haptic", - "namespace": "programming" - }, - { - "key": "alarm", - "value": "optical", - "namespace": "transmitting" - }, - { - "key": "array", - "value": "virtual", - "namespace": "generating" - } - ], - "type": "system", - "os_major_version": 8, - "os_minor_version": 0 - } - ], - "meta": { - "total": 25, - "tags": [], - "limit": 10, - "offset": 0 - }, - "links": { - "first": "/api/compliance/v2/policies/c3d9e5cf-7991-447f-bddd-399b20577544/systems?limit=10&offset=0", - "last": "/api/compliance/v2/policies/c3d9e5cf-7991-447f-bddd-399b20577544/systems?limit=10&offset=20", - "next": "/api/compliance/v2/policies/c3d9e5cf-7991-447f-bddd-399b20577544/systems?limit=10&offset=10" - } - }, - "summary": "", - "description": "" - }, - "List of Systems sorted by \"os_minor_version:asc\"": { - "value": { - "data": [ - { - "id": "03322a6e-fa62-4f2a-b15d-3f55532e61d9", - "display_name": "veum.test", - "groups": [], - "culled_timestamp": "2034-12-12T14:44:46.185Z", - "stale_timestamp": "2034-11-28T14:44:46.185Z", - "stale_warning_timestamp": "2034-12-05T14:44:46.185Z", - "updated": "2024-11-28T14:44:46.185Z", - "insights_id": null, - "tags": [ - { - "key": "circuit", - "value": "open-source", - "namespace": "quantifying" - }, - { - "key": "panel", - "value": "back-end", - "namespace": "navigating" - }, - { - "key": "pixel", - "value": "multi-byte", - "namespace": "backing up" - }, - { - "key": "capacitor", - "value": "haptic", - "namespace": "backing up" - }, - { - "key": "transmitter", - "value": "online", - "namespace": "backing up" - } - ], - "type": "system", - "os_major_version": 8, - "os_minor_version": 0 - }, - { - "id": "0a3abab4-5770-4d00-8b8d-76865e0357f6", - "display_name": "daniel.example", - "groups": [], - "culled_timestamp": "2034-12-12T14:44:46.218Z", - "stale_timestamp": "2034-11-28T14:44:46.218Z", - "stale_warning_timestamp": "2034-12-05T14:44:46.218Z", - "updated": "2024-11-28T14:44:46.218Z", - "insights_id": null, - "tags": [ - { - "key": "interface", - "value": "open-source", - "namespace": "copying" - }, - { - "key": "system", - "value": "1080p", - "namespace": "transmitting" - }, - { - "key": "system", - "value": "virtual", - "namespace": "calculating" - }, - { - "key": "sensor", - "value": "1080p", - "namespace": "generating" - }, - { - "key": "system", - "value": "digital", - "namespace": "programming" - } - ], - "type": "system", - "os_major_version": 8, - "os_minor_version": 0 - }, - { - "id": "0b5ac282-fc62-4941-b156-456af9397b37", - "display_name": "davis.test", - "groups": [], - "culled_timestamp": "2034-12-12T14:44:46.179Z", - "stale_timestamp": "2034-11-28T14:44:46.179Z", - "stale_warning_timestamp": "2034-12-05T14:44:46.179Z", - "updated": "2024-11-28T14:44:46.180Z", - "insights_id": null, - "tags": [ - { - "key": "alarm", - "value": "1080p", - "namespace": "connecting" - }, - { - "key": "protocol", - "value": "digital", - "namespace": "navigating" - }, - { - "key": "microchip", - "value": "1080p", - "namespace": "calculating" - }, - { - "key": "panel", - "value": "virtual", - "namespace": "navigating" - }, - { - "key": "system", - "value": "neural", - "namespace": "calculating" - } - ], - "type": "system", - "os_major_version": 8, - "os_minor_version": 0 - }, - { - "id": "3123ab77-506d-4656-9ed5-c44c0baf968d", - "display_name": "treutel-jenkins.example", - "groups": [], - "culled_timestamp": "2034-12-12T14:44:46.262Z", - "stale_timestamp": "2034-11-28T14:44:46.262Z", - "stale_warning_timestamp": "2034-12-05T14:44:46.262Z", - "updated": "2024-11-28T14:44:46.262Z", - "insights_id": null, - "tags": [ - { - "key": "capacitor", - "value": "wireless", - "namespace": "overriding" - }, - { - "key": "driver", - "value": "solid state", - "namespace": "compressing" - }, - { - "key": "microchip", - "value": "wireless", - "namespace": "parsing" - }, - { - "key": "feed", - "value": "bluetooth", - "namespace": "bypassing" - }, - { - "key": "firewall", - "value": "wireless", - "namespace": "navigating" - } - ], - "type": "system", - "os_major_version": 8, - "os_minor_version": 0 - }, - { - "id": "35008bba-dc02-41c7-a79f-154adf612e15", - "display_name": "donnelly.example", - "groups": [], - "culled_timestamp": "2034-12-12T14:44:46.267Z", - "stale_timestamp": "2034-11-28T14:44:46.267Z", - "stale_warning_timestamp": "2034-12-05T14:44:46.267Z", - "updated": "2024-11-28T14:44:46.267Z", - "insights_id": null, - "tags": [ - { - "key": "bandwidth", - "value": "neural", - "namespace": "indexing" - }, - { - "key": "card", - "value": "mobile", - "namespace": "synthesizing" - }, - { - "key": "pixel", - "value": "open-source", - "namespace": "calculating" - }, - { - "key": "application", - "value": "mobile", - "namespace": "overriding" - }, - { - "key": "bus", - "value": "open-source", - "namespace": "transmitting" - } - ], - "type": "system", - "os_major_version": 8, - "os_minor_version": 0 - }, - { - "id": "3c6ea95c-88ce-46ae-b38a-832f3db0afd1", - "display_name": "gusikowski.test", - "groups": [], - "culled_timestamp": "2034-12-12T14:44:46.213Z", - "stale_timestamp": "2034-11-28T14:44:46.213Z", - "stale_warning_timestamp": "2034-12-05T14:44:46.213Z", - "updated": "2024-11-28T14:44:46.213Z", - "insights_id": null, - "tags": [ - { - "key": "transmitter", - "value": "primary", - "namespace": "programming" - }, - { - "key": "circuit", - "value": "redundant", - "namespace": "copying" - }, - { - "key": "driver", - "value": "digital", - "namespace": "backing up" - }, - { - "key": "card", - "value": "auxiliary", - "namespace": "transmitting" - }, - { - "key": "program", - "value": "auxiliary", - "namespace": "navigating" - } - ], - "type": "system", - "os_major_version": 8, - "os_minor_version": 0 - }, - { - "id": "41c3471a-b47e-4ef8-944d-27aa7313fb70", - "display_name": "kautzer.test", - "groups": [], - "culled_timestamp": "2034-12-12T14:44:46.272Z", - "stale_timestamp": "2034-11-28T14:44:46.272Z", - "stale_warning_timestamp": "2034-12-05T14:44:46.272Z", - "updated": "2024-11-28T14:44:46.272Z", - "insights_id": null, - "tags": [ - { - "key": "hard drive", - "value": "cross-platform", - "namespace": "navigating" - }, - { - "key": "pixel", - "value": "optical", - "namespace": "overriding" - }, - { - "key": "protocol", - "value": "digital", - "namespace": "transmitting" - }, - { - "key": "array", - "value": "solid state", - "namespace": "quantifying" - }, - { - "key": "bandwidth", - "value": "solid state", - "namespace": "backing up" - } - ], - "type": "system", - "os_major_version": 8, - "os_minor_version": 0 - }, - { - "id": "43f28e36-ad6b-4498-a596-93b5c2f1c987", - "display_name": "ratke-lowe.example", - "groups": [], - "culled_timestamp": "2034-12-12T14:44:46.165Z", - "stale_timestamp": "2034-11-28T14:44:46.165Z", - "stale_warning_timestamp": "2034-12-05T14:44:46.165Z", - "updated": "2024-11-28T14:44:46.165Z", - "insights_id": null, - "tags": [ - { - "key": "firewall", - "value": "haptic", - "namespace": "indexing" - }, - { - "key": "alarm", - "value": "mobile", - "namespace": "synthesizing" - }, - { - "key": "bandwidth", - "value": "wireless", - "namespace": "synthesizing" - }, - { - "key": "bus", - "value": "digital", - "namespace": "parsing" - }, - { - "key": "port", - "value": "solid state", - "namespace": "indexing" - } - ], - "type": "system", - "os_major_version": 8, - "os_minor_version": 0 - }, - { - "id": "566e71ef-3ef6-4784-be7a-6d28d6dd5059", - "display_name": "stehr.test", - "groups": [], - "culled_timestamp": "2034-12-12T14:44:46.232Z", - "stale_timestamp": "2034-11-28T14:44:46.232Z", - "stale_warning_timestamp": "2034-12-05T14:44:46.232Z", - "updated": "2024-11-28T14:44:46.232Z", - "insights_id": null, - "tags": [ - { - "key": "firewall", - "value": "mobile", - "namespace": "parsing" - }, - { - "key": "alarm", - "value": "bluetooth", - "namespace": "generating" - }, - { - "key": "program", - "value": "virtual", - "namespace": "bypassing" - }, - { - "key": "application", - "value": "open-source", - "namespace": "programming" - }, - { - "key": "hard drive", - "value": "wireless", - "namespace": "bypassing" - } - ], - "type": "system", - "os_major_version": 8, - "os_minor_version": 0 - }, - { - "id": "5bb8f828-d4a0-41e8-b9bf-7008641a441a", - "display_name": "skiles-wolf.example", - "groups": [], - "culled_timestamp": "2034-12-12T14:44:46.286Z", - "stale_timestamp": "2034-11-28T14:44:46.286Z", - "stale_warning_timestamp": "2034-12-05T14:44:46.286Z", - "updated": "2024-11-28T14:44:46.286Z", - "insights_id": null, - "tags": [ - { - "key": "pixel", - "value": "haptic", - "namespace": "quantifying" - }, - { - "key": "sensor", - "value": "virtual", - "namespace": "hacking" - }, - { - "key": "microchip", - "value": "redundant", - "namespace": "navigating" - }, - { - "key": "port", - "value": "cross-platform", - "namespace": "quantifying" - }, - { - "key": "microchip", - "value": "haptic", - "namespace": "synthesizing" - } - ], - "type": "system", - "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/120bddec-074c-416d-8032-951e887a1a8b/systems?limit=10&offset=0&sort_by=os_minor_version", - "last": "/api/compliance/v2/policies/120bddec-074c-416d-8032-951e887a1a8b/systems?limit=10&offset=20&sort_by=os_minor_version", - "next": "/api/compliance/v2/policies/120bddec-074c-416d-8032-951e887a1a8b/systems?limit=10&offset=10&sort_by=os_minor_version" - } - }, - "summary": "", - "description": "" - }, - "List of Systems filtered by \"(os_minor_version=0)\"": { - "value": { - "data": [ - { - "id": "1964216d-7255-443f-b0b9-a12b4afa7e52", - "display_name": "pfannerstill.test", - "groups": [], - "culled_timestamp": "2034-12-12T14:44:46.335Z", - "stale_timestamp": "2034-11-28T14:44:46.335Z", - "stale_warning_timestamp": "2034-12-05T14:44:46.335Z", - "updated": "2024-11-28T14:44:46.335Z", - "insights_id": null, - "tags": [ - { - "key": "hard drive", - "value": "multi-byte", - "namespace": "overriding" - }, - { - "key": "bandwidth", - "value": "virtual", - "namespace": "generating" - }, - { - "key": "pixel", - "value": "primary", - "namespace": "calculating" - }, - { - "key": "bandwidth", - "value": "haptic", - "namespace": "calculating" - }, - { - "key": "capacitor", - "value": "haptic", - "namespace": "quantifying" - } - ], - "type": "system", - "os_major_version": 8, - "os_minor_version": 0 - }, - { - "id": "2459efd8-e868-404b-b040-5391618c5b26", - "display_name": "tremblay-cartwright.test", - "groups": [], - "culled_timestamp": "2034-12-12T14:44:46.345Z", - "stale_timestamp": "2034-11-28T14:44:46.345Z", - "stale_warning_timestamp": "2034-12-05T14:44:46.345Z", - "updated": "2024-11-28T14:44:46.345Z", - "insights_id": null, - "tags": [ - { - "key": "panel", - "value": "redundant", - "namespace": "generating" - }, - { - "key": "alarm", - "value": "solid state", - "namespace": "programming" - }, - { - "key": "system", - "value": "primary", - "namespace": "copying" - }, - { - "key": "application", - "value": "solid state", - "namespace": "indexing" - }, - { - "key": "alarm", - "value": "bluetooth", - "namespace": "transmitting" - } - ], - "type": "system", - "os_major_version": 8, - "os_minor_version": 0 - }, - { - "id": "2950c30d-a125-4b93-a112-392c4871daab", - "display_name": "sanford.example", - "groups": [], - "culled_timestamp": "2034-12-12T14:44:46.364Z", - "stale_timestamp": "2034-11-28T14:44:46.364Z", - "stale_warning_timestamp": "2034-12-05T14:44:46.364Z", - "updated": "2024-11-28T14:44:46.364Z", - "insights_id": null, - "tags": [ - { - "key": "firewall", - "value": "1080p", - "namespace": "synthesizing" - }, - { - "key": "matrix", - "value": "haptic", - "namespace": "quantifying" - }, - { - "key": "interface", - "value": "bluetooth", - "namespace": "backing up" - }, - { - "key": "bandwidth", - "value": "solid state", - "namespace": "bypassing" - }, - { - "key": "microchip", - "value": "virtual", - "namespace": "quantifying" - } - ], - "type": "system", - "os_major_version": 8, - "os_minor_version": 0 - }, - { - "id": "3bf38124-2c70-4749-a2ad-9737d8acf297", - "display_name": "tremblay.test", - "groups": [], - "culled_timestamp": "2034-12-12T14:44:46.411Z", - "stale_timestamp": "2034-11-28T14:44:46.411Z", - "stale_warning_timestamp": "2034-12-05T14:44:46.411Z", - "updated": "2024-11-28T14:44:46.411Z", - "insights_id": null, - "tags": [ - { - "key": "program", - "value": "auxiliary", - "namespace": "indexing" - }, - { - "key": "driver", - "value": "wireless", - "namespace": "connecting" - }, - { - "key": "interface", - "value": "redundant", - "namespace": "hacking" - }, - { - "key": "system", - "value": "open-source", - "namespace": "synthesizing" - }, - { - "key": "matrix", - "value": "multi-byte", - "namespace": "quantifying" - } - ], - "type": "system", - "os_major_version": 8, - "os_minor_version": 0 - }, - { - "id": "40ad4f22-2ae8-4bcb-9807-9d518ff64d4c", - "display_name": "stiedemann.example", - "groups": [], - "culled_timestamp": "2034-12-12T14:44:46.380Z", - "stale_timestamp": "2034-11-28T14:44:46.380Z", - "stale_warning_timestamp": "2034-12-05T14:44:46.380Z", - "updated": "2024-11-28T14:44:46.380Z", - "insights_id": null, - "tags": [ - { - "key": "bus", - "value": "primary", - "namespace": "synthesizing" - }, - { - "key": "port", - "value": "multi-byte", - "namespace": "parsing" - }, - { - "key": "driver", - "value": "optical", - "namespace": "calculating" - }, - { - "key": "sensor", - "value": "auxiliary", - "namespace": "quantifying" - }, - { - "key": "panel", - "value": "bluetooth", - "namespace": "calculating" - } - ], - "type": "system", - "os_major_version": 8, - "os_minor_version": 0 - }, - { - "id": "60652702-5766-4bfa-83d4-3dac77208a5e", - "display_name": "stroman-hills.example", - "groups": [], - "culled_timestamp": "2034-12-12T14:44:46.315Z", - "stale_timestamp": "2034-11-28T14:44:46.315Z", - "stale_warning_timestamp": "2034-12-05T14:44:46.315Z", - "updated": "2024-11-28T14:44:46.315Z", - "insights_id": null, - "tags": [ - { - "key": "array", - "value": "mobile", - "namespace": "synthesizing" - }, - { - "key": "capacitor", - "value": "neural", - "namespace": "copying" - }, - { - "key": "hard drive", - "value": "back-end", - "namespace": "copying" - }, - { - "key": "interface", - "value": "open-source", - "namespace": "overriding" - }, - { - "key": "port", - "value": "wireless", - "namespace": "synthesizing" - } - ], - "type": "system", - "os_major_version": 8, - "os_minor_version": 0 - }, - { - "id": "6ad8cb9a-ff0b-4be4-9ca9-cdc20eba5ac4", - "display_name": "conn-heaney.test", - "groups": [], - "culled_timestamp": "2034-12-12T14:44:46.369Z", - "stale_timestamp": "2034-11-28T14:44:46.369Z", - "stale_warning_timestamp": "2034-12-05T14:44:46.369Z", - "updated": "2024-11-28T14:44:46.370Z", - "insights_id": null, - "tags": [ - { - "key": "port", - "value": "wireless", - "namespace": "calculating" - }, - { - "key": "driver", - "value": "back-end", - "namespace": "quantifying" - }, - { - "key": "hard drive", - "value": "cross-platform", - "namespace": "backing up" - }, - { - "key": "application", - "value": "redundant", - "namespace": "generating" - }, - { - "key": "matrix", - "value": "back-end", - "namespace": "transmitting" - } - ], - "type": "system", - "os_major_version": 8, - "os_minor_version": 0 - }, - { - "id": "6d473f26-23f1-4e15-acc7-b27cc23242f1", - "display_name": "oconner.example", - "groups": [], - "culled_timestamp": "2034-12-12T14:44:46.425Z", - "stale_timestamp": "2034-11-28T14:44:46.425Z", - "stale_warning_timestamp": "2034-12-05T14:44:46.425Z", - "updated": "2024-11-28T14:44:46.425Z", - "insights_id": null, - "tags": [ - { - "key": "application", - "value": "primary", - "namespace": "indexing" - }, - { - "key": "alarm", - "value": "solid state", - "namespace": "compressing" - }, - { - "key": "feed", - "value": "auxiliary", - "namespace": "parsing" - }, - { - "key": "feed", - "value": "primary", - "namespace": "synthesizing" - }, - { - "key": "alarm", - "value": "solid state", - "namespace": "quantifying" - } - ], - "type": "system", - "os_major_version": 8, - "os_minor_version": 0 - }, - { - "id": "6e91be91-d24d-48a6-bf6b-6e7d034e3f85", - "display_name": "kulas.test", - "groups": [], - "culled_timestamp": "2034-12-12T14:44:46.359Z", - "stale_timestamp": "2034-11-28T14:44:46.359Z", - "stale_warning_timestamp": "2034-12-05T14:44:46.359Z", - "updated": "2024-11-28T14:44:46.359Z", - "insights_id": null, - "tags": [ - { - "key": "program", - "value": "online", - "namespace": "copying" - }, - { - "key": "hard drive", - "value": "neural", - "namespace": "hacking" - }, - { - "key": "bus", - "value": "cross-platform", - "namespace": "compressing" - }, - { - "key": "interface", - "value": "haptic", - "namespace": "indexing" - }, - { - "key": "program", - "value": "digital", - "namespace": "transmitting" - } - ], - "type": "system", - "os_major_version": 8, - "os_minor_version": 0 - }, - { - "id": "75102df6-46a3-4871-a6d8-43d64bc41de1", - "display_name": "weimann.example", - "groups": [], - "culled_timestamp": "2034-12-12T14:44:46.420Z", - "stale_timestamp": "2034-11-28T14:44:46.420Z", - "stale_warning_timestamp": "2034-12-05T14:44:46.420Z", - "updated": "2024-11-28T14:44:46.420Z", - "insights_id": null, - "tags": [ - { - "key": "circuit", - "value": "neural", - "namespace": "navigating" - }, - { - "key": "circuit", - "value": "1080p", - "namespace": "indexing" - }, - { - "key": "sensor", - "value": "redundant", - "namespace": "synthesizing" - }, - { - "key": "bus", - "value": "auxiliary", - "namespace": "copying" - }, - { - "key": "program", - "value": "neural", - "namespace": "backing up" - } - ], - "type": "system", - "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/c3fc7ac1-5ced-483e-ae02-e38b4d8df524/systems?filter=%28os_minor_version%3D0%29&limit=10&offset=0", - "last": "/api/compliance/v2/policies/c3fc7ac1-5ced-483e-ae02-e38b4d8df524/systems?filter=%28os_minor_version%3D0%29&limit=10&offset=20", - "next": "/api/compliance/v2/policies/c3fc7ac1-5ced-483e-ae02-e38b4d8df524/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": "05d93775-98aa-4f38-9635-16b571e4f7fb", - "display_name": "mann.test", - "groups": [], - "culled_timestamp": "2034-12-12T14:44:46.916Z", - "stale_timestamp": "2034-11-28T14:44:46.916Z", - "stale_warning_timestamp": "2034-12-05T14:44:46.916Z", - "updated": "2024-11-28T14:44:46.916Z", - "insights_id": null, - "tags": [ - { - "key": "circuit", - "value": "optical", - "namespace": "programming" - }, - { - "key": "program", - "value": "1080p", - "namespace": "overriding" - }, - { - "key": "program", - "value": "optical", - "namespace": "bypassing" - }, - { - "key": "transmitter", - "value": "neural", - "namespace": "indexing" - }, - { - "key": "monitor", - "value": "bluetooth", - "namespace": "connecting" - } - ], - "type": "system", - "os_major_version": 8, - "os_minor_version": 0 - }, - { - "id": "086171b1-217a-4b38-804b-d138fa7ade7b", - "display_name": "marvin-towne.test", - "groups": [], - "culled_timestamp": "2034-12-12T14:44:46.915Z", - "stale_timestamp": "2034-11-28T14:44:46.915Z", - "stale_warning_timestamp": "2034-12-05T14:44:46.915Z", - "updated": "2024-11-28T14:44:46.915Z", - "insights_id": null, - "tags": [ - { - "key": "card", - "value": "multi-byte", - "namespace": "quantifying" - }, - { - "key": "monitor", - "value": "bluetooth", - "namespace": "connecting" - }, - { - "key": "pixel", - "value": "primary", - "namespace": "hacking" - }, - { - "key": "transmitter", - "value": "digital", - "namespace": "generating" - }, - { - "key": "pixel", - "value": "mobile", - "namespace": "overriding" - } - ], - "type": "system", - "os_major_version": 8, - "os_minor_version": 0 - }, - { - "id": "0be26af5-6013-4270-ae72-8f2e8428b3d9", - "display_name": "muller-aufderhar.test", - "groups": [], - "culled_timestamp": "2034-12-12T14:44:46.917Z", - "stale_timestamp": "2034-11-28T14:44:46.917Z", - "stale_warning_timestamp": "2034-12-05T14:44:46.917Z", - "updated": "2024-11-28T14:44:46.917Z", - "insights_id": null, - "tags": [ - { - "key": "card", - "value": "1080p", - "namespace": "backing up" - }, - { - "key": "transmitter", - "value": "primary", - "namespace": "parsing" - }, - { - "key": "capacitor", - "value": "virtual", - "namespace": "generating" - }, - { - "key": "program", - "value": "neural", - "namespace": "copying" - }, - { - "key": "monitor", - "value": "back-end", - "namespace": "connecting" - } - ], - "type": "system", - "os_major_version": 8, - "os_minor_version": 0 - }, - { - "id": "0d6da942-e821-466a-b878-a57366675e7b", - "display_name": "parker-nikolaus.example", - "groups": [], - "culled_timestamp": "2034-12-12T14:44:46.928Z", - "stale_timestamp": "2034-11-28T14:44:46.928Z", - "stale_warning_timestamp": "2034-12-05T14:44:46.928Z", - "updated": "2024-11-28T14:44:46.928Z", - "insights_id": null, - "tags": [ - { - "key": "pixel", - "value": "solid state", - "namespace": "programming" - }, - { - "key": "capacitor", - "value": "back-end", - "namespace": "overriding" - }, - { - "key": "application", - "value": "neural", - "namespace": "compressing" - }, - { - "key": "array", - "value": "auxiliary", - "namespace": "calculating" - }, - { - "key": "microchip", - "value": "wireless", - "namespace": "transmitting" - } - ], - "type": "system", - "os_major_version": 8, - "os_minor_version": 0 - }, - { - "id": "1369087f-aaf4-436a-97cb-3298b345d498", - "display_name": "little-veum.test", - "groups": [], - "culled_timestamp": "2034-12-12T14:44:46.930Z", - "stale_timestamp": "2034-11-28T14:44:46.930Z", - "stale_warning_timestamp": "2034-12-05T14:44:46.930Z", - "updated": "2024-11-28T14:44:46.930Z", - "insights_id": null, - "tags": [ - { - "key": "port", - "value": "mobile", - "namespace": "copying" - }, - { - "key": "card", - "value": "online", - "namespace": "copying" - }, - { - "key": "capacitor", - "value": "solid state", - "namespace": "connecting" - }, - { - "key": "application", - "value": "wireless", - "namespace": "hacking" - }, - { - "key": "bandwidth", - "value": "mobile", - "namespace": "connecting" - } - ], - "type": "system", - "os_major_version": 8, - "os_minor_version": 0 - }, - { - "id": "1e4c1acd-70f3-45ad-8aa0-f461be12c7fa", - "display_name": "barrows-watsica.example", - "groups": [], - "culled_timestamp": "2034-12-12T14:44:46.929Z", - "stale_timestamp": "2034-11-28T14:44:46.929Z", - "stale_warning_timestamp": "2034-12-05T14:44:46.929Z", - "updated": "2024-11-28T14:44:46.929Z", - "insights_id": null, - "tags": [ - { - "key": "hard drive", - "value": "digital", - "namespace": "connecting" - }, - { - "key": "transmitter", - "value": "multi-byte", - "namespace": "transmitting" - }, - { - "key": "sensor", - "value": "optical", - "namespace": "quantifying" - }, - { - "key": "interface", - "value": "solid state", - "namespace": "indexing" - }, - { - "key": "card", - "value": "neural", - "namespace": "synthesizing" - } - ], - "type": "system", - "os_major_version": 8, - "os_minor_version": 0 - }, - { - "id": "204d9465-33db-4969-b3e0-97730607376e", - "display_name": "reinger.test", - "groups": [], - "culled_timestamp": "2034-12-12T14:44:46.932Z", - "stale_timestamp": "2034-11-28T14:44:46.932Z", - "stale_warning_timestamp": "2034-12-05T14:44:46.932Z", - "updated": "2024-11-28T14:44:46.932Z", - "insights_id": null, - "tags": [ - { - "key": "port", - "value": "wireless", - "namespace": "overriding" - }, - { - "key": "card", - "value": "neural", - "namespace": "programming" - }, - { - "key": "application", - "value": "online", - "namespace": "generating" - }, - { - "key": "array", - "value": "haptic", - "namespace": "calculating" - }, - { - "key": "interface", - "value": "1080p", - "namespace": "connecting" - } - ], - "type": "system", - "os_major_version": 8, - "os_minor_version": 0 - }, - { - "id": "22692229-8d09-4505-8a55-7a45506ce057", - "display_name": "mayer.example", - "groups": [], - "culled_timestamp": "2034-12-12T14:44:46.922Z", - "stale_timestamp": "2034-11-28T14:44:46.922Z", - "stale_warning_timestamp": "2034-12-05T14:44:46.922Z", - "updated": "2024-11-28T14:44:46.922Z", - "insights_id": null, - "tags": [ - { - "key": "firewall", - "value": "primary", - "namespace": "parsing" - }, - { - "key": "matrix", - "value": "open-source", - "namespace": "calculating" - }, - { - "key": "application", - "value": "back-end", - "namespace": "programming" - }, - { - "key": "system", - "value": "wireless", - "namespace": "calculating" - }, - { - "key": "protocol", - "value": "solid state", - "namespace": "programming" - } - ], - "type": "system", - "os_major_version": 8, - "os_minor_version": 0 - }, - { - "id": "46962de0-4506-473f-b81c-c38d9fbba362", - "display_name": "rohan-boyer.test", - "groups": [], - "culled_timestamp": "2034-12-12T14:44:46.931Z", - "stale_timestamp": "2034-11-28T14:44:46.931Z", - "stale_warning_timestamp": "2034-12-05T14:44:46.931Z", - "updated": "2024-11-28T14:44:46.931Z", - "insights_id": null, - "tags": [ - { - "key": "alarm", - "value": "wireless", - "namespace": "hacking" - }, - { - "key": "bandwidth", - "value": "open-source", - "namespace": "transmitting" - }, - { - "key": "card", - "value": "optical", - "namespace": "programming" - }, - { - "key": "bandwidth", - "value": "neural", - "namespace": "copying" - }, - { - "key": "bandwidth", - "value": "virtual", - "namespace": "indexing" - } - ], - "type": "system", - "os_major_version": 8, - "os_minor_version": 0 - }, - { - "id": "5e8f4b84-ec6e-414e-839b-6e7af15e8959", - "display_name": "senger.example", - "groups": [], - "culled_timestamp": "2034-12-12T14:44:46.928Z", - "stale_timestamp": "2034-11-28T14:44:46.928Z", - "stale_warning_timestamp": "2034-12-05T14:44:46.928Z", - "updated": "2024-11-28T14:44:46.928Z", - "insights_id": null, - "tags": [ - { - "key": "capacitor", - "value": "back-end", - "namespace": "compressing" - }, - { - "key": "matrix", - "value": "open-source", - "namespace": "generating" - }, - { - "key": "array", - "value": "mobile", - "namespace": "programming" - }, - { - "key": "port", - "value": "redundant", - "namespace": "hacking" - }, - { - "key": "feed", - "value": "back-end", - "namespace": "generating" - } - ], - "type": "system", - "os_major_version": 8, - "os_minor_version": 0 - } - ], - "meta": { - "total": 25, - "tags": [], - "limit": 10, - "offset": 0 - }, - "links": { - "first": "/api/compliance/v2/policies/f9caab8f-6c63-4655-a579-4da209841c9f/systems?limit=10&offset=0", - "last": "/api/compliance/v2/policies/f9caab8f-6c63-4655-a579-4da209841c9f/systems?limit=10&offset=20", - "next": "/api/compliance/v2/policies/f9caab8f-6c63-4655-a579-4da209841c9f/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": [ - "ab9a7407-2069-4bbe-a089-5d519ba08f19" - ] - } - } - } - } - } - } - } - } - }, - "/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": "66827427-158e-49d9-b374-f5e4ca550874", - "display_name": "tromp.test", - "groups": [], - "culled_timestamp": "2034-12-12T14:44:47.153Z", - "stale_timestamp": "2034-11-28T14:44:47.153Z", - "stale_warning_timestamp": "2034-12-05T14:44:47.153Z", - "updated": "2024-11-28T14:44:47.153Z", - "insights_id": null, - "tags": [ - { - "key": "pixel", - "value": "primary", - "namespace": "connecting" - }, - { - "key": "array", - "value": "digital", - "namespace": "navigating" - }, - { - "key": "interface", - "value": "1080p", - "namespace": "hacking" - }, - { - "key": "circuit", - "value": "primary", - "namespace": "backing up" - }, - { - "key": "monitor", - "value": "online", - "namespace": "navigating" - } - ], - "type": "system", - "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 6a25ae04-64d2-437e-b10f-44ae8aa8ec94" - ] - }, - "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": "a962794c-673f-4e0f-b464-c90470bb209a", - "display_name": "gutmann.test", - "groups": [], - "culled_timestamp": "2034-12-12T14:44:47.212Z", - "stale_timestamp": "2034-11-28T14:44:47.212Z", - "stale_warning_timestamp": "2034-12-05T14:44:47.212Z", - "updated": "2024-11-28T14:44:47.212Z", - "insights_id": null, - "tags": [ - { - "key": "card", - "value": "online", - "namespace": "transmitting" - }, - { - "key": "monitor", - "value": "virtual", - "namespace": "calculating" - }, - { - "key": "card", - "value": "virtual", - "namespace": "calculating" - }, - { - "key": "capacitor", - "value": "1080p", - "namespace": "overriding" - }, - { - "key": "alarm", - "value": "haptic", - "namespace": "transmitting" - } - ], - "type": "system", - "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 31f4692a-4374-40b6-91e2-251067c15e8e" - ] - }, - "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": "14ec8b8e-4b39-47ea-9914-f7e9845bf37b", - "display_name": "beer.test", - "groups": [], - "culled_timestamp": "2034-12-12T14:44:47.500Z", - "stale_timestamp": "2034-11-28T14:44:47.500Z", - "stale_warning_timestamp": "2034-12-05T14:44:47.500Z", - "updated": "2024-11-28T14:44:47.501Z", - "insights_id": null, - "tags": [ - { - "key": "monitor", - "value": "primary", - "namespace": "bypassing" - }, - { - "key": "program", - "value": "open-source", - "namespace": "synthesizing" - }, - { - "key": "card", - "value": "mobile", - "namespace": "synthesizing" - }, - { - "key": "bus", - "value": "wireless", - "namespace": "copying" - }, - { - "key": "bus", - "value": "redundant", - "namespace": "copying" - } - ], - "type": "system", - "os_major_version": 8, - "os_minor_version": 0, - "policies": [ - { - "id": "262beb9a-f95f-4ff0-bd15-56833a513006", - "title": "Maiores qui aliquid quia." - } - ] - }, - { - "id": "2ccfd2b3-16c7-4669-8564-3c6a00542bd9", - "display_name": "emmerich.test", - "groups": [], - "culled_timestamp": "2034-12-12T14:44:47.550Z", - "stale_timestamp": "2034-11-28T14:44:47.550Z", - "stale_warning_timestamp": "2034-12-05T14:44:47.550Z", - "updated": "2024-11-28T14:44:47.550Z", - "insights_id": null, - "tags": [ - { - "key": "matrix", - "value": "open-source", - "namespace": "connecting" - }, - { - "key": "port", - "value": "primary", - "namespace": "bypassing" - }, - { - "key": "bus", - "value": "online", - "namespace": "generating" - }, - { - "key": "feed", - "value": "open-source", - "namespace": "copying" - }, - { - "key": "bus", - "value": "optical", - "namespace": "synthesizing" - } - ], - "type": "system", - "os_major_version": 8, - "os_minor_version": 0, - "policies": [ - { - "id": "262beb9a-f95f-4ff0-bd15-56833a513006", - "title": "Maiores qui aliquid quia." - } - ] - }, - { - "id": "2e027579-914c-4759-85dc-16939ab80fb3", - "display_name": "christiansen.test", - "groups": [], - "culled_timestamp": "2034-12-12T14:44:47.431Z", - "stale_timestamp": "2034-11-28T14:44:47.431Z", - "stale_warning_timestamp": "2034-12-05T14:44:47.431Z", - "updated": "2024-11-28T14:44:47.431Z", - "insights_id": null, - "tags": [ - { - "key": "firewall", - "value": "mobile", - "namespace": "transmitting" - }, - { - "key": "card", - "value": "neural", - "namespace": "bypassing" - }, - { - "key": "port", - "value": "virtual", - "namespace": "transmitting" - }, - { - "key": "circuit", - "value": "primary", - "namespace": "programming" - }, - { - "key": "application", - "value": "redundant", - "namespace": "bypassing" - } - ], - "type": "system", - "os_major_version": 8, - "os_minor_version": 0, - "policies": [ - { - "id": "262beb9a-f95f-4ff0-bd15-56833a513006", - "title": "Maiores qui aliquid quia." - } - ] - }, - { - "id": "2f500745-88dc-4807-80ec-d0adbda10ab9", - "display_name": "nader-ullrich.example", - "groups": [], - "culled_timestamp": "2034-12-12T14:44:47.510Z", - "stale_timestamp": "2034-11-28T14:44:47.510Z", - "stale_warning_timestamp": "2034-12-05T14:44:47.510Z", - "updated": "2024-11-28T14:44:47.510Z", - "insights_id": null, - "tags": [ - { - "key": "transmitter", - "value": "open-source", - "namespace": "copying" - }, - { - "key": "alarm", - "value": "neural", - "namespace": "transmitting" - }, - { - "key": "port", - "value": "open-source", - "namespace": "transmitting" - }, - { - "key": "port", - "value": "open-source", - "namespace": "calculating" - }, - { - "key": "transmitter", - "value": "bluetooth", - "namespace": "bypassing" - } - ], - "type": "system", - "os_major_version": 8, - "os_minor_version": 0, - "policies": [ - { - "id": "262beb9a-f95f-4ff0-bd15-56833a513006", - "title": "Maiores qui aliquid quia." - } - ] - }, - { - "id": "3181cf24-d2d7-4636-8afc-78123cec0d8d", - "display_name": "cormier.example", - "groups": [], - "culled_timestamp": "2034-12-12T14:44:47.480Z", - "stale_timestamp": "2034-11-28T14:44:47.480Z", - "stale_warning_timestamp": "2034-12-05T14:44:47.480Z", - "updated": "2024-11-28T14:44:47.480Z", - "insights_id": null, - "tags": [ - { - "key": "driver", - "value": "open-source", - "namespace": "quantifying" - }, - { - "key": "array", - "value": "neural", - "namespace": "indexing" - }, - { - "key": "transmitter", - "value": "neural", - "namespace": "compressing" - }, - { - "key": "system", - "value": "back-end", - "namespace": "quantifying" - }, - { - "key": "firewall", - "value": "auxiliary", - "namespace": "indexing" - } - ], - "type": "system", - "os_major_version": 8, - "os_minor_version": 0, - "policies": [ - { - "id": "262beb9a-f95f-4ff0-bd15-56833a513006", - "title": "Maiores qui aliquid quia." - } - ] - }, - { - "id": "337dc364-2be2-4496-9129-3a062d9b7a6f", - "display_name": "adams.example", - "groups": [], - "culled_timestamp": "2034-12-12T14:44:47.530Z", - "stale_timestamp": "2034-11-28T14:44:47.530Z", - "stale_warning_timestamp": "2034-12-05T14:44:47.530Z", - "updated": "2024-11-28T14:44:47.530Z", - "insights_id": null, - "tags": [ - { - "key": "array", - "value": "back-end", - "namespace": "calculating" - }, - { - "key": "bandwidth", - "value": "primary", - "namespace": "copying" - }, - { - "key": "transmitter", - "value": "back-end", - "namespace": "overriding" - }, - { - "key": "driver", - "value": "bluetooth", - "namespace": "generating" - }, - { - "key": "transmitter", - "value": "mobile", - "namespace": "navigating" - } - ], - "type": "system", - "os_major_version": 8, - "os_minor_version": 0, - "policies": [ - { - "id": "262beb9a-f95f-4ff0-bd15-56833a513006", - "title": "Maiores qui aliquid quia." - } - ] - }, - { - "id": "3650f7da-512f-4099-a475-cc0ec972ff1c", - "display_name": "pouros.example", - "groups": [], - "culled_timestamp": "2034-12-12T14:44:47.570Z", - "stale_timestamp": "2034-11-28T14:44:47.570Z", - "stale_warning_timestamp": "2034-12-05T14:44:47.570Z", - "updated": "2024-11-28T14:44:47.570Z", - "insights_id": null, - "tags": [ - { - "key": "bus", - "value": "haptic", - "namespace": "quantifying" - }, - { - "key": "interface", - "value": "back-end", - "namespace": "copying" - }, - { - "key": "circuit", - "value": "wireless", - "namespace": "calculating" - }, - { - "key": "bus", - "value": "virtual", - "namespace": "transmitting" - }, - { - "key": "panel", - "value": "neural", - "namespace": "synthesizing" - } - ], - "type": "system", - "os_major_version": 8, - "os_minor_version": 0, - "policies": [ - { - "id": "262beb9a-f95f-4ff0-bd15-56833a513006", - "title": "Maiores qui aliquid quia." - } - ] - }, - { - "id": "372e4451-e0d5-422e-9ca2-47321aea7240", - "display_name": "ferry-dare.test", - "groups": [], - "culled_timestamp": "2034-12-12T14:44:47.448Z", - "stale_timestamp": "2034-11-28T14:44:47.448Z", - "stale_warning_timestamp": "2034-12-05T14:44:47.448Z", - "updated": "2024-11-28T14:44:47.448Z", - "insights_id": null, - "tags": [ - { - "key": "firewall", - "value": "primary", - "namespace": "hacking" - }, - { - "key": "driver", - "value": "digital", - "namespace": "synthesizing" - }, - { - "key": "bus", - "value": "online", - "namespace": "calculating" - }, - { - "key": "panel", - "value": "neural", - "namespace": "indexing" - }, - { - "key": "microchip", - "value": "digital", - "namespace": "indexing" - } - ], - "type": "system", - "os_major_version": 8, - "os_minor_version": 0, - "policies": [ - { - "id": "262beb9a-f95f-4ff0-bd15-56833a513006", - "title": "Maiores qui aliquid quia." - } - ] - }, - { - "id": "3ce7a75f-a17d-4080-bdcc-6979c212c294", - "display_name": "bauch.example", - "groups": [], - "culled_timestamp": "2034-12-12T14:44:47.457Z", - "stale_timestamp": "2034-11-28T14:44:47.457Z", - "stale_warning_timestamp": "2034-12-05T14:44:47.457Z", - "updated": "2024-11-28T14:44:47.457Z", - "insights_id": null, - "tags": [ - { - "key": "card", - "value": "wireless", - "namespace": "synthesizing" - }, - { - "key": "alarm", - "value": "haptic", - "namespace": "parsing" - }, - { - "key": "panel", - "value": "solid state", - "namespace": "generating" - }, - { - "key": "matrix", - "value": "cross-platform", - "namespace": "copying" - }, - { - "key": "system", - "value": "online", - "namespace": "synthesizing" - } - ], - "type": "system", - "os_major_version": 8, - "os_minor_version": 0, - "policies": [ - { - "id": "262beb9a-f95f-4ff0-bd15-56833a513006", - "title": "Maiores qui aliquid quia." - } - ] - }, - { - "id": "544348a7-f427-4e4a-96ad-c63b9e41d94c", - "display_name": "ferry.test", - "groups": [], - "culled_timestamp": "2034-12-12T14:44:47.515Z", - "stale_timestamp": "2034-11-28T14:44:47.515Z", - "stale_warning_timestamp": "2034-12-05T14:44:47.515Z", - "updated": "2024-11-28T14:44:47.515Z", - "insights_id": null, - "tags": [ - { - "key": "bus", - "value": "back-end", - "namespace": "connecting" - }, - { - "key": "system", - "value": "virtual", - "namespace": "overriding" - }, - { - "key": "alarm", - "value": "bluetooth", - "namespace": "overriding" - }, - { - "key": "microchip", - "value": "cross-platform", - "namespace": "synthesizing" - }, - { - "key": "panel", - "value": "wireless", - "namespace": "generating" - } - ], - "type": "system", - "os_major_version": 8, - "os_minor_version": 0, - "policies": [ - { - "id": "262beb9a-f95f-4ff0-bd15-56833a513006", - "title": "Maiores qui aliquid quia." - } - ] - } - ], - "meta": { - "total": 25, - "tags": [], - "limit": 10, - "offset": 0 - }, - "links": { - "first": "/api/compliance/v2/reports/262beb9a-f95f-4ff0-bd15-56833a513006/systems?limit=10&offset=0", - "last": "/api/compliance/v2/reports/262beb9a-f95f-4ff0-bd15-56833a513006/systems?limit=10&offset=20", - "next": "/api/compliance/v2/reports/262beb9a-f95f-4ff0-bd15-56833a513006/systems?limit=10&offset=10" - } - }, - "summary": "", - "description": "" - }, - "List of Systems sorted by \"os_minor_version:asc\"": { - "value": { - "data": [ - { - "id": "00b648d8-804f-4783-8f1b-b0b87de9c8d8", - "display_name": "boehm.test", - "groups": [], - "culled_timestamp": "2034-12-12T14:44:47.764Z", - "stale_timestamp": "2034-11-28T14:44:47.764Z", - "stale_warning_timestamp": "2034-12-05T14:44:47.764Z", - "updated": "2024-11-28T14:44:47.764Z", - "insights_id": null, - "tags": [ - { - "key": "firewall", - "value": "multi-byte", - "namespace": "compressing" - }, - { - "key": "sensor", - "value": "virtual", - "namespace": "copying" - }, - { - "key": "array", - "value": "auxiliary", - "namespace": "calculating" - }, - { - "key": "program", - "value": "bluetooth", - "namespace": "copying" - }, - { - "key": "alarm", - "value": "neural", - "namespace": "synthesizing" - } - ], - "type": "system", - "os_major_version": 8, - "os_minor_version": 0, - "policies": [ - { - "id": "91fc41c4-d911-4821-b7d0-8efd3768007a", - "title": "Voluptatem modi ea est." - } - ] - }, - { - "id": "03fb3ed8-b475-4041-a809-c74ceb7510e1", - "display_name": "koepp.example", - "groups": [], - "culled_timestamp": "2034-12-12T14:44:47.870Z", - "stale_timestamp": "2034-11-28T14:44:47.870Z", - "stale_warning_timestamp": "2034-12-05T14:44:47.870Z", - "updated": "2024-11-28T14:44:47.870Z", - "insights_id": null, - "tags": [ - { - "key": "bandwidth", - "value": "mobile", - "namespace": "copying" - }, - { - "key": "pixel", - "value": "auxiliary", - "namespace": "calculating" - }, - { - "key": "firewall", - "value": "redundant", - "namespace": "synthesizing" - }, - { - "key": "array", - "value": "digital", - "namespace": "overriding" - }, - { - "key": "alarm", - "value": "multi-byte", - "namespace": "parsing" - } - ], - "type": "system", - "os_major_version": 8, - "os_minor_version": 0, - "policies": [ - { - "id": "91fc41c4-d911-4821-b7d0-8efd3768007a", - "title": "Voluptatem modi ea est." - } - ] - }, - { - "id": "0618f058-ce77-409e-9246-7f3dbc8ab63a", - "display_name": "schmidt.test", - "groups": [], - "culled_timestamp": "2034-12-12T14:44:47.820Z", - "stale_timestamp": "2034-11-28T14:44:47.820Z", - "stale_warning_timestamp": "2034-12-05T14:44:47.820Z", - "updated": "2024-11-28T14:44:47.820Z", - "insights_id": null, - "tags": [ - { - "key": "microchip", - "value": "primary", - "namespace": "quantifying" - }, - { - "key": "pixel", - "value": "solid state", - "namespace": "backing up" - }, - { - "key": "application", - "value": "optical", - "namespace": "indexing" - }, - { - "key": "card", - "value": "cross-platform", - "namespace": "parsing" - }, - { - "key": "program", - "value": "online", - "namespace": "copying" - } - ], - "type": "system", - "os_major_version": 8, - "os_minor_version": 0, - "policies": [ - { - "id": "91fc41c4-d911-4821-b7d0-8efd3768007a", - "title": "Voluptatem modi ea est." - } - ] - }, - { - "id": "0cfa5e3d-a47b-4537-a08a-a663f9889322", - "display_name": "strosin.example", - "groups": [], - "culled_timestamp": "2034-12-12T14:44:47.848Z", - "stale_timestamp": "2034-11-28T14:44:47.848Z", - "stale_warning_timestamp": "2034-12-05T14:44:47.848Z", - "updated": "2024-11-28T14:44:47.848Z", - "insights_id": null, - "tags": [ - { - "key": "port", - "value": "redundant", - "namespace": "indexing" - }, - { - "key": "driver", - "value": "haptic", - "namespace": "overriding" - }, - { - "key": "firewall", - "value": "haptic", - "namespace": "hacking" - }, - { - "key": "protocol", - "value": "virtual", - "namespace": "navigating" - }, - { - "key": "card", - "value": "wireless", - "namespace": "hacking" - } - ], - "type": "system", - "os_major_version": 8, - "os_minor_version": 0, - "policies": [ - { - "id": "91fc41c4-d911-4821-b7d0-8efd3768007a", - "title": "Voluptatem modi ea est." - } - ] - }, - { - "id": "0e8235fb-9d00-4638-93d1-6ec58213662c", - "display_name": "trantow.test", - "groups": [], - "culled_timestamp": "2034-12-12T14:44:47.829Z", - "stale_timestamp": "2034-11-28T14:44:47.829Z", - "stale_warning_timestamp": "2034-12-05T14:44:47.829Z", - "updated": "2024-11-28T14:44:47.829Z", - "insights_id": null, - "tags": [ - { - "key": "panel", - "value": "redundant", - "namespace": "generating" - }, - { - "key": "circuit", - "value": "mobile", - "namespace": "generating" - }, - { - "key": "microchip", - "value": "bluetooth", - "namespace": "hacking" - }, - { - "key": "circuit", - "value": "multi-byte", - "namespace": "synthesizing" - }, - { - "key": "alarm", - "value": "virtual", - "namespace": "connecting" - } - ], - "type": "system", - "os_major_version": 8, - "os_minor_version": 0, - "policies": [ - { - "id": "91fc41c4-d911-4821-b7d0-8efd3768007a", - "title": "Voluptatem modi ea est." - } - ] - }, - { - "id": "19ea4cf3-d1a9-4e13-a31e-40778e919236", - "display_name": "robel.example", - "groups": [], - "culled_timestamp": "2034-12-12T14:44:47.775Z", - "stale_timestamp": "2034-11-28T14:44:47.775Z", - "stale_warning_timestamp": "2034-12-05T14:44:47.775Z", - "updated": "2024-11-28T14:44:47.775Z", - "insights_id": null, - "tags": [ - { - "key": "matrix", - "value": "primary", - "namespace": "connecting" - }, - { - "key": "bandwidth", - "value": "virtual", - "namespace": "transmitting" - }, - { - "key": "system", - "value": "solid state", - "namespace": "indexing" - }, - { - "key": "bus", - "value": "haptic", - "namespace": "backing up" - }, - { - "key": "protocol", - "value": "auxiliary", - "namespace": "copying" - } - ], - "type": "system", - "os_major_version": 8, - "os_minor_version": 0, - "policies": [ - { - "id": "91fc41c4-d911-4821-b7d0-8efd3768007a", - "title": "Voluptatem modi ea est." - } - ] - }, - { - "id": "3b9aa0a1-27a1-4ebf-a4d7-bbc9532280df", - "display_name": "mayer.test", - "groups": [], - "culled_timestamp": "2034-12-12T14:44:47.888Z", - "stale_timestamp": "2034-11-28T14:44:47.888Z", - "stale_warning_timestamp": "2034-12-05T14:44:47.888Z", - "updated": "2024-11-28T14:44:47.888Z", - "insights_id": null, - "tags": [ - { - "key": "bus", - "value": "1080p", - "namespace": "generating" - }, - { - "key": "system", - "value": "1080p", - "namespace": "programming" - }, - { - "key": "sensor", - "value": "back-end", - "namespace": "calculating" - }, - { - "key": "monitor", - "value": "digital", - "namespace": "overriding" - }, - { - "key": "card", - "value": "digital", - "namespace": "calculating" - } - ], - "type": "system", - "os_major_version": 8, - "os_minor_version": 0, - "policies": [ - { - "id": "91fc41c4-d911-4821-b7d0-8efd3768007a", - "title": "Voluptatem modi ea est." - } - ] - }, - { - "id": "46b5a598-03db-46ab-a7e8-a8f7f5d9a43d", - "display_name": "padberg.test", - "groups": [], - "culled_timestamp": "2034-12-12T14:44:47.858Z", - "stale_timestamp": "2034-11-28T14:44:47.858Z", - "stale_warning_timestamp": "2034-12-05T14:44:47.858Z", - "updated": "2024-11-28T14:44:47.858Z", - "insights_id": null, - "tags": [ - { - "key": "circuit", - "value": "bluetooth", - "namespace": "navigating" - }, - { - "key": "panel", - "value": "wireless", - "namespace": "synthesizing" - }, - { - "key": "panel", - "value": "optical", - "namespace": "indexing" - }, - { - "key": "firewall", - "value": "virtual", - "namespace": "programming" - }, - { - "key": "array", - "value": "open-source", - "namespace": "calculating" - } - ], - "type": "system", - "os_major_version": 8, - "os_minor_version": 0, - "policies": [ - { - "id": "91fc41c4-d911-4821-b7d0-8efd3768007a", - "title": "Voluptatem modi ea est." - } - ] - }, - { - "id": "4b3786c8-9d3a-4cad-a6fe-3dc89434af1f", - "display_name": "ondricka.example", - "groups": [], - "culled_timestamp": "2034-12-12T14:44:47.796Z", - "stale_timestamp": "2034-11-28T14:44:47.796Z", - "stale_warning_timestamp": "2034-12-05T14:44:47.796Z", - "updated": "2024-11-28T14:44:47.796Z", - "insights_id": null, - "tags": [ - { - "key": "interface", - "value": "neural", - "namespace": "calculating" - }, - { - "key": "feed", - "value": "haptic", - "namespace": "transmitting" - }, - { - "key": "interface", - "value": "1080p", - "namespace": "synthesizing" - }, - { - "key": "card", - "value": "neural", - "namespace": "hacking" - }, - { - "key": "transmitter", - "value": "digital", - "namespace": "backing up" - } - ], - "type": "system", - "os_major_version": 8, - "os_minor_version": 0, - "policies": [ - { - "id": "91fc41c4-d911-4821-b7d0-8efd3768007a", - "title": "Voluptatem modi ea est." - } - ] - }, - { - "id": "5009bfc5-d6eb-4798-bbc1-758e00439fe1", - "display_name": "thiel.example", - "groups": [], - "culled_timestamp": "2034-12-12T14:44:47.815Z", - "stale_timestamp": "2034-11-28T14:44:47.815Z", - "stale_warning_timestamp": "2034-12-05T14:44:47.815Z", - "updated": "2024-11-28T14:44:47.815Z", - "insights_id": null, - "tags": [ - { - "key": "card", - "value": "solid state", - "namespace": "synthesizing" - }, - { - "key": "matrix", - "value": "cross-platform", - "namespace": "bypassing" - }, - { - "key": "port", - "value": "auxiliary", - "namespace": "quantifying" - }, - { - "key": "alarm", - "value": "digital", - "namespace": "quantifying" - }, - { - "key": "firewall", - "value": "mobile", - "namespace": "copying" - } - ], - "type": "system", - "os_major_version": 8, - "os_minor_version": 0, - "policies": [ - { - "id": "91fc41c4-d911-4821-b7d0-8efd3768007a", - "title": "Voluptatem modi ea est." - } - ] - } - ], - "meta": { - "total": 25, - "tags": [], - "limit": 10, - "offset": 0, - "sort_by": "os_minor_version" - }, - "links": { - "first": "/api/compliance/v2/reports/91fc41c4-d911-4821-b7d0-8efd3768007a/systems?limit=10&offset=0&sort_by=os_minor_version", - "last": "/api/compliance/v2/reports/91fc41c4-d911-4821-b7d0-8efd3768007a/systems?limit=10&offset=20&sort_by=os_minor_version", - "next": "/api/compliance/v2/reports/91fc41c4-d911-4821-b7d0-8efd3768007a/systems?limit=10&offset=10&sort_by=os_minor_version" - } - }, - "summary": "", - "description": "" - }, - "List of Systems filtered by \"(os_minor_version=0)\"": { - "value": { - "data": [ - { - "id": "0d0aca32-aa8c-4501-bcb2-2264f388978d", - "display_name": "larson.example", - "groups": [], - "culled_timestamp": "2034-12-12T14:44:48.204Z", - "stale_timestamp": "2034-11-28T14:44:48.204Z", - "stale_warning_timestamp": "2034-12-05T14:44:48.204Z", - "updated": "2024-11-28T14:44:48.204Z", - "insights_id": null, - "tags": [ - { - "key": "feed", - "value": "redundant", - "namespace": "synthesizing" - }, - { - "key": "card", - "value": "wireless", - "namespace": "bypassing" - }, - { - "key": "panel", - "value": "haptic", - "namespace": "synthesizing" - }, - { - "key": "array", - "value": "virtual", - "namespace": "overriding" - }, - { - "key": "alarm", - "value": "optical", - "namespace": "bypassing" - } - ], - "type": "system", - "os_major_version": 8, - "os_minor_version": 0, - "policies": [ - { - "id": "273485e3-6e7c-4b29-b88f-e63e816f685f", - "title": "Eaque laboriosam praesentium quo." - } - ] - }, - { - "id": "368bc0f2-0764-43a0-8cd3-b4657aea31c3", - "display_name": "volkman.test", - "groups": [], - "culled_timestamp": "2034-12-12T14:44:48.210Z", - "stale_timestamp": "2034-11-28T14:44:48.210Z", - "stale_warning_timestamp": "2034-12-05T14:44:48.210Z", - "updated": "2024-11-28T14:44:48.210Z", - "insights_id": null, - "tags": [ - { - "key": "port", - "value": "optical", - "namespace": "hacking" - }, - { - "key": "application", - "value": "virtual", - "namespace": "synthesizing" - }, - { - "key": "system", - "value": "open-source", - "namespace": "copying" - }, - { - "key": "transmitter", - "value": "wireless", - "namespace": "calculating" - }, - { - "key": "array", - "value": "primary", - "namespace": "synthesizing" - } - ], - "type": "system", - "os_major_version": 8, - "os_minor_version": 0, - "policies": [ - { - "id": "273485e3-6e7c-4b29-b88f-e63e816f685f", - "title": "Eaque laboriosam praesentium quo." - } - ] - }, - { - "id": "3a7bc429-7ad7-4636-9a7b-fec788f0c9b3", - "display_name": "fahey.example", - "groups": [], - "culled_timestamp": "2034-12-12T14:44:48.234Z", - "stale_timestamp": "2034-11-28T14:44:48.234Z", - "stale_warning_timestamp": "2034-12-05T14:44:48.234Z", - "updated": "2024-11-28T14:44:48.234Z", - "insights_id": null, - "tags": [ - { - "key": "feed", - "value": "redundant", - "namespace": "navigating" - }, - { - "key": "circuit", - "value": "auxiliary", - "namespace": "calculating" - }, - { - "key": "capacitor", - "value": "neural", - "namespace": "backing up" - }, - { - "key": "capacitor", - "value": "neural", - "namespace": "indexing" - }, - { - "key": "application", - "value": "haptic", - "namespace": "programming" - } - ], - "type": "system", - "os_major_version": 8, - "os_minor_version": 0, - "policies": [ - { - "id": "273485e3-6e7c-4b29-b88f-e63e816f685f", - "title": "Eaque laboriosam praesentium quo." - } - ] - }, - { - "id": "4404d52b-a80c-4fca-ac7b-e5b17807f9db", - "display_name": "kohler.example", - "groups": [], - "culled_timestamp": "2034-12-12T14:44:48.191Z", - "stale_timestamp": "2034-11-28T14:44:48.191Z", - "stale_warning_timestamp": "2034-12-05T14:44:48.191Z", - "updated": "2024-11-28T14:44:48.191Z", - "insights_id": null, - "tags": [ - { - "key": "system", - "value": "mobile", - "namespace": "synthesizing" - }, - { - "key": "panel", - "value": "mobile", - "namespace": "synthesizing" - }, - { - "key": "alarm", - "value": "neural", - "namespace": "parsing" - }, - { - "key": "card", - "value": "primary", - "namespace": "synthesizing" - }, - { - "key": "bandwidth", - "value": "optical", - "namespace": "copying" - } - ], - "type": "system", - "os_major_version": 8, - "os_minor_version": 0, - "policies": [ - { - "id": "273485e3-6e7c-4b29-b88f-e63e816f685f", - "title": "Eaque laboriosam praesentium quo." - } - ] - }, - { - "id": "493dcd85-6d90-4259-b009-7f96ffe01df2", - "display_name": "hayes.test", - "groups": [], - "culled_timestamp": "2034-12-12T14:44:48.196Z", - "stale_timestamp": "2034-11-28T14:44:48.196Z", - "stale_warning_timestamp": "2034-12-05T14:44:48.196Z", - "updated": "2024-11-28T14:44:48.196Z", - "insights_id": null, - "tags": [ - { - "key": "hard drive", - "value": "virtual", - "namespace": "generating" - }, - { - "key": "interface", - "value": "back-end", - "namespace": "synthesizing" - }, - { - "key": "microchip", - "value": "mobile", - "namespace": "calculating" - }, - { - "key": "hard drive", - "value": "virtual", - "namespace": "programming" - }, - { - "key": "protocol", - "value": "primary", - "namespace": "compressing" - } - ], - "type": "system", - "os_major_version": 8, - "os_minor_version": 0, - "policies": [ - { - "id": "273485e3-6e7c-4b29-b88f-e63e816f685f", - "title": "Eaque laboriosam praesentium quo." - } - ] - }, - { - "id": "4a2a7c4e-9407-4ba9-9c18-c20b62b4884a", - "display_name": "mayert.test", - "groups": [], - "culled_timestamp": "2034-12-12T14:44:48.214Z", - "stale_timestamp": "2034-11-28T14:44:48.214Z", - "stale_warning_timestamp": "2034-12-05T14:44:48.214Z", - "updated": "2024-11-28T14:44:48.214Z", - "insights_id": null, - "tags": [ - { - "key": "matrix", - "value": "back-end", - "namespace": "compressing" - }, - { - "key": "application", - "value": "virtual", - "namespace": "backing up" - }, - { - "key": "protocol", - "value": "back-end", - "namespace": "quantifying" - }, - { - "key": "monitor", - "value": "digital", - "namespace": "programming" - }, - { - "key": "alarm", - "value": "virtual", - "namespace": "calculating" - } - ], - "type": "system", - "os_major_version": 8, - "os_minor_version": 0, - "policies": [ - { - "id": "273485e3-6e7c-4b29-b88f-e63e816f685f", - "title": "Eaque laboriosam praesentium quo." - } - ] - }, - { - "id": "4e812f68-da8f-4717-94cd-73abd26350bf", - "display_name": "bednar.test", - "groups": [], - "culled_timestamp": "2034-12-12T14:44:48.224Z", - "stale_timestamp": "2034-11-28T14:44:48.224Z", - "stale_warning_timestamp": "2034-12-05T14:44:48.224Z", - "updated": "2024-11-28T14:44:48.224Z", - "insights_id": null, - "tags": [ - { - "key": "bus", - "value": "bluetooth", - "namespace": "parsing" - }, - { - "key": "protocol", - "value": "wireless", - "namespace": "transmitting" - }, - { - "key": "transmitter", - "value": "solid state", - "namespace": "calculating" - }, - { - "key": "sensor", - "value": "1080p", - "namespace": "compressing" - }, - { - "key": "protocol", - "value": "wireless", - "namespace": "overriding" - } - ], - "type": "system", - "os_major_version": 8, - "os_minor_version": 0, - "policies": [ - { - "id": "273485e3-6e7c-4b29-b88f-e63e816f685f", - "title": "Eaque laboriosam praesentium quo." - } - ] - }, - { - "id": "500e28c4-2ab0-40a6-9e37-e9daaa88e5a4", - "display_name": "rohan.example", - "groups": [], - "culled_timestamp": "2034-12-12T14:44:48.162Z", - "stale_timestamp": "2034-11-28T14:44:48.162Z", - "stale_warning_timestamp": "2034-12-05T14:44:48.162Z", - "updated": "2024-11-28T14:44:48.162Z", - "insights_id": null, - "tags": [ - { - "key": "pixel", - "value": "virtual", - "namespace": "hacking" - }, - { - "key": "firewall", - "value": "cross-platform", - "namespace": "quantifying" - }, - { - "key": "array", - "value": "bluetooth", - "namespace": "programming" - }, - { - "key": "circuit", - "value": "multi-byte", - "namespace": "compressing" - }, - { - "key": "port", - "value": "multi-byte", - "namespace": "connecting" - } - ], - "type": "system", - "os_major_version": 8, - "os_minor_version": 0, - "policies": [ - { - "id": "273485e3-6e7c-4b29-b88f-e63e816f685f", - "title": "Eaque laboriosam praesentium quo." - } - ] - }, - { - "id": "541610af-4542-4736-a019-e9f6a396cdad", - "display_name": "jast-blanda.test", - "groups": [], - "culled_timestamp": "2034-12-12T14:44:48.177Z", - "stale_timestamp": "2034-11-28T14:44:48.177Z", - "stale_warning_timestamp": "2034-12-05T14:44:48.177Z", - "updated": "2024-11-28T14:44:48.177Z", - "insights_id": null, - "tags": [ - { - "key": "alarm", - "value": "neural", - "namespace": "navigating" - }, - { - "key": "monitor", - "value": "back-end", - "namespace": "bypassing" - }, - { - "key": "protocol", - "value": "haptic", - "namespace": "backing up" - }, - { - "key": "panel", - "value": "multi-byte", - "namespace": "synthesizing" - }, - { - "key": "monitor", - "value": "auxiliary", - "namespace": "navigating" - } - ], - "type": "system", - "os_major_version": 8, - "os_minor_version": 0, - "policies": [ - { - "id": "273485e3-6e7c-4b29-b88f-e63e816f685f", - "title": "Eaque laboriosam praesentium quo." - } - ] - }, - { - "id": "7c267f1c-ddf4-4ecc-b2c5-07f94eed1db0", - "display_name": "christiansen.example", - "groups": [], - "culled_timestamp": "2034-12-12T14:44:48.152Z", - "stale_timestamp": "2034-11-28T14:44:48.152Z", - "stale_warning_timestamp": "2034-12-05T14:44:48.152Z", - "updated": "2024-11-28T14:44:48.152Z", - "insights_id": null, - "tags": [ - { - "key": "monitor", - "value": "bluetooth", - "namespace": "bypassing" - }, - { - "key": "system", - "value": "primary", - "namespace": "compressing" - }, - { - "key": "capacitor", - "value": "1080p", - "namespace": "copying" - }, - { - "key": "port", - "value": "open-source", - "namespace": "compressing" - }, - { - "key": "feed", - "value": "1080p", - "namespace": "connecting" - } - ], - "type": "system", - "os_major_version": 8, - "os_minor_version": 0, - "policies": [ - { - "id": "273485e3-6e7c-4b29-b88f-e63e816f685f", - "title": "Eaque laboriosam praesentium quo." - } - ] - } - ], - "meta": { - "total": 25, - "filter": "(os_minor_version=0)", - "tags": [], - "limit": 10, - "offset": 0 - }, - "links": { - "first": "/api/compliance/v2/reports/273485e3-6e7c-4b29-b88f-e63e816f685f/systems?filter=%28os_minor_version%3D0%29&limit=10&offset=0", - "last": "/api/compliance/v2/reports/273485e3-6e7c-4b29-b88f-e63e816f685f/systems?filter=%28os_minor_version%3D0%29&limit=10&offset=20", - "next": "/api/compliance/v2/reports/273485e3-6e7c-4b29-b88f-e63e816f685f/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": "42a143f7-e38f-4aed-bff7-2855770b4ecb", - "display_name": "wolff.example", - "groups": [], - "culled_timestamp": "2034-12-12T14:44:49.451Z", - "stale_timestamp": "2034-11-28T14:44:49.451Z", - "stale_warning_timestamp": "2034-12-05T14:44:49.451Z", - "updated": "2024-11-28T14:44:49.451Z", - "insights_id": null, - "tags": [ - { - "key": "monitor", - "value": "neural", - "namespace": "parsing" - }, - { - "key": "firewall", - "value": "optical", - "namespace": "connecting" - }, - { - "key": "transmitter", - "value": "haptic", - "namespace": "compressing" - }, - { - "key": "bandwidth", - "value": "wireless", - "namespace": "bypassing" - }, - { - "key": "program", - "value": "wireless", - "namespace": "calculating" - } - ], - "type": "system", - "os_major_version": 8, - "os_minor_version": 0, - "policies": [ - { - "id": "293509da-bf18-4db5-9ebe-559244e782ef", - "title": "Unde molestiae et eaque." - } - ] - } - }, - "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 78f3dd5e-1559-4900-bb02-09d73c70416c" - ] - }, - "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": "0070d964-fa4f-4cbe-b7e1-c152659900a2", - "profile_id": "e1146add-d22e-4b3b-989b-346d33557f40", - "os_minor_version": 1, - "value_overrides": {}, - "type": "tailoring", - "os_major_version": 7, - "security_guide_id": "847d732f-7931-492d-abe0-56bcad1a37b5", - "security_guide_version": "100.94.47" - }, - { - "id": "01f2d9a9-5e46-451d-a04b-f1df6ace1efa", - "profile_id": "b27bf490-8a89-442d-8a12-7cffdaf06d08", - "os_minor_version": 24, - "value_overrides": {}, - "type": "tailoring", - "os_major_version": 7, - "security_guide_id": "59a3bf9d-ebfd-4de6-bd0a-2406e13918fa", - "security_guide_version": "100.95.20" - }, - { - "id": "111bf6e8-3186-497d-909c-0ac44b703fc4", - "profile_id": "440e0b7f-6384-4865-b4b7-bbf49b559ad6", - "os_minor_version": 6, - "value_overrides": {}, - "type": "tailoring", - "os_major_version": 7, - "security_guide_id": "88c4dfc9-41c5-4f30-9add-9691f5ffee1d", - "security_guide_version": "100.95.2" - }, - { - "id": "2dc82346-fb4c-4537-8761-43ebd92f1c85", - "profile_id": "87488e46-ce7a-4d52-a683-3757329afb05", - "os_minor_version": 21, - "value_overrides": {}, - "type": "tailoring", - "os_major_version": 7, - "security_guide_id": "3e1c5153-858c-4e2d-a57e-1a07fd3a0877", - "security_guide_version": "100.95.17" - }, - { - "id": "35ea604e-e806-4a47-b81b-2c464104c465", - "profile_id": "9823d83d-b0c7-4086-8a8c-cc8a247a13cb", - "os_minor_version": 16, - "value_overrides": {}, - "type": "tailoring", - "os_major_version": 7, - "security_guide_id": "89ec68b5-b7d7-4172-8e88-84061f2de347", - "security_guide_version": "100.95.12" - }, - { - "id": "3f0333c3-3ce2-4c98-84ec-a5b890722937", - "profile_id": "a2a0dc27-46a8-4589-8495-cceec9eefa87", - "os_minor_version": 5, - "value_overrides": {}, - "type": "tailoring", - "os_major_version": 7, - "security_guide_id": "992b5fad-47de-4da2-b113-8cd7bb6514af", - "security_guide_version": "100.95.1" - }, - { - "id": "58c97c82-6ded-453f-a3f4-cf2bd52a32b7", - "profile_id": "8db826d6-1462-4e82-af42-e37be5126d97", - "os_minor_version": 7, - "value_overrides": {}, - "type": "tailoring", - "os_major_version": 7, - "security_guide_id": "5a9eac9c-31c6-46e2-8f23-f63bd873f7a6", - "security_guide_version": "100.95.3" - }, - { - "id": "5bce265b-feed-4813-addc-5cd59980ed84", - "profile_id": "2e15c702-82e9-4ca9-add4-5c645e83020d", - "os_minor_version": 17, - "value_overrides": {}, - "type": "tailoring", - "os_major_version": 7, - "security_guide_id": "14d87b34-66e2-45d1-b4b3-dc07c679e4e0", - "security_guide_version": "100.95.13" - }, - { - "id": "63c93652-21be-4130-8fcc-04626ff062d1", - "profile_id": "d4e0f3e0-d0c1-43e6-8498-1866015c7066", - "os_minor_version": 3, - "value_overrides": {}, - "type": "tailoring", - "os_major_version": 7, - "security_guide_id": "52c68113-b7ed-40a3-83f2-57600812e495", - "security_guide_version": "100.94.49" - }, - { - "id": "66dd3236-f4e6-4022-a11e-79645be35dc2", - "profile_id": "266047a6-1c46-46cd-9e62-9b521f4d9e4d", - "os_minor_version": 20, - "value_overrides": {}, - "type": "tailoring", - "os_major_version": 7, - "security_guide_id": "e90e6493-d2db-4aff-8a26-197116807269", - "security_guide_version": "100.95.16" - } - ], - "meta": { - "total": 25, - "limit": 10, - "offset": 0 - }, - "links": { - "first": "/api/compliance/v2/policies/09c811e3-d88b-488f-ad61-f77b62d3ccc7/tailorings?limit=10&offset=0", - "last": "/api/compliance/v2/policies/09c811e3-d88b-488f-ad61-f77b62d3ccc7/tailorings?limit=10&offset=20", - "next": "/api/compliance/v2/policies/09c811e3-d88b-488f-ad61-f77b62d3ccc7/tailorings?limit=10&offset=10" - } - }, - "summary": "", - "description": "" - }, - "List of Tailorings sorted by \"os_minor_version:asc\"": { - "value": { - "data": [ - { - "id": "141add09-f0cf-42bc-9710-53e164bdc606", - "profile_id": "77f97495-d5ab-45b3-b060-cc3ae2dfd9cb", - "os_minor_version": 0, - "value_overrides": {}, - "type": "tailoring", - "os_major_version": 7, - "security_guide_id": "026ef2ab-9c45-4187-bdcc-07ba52d8b212", - "security_guide_version": "100.95.21" - }, - { - "id": "18aff3b3-c78b-401c-9037-96dccff2191f", - "profile_id": "92f910b4-38a2-4d9f-aead-eeb6f874aa25", - "os_minor_version": 1, - "value_overrides": {}, - "type": "tailoring", - "os_major_version": 7, - "security_guide_id": "10913670-e457-4977-ae4d-a33544bbdf96", - "security_guide_version": "100.95.22" - }, - { - "id": "0a164c53-8da1-43d6-9172-492625e3f3ea", - "profile_id": "f520822f-9b7a-412d-bd3d-60a731072d9d", - "os_minor_version": 2, - "value_overrides": {}, - "type": "tailoring", - "os_major_version": 7, - "security_guide_id": "dcb44a32-62ef-49ea-ac84-9710ce0d3a69", - "security_guide_version": "100.95.23" - }, - { - "id": "00d2b438-21e7-4cc5-99ca-7d1ca474115b", - "profile_id": "1a730c8d-793f-4819-944f-87ff3c004700", - "os_minor_version": 3, - "value_overrides": {}, - "type": "tailoring", - "os_major_version": 7, - "security_guide_id": "cd605e32-ddbb-4a81-8f1d-81176dc2ed73", - "security_guide_version": "100.95.24" - }, - { - "id": "d78c6599-d568-46e1-bc46-3669a69ad89d", - "profile_id": "c28a3f7c-eca5-46e7-a23a-26868cf48f0b", - "os_minor_version": 4, - "value_overrides": {}, - "type": "tailoring", - "os_major_version": 7, - "security_guide_id": "c4b54d5c-4e0b-4b38-89f6-3ad058db9e0f", - "security_guide_version": "100.95.25" - }, - { - "id": "e56f8e96-3f02-4d0e-ade9-869d2d77bfd0", - "profile_id": "4fd93d7f-f3c2-4091-9879-fbc876554d0a", - "os_minor_version": 5, - "value_overrides": {}, - "type": "tailoring", - "os_major_version": 7, - "security_guide_id": "a71a4a35-62dc-4809-99c7-ae41370a25e5", - "security_guide_version": "100.95.26" - }, - { - "id": "8a3d46eb-d20b-4413-96c1-2b8915c7ac69", - "profile_id": "56d444c6-e68a-4913-802e-1c19d8743fe2", - "os_minor_version": 6, - "value_overrides": {}, - "type": "tailoring", - "os_major_version": 7, - "security_guide_id": "85951a41-00ef-4b13-b811-ffb5fee16fd3", - "security_guide_version": "100.95.27" - }, - { - "id": "0a908eef-6b5b-4bb0-9164-4248b336d4e7", - "profile_id": "e5dd7553-f7ac-4ba9-a325-164886827342", - "os_minor_version": 7, - "value_overrides": {}, - "type": "tailoring", - "os_major_version": 7, - "security_guide_id": "79520e7c-82e2-4150-ae4f-9e6e9a234eff", - "security_guide_version": "100.95.28" - }, - { - "id": "d182e2eb-a289-4cd0-beed-0a19daf57bc0", - "profile_id": "f19d2431-0828-4727-94f9-e9c2732ebf7a", - "os_minor_version": 8, - "value_overrides": {}, - "type": "tailoring", - "os_major_version": 7, - "security_guide_id": "198b3dfe-a9e8-42f9-92ce-a111f954a33f", - "security_guide_version": "100.95.29" - }, - { - "id": "f94ac5e3-bd2d-44cc-a518-7583b0a25ba6", - "profile_id": "504e7a21-3395-42ee-996d-8ba9ea7b4a69", - "os_minor_version": 9, - "value_overrides": {}, - "type": "tailoring", - "os_major_version": 7, - "security_guide_id": "a6829b7f-bc99-4557-8378-0de5d1b1c8c8", - "security_guide_version": "100.95.30" - } - ], - "meta": { - "total": 25, - "limit": 10, - "offset": 0, - "sort_by": "os_minor_version" - }, - "links": { - "first": "/api/compliance/v2/policies/008ad7c0-a52b-46b3-b9b5-8ca247d9efb1/tailorings?limit=10&offset=0&sort_by=os_minor_version", - "last": "/api/compliance/v2/policies/008ad7c0-a52b-46b3-b9b5-8ca247d9efb1/tailorings?limit=10&offset=20&sort_by=os_minor_version", - "next": "/api/compliance/v2/policies/008ad7c0-a52b-46b3-b9b5-8ca247d9efb1/tailorings?limit=10&offset=10&sort_by=os_minor_version" - } - }, - "summary": "", - "description": "" - }, - "List of Tailorings filtered by '(os_minor_version=7)'": { - "value": { - "data": [ - { - "id": "07bae846-dde1-424e-be16-b484d0e837c7", - "profile_id": "a9364b4d-4538-4b89-899f-88ffa4109776", - "os_minor_version": 7, - "value_overrides": {}, - "type": "tailoring", - "os_major_version": 7, - "security_guide_id": "f84b7e85-3dbc-4b5f-862e-16a29f217c07", - "security_guide_version": "100.96.3" - } - ], - "meta": { - "total": 1, - "filter": "(os_minor_version=7)", - "limit": 10, - "offset": 0 - }, - "links": { - "first": "/api/compliance/v2/policies/efe5b7bd-1986-4aa9-b8e5-1e119e8d90c6/tailorings?filter=%28os_minor_version%3D7%29&limit=10&offset=0", - "last": "/api/compliance/v2/policies/efe5b7bd-1986-4aa9-b8e5-1e119e8d90c6/tailorings?filter=%28os_minor_version%3D7%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": "c1f6baf0-1d15-4482-84cb-39e38a63bf84", - "profile_id": "5ae27341-48a5-4d30-bfbd-32c336cf2507", - "os_minor_version": 1, - "value_overrides": {}, - "type": "tailoring", - "os_major_version": 7, - "security_guide_id": "e8aa3675-09e2-4658-809b-66b67f6b032a", - "security_guide_version": "100.97.21" - } - }, - "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": "2272998e-9831-480e-b729-7bcbb329581c", - "profile_id": "b6de4fb3-c8af-432d-94f4-ae6f142eca3a", - "os_minor_version": 1, - "value_overrides": {}, - "type": "tailoring", - "os_major_version": 7, - "security_guide_id": "83c016e1-dd92-41db-a150-5c7591d80286", - "security_guide_version": "100.97.22" - } - }, - "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 ffd9cfa2-add8-4a18-8d74-b563c925810d" - ] - }, - "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": "1b7ad8ae-2f88-4595-8e48-9cb0d4130c2a", - "profile_id": "c60bb065-9723-483a-aa55-a9a19b10590c", - "os_minor_version": 1, - "value_overrides": { - "affdddd0-b04f-4dce-8807-c930ba3ce9c6": "123" - }, - "type": "tailoring", - "os_major_version": 7, - "security_guide_id": "5e63cb93-ed5c-47b9-97e5-3e1e9c209f62", - "security_guide_version": "100.97.23" - } - }, - "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": "155ed68c-7292-428a-b828-4edc7ae2b93a", - "type": "rule_group", - "children": [ - { - "id": "2641bbc3-b49e-414d-a75d-3f81c18a4f46", - "type": "rule" - } - ] - }, - { - "id": "38f05daa-17c8-4567-9ff3-bc0fb46fc4bc", - "type": "rule_group", - "children": [ - { - "id": "1055c724-e5a7-458d-8940-e55510ed0ad7", - "type": "rule" - } - ] - }, - { - "id": "8c392ab2-b534-4135-9988-4736c6e15458", - "type": "rule_group", - "children": [ - { - "id": "8e8513a9-0b6e-4ebd-a7e5-105177853517", - "type": "rule" - } - ] - }, - { - "id": "fcc6ed2a-3863-4d26-99ad-8acb8b041c8f", - "type": "rule_group", - "children": [ - { - "id": "b6978cf0-0f01-4b72-b4bc-e913df540c33", - "type": "rule" - } - ] - }, - { - "id": "2137903e-c193-4eca-a432-c1b95f06293e", - "type": "rule_group", - "children": [ - { - "id": "f1c00296-da83-447e-934b-6865ec4adba7", - "type": "rule" - } - ] - }, - { - "id": "667529fb-3a4e-4c6e-b248-0bf87e019689", - "type": "rule_group", - "children": [ - { - "id": "9ae028d0-3103-4546-9977-a0e287faafdf", - "type": "rule" - } - ] - }, - { - "id": "1388bc5c-df36-4a2b-ad2a-55aab1d048ab", - "type": "rule_group", - "children": [ - { - "id": "a1403617-4e26-4e8a-a653-dd35b80794c2", - "type": "rule" - } - ] - }, - { - "id": "824f5ea7-eda0-4292-a346-9197fc6f6ef4", - "type": "rule_group", - "children": [ - { - "id": "099b1c23-bdc0-4a49-ace0-f1c0fbbe377b", - "type": "rule" - } - ] - }, - { - "id": "3c90595b-25c4-442e-acfa-21401f462e7b", - "type": "rule_group", - "children": [ - { - "id": "5f9c2501-9635-40b3-8d6a-761aee2cbd2a", - "type": "rule" - } - ] - }, - { - "id": "014233b4-6ff9-498b-b546-742366b568eb", - "type": "rule_group", - "children": [ - { - "id": "8ab1c245-54b2-41b1-bb30-55dff809b085", - "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 0770b19a-a44d-49cf-890d-29a66e6cf36a" - ] - }, - "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_b4aa84d27bdd65b2a6980e0017716e56", - "title": "Laborum molestiae rerum necessitatibus.", - "groups": {}, - "rules": {}, - "variables": { - "foo_value_1e61d78b-ff38-4bc6-8313-e4c8fb381a5c": { - "value": "997961" - }, - "foo_value_e429b140-7577-43ed-9771-7323a23cbb04": { - "value": "28854" - } - } - } - ] - }, - "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": "07d4f276-df3d-4eee-91e5-f2fb5afdbd15", - "end_time": "2024-11-28T14:43:51.448Z", - "failed_rule_count": 0, - "supported": true, - "score": 64.74321837224612, - "type": "test_result", - "display_name": "kling.test", - "groups": [], - "tags": [ - { - "key": "circuit", - "value": "digital", - "namespace": "bypassing" - }, - { - "key": "array", - "value": "1080p", - "namespace": "hacking" - }, - { - "key": "program", - "value": "haptic", - "namespace": "copying" - }, - { - "key": "feed", - "value": "redundant", - "namespace": "compressing" - }, - { - "key": "alarm", - "value": "online", - "namespace": "calculating" - } - ], - "os_major_version": 8, - "os_minor_version": 0, - "compliant": false, - "system_id": "4dc21983-65ab-4e56-91c3-d1eb5eadb101", - "security_guide_version": "100.99.45" - }, - { - "id": "117c309f-cca6-479f-b53b-e11901901057", - "end_time": "2024-11-28T14:43:51.388Z", - "failed_rule_count": 0, - "supported": true, - "score": 95.58479212926116, - "type": "test_result", - "display_name": "hettinger.example", - "groups": [], - "tags": [ - { - "key": "array", - "value": "solid state", - "namespace": "overriding" - }, - { - "key": "panel", - "value": "neural", - "namespace": "backing up" - }, - { - "key": "microchip", - "value": "haptic", - "namespace": "overriding" - }, - { - "key": "feed", - "value": "wireless", - "namespace": "navigating" - }, - { - "key": "feed", - "value": "digital", - "namespace": "parsing" - } - ], - "os_major_version": 8, - "os_minor_version": 0, - "compliant": true, - "system_id": "86190da6-5980-4019-bd54-0f6fda28a3dc", - "security_guide_version": "100.99.45" - }, - { - "id": "21da774e-54e0-4583-98e4-c4a5d80ac119", - "end_time": "2024-11-28T14:43:51.414Z", - "failed_rule_count": 0, - "supported": true, - "score": 8.969810229212971, - "type": "test_result", - "display_name": "jacobson-bogan.example", - "groups": [], - "tags": [ - { - "key": "firewall", - "value": "bluetooth", - "namespace": "quantifying" - }, - { - "key": "application", - "value": "haptic", - "namespace": "synthesizing" - }, - { - "key": "pixel", - "value": "wireless", - "namespace": "synthesizing" - }, - { - "key": "application", - "value": "1080p", - "namespace": "compressing" - }, - { - "key": "panel", - "value": "virtual", - "namespace": "generating" - } - ], - "os_major_version": 8, - "os_minor_version": 0, - "compliant": false, - "system_id": "63ac8f27-e78f-4925-9c68-69bc35c8e32d", - "security_guide_version": "100.99.45" - }, - { - "id": "23d3b9db-328c-4f48-b5c2-536a937251b5", - "end_time": "2024-11-28T14:43:51.348Z", - "failed_rule_count": 0, - "supported": true, - "score": 50.71910006006622, - "type": "test_result", - "display_name": "fritsch.example", - "groups": [], - "tags": [ - { - "key": "pixel", - "value": "open-source", - "namespace": "programming" - }, - { - "key": "card", - "value": "online", - "namespace": "hacking" - }, - { - "key": "monitor", - "value": "auxiliary", - "namespace": "connecting" - }, - { - "key": "driver", - "value": "open-source", - "namespace": "transmitting" - }, - { - "key": "firewall", - "value": "open-source", - "namespace": "navigating" - } - ], - "os_major_version": 8, - "os_minor_version": 0, - "compliant": false, - "system_id": "5ff97a6a-99fd-4d07-819b-68ceab05c3f1", - "security_guide_version": "100.99.45" - }, - { - "id": "23e99ce4-d983-4b78-9e50-f924dedd772b", - "end_time": "2024-11-28T14:43:51.325Z", - "failed_rule_count": 0, - "supported": true, - "score": 76.54042057594283, - "type": "test_result", - "display_name": "wolf-wolff.example", - "groups": [], - "tags": [ - { - "key": "sensor", - "value": "multi-byte", - "namespace": "bypassing" - }, - { - "key": "bandwidth", - "value": "digital", - "namespace": "copying" - }, - { - "key": "program", - "value": "neural", - "namespace": "quantifying" - }, - { - "key": "bandwidth", - "value": "cross-platform", - "namespace": "programming" - }, - { - "key": "circuit", - "value": "primary", - "namespace": "bypassing" - } - ], - "os_major_version": 8, - "os_minor_version": 0, - "compliant": false, - "system_id": "a1696c75-4d1c-4cf4-9350-ccd187e2220e", - "security_guide_version": "100.99.45" - }, - { - "id": "43ed94c8-192f-4ec3-a261-7d44900288e8", - "end_time": "2024-11-28T14:43:51.312Z", - "failed_rule_count": 0, - "supported": true, - "score": 11.93536251421712, - "type": "test_result", - "display_name": "waters.test", - "groups": [], - "tags": [ - { - "key": "driver", - "value": "redundant", - "namespace": "copying" - }, - { - "key": "monitor", - "value": "open-source", - "namespace": "bypassing" - }, - { - "key": "bus", - "value": "multi-byte", - "namespace": "quantifying" - }, - { - "key": "card", - "value": "bluetooth", - "namespace": "generating" - }, - { - "key": "card", - "value": "cross-platform", - "namespace": "compressing" - } - ], - "os_major_version": 8, - "os_minor_version": 0, - "compliant": false, - "system_id": "3735b68d-7fa1-4620-b993-9f9c930d5b3e", - "security_guide_version": "100.99.45" - }, - { - "id": "57dacc3d-c576-4001-95b3-327c9d555e4b", - "end_time": "2024-11-28T14:43:51.453Z", - "failed_rule_count": 0, - "supported": true, - "score": 27.94674415070214, - "type": "test_result", - "display_name": "stark.test", - "groups": [], - "tags": [ - { - "key": "bandwidth", - "value": "neural", - "namespace": "parsing" - }, - { - "key": "transmitter", - "value": "digital", - "namespace": "calculating" - }, - { - "key": "sensor", - "value": "1080p", - "namespace": "bypassing" - }, - { - "key": "array", - "value": "cross-platform", - "namespace": "quantifying" - }, - { - "key": "bus", - "value": "solid state", - "namespace": "hacking" - } - ], - "os_major_version": 8, - "os_minor_version": 0, - "compliant": false, - "system_id": "075e53a5-ce0e-4b72-87bc-7e7e5272b76a", - "security_guide_version": "100.99.45" - }, - { - "id": "5a7e6622-86ec-417d-bd9e-4853c1d182e8", - "end_time": "2024-11-28T14:43:51.354Z", - "failed_rule_count": 0, - "supported": true, - "score": 87.73526596285234, - "type": "test_result", - "display_name": "feest-robel.example", - "groups": [], - "tags": [ - { - "key": "card", - "value": "bluetooth", - "namespace": "indexing" - }, - { - "key": "array", - "value": "redundant", - "namespace": "navigating" - }, - { - "key": "feed", - "value": "multi-byte", - "namespace": "navigating" - }, - { - "key": "application", - "value": "digital", - "namespace": "parsing" - }, - { - "key": "pixel", - "value": "haptic", - "namespace": "copying" - } - ], - "os_major_version": 8, - "os_minor_version": 0, - "compliant": false, - "system_id": "3cd2e780-5e2e-49c1-af2f-6a398806387f", - "security_guide_version": "100.99.45" - }, - { - "id": "5b3e2576-89e3-4514-ae4d-8d133a86bb0c", - "end_time": "2024-11-28T14:43:51.331Z", - "failed_rule_count": 0, - "supported": true, - "score": 10.06279518572617, - "type": "test_result", - "display_name": "konopelski.example", - "groups": [], - "tags": [ - { - "key": "transmitter", - "value": "optical", - "namespace": "overriding" - }, - { - "key": "bandwidth", - "value": "mobile", - "namespace": "programming" - }, - { - "key": "system", - "value": "auxiliary", - "namespace": "backing up" - }, - { - "key": "sensor", - "value": "redundant", - "namespace": "calculating" - }, - { - "key": "port", - "value": "auxiliary", - "namespace": "programming" - } - ], - "os_major_version": 8, - "os_minor_version": 0, - "compliant": false, - "system_id": "79f44c5e-c739-4f3b-ab41-a00ca4a08e8a", - "security_guide_version": "100.99.45" - }, - { - "id": "60ddc92f-0725-4f7e-9d49-c41fb2990054", - "end_time": "2024-11-28T14:43:51.436Z", - "failed_rule_count": 0, - "supported": true, - "score": 54.51951091159077, - "type": "test_result", - "display_name": "carter.example", - "groups": [], - "tags": [ - { - "key": "system", - "value": "cross-platform", - "namespace": "hacking" - }, - { - "key": "monitor", - "value": "online", - "namespace": "overriding" - }, - { - "key": "system", - "value": "solid state", - "namespace": "copying" - }, - { - "key": "bandwidth", - "value": "open-source", - "namespace": "backing up" - }, - { - "key": "circuit", - "value": "wireless", - "namespace": "navigating" - } - ], - "os_major_version": 8, - "os_minor_version": 0, - "compliant": false, - "system_id": "f18e8ab6-39ec-4283-8474-e3e36595cfb1", - "security_guide_version": "100.99.45" - } - ], - "meta": { - "total": 25, - "tags": [], - "limit": 10, - "offset": 0 - }, - "links": { - "first": "/api/compliance/v2/reports/8c6485fc-7f36-4981-a21c-6fa7c914c63a/test_results?limit=10&offset=0", - "last": "/api/compliance/v2/reports/8c6485fc-7f36-4981-a21c-6fa7c914c63a/test_results?limit=10&offset=20", - "next": "/api/compliance/v2/reports/8c6485fc-7f36-4981-a21c-6fa7c914c63a/test_results?limit=10&offset=10" - } - }, - "summary": "", - "description": "" - }, - "List of Test Results sorted by \"score:asc\"": { - "value": { - "data": [ - { - "id": "1c7f1b65-1f19-4043-9404-e1fb834ae15d", - "end_time": "2024-11-28T14:43:51.708Z", - "failed_rule_count": 0, - "supported": true, - "score": 2.382693535155089, - "type": "test_result", - "display_name": "wiegand.example", - "groups": [], - "tags": [ - { - "key": "port", - "value": "cross-platform", - "namespace": "parsing" - }, - { - "key": "pixel", - "value": "primary", - "namespace": "parsing" - }, - { - "key": "bus", - "value": "cross-platform", - "namespace": "quantifying" - }, - { - "key": "driver", - "value": "neural", - "namespace": "generating" - }, - { - "key": "firewall", - "value": "1080p", - "namespace": "compressing" - } - ], - "os_major_version": 8, - "os_minor_version": 0, - "compliant": false, - "system_id": "00fd5937-5370-40cc-a18d-89df5bb15ef8", - "security_guide_version": "100.101.8" - }, - { - "id": "8ea42d12-df22-480a-a003-3f9d50ce17f7", - "end_time": "2024-11-28T14:43:51.676Z", - "failed_rule_count": 0, - "supported": true, - "score": 18.51043276331846, - "type": "test_result", - "display_name": "okuneva-wuckert.test", - "groups": [], - "tags": [ - { - "key": "matrix", - "value": "cross-platform", - "namespace": "parsing" - }, - { - "key": "driver", - "value": "wireless", - "namespace": "indexing" - }, - { - "key": "monitor", - "value": "multi-byte", - "namespace": "calculating" - }, - { - "key": "capacitor", - "value": "primary", - "namespace": "programming" - }, - { - "key": "capacitor", - "value": "neural", - "namespace": "navigating" - } - ], - "os_major_version": 8, - "os_minor_version": 0, - "compliant": false, - "system_id": "05d15279-b3eb-4418-ae12-12762b0ea6d8", - "security_guide_version": "100.101.8" - }, - { - "id": "8ebda2ab-edb7-4df5-ad42-ee13f2b47b3a", - "end_time": "2024-11-28T14:43:51.808Z", - "failed_rule_count": 0, - "supported": true, - "score": 20.87209476501004, - "type": "test_result", - "display_name": "reilly-kozey.example", - "groups": [], - "tags": [ - { - "key": "bus", - "value": "open-source", - "namespace": "quantifying" - }, - { - "key": "alarm", - "value": "open-source", - "namespace": "compressing" - }, - { - "key": "program", - "value": "virtual", - "namespace": "compressing" - }, - { - "key": "bus", - "value": "1080p", - "namespace": "navigating" - }, - { - "key": "interface", - "value": "cross-platform", - "namespace": "synthesizing" - } - ], - "os_major_version": 8, - "os_minor_version": 0, - "compliant": false, - "system_id": "a6985c0e-5b1b-4acd-bfbb-484eef21c103", - "security_guide_version": "100.101.8" - }, - { - "id": "8de36f0b-0134-4617-ad10-541605fad422", - "end_time": "2024-11-28T14:43:51.719Z", - "failed_rule_count": 0, - "supported": true, - "score": 21.20423073126508, - "type": "test_result", - "display_name": "flatley.test", - "groups": [], - "tags": [ - { - "key": "firewall", - "value": "optical", - "namespace": "overriding" - }, - { - "key": "program", - "value": "primary", - "namespace": "generating" - }, - { - "key": "pixel", - "value": "virtual", - "namespace": "quantifying" - }, - { - "key": "hard drive", - "value": "digital", - "namespace": "connecting" - }, - { - "key": "card", - "value": "multi-byte", - "namespace": "compressing" - } - ], - "os_major_version": 8, - "os_minor_version": 0, - "compliant": false, - "system_id": "d93d71cc-7240-4ccd-b111-373f1f785538", - "security_guide_version": "100.101.8" - }, - { - "id": "eb22ac2e-43c9-4ff2-8ead-0ac653ec6449", - "end_time": "2024-11-28T14:43:51.697Z", - "failed_rule_count": 0, - "supported": true, - "score": 21.23787097553609, - "type": "test_result", - "display_name": "aufderhar.example", - "groups": [], - "tags": [ - { - "key": "program", - "value": "neural", - "namespace": "compressing" - }, - { - "key": "hard drive", - "value": "virtual", - "namespace": "quantifying" - }, - { - "key": "bus", - "value": "digital", - "namespace": "navigating" - }, - { - "key": "matrix", - "value": "redundant", - "namespace": "calculating" - }, - { - "key": "interface", - "value": "optical", - "namespace": "parsing" - } - ], - "os_major_version": 8, - "os_minor_version": 0, - "compliant": false, - "system_id": "e8e05259-da2b-4f9e-85b1-a92b29255947", - "security_guide_version": "100.101.8" - }, - { - "id": "d2594e1c-bf2e-4388-84fc-3398112fb86b", - "end_time": "2024-11-28T14:43:51.681Z", - "failed_rule_count": 0, - "supported": true, - "score": 24.5579680463506, - "type": "test_result", - "display_name": "morar.test", - "groups": [], - "tags": [ - { - "key": "driver", - "value": "bluetooth", - "namespace": "indexing" - }, - { - "key": "firewall", - "value": "primary", - "namespace": "programming" - }, - { - "key": "driver", - "value": "neural", - "namespace": "hacking" - }, - { - "key": "system", - "value": "redundant", - "namespace": "synthesizing" - }, - { - "key": "feed", - "value": "mobile", - "namespace": "synthesizing" - } - ], - "os_major_version": 8, - "os_minor_version": 0, - "compliant": false, - "system_id": "05b7e306-94e3-4ad6-b8c2-299949f92a65", - "security_guide_version": "100.101.8" - }, - { - "id": "ed8aedd4-15f8-4dcc-a180-2ee7d009016c", - "end_time": "2024-11-28T14:43:51.657Z", - "failed_rule_count": 0, - "supported": true, - "score": 31.95029772959636, - "type": "test_result", - "display_name": "rolfson.example", - "groups": [], - "tags": [ - { - "key": "alarm", - "value": "virtual", - "namespace": "compressing" - }, - { - "key": "firewall", - "value": "haptic", - "namespace": "compressing" - }, - { - "key": "sensor", - "value": "back-end", - "namespace": "calculating" - }, - { - "key": "bandwidth", - "value": "neural", - "namespace": "overriding" - }, - { - "key": "pixel", - "value": "bluetooth", - "namespace": "generating" - } - ], - "os_major_version": 8, - "os_minor_version": 0, - "compliant": false, - "system_id": "2ac2e5c6-75a1-42d4-a2ef-6818805aa004", - "security_guide_version": "100.101.8" - }, - { - "id": "1e6bdb2f-5482-4092-a289-ff349c8cf27a", - "end_time": "2024-11-28T14:43:51.802Z", - "failed_rule_count": 0, - "supported": true, - "score": 38.37081487054051, - "type": "test_result", - "display_name": "quitzon-lebsack.example", - "groups": [], - "tags": [ - { - "key": "firewall", - "value": "primary", - "namespace": "compressing" - }, - { - "key": "interface", - "value": "neural", - "namespace": "connecting" - }, - { - "key": "application", - "value": "neural", - "namespace": "navigating" - }, - { - "key": "driver", - "value": "open-source", - "namespace": "bypassing" - }, - { - "key": "microchip", - "value": "neural", - "namespace": "generating" - } - ], - "os_major_version": 8, - "os_minor_version": 0, - "compliant": false, - "system_id": "7eed25bc-4504-4eea-872c-a1a04baeb65c", - "security_guide_version": "100.101.8" - }, - { - "id": "106f063b-0430-4275-b1f0-538482d4196b", - "end_time": "2024-11-28T14:43:51.702Z", - "failed_rule_count": 0, - "supported": true, - "score": 44.43230616684835, - "type": "test_result", - "display_name": "swift.test", - "groups": [], - "tags": [ - { - "key": "pixel", - "value": "1080p", - "namespace": "overriding" - }, - { - "key": "bandwidth", - "value": "online", - "namespace": "backing up" - }, - { - "key": "microchip", - "value": "wireless", - "namespace": "overriding" - }, - { - "key": "pixel", - "value": "mobile", - "namespace": "transmitting" - }, - { - "key": "application", - "value": "digital", - "namespace": "quantifying" - } - ], - "os_major_version": 8, - "os_minor_version": 0, - "compliant": false, - "system_id": "323b5350-f2ef-458c-b2a8-a59643af20b2", - "security_guide_version": "100.101.8" - }, - { - "id": "032a1d80-f5ad-43c8-9ce2-367f72f2075a", - "end_time": "2024-11-28T14:43:51.670Z", - "failed_rule_count": 0, - "supported": true, - "score": 47.57812626906297, - "type": "test_result", - "display_name": "orn.test", - "groups": [], - "tags": [ - { - "key": "driver", - "value": "optical", - "namespace": "copying" - }, - { - "key": "protocol", - "value": "online", - "namespace": "indexing" - }, - { - "key": "pixel", - "value": "bluetooth", - "namespace": "bypassing" - }, - { - "key": "bandwidth", - "value": "back-end", - "namespace": "parsing" - }, - { - "key": "panel", - "value": "digital", - "namespace": "generating" - } - ], - "os_major_version": 8, - "os_minor_version": 0, - "compliant": false, - "system_id": "a2fb116e-1444-4eb7-94a6-068fa394d3af", - "security_guide_version": "100.101.8" - } - ], - "meta": { - "total": 25, - "tags": [], - "limit": 10, - "offset": 0, - "sort_by": "score" - }, - "links": { - "first": "/api/compliance/v2/reports/5351a772-6334-41f9-8d74-d5c311133297/test_results?limit=10&offset=0&sort_by=score", - "last": "/api/compliance/v2/reports/5351a772-6334-41f9-8d74-d5c311133297/test_results?limit=10&offset=20&sort_by=score", - "next": "/api/compliance/v2/reports/5351a772-6334-41f9-8d74-d5c311133297/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/768c39ba-dcc9-4df0-9c01-28fee0725274/test_results?filter=%28os_minor_version%3D8%29&limit=10&offset=0", - "last": "/api/compliance/v2/reports/768c39ba-dcc9-4df0-9c01-28fee0725274/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.107.11" - ], - "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": "4473df3c-2e9f-4c13-9442-fdc59f590a93", - "end_time": "2024-11-28T14:43:53.849Z", - "failed_rule_count": 0, - "supported": true, - "score": 12.01468076429843, - "type": "test_result", - "display_name": "erdman.test", - "groups": [], - "tags": [ - { - "key": "monitor", - "value": "solid state", - "namespace": "connecting" - }, - { - "key": "transmitter", - "value": "back-end", - "namespace": "hacking" - }, - { - "key": "array", - "value": "virtual", - "namespace": "generating" - }, - { - "key": "hard drive", - "value": "redundant", - "namespace": "synthesizing" - }, - { - "key": "hard drive", - "value": "haptic", - "namespace": "hacking" - } - ], - "os_major_version": 8, - "os_minor_version": 0, - "compliant": false, - "system_id": "3e6926e0-71ee-47df-bd82-2fa0297bc8d5", - "security_guide_version": "100.108.25" - } - }, - "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 610b8193-f23d-4d61-90b0-3b0d59ffc0d6" - ] - }, - "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": "1d56a0a4-caa1-4a28-99da-d5c0208e4cfd", - "ref_id": "foo_value_72f5e98a-32cb-48ab-b007-a97e404c4e95", - "title": "Omnis fugit aspernatur eaque.", - "description": "Neque sapiente non. Non labore fuga. Ex et voluptas.", - "value_type": "number", - "default_value": "0.589420703645653", - "type": "value_definition" - }, - { - "id": "3158bbcf-43f6-49d8-be5a-7fd282924162", - "ref_id": "foo_value_6db73f5a-8ccb-4c9d-b082-9a99d8c2a550", - "title": "Ipsum veritatis qui est.", - "description": "Qui libero distinctio. Quidem distinctio animi. Quo ipsum optio.", - "value_type": "number", - "default_value": "0.10480660595148761", - "type": "value_definition" - }, - { - "id": "362bf500-8e22-498e-867e-f565e3bc7b79", - "ref_id": "foo_value_e472e92c-7a52-4a55-9289-653a78183223", - "title": "Quam et et reiciendis.", - "description": "In rerum id. Laudantium provident est. Non optio est.", - "value_type": "number", - "default_value": "0.5502292206508375", - "type": "value_definition" - }, - { - "id": "3e13f50a-8503-4a08-928a-0a0355c016e4", - "ref_id": "foo_value_bc8790ae-5c89-4501-955f-20a1d99d4b79", - "title": "Reiciendis impedit ducimus eos.", - "description": "Rerum voluptates et. Vero omnis consequatur. Iure at fuga.", - "value_type": "number", - "default_value": "0.3903416182522993", - "type": "value_definition" - }, - { - "id": "45421a83-dd46-426b-a065-19ec889a7deb", - "ref_id": "foo_value_55c51f4a-a44b-4101-81c4-4836027671b0", - "title": "Natus consequatur laborum molestiae.", - "description": "Accusantium ut laboriosam. Quaerat et odio. Et qui ipsam.", - "value_type": "number", - "default_value": "0.061075273799558905", - "type": "value_definition" - }, - { - "id": "4b29f76d-9c91-403b-a01f-68b81dda3a06", - "ref_id": "foo_value_30dda532-8b6c-4ed5-9a55-b085d2219554", - "title": "Illum numquam et error.", - "description": "Voluptates ratione nostrum. Est possimus cumque. Non voluptas ut.", - "value_type": "number", - "default_value": "0.10856737161472019", - "type": "value_definition" - }, - { - "id": "536fa9e8-953d-4548-aa4a-ec6b7b3cc502", - "ref_id": "foo_value_d264f0a6-c2d9-4378-b81f-1da0dea63ecc", - "title": "Voluptas corrupti et facere.", - "description": "Nulla iusto veritatis. Ea sit modi. Qui facere ducimus.", - "value_type": "number", - "default_value": "0.09911864172750628", - "type": "value_definition" - }, - { - "id": "55587d9a-50e2-446a-b6c1-8de492f99d19", - "ref_id": "foo_value_208ac5d4-d002-43ec-a7a5-076c43064982", - "title": "Quaerat aliquid id dolores.", - "description": "Illo animi ipsam. Perferendis modi officiis. Reiciendis ad voluptates.", - "value_type": "number", - "default_value": "0.37229609800727104", - "type": "value_definition" - }, - { - "id": "6300d1ee-3902-4d54-aa58-52e02b7cb7b4", - "ref_id": "foo_value_c43060b0-c11a-4495-9dd3-e984ab83db6a", - "title": "Non doloremque aperiam est.", - "description": "Dolore quia odio. Magnam laborum dolores. Numquam asperiores aperiam.", - "value_type": "number", - "default_value": "0.20602296657054553", - "type": "value_definition" - }, - { - "id": "73d12986-1fff-460f-9c2b-093e4a12eb63", - "ref_id": "foo_value_e5603489-7c7e-4409-9473-8f09bffc2bd2", - "title": "Quia officia dignissimos neque.", - "description": "Repudiandae vitae temporibus. Est vel fugit. Rerum aut aut.", - "value_type": "number", - "default_value": "0.754290300686453", - "type": "value_definition" - } - ], - "meta": { - "total": 25, - "limit": 10, - "offset": 0 - }, - "links": { - "first": "/api/compliance/v2/security_guides/69d23e25-f8e4-4d5e-b078-801db7564602/value_definitions?limit=10&offset=0", - "last": "/api/compliance/v2/security_guides/69d23e25-f8e4-4d5e-b078-801db7564602/value_definitions?limit=10&offset=20", - "next": "/api/compliance/v2/security_guides/69d23e25-f8e4-4d5e-b078-801db7564602/value_definitions?limit=10&offset=10" - } - }, - "summary": "", - "description": "" - }, - "List of Value Definitions sorted by \"title:asc\"": { - "value": { - "data": [ - { - "id": "166c9c26-a5df-4014-a1c6-5788f71b77cc", - "ref_id": "foo_value_f1913688-715b-4ab2-8de8-af07a72ddb0c", - "title": "Aliquid et voluptates atque.", - "description": "Et sit facilis. Corrupti qui harum. Impedit magnam consequatur.", - "value_type": "number", - "default_value": "0.05089852792241878", - "type": "value_definition" - }, - { - "id": "97b68a52-1847-4054-b37e-e97c692ed95a", - "ref_id": "foo_value_4d2781a2-d540-48a8-851e-a17db17c8103", - "title": "Assumenda minus praesentium est.", - "description": "Temporibus sapiente repudiandae. Id officia dolorem. Fuga culpa sed.", - "value_type": "number", - "default_value": "0.945740997200241", - "type": "value_definition" - }, - { - "id": "9d220726-9bc5-4f49-83a7-c8382872a7fa", - "ref_id": "foo_value_80246b05-921a-4f10-bda8-18fe12d56ea9", - "title": "Atque reiciendis sint excepturi.", - "description": "Ut corporis soluta. Quos omnis veritatis. Id quidem omnis.", - "value_type": "number", - "default_value": "0.5622905854278331", - "type": "value_definition" - }, - { - "id": "cf81d615-f66e-41b0-9a59-363d26c83a2c", - "ref_id": "foo_value_8f40b717-64d7-408e-9dd0-35202f9f0f7e", - "title": "Deleniti modi qui a.", - "description": "Provident at et. Sunt repellendus harum. Suscipit repellendus voluptatem.", - "value_type": "number", - "default_value": "0.6472340748827418", - "type": "value_definition" - }, - { - "id": "90577cb7-591f-4308-b858-81aa5eb60084", - "ref_id": "foo_value_9f3c44a4-eb97-47df-9279-ebf57c913212", - "title": "Deserunt qui deleniti eaque.", - "description": "Aliquid delectus doloremque. Distinctio enim illo. Nam autem nihil.", - "value_type": "number", - "default_value": "0.35107395021818744", - "type": "value_definition" - }, - { - "id": "3ae5de67-c682-4384-beaf-23ffa1ca6367", - "ref_id": "foo_value_4d5aec95-6bec-49eb-af5d-6560d176013f", - "title": "Ea voluptas rem ut.", - "description": "Ullam rerum veritatis. Vero et aut. Consequatur aspernatur dolorem.", - "value_type": "number", - "default_value": "0.4282655901567878", - "type": "value_definition" - }, - { - "id": "8435151d-ce0b-4350-b338-d31090eb1a85", - "ref_id": "foo_value_2e37315e-940e-4cfd-8375-8cf04b597655", - "title": "Eos voluptate nulla ut.", - "description": "Quos aspernatur quam. Eos voluptas sunt. Iure eius architecto.", - "value_type": "number", - "default_value": "0.5307343951334518", - "type": "value_definition" - }, - { - "id": "80533c01-dcae-4d4d-b91f-c0f072a1a9ba", - "ref_id": "foo_value_4564ab32-97ec-4c05-bec8-0ca0434af427", - "title": "Esse quos dolorum fugiat.", - "description": "Et ut quos. Libero quis voluptatem. Enim velit tempore.", - "value_type": "number", - "default_value": "0.5326454279941517", - "type": "value_definition" - }, - { - "id": "8287cedb-74f7-4c22-8ec0-ec118f871f2f", - "ref_id": "foo_value_269ed0b8-765d-4890-88c4-ca5270dedd17", - "title": "Est omnis et quis.", - "description": "Inventore dolorum eos. Excepturi officia distinctio. Perspiciatis tempora nihil.", - "value_type": "number", - "default_value": "0.22735720813295468", - "type": "value_definition" - }, - { - "id": "a8424070-8eae-47b6-94d6-a628c86e641a", - "ref_id": "foo_value_63661654-25af-49ae-9aa7-b71459fab1f3", - "title": "Et ipsum animi blanditiis.", - "description": "Voluptatibus laborum ratione. Et eos voluptatem. Tempore nam aut.", - "value_type": "number", - "default_value": "0.12736505520937802", - "type": "value_definition" - } - ], - "meta": { - "total": 25, - "limit": 10, - "offset": 0, - "sort_by": "title" - }, - "links": { - "first": "/api/compliance/v2/security_guides/44e5669c-3d55-42a0-b567-a5833dd7d0f5/value_definitions?limit=10&offset=0&sort_by=title", - "last": "/api/compliance/v2/security_guides/44e5669c-3d55-42a0-b567-a5833dd7d0f5/value_definitions?limit=10&offset=20&sort_by=title", - "next": "/api/compliance/v2/security_guides/44e5669c-3d55-42a0-b567-a5833dd7d0f5/value_definitions?limit=10&offset=10&sort_by=title" - } - }, - "summary": "", - "description": "" - }, - "List of Value Definitions filtered by '(title=Earum ut commodi et.)'": { - "value": { - "data": [ - { - "id": "0611031d-4892-4c79-aaf5-3287b53cc4f1", - "ref_id": "foo_value_d50e660e-2cf4-449f-a8c2-bec0815c55cd", - "title": "Earum ut commodi et.", - "description": "Odio veritatis ratione. Ducimus officia quisquam. Minus ea facilis.", - "value_type": "number", - "default_value": "0.16987610007671716", - "type": "value_definition" - } - ], - "meta": { - "total": 1, - "filter": "(title=\"Earum ut commodi et.\")", - "limit": 10, - "offset": 0 - }, - "links": { - "first": "/api/compliance/v2/security_guides/1368a922-68ab-45aa-a6f4-22a4e9b0f833/value_definitions?filter=%28title%3D%22Earum+ut+commodi+et.%22%29&limit=10&offset=0", - "last": "/api/compliance/v2/security_guides/1368a922-68ab-45aa-a6f4-22a4e9b0f833/value_definitions?filter=%28title%3D%22Earum+ut+commodi+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/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": "ee632933-4124-4638-b519-0933e8344d3e", - "ref_id": "foo_value_73cab56e-fa64-4035-9b83-2b35215b6a49", - "title": "Natus voluptatem ut in.", - "description": "Minima sit nobis. Ipsam error repudiandae. Delectus nulla sed.", - "value_type": "number", - "default_value": "0.2255550691632362", - "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 28e974e7-52ee-4fdb-889e-7cbee91708f0" - ] - }, - "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:rhel6|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:rhel6|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" - ] - }, - "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": [ - { - "dfce8ca4-c36f-4d9e-b2c2-f6cdcc62b30c": "foo", - "6bd616ea-20b7-4f0d-af02-f4104f193e44": "123", - "7472e746-10e8-481e-a7d6-40e873965314": "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" - } - } - } - } - } -} \ 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 25fe701f..00000000 --- a/api/schema/composerCloudApi.v2.yaml +++ /dev/null @@ -1,2574 +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: - properties: - map: - type: object - description: Distribution name - additionalProperties: - map: - type: object - description: Architecture name - additionalProperties: - map: - type: object - description: Image type name - 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' - PackageMetadata: - required: - - type - - name - - version - - release - - arch - 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 - checksum: - type: string - description: 'Optional package checksum using ALGO:HASH form' - example: 'sha256:525788de3dd44497c27d4172568366b20380a6b6707f0a1970473e4d97046a4f' - - 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 - 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' - 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' - 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 - 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 - 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' - 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 - description: Owner of the directory as a user name or a uid - example: 'root' - group: - oneOf: - - type: string - - type: integer - 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 - description: Owner of the file as a uid or a user name - example: 'root' - group: - oneOf: - - type: string - - type: integer - 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 - description: Owner of the file as a uid or a user name - example: 'root' - group: - oneOf: - - type: string - - type: integer - 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: - x-go-type: uint64 - example: 2147483648 - description: 'size of the filesystem in bytes' - 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. - 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/PackageMetadata' - 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 - - 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 a021a4bd..00000000 --- a/api/schema/contentSources.json +++ /dev/null @@ -1,6649 +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.ModuleInfoResponse": { - "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" - }, - "name": { - "description": "Name of the module", - "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.ModuleInfoResponse" - }, - "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 6483e324..00000000 --- a/api/schema/imageBuilder.yaml +++ /dev/null @@ -1,2203 +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' - /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-10-nightly - - rhel-10.0-nightly - - rhel-10.1-nightly - - rhel-10-beta - - centos-9 - - centos-10 - - fedora-37 - - fedora-38 - - fedora-39 - - fedora-40 - - fedora-41 - 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. - 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. - 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 - description: Owner of the directory as a user name or a uid - example: 'root' - group: - oneOf: - - type: string - - type: integer - 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 - description: Owner of the file as a uid or a user name - example: 'root' - group: - oneOf: - - type: string - - type: integer - 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. - 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. - 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 8bc71a1b..b496d0a8 160000 --- a/build-tools +++ b/build-tools @@ -1 +1 @@ -Subproject commit 8bc71a1b38d729f58c0b3ee17ed4d6b6baf135bc +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 c82b483f..2c739e91 100644 --- a/cockpit/cockpit-image-builder.spec +++ b/cockpit/cockpit-image-builder.spec @@ -1,5 +1,5 @@ Name: cockpit-image-builder -Version: 66 +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/config/routes.json b/config/routes.json new file mode 100644 index 00000000..d848f79e --- /dev/null +++ b/config/routes.json @@ -0,0 +1,3 @@ +{ + "/apps/image-builder*": { "url": "http://127.0.0.1:8003" } +} 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 60fb8465..c8b41f90 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,17 +9,19 @@ "version": "1.1.0", "hasInstallScript": true, "dependencies": { - "@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", - "@reduxjs/toolkit": "2.6.1", + "@ltd/j-toml": "1.38.0", + "@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.3.1", - "@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", @@ -28,72 +30,75 @@ "react-redux": "9.2.0", "react-router-dom": "6.27.0", "redux": "5.0.1", - "redux-promise-middleware": "6.2.0", - "toml": "3.0.0" + "redux-promise-middleware": "6.2.0" }, "devDependencies": { - "@babel/core": "7.26.10", - "@babel/preset-env": "7.26.9", - "@babel/preset-react": "7.26.3", - "@babel/preset-typescript": "7.27.0", - "@currents/playwright": "1.12.1", - "@patternfly/react-icons": "5.4.2", + "@babel/core": "7.28.0", + "@babel/preset-env": "7.28.0", + "@babel/preset-react": "7.27.1", + "@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.23", + "@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/react": "16.2.0", + "@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.30.1", - "@typescript-eslint/parser": "8.29.0", - "@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.1.1", + "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.3", + "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.87.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" @@ -245,40 +250,44 @@ "license": "ISC" }, "node_modules/@babel/code-frame": { - "version": "7.26.2", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.27.1.tgz", + "integrity": "sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==", "license": "MIT", "dependencies": { - "@babel/helper-validator-identifier": "^7.25.9", + "@babel/helper-validator-identifier": "^7.27.1", "js-tokens": "^4.0.0", - "picocolors": "^1.0.0" + "picocolors": "^1.1.1" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/compat-data": { - "version": "7.26.8", + "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", @@ -294,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": { @@ -311,15 +322,15 @@ } }, "node_modules/@babel/generator": { - "version": "7.27.0", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.27.0.tgz", - "integrity": "sha512-VybsKvpiN1gU1sdMZIp7FcqphVVKEwcuj02x73uvcHE0PTihx1nlBcowYWhDwjpoAXRv43+gDzyggGnn1XZhVw==", + "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.0", - "@babel/types": "^7.27.0", - "@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": { @@ -327,22 +338,26 @@ } }, "node_modules/@babel/helper-annotate-as-pure": { - "version": "7.25.9", + "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.25.9" + "@babel/types": "^7.27.3" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-compilation-targets": { - "version": "7.26.5", + "version": "7.27.2", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.27.2.tgz", + "integrity": "sha512-2+1thGUUWWjLTYTHZWK1n8Yga0ijBz1XAhUXcKy81rd5g6yh7hGqMp45v7cadSbEHc9G3OTv45SyneRN3ps4DQ==", "license": "MIT", "dependencies": { - "@babel/compat-data": "^7.26.5", - "@babel/helper-validator-option": "^7.25.9", + "@babel/compat-data": "^7.27.2", + "@babel/helper-validator-option": "^7.27.1", "browserslist": "^4.24.0", "lru-cache": "^5.1.1", "semver": "^6.3.1" @@ -352,18 +367,18 @@ } }, "node_modules/@babel/helper-create-class-features-plugin": { - "version": "7.27.0", - "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.27.0.tgz", - "integrity": "sha512-vSGCvMecvFCd/BdpGlhpXYNhhC4ccxyvQWpbGL4CWbvfEoLFWUZuSuf7s9Aw70flgQF+6vptvgK2IfOnKlRmBg==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.27.1.tgz", + "integrity": "sha512-QwGAmuvM17btKU5VqXfb+Giw4JcN0hjuufz3DYnpeVDvZLAObloM77bhMXiqry3Iio+Ai4phVRDwl6WU10+r5A==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-annotate-as-pure": "^7.25.9", - "@babel/helper-member-expression-to-functions": "^7.25.9", - "@babel/helper-optimise-call-expression": "^7.25.9", - "@babel/helper-replace-supers": "^7.26.5", - "@babel/helper-skip-transparent-expression-wrappers": "^7.25.9", - "@babel/traverse": "^7.27.0", + "@babel/helper-annotate-as-pure": "^7.27.1", + "@babel/helper-member-expression-to-functions": "^7.27.1", + "@babel/helper-optimise-call-expression": "^7.27.1", + "@babel/helper-replace-supers": "^7.27.1", + "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1", + "@babel/traverse": "^7.27.1", "semver": "^6.3.1" }, "engines": { @@ -374,12 +389,14 @@ } }, "node_modules/@babel/helper-create-regexp-features-plugin": { - "version": "7.25.9", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.27.1.tgz", + "integrity": "sha512-uVDC72XVf8UbrH5qQTc18Agb8emwjTiZrQE11Nv3CuBEZmVvTwwE9CBUEvHku06gQCAyYf8Nv6ja1IN+6LMbxQ==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-annotate-as-pure": "^7.25.9", - "regexpu-core": "^6.1.1", + "@babel/helper-annotate-as-pure": "^7.27.1", + "regexpu-core": "^6.2.0", "semver": "^6.3.1" }, "engines": { @@ -390,50 +407,67 @@ } }, "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.25.9", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.27.1.tgz", + "integrity": "sha512-E5chM8eWjTp/aNoVpcbfM7mLxu9XGLWYise2eBKGQomAk/Mb4XoxyqXTZbuTohbsl8EKqdlMhnDI2CCLfcs9wA==", "dev": true, "license": "MIT", "dependencies": { - "@babel/traverse": "^7.25.9", - "@babel/types": "^7.25.9" + "@babel/traverse": "^7.27.1", + "@babel/types": "^7.27.1" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-module-imports": { - "version": "7.25.9", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.27.1.tgz", + "integrity": "sha512-0gSFWUPNXNopqtIPQvlD5WgXYI5GY2kP2cCvoT8kczjbfcfuIljTbcWrulD1CIPIX2gt1wghbDy08yE1p+/r3w==", "license": "MIT", "dependencies": { - "@babel/traverse": "^7.25.9", - "@babel/types": "^7.25.9" + "@babel/traverse": "^7.27.1", + "@babel/types": "^7.27.1" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-module-transforms": { - "version": "7.26.0", + "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.25.9", - "@babel/helper-validator-identifier": "^7.25.9", - "@babel/traverse": "^7.25.9" + "@babel/helper-module-imports": "^7.27.1", + "@babel/helper-validator-identifier": "^7.27.1", + "@babel/traverse": "^7.27.3" }, "engines": { "node": ">=6.9.0" @@ -443,18 +477,22 @@ } }, "node_modules/@babel/helper-optimise-call-expression": { - "version": "7.25.9", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.27.1.tgz", + "integrity": "sha512-URMGH08NzYFhubNSGJrpUEphGKQwMQYBySzat5cAByY1/YgIRkULnIy3tAMeszlL/so2HbeilYloUmSpd7GdVw==", "dev": true, "license": "MIT", "dependencies": { - "@babel/types": "^7.25.9" + "@babel/types": "^7.27.1" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-plugin-utils": { - "version": "7.26.5", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.27.1.tgz", + "integrity": "sha512-1gn1Up5YXka3YYAHGKpbideQ5Yjf1tDa9qYcgysz+cNCXukyLl6DjPXhD3VRwSb8c0J9tA4b2+rHEZtc6R0tlw==", "dev": true, "license": "MIT", "engines": { @@ -462,13 +500,15 @@ } }, "node_modules/@babel/helper-remap-async-to-generator": { - "version": "7.25.9", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.27.1.tgz", + "integrity": "sha512-7fiA521aVw8lSPeI4ZOD3vRFkoqkJcS+z4hFo82bFSH/2tNd6eJ5qCVMS5OzDmZh/kaHQeBaeyxK6wljcPtveA==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-annotate-as-pure": "^7.25.9", - "@babel/helper-wrap-function": "^7.25.9", - "@babel/traverse": "^7.25.9" + "@babel/helper-annotate-as-pure": "^7.27.1", + "@babel/helper-wrap-function": "^7.27.1", + "@babel/traverse": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -478,15 +518,15 @@ } }, "node_modules/@babel/helper-replace-supers": { - "version": "7.26.5", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.26.5.tgz", - "integrity": "sha512-bJ6iIVdYX1YooY2X7w1q6VITt+LnUILtNk7zT78ykuwStx8BauCzxvFqFaHjOpW1bVnSUM1PN1f0p5P21wHxvg==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.27.1.tgz", + "integrity": "sha512-7EHz6qDZc8RYS5ElPoShMheWvEgERonFCs7IAonWLLUTXW59DP14bCZt89/GKyreYn8g3S83m21FelHKbeDCKA==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-member-expression-to-functions": "^7.25.9", - "@babel/helper-optimise-call-expression": "^7.25.9", - "@babel/traverse": "^7.26.5" + "@babel/helper-member-expression-to-functions": "^7.27.1", + "@babel/helper-optimise-call-expression": "^7.27.1", + "@babel/traverse": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -496,71 +536,81 @@ } }, "node_modules/@babel/helper-skip-transparent-expression-wrappers": { - "version": "7.25.9", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.27.1.tgz", + "integrity": "sha512-Tub4ZKEXqbPjXgWLl2+3JpQAYBJ8+ikpQ2Ocj/q/r0LwE3UhENh7EUabyHjz2kCEsrRY83ew2DQdHluuiDQFzg==", "dev": true, "license": "MIT", "dependencies": { - "@babel/traverse": "^7.25.9", - "@babel/types": "^7.25.9" + "@babel/traverse": "^7.27.1", + "@babel/types": "^7.27.1" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-string-parser": { - "version": "7.25.9", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz", + "integrity": "sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==", "license": "MIT", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-validator-identifier": { - "version": "7.25.9", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.27.1.tgz", + "integrity": "sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow==", "license": "MIT", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-validator-option": { - "version": "7.25.9", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.27.1.tgz", + "integrity": "sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==", "license": "MIT", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-wrap-function": { - "version": "7.25.9", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.27.1.tgz", + "integrity": "sha512-NFJK2sHUvrjo8wAU/nQTWU890/zB2jj0qBcCbZbbf+005cAsv6tMjXz31fBign6M5ov1o0Bllu+9nbqkfsjjJQ==", "dev": true, "license": "MIT", "dependencies": { - "@babel/template": "^7.25.9", - "@babel/traverse": "^7.25.9", - "@babel/types": "^7.25.9" + "@babel/template": "^7.27.1", + "@babel/traverse": "^7.27.1", + "@babel/types": "^7.27.1" }, "engines": { "node": ">=6.9.0" } }, "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.0", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.27.0.tgz", - "integrity": "sha512-iaepho73/2Pz7w2eMS0Q5f83+0RKI7i4xmiYeBmDzfRVbQtTOG7Ts0S4HzJVsTMGI9keU8rNfuZr8DKfSt7Yyg==", + "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.0" + "@babel/types": "^7.28.0" }, "bin": { "parser": "bin/babel-parser.js" @@ -570,12 +620,14 @@ } }, "node_modules/@babel/plugin-bugfix-firefox-class-in-computed-class-key": { - "version": "7.25.9", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-firefox-class-in-computed-class-key/-/plugin-bugfix-firefox-class-in-computed-class-key-7.27.1.tgz", + "integrity": "sha512-QPG3C9cCVRQLxAVwmefEmwdTanECuUBMQZ/ym5kiw3XKCGA7qkuQLcjWWHcrD/GKbn/WmJwaezfuuAOcyKlRPA==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.9", - "@babel/traverse": "^7.25.9" + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/traverse": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -585,11 +637,13 @@ } }, "node_modules/@babel/plugin-bugfix-safari-class-field-initializer-scope": { - "version": "7.25.9", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-class-field-initializer-scope/-/plugin-bugfix-safari-class-field-initializer-scope-7.27.1.tgz", + "integrity": "sha512-qNeq3bCKnGgLkEXUuFry6dPlGfCdQNZbn7yUAPCInwAJHMU7THJfrBSozkcWq5sNM6RcF3S8XyQL2A52KNR9IA==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.9" + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -599,11 +653,13 @@ } }, "node_modules/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { - "version": "7.25.9", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.27.1.tgz", + "integrity": "sha512-g4L7OYun04N1WyqMNjldFwlfPCLVkgB54A/YCXICZYBsvJJE3kByKv9c9+R/nAfmIfjl2rKYLNyMHboYbZaWaA==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.9" + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -613,13 +669,15 @@ } }, "node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { - "version": "7.25.9", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.27.1.tgz", + "integrity": "sha512-oO02gcONcD5O1iTLi/6frMJBIwWEHceWGSGqrpCmEL8nogiS6J9PBlE48CaK20/Jx1LuRml9aDftLgdjXT8+Cw==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.9", - "@babel/helper-skip-transparent-expression-wrappers": "^7.25.9", - "@babel/plugin-transform-optional-chaining": "^7.25.9" + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1", + "@babel/plugin-transform-optional-chaining": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -629,12 +687,14 @@ } }, "node_modules/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": { - "version": "7.25.9", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.27.1.tgz", + "integrity": "sha512-6BpaYGDavZqkI6yT+KSPdpZFfpnd68UKXbcjI9pJ13pvHhPrCKWOOLp+ysvMeA+DxnhuPpgIaRpxRxo5A9t5jw==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.9", - "@babel/traverse": "^7.25.9" + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/traverse": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -655,11 +715,13 @@ } }, "node_modules/@babel/plugin-syntax-import-assertions": { - "version": "7.26.0", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.27.1.tgz", + "integrity": "sha512-UT/Jrhw57xg4ILHLFnzFpPDlMbcdEicaAtjPQpbj9wa8T4r5KVWCimHcL/460g8Ht0DMxDyjsLgiWSkVjnwPFg==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.9" + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -669,11 +731,13 @@ } }, "node_modules/@babel/plugin-syntax-import-attributes": { - "version": "7.26.0", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.27.1.tgz", + "integrity": "sha512-oFT0FrKHgF53f4vOsZGi2Hh3I35PfSmVs4IBFLFj4dnafP+hIWDLg3VyKmUHfLoLHlyxY4C7DGtmHuJgn+IGww==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.9" + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -683,11 +747,13 @@ } }, "node_modules/@babel/plugin-syntax-jsx": { - "version": "7.25.9", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.27.1.tgz", + "integrity": "sha512-y8YTNIeKoyhGd9O0Jiyzyyqk8gdjnumGTQPsz0xOZOQ2RmkVJeZ1vmmfIvFEKqucBG6axJGBZDE/7iI5suUI/w==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.9" + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -697,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" @@ -728,11 +794,13 @@ } }, "node_modules/@babel/plugin-transform-arrow-functions": { - "version": "7.25.9", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.27.1.tgz", + "integrity": "sha512-8Z4TGic6xW70FKThA5HYEKKyBpOOsucTOD1DjU3fZxDg+K3zBJcXMFnt/4yQiZnf5+MiOMSXQ9PaEK/Ilh1DeA==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.9" + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -742,13 +810,15 @@ } }, "node_modules/@babel/plugin-transform-async-generator-functions": { - "version": "7.26.8", + "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.26.5", - "@babel/helper-remap-async-to-generator": "^7.25.9", - "@babel/traverse": "^7.26.8" + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-remap-async-to-generator": "^7.27.1", + "@babel/traverse": "^7.28.0" }, "engines": { "node": ">=6.9.0" @@ -758,13 +828,15 @@ } }, "node_modules/@babel/plugin-transform-async-to-generator": { - "version": "7.25.9", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.27.1.tgz", + "integrity": "sha512-NREkZsZVJS4xmTr8qzE5y8AfIPqsdQfRuUiLRTEzb7Qii8iFWCyDKaUV2c0rCuh4ljDZ98ALHP/PetiBV2nddA==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-module-imports": "^7.25.9", - "@babel/helper-plugin-utils": "^7.25.9", - "@babel/helper-remap-async-to-generator": "^7.25.9" + "@babel/helper-module-imports": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-remap-async-to-generator": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -774,11 +846,13 @@ } }, "node_modules/@babel/plugin-transform-block-scoped-functions": { - "version": "7.26.5", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.27.1.tgz", + "integrity": "sha512-cnqkuOtZLapWYZUYM5rVIdv1nXYuFVIltZ6ZJ7nIj585QsjKM5dhL2Fu/lICXZ1OyIAFc7Qy+bvDAtTXqGrlhg==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.26.5" + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -788,11 +862,13 @@ } }, "node_modules/@babel/plugin-transform-block-scoping": { - "version": "7.25.9", + "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": { - "@babel/helper-plugin-utils": "^7.25.9" + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -802,12 +878,14 @@ } }, "node_modules/@babel/plugin-transform-class-properties": { - "version": "7.25.9", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.27.1.tgz", + "integrity": "sha512-D0VcalChDMtuRvJIu3U/fwWjf8ZMykz5iZsg77Nuj821vCKI3zCyRLwRdWbsuJ/uRwZhZ002QtCqIkwC/ZkvbA==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.25.9", - "@babel/helper-plugin-utils": "^7.25.9" + "@babel/helper-create-class-features-plugin": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -817,12 +895,14 @@ } }, "node_modules/@babel/plugin-transform-class-static-block": { - "version": "7.26.0", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.27.1.tgz", + "integrity": "sha512-s734HmYU78MVzZ++joYM+NkJusItbdRcbm+AGRgJCt3iA+yux0QpD9cBVdz3tKyrjVYWRl7j0mHSmv4lhV0aoA==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.25.9", - "@babel/helper-plugin-utils": "^7.25.9" + "@babel/helper-create-class-features-plugin": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -832,16 +912,18 @@ } }, "node_modules/@babel/plugin-transform-classes": { - "version": "7.25.9", + "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.25.9", - "@babel/helper-compilation-targets": "^7.25.9", - "@babel/helper-plugin-utils": "^7.25.9", - "@babel/helper-replace-supers": "^7.25.9", - "@babel/traverse": "^7.25.9", - "globals": "^11.1.0" + "@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.28.0" }, "engines": { "node": ">=6.9.0" @@ -851,12 +933,14 @@ } }, "node_modules/@babel/plugin-transform-computed-properties": { - "version": "7.25.9", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.27.1.tgz", + "integrity": "sha512-lj9PGWvMTVksbWiDT2tW68zGS/cyo4AkZ/QTp0sQT0mjPopCmrSkzxeXkznjqBxzDI6TclZhOJbBmbBLjuOZUw==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.9", - "@babel/template": "^7.25.9" + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/template": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -866,11 +950,14 @@ } }, "node_modules/@babel/plugin-transform-destructuring": { - "version": "7.25.9", + "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.25.9" + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/traverse": "^7.28.0" }, "engines": { "node": ">=6.9.0" @@ -880,12 +967,14 @@ } }, "node_modules/@babel/plugin-transform-dotall-regex": { - "version": "7.25.9", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.27.1.tgz", + "integrity": "sha512-gEbkDVGRvjj7+T1ivxrfgygpT7GUd4vmODtYpbs0gZATdkX8/iSnOtZSxiZnsgm1YjTgjI6VKBGSJJevkrclzw==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.25.9", - "@babel/helper-plugin-utils": "^7.25.9" + "@babel/helper-create-regexp-features-plugin": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -895,11 +984,13 @@ } }, "node_modules/@babel/plugin-transform-duplicate-keys": { - "version": "7.25.9", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.27.1.tgz", + "integrity": "sha512-MTyJk98sHvSs+cvZ4nOauwTTG1JeonDjSGvGGUNHreGQns+Mpt6WX/dVzWBHgg+dYZhkC4X+zTDfkTU+Vy9y7Q==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.9" + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -909,12 +1000,14 @@ } }, "node_modules/@babel/plugin-transform-duplicate-named-capturing-groups-regex": { - "version": "7.25.9", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-named-capturing-groups-regex/-/plugin-transform-duplicate-named-capturing-groups-regex-7.27.1.tgz", + "integrity": "sha512-hkGcueTEzuhB30B3eJCbCYeCaaEQOmQR0AdvzpD4LoN0GXMWzzGSuRrxR2xTnCrvNbVwK9N6/jQ92GSLfiZWoQ==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.25.9", - "@babel/helper-plugin-utils": "^7.25.9" + "@babel/helper-create-regexp-features-plugin": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -924,11 +1017,30 @@ } }, "node_modules/@babel/plugin-transform-dynamic-import": { - "version": "7.25.9", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.27.1.tgz", + "integrity": "sha512-MHzkWQcEmjzzVW9j2q8LGjwGWpG2mjwaaB0BNQwst3FIjqsg8Ct/mIZlvSPJvfi9y2AC8mi/ktxbFVL9pZ1I4A==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.9" + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@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" @@ -938,11 +1050,13 @@ } }, "node_modules/@babel/plugin-transform-exponentiation-operator": { - "version": "7.26.3", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.27.1.tgz", + "integrity": "sha512-uspvXnhHvGKf2r4VVtBpeFnuDWsJLQ6MF6lGJLC89jBR1uoVeqM416AZtTuhTezOfgHicpJQmoD5YUakO/YmXQ==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.9" + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -952,11 +1066,13 @@ } }, "node_modules/@babel/plugin-transform-export-namespace-from": { - "version": "7.25.9", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.27.1.tgz", + "integrity": "sha512-tQvHWSZ3/jH2xuq/vZDy0jNn+ZdXJeM8gHvX4lnJmsc3+50yPlWdZXIc5ay+umX+2/tJIqHqiEqcJvxlmIvRvQ==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.9" + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -966,12 +1082,14 @@ } }, "node_modules/@babel/plugin-transform-for-of": { - "version": "7.26.9", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.27.1.tgz", + "integrity": "sha512-BfbWFFEJFQzLCQ5N8VocnCtA8J1CLkNTe2Ms2wocj75dd6VpiqS5Z5quTYcUoo4Yq+DN0rtikODccuv7RU81sw==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.26.5", - "@babel/helper-skip-transparent-expression-wrappers": "^7.25.9" + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -981,13 +1099,15 @@ } }, "node_modules/@babel/plugin-transform-function-name": { - "version": "7.25.9", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.27.1.tgz", + "integrity": "sha512-1bQeydJF9Nr1eBCMMbC+hdwmRlsv5XYOMu03YSWFwNs0HsAmtSxxF1fyuYPqemVldVyFmlCU7w8UE14LupUSZQ==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-compilation-targets": "^7.25.9", - "@babel/helper-plugin-utils": "^7.25.9", - "@babel/traverse": "^7.25.9" + "@babel/helper-compilation-targets": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/traverse": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -997,11 +1117,13 @@ } }, "node_modules/@babel/plugin-transform-json-strings": { - "version": "7.25.9", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.27.1.tgz", + "integrity": "sha512-6WVLVJiTjqcQauBhn1LkICsR2H+zm62I3h9faTDKt1qP4jn2o72tSvqMwtGFKGTpojce0gJs+76eZ2uCHRZh0Q==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.9" + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -1011,11 +1133,13 @@ } }, "node_modules/@babel/plugin-transform-literals": { - "version": "7.25.9", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.27.1.tgz", + "integrity": "sha512-0HCFSepIpLTkLcsi86GG3mTUzxV5jpmbv97hTETW3yzrAij8aqlD36toB1D0daVFJM8NK6GvKO0gslVQmm+zZA==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.9" + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -1025,11 +1149,13 @@ } }, "node_modules/@babel/plugin-transform-logical-assignment-operators": { - "version": "7.25.9", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.27.1.tgz", + "integrity": "sha512-SJvDs5dXxiae4FbSL1aBJlG4wvl594N6YEVVn9e3JGulwioy6z3oPjx/sQBO3Y4NwUu5HNix6KJ3wBZoewcdbw==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.9" + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -1039,11 +1165,13 @@ } }, "node_modules/@babel/plugin-transform-member-expression-literals": { - "version": "7.25.9", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.27.1.tgz", + "integrity": "sha512-hqoBX4dcZ1I33jCSWcXrP+1Ku7kdqXf1oeah7ooKOIiAdKQ+uqftgCFNOSzA5AMS2XIHEYeGFg4cKRCdpxzVOQ==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.9" + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -1053,12 +1181,14 @@ } }, "node_modules/@babel/plugin-transform-modules-amd": { - "version": "7.25.9", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.27.1.tgz", + "integrity": "sha512-iCsytMg/N9/oFq6n+gFTvUYDZQOMK5kEdeYxmxt91fcJGycfxVP9CnrxoliM0oumFERba2i8ZtwRUCMhvP1LnA==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-module-transforms": "^7.25.9", - "@babel/helper-plugin-utils": "^7.25.9" + "@babel/helper-module-transforms": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -1068,12 +1198,14 @@ } }, "node_modules/@babel/plugin-transform-modules-commonjs": { - "version": "7.26.3", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.27.1.tgz", + "integrity": "sha512-OJguuwlTYlN0gBZFRPqwOGNWssZjfIUdS7HMYtN8c1KmwpwHFBwTeFZrg9XZa+DFTitWOW5iTAG7tyCUPsCCyw==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-module-transforms": "^7.26.0", - "@babel/helper-plugin-utils": "^7.25.9" + "@babel/helper-module-transforms": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -1083,14 +1215,16 @@ } }, "node_modules/@babel/plugin-transform-modules-systemjs": { - "version": "7.25.9", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.27.1.tgz", + "integrity": "sha512-w5N1XzsRbc0PQStASMksmUeqECuzKuTJer7kFagK8AXgpCMkeDMO5S+aaFb7A51ZYDF7XI34qsTX+fkHiIm5yA==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-module-transforms": "^7.25.9", - "@babel/helper-plugin-utils": "^7.25.9", - "@babel/helper-validator-identifier": "^7.25.9", - "@babel/traverse": "^7.25.9" + "@babel/helper-module-transforms": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-validator-identifier": "^7.27.1", + "@babel/traverse": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -1100,12 +1234,14 @@ } }, "node_modules/@babel/plugin-transform-modules-umd": { - "version": "7.25.9", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.27.1.tgz", + "integrity": "sha512-iQBE/xC5BV1OxJbp6WG7jq9IWiD+xxlZhLrdwpPkTX3ydmXdvoCpyfJN7acaIBZaOqTfr76pgzqBJflNbeRK+w==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-module-transforms": "^7.25.9", - "@babel/helper-plugin-utils": "^7.25.9" + "@babel/helper-module-transforms": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -1115,12 +1251,14 @@ } }, "node_modules/@babel/plugin-transform-named-capturing-groups-regex": { - "version": "7.25.9", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.27.1.tgz", + "integrity": "sha512-SstR5JYy8ddZvD6MhV0tM/j16Qds4mIpJTOd1Yu9J9pJjH93bxHECF7pgtc28XvkzTD6Pxcm/0Z73Hvk7kb3Ng==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.25.9", - "@babel/helper-plugin-utils": "^7.25.9" + "@babel/helper-create-regexp-features-plugin": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -1130,11 +1268,13 @@ } }, "node_modules/@babel/plugin-transform-new-target": { - "version": "7.25.9", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.27.1.tgz", + "integrity": "sha512-f6PiYeqXQ05lYq3TIfIDu/MtliKUbNwkGApPUvyo6+tc7uaR4cPjPe7DFPr15Uyycg2lZU6btZ575CuQoYh7MQ==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.9" + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -1144,11 +1284,13 @@ } }, "node_modules/@babel/plugin-transform-nullish-coalescing-operator": { - "version": "7.26.6", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.27.1.tgz", + "integrity": "sha512-aGZh6xMo6q9vq1JGcw58lZ1Z0+i0xB2x0XaauNIUXd6O1xXc3RwoWEBlsTQrY4KQ9Jf0s5rgD6SiNkaUdJegTA==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.26.5" + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -1158,11 +1300,13 @@ } }, "node_modules/@babel/plugin-transform-numeric-separator": { - "version": "7.25.9", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.27.1.tgz", + "integrity": "sha512-fdPKAcujuvEChxDBJ5c+0BTaS6revLV7CJL08e4m3de8qJfNIuCc2nc7XJYOjBoTMJeqSmwXJ0ypE14RCjLwaw==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.9" + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -1172,13 +1316,17 @@ } }, "node_modules/@babel/plugin-transform-object-rest-spread": { - "version": "7.25.9", + "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.25.9", - "@babel/helper-plugin-utils": "^7.25.9", - "@babel/plugin-transform-parameters": "^7.25.9" + "@babel/helper-compilation-targets": "^7.27.2", + "@babel/helper-plugin-utils": "^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" @@ -1188,12 +1336,14 @@ } }, "node_modules/@babel/plugin-transform-object-super": { - "version": "7.25.9", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.27.1.tgz", + "integrity": "sha512-SFy8S9plRPbIcxlJ8A6mT/CxFdJx/c04JEctz4jf8YZaVS2px34j7NXRrlGlHkN/M2gnpL37ZpGRGVFLd3l8Ng==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.9", - "@babel/helper-replace-supers": "^7.25.9" + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-replace-supers": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -1203,11 +1353,13 @@ } }, "node_modules/@babel/plugin-transform-optional-catch-binding": { - "version": "7.25.9", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.27.1.tgz", + "integrity": "sha512-txEAEKzYrHEX4xSZN4kJ+OfKXFVSWKB2ZxM9dpcE3wT7smwkNmXo5ORRlVzMVdJbD+Q8ILTgSD7959uj+3Dm3Q==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.9" + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -1217,12 +1369,14 @@ } }, "node_modules/@babel/plugin-transform-optional-chaining": { - "version": "7.25.9", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.27.1.tgz", + "integrity": "sha512-BQmKPPIuc8EkZgNKsv0X4bPmOoayeu4F1YCwx2/CfmDSXDbp7GnzlUH+/ul5VGfRg1AoFPsrIThlEBj2xb4CAg==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.9", - "@babel/helper-skip-transparent-expression-wrappers": "^7.25.9" + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -1232,11 +1386,13 @@ } }, "node_modules/@babel/plugin-transform-parameters": { - "version": "7.25.9", + "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": { - "@babel/helper-plugin-utils": "^7.25.9" + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -1246,12 +1402,14 @@ } }, "node_modules/@babel/plugin-transform-private-methods": { - "version": "7.25.9", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.27.1.tgz", + "integrity": "sha512-10FVt+X55AjRAYI9BrdISN9/AQWHqldOeZDUoLyif1Kn05a56xVBXb8ZouL8pZ9jem8QpXaOt8TS7RHUIS+GPA==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.25.9", - "@babel/helper-plugin-utils": "^7.25.9" + "@babel/helper-create-class-features-plugin": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -1261,13 +1419,15 @@ } }, "node_modules/@babel/plugin-transform-private-property-in-object": { - "version": "7.25.9", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.27.1.tgz", + "integrity": "sha512-5J+IhqTi1XPa0DXF83jYOaARrX+41gOewWbkPyjMNRDqgOCqdffGh8L3f/Ek5utaEBZExjSAzcyjmV9SSAWObQ==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-annotate-as-pure": "^7.25.9", - "@babel/helper-create-class-features-plugin": "^7.25.9", - "@babel/helper-plugin-utils": "^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" }, "engines": { "node": ">=6.9.0" @@ -1277,11 +1437,13 @@ } }, "node_modules/@babel/plugin-transform-property-literals": { - "version": "7.25.9", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.27.1.tgz", + "integrity": "sha512-oThy3BCuCha8kDZ8ZkgOg2exvPYUlprMukKQXI1r1pJ47NCvxfkEy8vK+r/hT9nF0Aa4H1WUPZZjHTFtAhGfmQ==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.9" + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -1291,11 +1453,13 @@ } }, "node_modules/@babel/plugin-transform-react-display-name": { - "version": "7.25.9", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.27.1.tgz", + "integrity": "sha512-p9+Vl3yuHPmkirRrg021XiP+EETmPMQTLr6Ayjj85RLNEbb3Eya/4VI0vAdzQG9SEAl2Lnt7fy5lZyMzjYoZQQ==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.9" + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -1305,15 +1469,17 @@ } }, "node_modules/@babel/plugin-transform-react-jsx": { - "version": "7.25.9", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.27.1.tgz", + "integrity": "sha512-2KH4LWGSrJIkVf5tSiBFYuXDAoWRq2MMwgivCf+93dd0GQi8RXLjKA/0EvRnVV5G0hrHczsquXuD01L8s6dmBw==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-annotate-as-pure": "^7.25.9", - "@babel/helper-module-imports": "^7.25.9", - "@babel/helper-plugin-utils": "^7.25.9", - "@babel/plugin-syntax-jsx": "^7.25.9", - "@babel/types": "^7.25.9" + "@babel/helper-annotate-as-pure": "^7.27.1", + "@babel/helper-module-imports": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/plugin-syntax-jsx": "^7.27.1", + "@babel/types": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -1323,11 +1489,13 @@ } }, "node_modules/@babel/plugin-transform-react-jsx-development": { - "version": "7.25.9", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.27.1.tgz", + "integrity": "sha512-ykDdF5yI4f1WrAolLqeF3hmYU12j9ntLQl/AOG1HAS21jxyg1Q0/J/tpREuYLfatGdGmXp/3yS0ZA76kOlVq9Q==", "dev": true, "license": "MIT", "dependencies": { - "@babel/plugin-transform-react-jsx": "^7.25.9" + "@babel/plugin-transform-react-jsx": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -1337,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" @@ -1351,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" @@ -1365,12 +1537,14 @@ } }, "node_modules/@babel/plugin-transform-react-pure-annotations": { - "version": "7.25.9", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.27.1.tgz", + "integrity": "sha512-JfuinvDOsD9FVMTHpzA/pBLisxpv1aSf+OIV8lgH3MuWrks19R27e6a6DipIg4aX1Zm9Wpb04p8wljfKrVSnPA==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-annotate-as-pure": "^7.25.9", - "@babel/helper-plugin-utils": "^7.25.9" + "@babel/helper-annotate-as-pure": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -1380,12 +1554,13 @@ } }, "node_modules/@babel/plugin-transform-regenerator": { - "version": "7.25.9", + "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": { - "@babel/helper-plugin-utils": "^7.25.9", - "regenerator-transform": "^0.15.2" + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -1395,12 +1570,14 @@ } }, "node_modules/@babel/plugin-transform-regexp-modifiers": { - "version": "7.26.0", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regexp-modifiers/-/plugin-transform-regexp-modifiers-7.27.1.tgz", + "integrity": "sha512-TtEciroaiODtXvLZv4rmfMhkCv8jx3wgKpL68PuiPh2M4fvz5jhsA7697N1gMvkvr/JTF13DrFYyEbY9U7cVPA==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.25.9", - "@babel/helper-plugin-utils": "^7.25.9" + "@babel/helper-create-regexp-features-plugin": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -1410,11 +1587,13 @@ } }, "node_modules/@babel/plugin-transform-reserved-words": { - "version": "7.25.9", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.27.1.tgz", + "integrity": "sha512-V2ABPHIJX4kC7HegLkYoDpfg9PVmuWy/i6vUM5eGK22bx4YVFD3M5F0QQnWQoDs6AGsUWTVOopBiMFQgHaSkVw==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.9" + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -1424,11 +1603,13 @@ } }, "node_modules/@babel/plugin-transform-shorthand-properties": { - "version": "7.25.9", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.27.1.tgz", + "integrity": "sha512-N/wH1vcn4oYawbJ13Y/FxcQrWk63jhfNa7jef0ih7PHSIHX2LB7GWE1rkPrOnka9kwMxb6hMl19p7lidA+EHmQ==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.9" + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -1438,12 +1619,14 @@ } }, "node_modules/@babel/plugin-transform-spread": { - "version": "7.25.9", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.27.1.tgz", + "integrity": "sha512-kpb3HUqaILBJcRFVhFUs6Trdd4mkrzcGXss+6/mxUd273PfbWqSDHRzMT2234gIg2QYfAjvXLSquP1xECSg09Q==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.9", - "@babel/helper-skip-transparent-expression-wrappers": "^7.25.9" + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -1453,11 +1636,13 @@ } }, "node_modules/@babel/plugin-transform-sticky-regex": { - "version": "7.25.9", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.27.1.tgz", + "integrity": "sha512-lhInBO5bi/Kowe2/aLdBAawijx+q1pQzicSgnkB6dUPc1+RC8QmJHKf2OjvU+NZWitguJHEaEmbV6VWEouT58g==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.9" + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -1467,11 +1652,13 @@ } }, "node_modules/@babel/plugin-transform-template-literals": { - "version": "7.26.8", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.27.1.tgz", + "integrity": "sha512-fBJKiV7F2DxZUkg5EtHKXQdbsbURW3DZKQUWphDum0uRP6eHGGa/He9mc0mypL680pb+e/lDIthRohlv8NCHkg==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.26.5" + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -1481,11 +1668,13 @@ } }, "node_modules/@babel/plugin-transform-typeof-symbol": { - "version": "7.26.7", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.27.1.tgz", + "integrity": "sha512-RiSILC+nRJM7FY5srIyc4/fGIwUhyDuuBSdWn4y6yT6gm652DpCHZjIipgn6B7MQ1ITOUnAKWixEUjQRIBIcLw==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.26.5" + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -1495,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" @@ -1515,11 +1704,13 @@ } }, "node_modules/@babel/plugin-transform-unicode-escapes": { - "version": "7.25.9", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.27.1.tgz", + "integrity": "sha512-Ysg4v6AmF26k9vpfFuTZg8HRfVWzsh1kVfowA23y9j/Gu6dOuahdUVhkLqpObp3JIv27MLSii6noRnuKN8H0Mg==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.9" + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -1529,12 +1720,14 @@ } }, "node_modules/@babel/plugin-transform-unicode-property-regex": { - "version": "7.25.9", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.27.1.tgz", + "integrity": "sha512-uW20S39PnaTImxp39O5qFlHLS9LJEmANjMG7SxIhap8rCHqu0Ik+tLEPX5DKmHn6CsWQ7j3lix2tFOa5YtL12Q==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.25.9", - "@babel/helper-plugin-utils": "^7.25.9" + "@babel/helper-create-regexp-features-plugin": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -1544,12 +1737,14 @@ } }, "node_modules/@babel/plugin-transform-unicode-regex": { - "version": "7.25.9", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.27.1.tgz", + "integrity": "sha512-xvINq24TRojDuyt6JGtHmkVkrfVV3FPT16uytxImLeBZqW3/H52yN+kM1MGuyPkIQxrzKwPHs5U/MP3qKyzkGw==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.25.9", - "@babel/helper-plugin-utils": "^7.25.9" + "@babel/helper-create-regexp-features-plugin": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -1559,12 +1754,14 @@ } }, "node_modules/@babel/plugin-transform-unicode-sets-regex": { - "version": "7.25.9", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.27.1.tgz", + "integrity": "sha512-EtkOujbc4cgvb0mlpQefi4NTPBzhSIevblFevACNLUspmrALgmEBdL/XfnyyITfd8fKBZrZys92zOWcik7j9Tw==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.25.9", - "@babel/helper-plugin-utils": "^7.25.9" + "@babel/helper-create-regexp-features-plugin": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -1574,78 +1771,81 @@ } }, "node_modules/@babel/preset-env": { - "version": "7.26.9", + "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.26.8", - "@babel/helper-compilation-targets": "^7.26.5", - "@babel/helper-plugin-utils": "^7.26.5", - "@babel/helper-validator-option": "^7.25.9", - "@babel/plugin-bugfix-firefox-class-in-computed-class-key": "^7.25.9", - "@babel/plugin-bugfix-safari-class-field-initializer-scope": "^7.25.9", - "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.25.9", - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.25.9", - "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": "^7.25.9", + "@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", + "@babel/plugin-bugfix-firefox-class-in-computed-class-key": "^7.27.1", + "@babel/plugin-bugfix-safari-class-field-initializer-scope": "^7.27.1", + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.27.1", + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.27.1", + "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": "^7.27.1", "@babel/plugin-proposal-private-property-in-object": "7.21.0-placeholder-for-preset-env.2", - "@babel/plugin-syntax-import-assertions": "^7.26.0", - "@babel/plugin-syntax-import-attributes": "^7.26.0", + "@babel/plugin-syntax-import-assertions": "^7.27.1", + "@babel/plugin-syntax-import-attributes": "^7.27.1", "@babel/plugin-syntax-unicode-sets-regex": "^7.18.6", - "@babel/plugin-transform-arrow-functions": "^7.25.9", - "@babel/plugin-transform-async-generator-functions": "^7.26.8", - "@babel/plugin-transform-async-to-generator": "^7.25.9", - "@babel/plugin-transform-block-scoped-functions": "^7.26.5", - "@babel/plugin-transform-block-scoping": "^7.25.9", - "@babel/plugin-transform-class-properties": "^7.25.9", - "@babel/plugin-transform-class-static-block": "^7.26.0", - "@babel/plugin-transform-classes": "^7.25.9", - "@babel/plugin-transform-computed-properties": "^7.25.9", - "@babel/plugin-transform-destructuring": "^7.25.9", - "@babel/plugin-transform-dotall-regex": "^7.25.9", - "@babel/plugin-transform-duplicate-keys": "^7.25.9", - "@babel/plugin-transform-duplicate-named-capturing-groups-regex": "^7.25.9", - "@babel/plugin-transform-dynamic-import": "^7.25.9", - "@babel/plugin-transform-exponentiation-operator": "^7.26.3", - "@babel/plugin-transform-export-namespace-from": "^7.25.9", - "@babel/plugin-transform-for-of": "^7.26.9", - "@babel/plugin-transform-function-name": "^7.25.9", - "@babel/plugin-transform-json-strings": "^7.25.9", - "@babel/plugin-transform-literals": "^7.25.9", - "@babel/plugin-transform-logical-assignment-operators": "^7.25.9", - "@babel/plugin-transform-member-expression-literals": "^7.25.9", - "@babel/plugin-transform-modules-amd": "^7.25.9", - "@babel/plugin-transform-modules-commonjs": "^7.26.3", - "@babel/plugin-transform-modules-systemjs": "^7.25.9", - "@babel/plugin-transform-modules-umd": "^7.25.9", - "@babel/plugin-transform-named-capturing-groups-regex": "^7.25.9", - "@babel/plugin-transform-new-target": "^7.25.9", - "@babel/plugin-transform-nullish-coalescing-operator": "^7.26.6", - "@babel/plugin-transform-numeric-separator": "^7.25.9", - "@babel/plugin-transform-object-rest-spread": "^7.25.9", - "@babel/plugin-transform-object-super": "^7.25.9", - "@babel/plugin-transform-optional-catch-binding": "^7.25.9", - "@babel/plugin-transform-optional-chaining": "^7.25.9", - "@babel/plugin-transform-parameters": "^7.25.9", - "@babel/plugin-transform-private-methods": "^7.25.9", - "@babel/plugin-transform-private-property-in-object": "^7.25.9", - "@babel/plugin-transform-property-literals": "^7.25.9", - "@babel/plugin-transform-regenerator": "^7.25.9", - "@babel/plugin-transform-regexp-modifiers": "^7.26.0", - "@babel/plugin-transform-reserved-words": "^7.25.9", - "@babel/plugin-transform-shorthand-properties": "^7.25.9", - "@babel/plugin-transform-spread": "^7.25.9", - "@babel/plugin-transform-sticky-regex": "^7.25.9", - "@babel/plugin-transform-template-literals": "^7.26.8", - "@babel/plugin-transform-typeof-symbol": "^7.26.7", - "@babel/plugin-transform-unicode-escapes": "^7.25.9", - "@babel/plugin-transform-unicode-property-regex": "^7.25.9", - "@babel/plugin-transform-unicode-regex": "^7.25.9", - "@babel/plugin-transform-unicode-sets-regex": "^7.25.9", + "@babel/plugin-transform-arrow-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.28.0", + "@babel/plugin-transform-class-properties": "^7.27.1", + "@babel/plugin-transform-class-static-block": "^7.27.1", + "@babel/plugin-transform-classes": "^7.28.0", + "@babel/plugin-transform-computed-properties": "^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", + "@babel/plugin-transform-function-name": "^7.27.1", + "@babel/plugin-transform-json-strings": "^7.27.1", + "@babel/plugin-transform-literals": "^7.27.1", + "@babel/plugin-transform-logical-assignment-operators": "^7.27.1", + "@babel/plugin-transform-member-expression-literals": "^7.27.1", + "@babel/plugin-transform-modules-amd": "^7.27.1", + "@babel/plugin-transform-modules-commonjs": "^7.27.1", + "@babel/plugin-transform-modules-systemjs": "^7.27.1", + "@babel/plugin-transform-modules-umd": "^7.27.1", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.27.1", + "@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.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.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.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", + "@babel/plugin-transform-spread": "^7.27.1", + "@babel/plugin-transform-sticky-regex": "^7.27.1", + "@babel/plugin-transform-template-literals": "^7.27.1", + "@babel/plugin-transform-typeof-symbol": "^7.27.1", + "@babel/plugin-transform-unicode-escapes": "^7.27.1", + "@babel/plugin-transform-unicode-property-regex": "^7.27.1", + "@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": { @@ -1669,16 +1869,18 @@ } }, "node_modules/@babel/preset-react": { - "version": "7.26.3", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.27.1.tgz", + "integrity": "sha512-oJHWh2gLhU9dW9HHr42q0cI0/iHHXTLGe39qvpAZZzagHy0MzYLCnCVV0symeRvzmjHyVU7mw2K06E6u/JwbhA==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.9", - "@babel/helper-validator-option": "^7.25.9", - "@babel/plugin-transform-react-display-name": "^7.25.9", - "@babel/plugin-transform-react-jsx": "^7.25.9", - "@babel/plugin-transform-react-jsx-development": "^7.25.9", - "@babel/plugin-transform-react-pure-annotations": "^7.25.9" + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-validator-option": "^7.27.1", + "@babel/plugin-transform-react-display-name": "^7.27.1", + "@babel/plugin-transform-react-jsx": "^7.27.1", + "@babel/plugin-transform-react-jsx-development": "^7.27.1", + "@babel/plugin-transform-react-pure-annotations": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -1688,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" @@ -1720,45 +1922,45 @@ } }, "node_modules/@babel/template": { - "version": "7.27.0", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.27.0.tgz", - "integrity": "sha512-2ncevenBqXI6qRMukPlXwHKHchC7RyMuu4xv5JBXRfOGVcTy1mXCD12qrp7Jsoxll1EV3+9sE4GugBVRjT2jFA==", + "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.26.2", - "@babel/parser": "^7.27.0", - "@babel/types": "^7.27.0" + "@babel/code-frame": "^7.27.1", + "@babel/parser": "^7.27.2", + "@babel/types": "^7.27.1" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/traverse": { - "version": "7.27.0", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.27.0.tgz", - "integrity": "sha512-19lYZFzYVQkkHkl4Cy4WrAVcqBkgvV2YM2TU3xG6DIwO7O3ecbDPfW3yM3bjAGcqcQHi+CCtjMR3dIEHxsd6bA==", + "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.26.2", - "@babel/generator": "^7.27.0", - "@babel/parser": "^7.27.0", - "@babel/template": "^7.27.0", - "@babel/types": "^7.27.0", - "debug": "^4.3.1", - "globals": "^11.1.0" + "@babel/code-frame": "^7.27.1", + "@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.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.27.0.tgz", - "integrity": "sha512-H45s8fVLYjbhFH62dIJ3WtmJ6RSPt/3DRO0ZcT2SUiYiQyz3BLVb9ADEnLl91m74aQPS3AzzeajZHYOalWe3bg==", + "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.25.9", - "@babel/helper-validator-identifier": "^7.25.9" + "@babel/helper-string-parser": "^7.27.1", + "@babel/helper-validator-identifier": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -1874,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": [ { @@ -1891,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": [ { @@ -1913,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": [ { @@ -1930,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": { @@ -2134,25 +2342,25 @@ } }, "node_modules/@currents/playwright": { - "version": "1.12.1", - "resolved": "https://registry.npmjs.org/@currents/playwright/-/playwright-1.12.1.tgz", - "integrity": "sha512-mNkcyRnbewsl0slWftscRvO/9RkVRL6OsDpyi0tQQY4xGwS++0ja5r1HBvrjPJgjtQGllKltpSR3uZliy0vpuA==", + "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": { - "@babel/code-frame": "^7.18.6", + "@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.8.3", + "axios": "^1.10.0", "axios-retry": "^4.5.0", "c12": "^1.11.2", "chalk": "^4.1.2", "commander": "^12.1.0", "date-fns": "^4.1.0", "debug": "^4.3.7", - "dotenv": "^16.0.3", - "execa": "^9.5.2", + "dotenv": "^16.5.0", + "execa": "^9.5.3", "getos": "^3.2.1", "https-proxy-agent": "^7.0.5", "istanbul-lib-coverage": "^3.2.2", @@ -2168,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", @@ -2292,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" @@ -2299,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": { @@ -2727,7 +2940,9 @@ } }, "node_modules/@eslint-community/eslint-utils": { - "version": "4.4.1", + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.7.0.tgz", + "integrity": "sha512-dyybb3AcajC7uha6CvhdVRJqaKyn7w2YKqKyAN37NKYgZT36w+iRb0Dymmc5qEJ549c/S31cMMSFd75bteCpCw==", "dev": true, "license": "MIT", "dependencies": { @@ -2762,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", @@ -2778,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" @@ -2786,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": { @@ -2800,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": { @@ -2809,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" @@ -2824,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": { @@ -2838,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": { @@ -2875,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": { @@ -2920,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", @@ -3087,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": { @@ -3105,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", @@ -3125,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", @@ -3189,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", @@ -3208,6 +3516,12 @@ "dev": true, "license": "MIT" }, + "node_modules/@ltd/j-toml": { + "version": "1.38.0", + "resolved": "https://registry.npmjs.org/@ltd/j-toml/-/j-toml-1.38.0.tgz", + "integrity": "sha512-lYtBcmvHustHQtg4X7TXUu1Xa/tbLC3p2wLvgQI+fWVySguVZJF60Snxijw5EiohumxZbR10kWYFFebh1zotiw==", + "license": "LGPL-3.0" + }, "node_modules/@monaco-editor/loader": { "version": "1.4.0", "license": "MIT", @@ -3231,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": { @@ -3248,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": { @@ -3294,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": { @@ -3308,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" }, @@ -3442,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" }, @@ -3477,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": { @@ -3533,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", @@ -3602,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", @@ -3796,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", @@ -3836,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", @@ -3846,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" @@ -3855,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", @@ -3863,16 +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.23", + "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" @@ -3903,15 +4259,19 @@ } }, "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": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/@reduxjs/toolkit/-/toolkit-2.6.1.tgz", - "integrity": "sha512-SSlIqZNYhqm/oMkXbtofwZSt9lrncblzo6YcZ9zoX+zLngRBrCOjK4lNLdkNucJF58RHOWrD9txT3bT3piH7Zw==", + "version": "2.8.2", + "resolved": "https://registry.npmjs.org/@reduxjs/toolkit/-/toolkit-2.8.2.tgz", + "integrity": "sha512-MYlOhQ0sLdw4ud48FoC5w0dH9VfWQjtCjreKwYTT3l+r427qYC5Y8PihNutepr8XrNaBUDQo9khWUwQxZaqt5A==", "license": "MIT", "dependencies": { + "@standard-schema/spec": "^1.0.0", + "@standard-schema/utils": "^0.3.0", "immer": "^10.0.3", "redux": "^5.0.1", "redux-thunk": "^3.1.0", @@ -3937,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", @@ -4243,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, @@ -4306,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.3.1", - "resolved": "https://registry.npmjs.org/@sentry/babel-plugin-component-annotate/-/babel-plugin-component-annotate-3.3.1.tgz", - "integrity": "sha512-5GOxGT7lZN+I8A7Vp0rWY+726FDKEw8HnFiebe51rQrMbfGfCu2Aw9uSM0nT9OG6xhV6WvGccIcCszTPs4fUZQ==", + "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.3.1", - "resolved": "https://registry.npmjs.org/@sentry/bundler-plugin-core/-/bundler-plugin-core-3.3.1.tgz", - "integrity": "sha512-Dd6xaWb293j9otEJ1yJqG2Ra6zB49OPzMNdIkdP8wdY+S9UFQE5PyKTyredmPY7hqCc005OrUQZolIIo9Zl13A==", + "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.3.1", - "@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", @@ -4430,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": { @@ -4449,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": [ @@ -4472,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" ], @@ -4482,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" ], @@ -4499,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" @@ -4517,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" ], @@ -4534,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" @@ -4558,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" ], @@ -4574,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": { @@ -4598,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.3.1", - "resolved": "https://registry.npmjs.org/@sentry/webpack-plugin/-/webpack-plugin-3.3.1.tgz", - "integrity": "sha512-AFRnGNUnlIvq3M+ADdfWb+DIXWKK6yYEkVPAyOppkjO+cL/19gjXMdvAwv+CMFts28YCFKF8Kr3pamUiCmwodA==", + "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.3.1", + "@sentry/bundler-plugin-core": "4.1.1", "unplugin": "1.0.1", "uuid": "^9.0.0" }, @@ -4686,6 +5078,18 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/@standard-schema/spec": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@standard-schema/spec/-/spec-1.0.0.tgz", + "integrity": "sha512-m2bOd0f2RT9k8QJx1JN85cZYyH1RqFBdlwtkSlf4tBDYLCiiZnv1fIIwacK6cqwXavOydf0NPToMQgpKq+dVlA==", + "license": "MIT" + }, + "node_modules/@standard-schema/utils": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/@standard-schema/utils/-/utils-0.3.0.tgz", + "integrity": "sha512-e7Mew686owMaPJVNNLs55PUvgz371nKgwsc4vxE49zsODpJEnxgxRo2y/OKrqueavXgZNMDVj3DdHFlaSAeU8g==", + "license": "MIT" + }, "node_modules/@swc/core": { "version": "1.9.2", "dev": true, @@ -4767,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": { @@ -4775,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": { @@ -4785,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": { @@ -4803,25 +5211,15 @@ "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, "license": "MIT" }, "node_modules/@testing-library/react": { - "version": "16.2.0", + "version": "16.3.0", + "resolved": "https://registry.npmjs.org/@testing-library/react/-/react-16.3.0.tgz", + "integrity": "sha512-kFSyxiEDwv1WLl2fgsq6pPBbw5aWKrsY2/noi1Id0TK0UParSF62oFQFGHXIyaG4pp2tEub/Zlel+fjjZILDsw==", "dev": true, "license": "MIT", "dependencies": { @@ -5019,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, @@ -5043,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": { @@ -5160,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": { @@ -5295,21 +5712,21 @@ } }, "node_modules/@typescript-eslint/eslint-plugin": { - "version": "8.30.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.30.1.tgz", - "integrity": "sha512-v+VWphxMjn+1t48/jO4t950D6KR8JaJuNXzi33Ve6P8sEmPr5k6CEXjdGwT6+LodVnEa91EQCtwjWNUCPweo+Q==", + "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.30.1", - "@typescript-eslint/type-utils": "8.30.1", - "@typescript-eslint/utils": "8.30.1", - "@typescript-eslint/visitor-keys": "8.30.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": "^5.3.1", + "ignore": "^7.0.0", "natural-compare": "^1.4.0", - "ts-api-utils": "^2.0.1" + "ts-api-utils": "^2.1.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -5319,76 +5736,25 @@ "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/@typescript-eslint/scope-manager": { - "version": "8.30.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.30.1.tgz", - "integrity": "sha512-+C0B6ChFXZkuaNDl73FJxRYT0G7ufVPOSQkqkpM/U198wUwUFOtgo1k/QzFh1KjpBitaK7R1tgjVz6o9HmsRPg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@typescript-eslint/types": "8.30.1", - "@typescript-eslint/visitor-keys": "8.30.1" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/types": { - "version": "8.30.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.30.1.tgz", - "integrity": "sha512-81KawPfkuulyWo5QdyG/LOKbspyyiW+p4vpn4bYO7DM/hZImlVnFwrpCTnmNMOt8CvLRr5ojI9nU1Ekpw4RcEw==", + "node_modules/@typescript-eslint/eslint-plugin/node_modules/ignore": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-7.0.4.tgz", + "integrity": "sha512-gJzzk+PQNznz8ysRrC0aOkBNVRBDtE1n53IqyqEf3PXrYwomFs5q4pGMizBMJF+ykh03insJ27hB8gSrD2Hn8A==", "dev": true, "license": "MIT", "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/visitor-keys": { - "version": "8.30.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.30.1.tgz", - "integrity": "sha512-aEhgas7aJ6vZnNFC7K4/vMGDGyOiqWcYZPpIWrTKuTAlsvDNKy2GFDqh9smL+iq069ZvR0YzEeq0B8NJlLzjFA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@typescript-eslint/types": "8.30.1", - "eslint-visitor-keys": "^4.2.0" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/eslint-plugin/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==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" + "node": ">= 4" } }, "node_modules/@typescript-eslint/eslint-plugin/node_modules/ts-api-utils": { - "version": "2.0.1", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-2.1.0.tgz", + "integrity": "sha512-CUgTZL1irw8u29bzrOD/nH85jqyc74D6SshFgujOIA7osm2Rz7dYH77agkx7H4FBNxDq7Cjf+IjaX/8zwFW+ZQ==", "dev": true, "license": "MIT", "engines": { @@ -5399,16 +5765,16 @@ } }, "node_modules/@typescript-eslint/parser": { - "version": "8.29.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.29.0.tgz", - "integrity": "sha512-8C0+jlNJOwQso2GapCVWWfW/rzaq7Lbme+vGUFKE31djwNncIpgXD7Cd4weEsDdkoZDjH0lwwr3QDQFuyrMg9g==", + "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.29.0", - "@typescript-eslint/types": "8.29.0", - "@typescript-eslint/typescript-estree": "8.29.0", - "@typescript-eslint/visitor-keys": "8.29.0", + "@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": { @@ -5420,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.29.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.29.0.tgz", - "integrity": "sha512-aO1PVsq7Gm+tcghabUpzEnVSFMCU4/nYIgC2GOatJcllvWfnhrgW0ZEbnTxm36QsikmCN1K/6ZgM7fok2I7xNw==", + "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.29.0", - "@typescript-eslint/visitor-keys": "8.29.0" + "@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" @@ -5441,17 +5829,35 @@ "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.30.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.30.1.tgz", - "integrity": "sha512-64uBF76bfQiJyHgZISC7vcNz3adqQKIccVoKubyQcOnNcdJBvYOILV1v22Qhsw3tw3VQu5ll8ND6hycgAR5fEA==", + "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.30.1", - "@typescript-eslint/utils": "8.30.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.0.1" + "ts-api-utils": "^2.1.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -5462,92 +5868,7 @@ }, "peerDependencies": { "eslint": "^8.57.0 || ^9.0.0", - "typescript": ">=4.8.4 <5.9.0" - } - }, - "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/types": { - "version": "8.30.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.30.1.tgz", - "integrity": "sha512-81KawPfkuulyWo5QdyG/LOKbspyyiW+p4vpn4bYO7DM/hZImlVnFwrpCTnmNMOt8CvLRr5ojI9nU1Ekpw4RcEw==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/typescript-estree": { - "version": "8.30.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.30.1.tgz", - "integrity": "sha512-kQQnxymiUy9tTb1F2uep9W6aBiYODgq5EMSk6Nxh4Z+BDUoYUSa029ISs5zTzKBFnexQEh71KqwjKnRz58lusQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@typescript-eslint/types": "8.30.1", - "@typescript-eslint/visitor-keys": "8.30.1", - "debug": "^4.3.4", - "fast-glob": "^3.3.2", - "is-glob": "^4.0.3", - "minimatch": "^9.0.4", - "semver": "^7.6.0", - "ts-api-utils": "^2.0.1" - }, - "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 <5.9.0" - } - }, - "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/visitor-keys": { - "version": "8.30.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.30.1.tgz", - "integrity": "sha512-aEhgas7aJ6vZnNFC7K4/vMGDGyOiqWcYZPpIWrTKuTAlsvDNKy2GFDqh9smL+iq069ZvR0YzEeq0B8NJlLzjFA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@typescript-eslint/types": "8.30.1", - "eslint-visitor-keys": "^4.2.0" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/type-utils/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==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/@typescript-eslint/type-utils/node_modules/semver": { - "version": "7.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.1.tgz", - "integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" + "typescript": ">=4.8.4 <6.0.0" } }, "node_modules/@typescript-eslint/type-utils/node_modules/ts-api-utils": { @@ -5564,9 +5885,9 @@ } }, "node_modules/@typescript-eslint/types": { - "version": "8.29.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.29.0.tgz", - "integrity": "sha512-wcJL/+cOXV+RE3gjCyl/V2G877+2faqvlgtso/ZRbTCnZazh0gXhe+7gbAnfubzN2bNsBtZjDvlh7ero8uIbzg==", + "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": { @@ -5578,20 +5899,22 @@ } }, "node_modules/@typescript-eslint/typescript-estree": { - "version": "8.29.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.29.0.tgz", - "integrity": "sha512-yOfen3jE9ISZR/hHpU/bmNvTtBW1NjRbkSFdZOksL1N+ybPEE7UVGMwqvS6CP022Rp00Sb0tdiIkhSCe6NI8ow==", + "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.29.0", - "@typescript-eslint/visitor-keys": "8.29.0", + "@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", "minimatch": "^9.0.4", "semver": "^7.6.0", - "ts-api-utils": "^2.0.1" + "ts-api-utils": "^2.1.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -5601,13 +5924,13 @@ "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": { - "version": "7.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.1.tgz", - "integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==", + "version": "7.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz", + "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==", "dev": true, "license": "ISC", "bin": { @@ -5631,16 +5954,16 @@ } }, "node_modules/@typescript-eslint/utils": { - "version": "8.30.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.30.1.tgz", - "integrity": "sha512-T/8q4R9En2tcEsWPQgB5BQ0XJVOtfARcUvOa8yJP3fh9M/mXraLxZrkCfGb6ChrO/V3W+Xbd04RacUEqk1CFEQ==", + "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.4.0", - "@typescript-eslint/scope-manager": "8.30.1", - "@typescript-eslint/types": "8.30.1", - "@typescript-eslint/typescript-estree": "8.30.1" + "@eslint-community/eslint-utils": "^4.7.0", + "@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" @@ -5651,134 +5974,18 @@ }, "peerDependencies": { "eslint": "^8.57.0 || ^9.0.0", - "typescript": ">=4.8.4 <5.9.0" - } - }, - "node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/scope-manager": { - "version": "8.30.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.30.1.tgz", - "integrity": "sha512-+C0B6ChFXZkuaNDl73FJxRYT0G7ufVPOSQkqkpM/U198wUwUFOtgo1k/QzFh1KjpBitaK7R1tgjVz6o9HmsRPg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@typescript-eslint/types": "8.30.1", - "@typescript-eslint/visitor-keys": "8.30.1" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/types": { - "version": "8.30.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.30.1.tgz", - "integrity": "sha512-81KawPfkuulyWo5QdyG/LOKbspyyiW+p4vpn4bYO7DM/hZImlVnFwrpCTnmNMOt8CvLRr5ojI9nU1Ekpw4RcEw==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/typescript-estree": { - "version": "8.30.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.30.1.tgz", - "integrity": "sha512-kQQnxymiUy9tTb1F2uep9W6aBiYODgq5EMSk6Nxh4Z+BDUoYUSa029ISs5zTzKBFnexQEh71KqwjKnRz58lusQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@typescript-eslint/types": "8.30.1", - "@typescript-eslint/visitor-keys": "8.30.1", - "debug": "^4.3.4", - "fast-glob": "^3.3.2", - "is-glob": "^4.0.3", - "minimatch": "^9.0.4", - "semver": "^7.6.0", - "ts-api-utils": "^2.0.1" - }, - "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 <5.9.0" - } - }, - "node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/visitor-keys": { - "version": "8.30.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.30.1.tgz", - "integrity": "sha512-aEhgas7aJ6vZnNFC7K4/vMGDGyOiqWcYZPpIWrTKuTAlsvDNKy2GFDqh9smL+iq069ZvR0YzEeq0B8NJlLzjFA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@typescript-eslint/types": "8.30.1", - "eslint-visitor-keys": "^4.2.0" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/utils/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==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/@typescript-eslint/utils/node_modules/semver": { - "version": "7.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.1.tgz", - "integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/@typescript-eslint/utils/node_modules/ts-api-utils": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-2.1.0.tgz", - "integrity": "sha512-CUgTZL1irw8u29bzrOD/nH85jqyc74D6SshFgujOIA7osm2Rz7dYH77agkx7H4FBNxDq7Cjf+IjaX/8zwFW+ZQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18.12" - }, - "peerDependencies": { - "typescript": ">=4.8.4" + "typescript": ">=4.8.4 <6.0.0" } }, "node_modules/@typescript-eslint/visitor-keys": { - "version": "8.29.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.29.0.tgz", - "integrity": "sha512-Sne/pVz8ryR03NFK21VpN88dZ2FdQXOlq3VIklbrTYEt8yXtRFr9tvUhqvCeKjqYk5FSim37sHbooT6vzBTZcg==", + "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.29.0", - "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" @@ -5789,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": { @@ -5801,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" @@ -5819,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" }, @@ -5835,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": { @@ -5849,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", @@ -5872,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": { @@ -5890,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" }, @@ -5906,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" }, @@ -5921,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": { @@ -5953,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": { @@ -5966,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" }, @@ -6005,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": { @@ -6274,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" @@ -6285,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": { @@ -6507,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" @@ -6564,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" @@ -6583,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" @@ -6686,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, @@ -6728,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" @@ -6749,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", @@ -6763,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", @@ -6771,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" @@ -6789,13 +7045,13 @@ } }, "node_modules/axios": { - "version": "1.8.4", - "resolved": "https://registry.npmjs.org/axios/-/axios-1.8.4.tgz", - "integrity": "sha512-eBSYY4Y68NNlHbHBMdeDmKNtDgXWhQsJcGqzO3iLUM0GraQFSS9cVgPX5I9b3lbdFKyYoAEGAZF1DwhTaljNAw==", + "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" } }, @@ -6837,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": { @@ -6850,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" @@ -7025,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" @@ -7050,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", @@ -7067,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" @@ -7180,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": { @@ -7221,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", @@ -7271,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", @@ -7326,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": { @@ -7574,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" @@ -7636,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": { @@ -7644,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" }, @@ -7804,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", @@ -7869,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": { @@ -7891,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", @@ -7972,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", @@ -8113,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" @@ -8533,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, @@ -8552,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, @@ -8582,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, @@ -8640,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, @@ -8732,9 +8969,10 @@ } }, "node_modules/dotenv": { - "version": "16.4.7", - "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.4.7.tgz", - "integrity": "sha512-47qPchRCykZC03FhkYAhrvwU4xDBFIj1QPqaarj6mdM/hgUzfPHcpkHJOn3mJAufFeeAxAzeGsr5X0M4k6fLZQ==", + "version": "16.5.0", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.5.0.tgz", + "integrity": "sha512-m/C+AwOAr9/W1UOIZUo232ejMNnJAJtYQjUbHoNTBNTJSvqzzDh7vnrei3o3r3m9blf6ZoDkvcw0VmozNRFJxg==", + "license": "BSD-2-Clause", "engines": { "node": ">=12" }, @@ -8744,7 +8982,6 @@ }, "node_modules/dunder-proto": { "version": "1.0.1", - "dev": true, "license": "MIT", "dependencies": { "call-bind-apply-helpers": "^1.0.1", @@ -8779,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": { @@ -8870,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": { @@ -8878,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", @@ -8901,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", @@ -8924,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" @@ -8935,7 +9179,6 @@ }, "node_modules/es-define-property": { "version": "1.0.1", - "dev": true, "license": "MIT", "engines": { "node": ">= 0.4" @@ -8943,7 +9186,6 @@ }, "node_modules/es-errors": { "version": "1.3.0", - "dev": true, "license": "MIT", "engines": { "node": ">= 0.4" @@ -8976,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" @@ -8994,7 +9237,6 @@ }, "node_modules/es-set-tostringtag": { "version": "2.1.0", - "dev": true, "license": "MIT", "dependencies": { "es-errors": "^1.3.0", @@ -9007,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": { @@ -9128,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" } @@ -9211,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": { @@ -9228,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": { @@ -9248,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": { @@ -9280,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": { @@ -9320,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": { @@ -9378,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": { @@ -9398,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" }, @@ -9440,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 } @@ -9524,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": { @@ -9579,7 +9862,9 @@ } }, "node_modules/eslint-plugin-testing-library": { - "version": "7.1.1", + "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": { @@ -9622,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, @@ -9644,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": { @@ -9653,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": { @@ -9661,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, @@ -9708,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" @@ -9820,9 +10105,9 @@ } }, "node_modules/execa": { - "version": "9.5.2", - "resolved": "https://registry.npmjs.org/execa/-/execa-9.5.2.tgz", - "integrity": "sha512-EHlpxMCpHWSAh1dgS6bVeoLAXGnJNdR93aabr4QCGbzOM73o5XmRfM/e5FUqsw3aagP8S8XEWUWFAxnRBnAF0Q==", + "version": "9.5.3", + "resolved": "https://registry.npmjs.org/execa/-/execa-9.5.3.tgz", + "integrity": "sha512-QFNnTvU3UjgWFy8Ef9iDHvIdcgZ344ebkwYx4/KLbR+CKQA4xBaHzv+iRpp86QfMHP8faFQLh8iOc57215y4Rg==", "dev": true, "license": "MIT", "dependencies": { @@ -9915,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": { @@ -9938,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", @@ -9953,6 +10240,10 @@ }, "engines": { "node": ">= 0.10.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" } }, "node_modules/express/node_modules/debug": { @@ -9987,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" }, @@ -10095,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" @@ -10223,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": { @@ -10257,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" @@ -10282,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": { @@ -10355,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": { @@ -10408,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": { @@ -10506,7 +10806,6 @@ }, "node_modules/function-bind": { "version": "1.1.2", - "dev": true, "license": "MIT", "funding": { "url": "https://github.com/sponsors/ljharb" @@ -10570,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", @@ -10598,7 +10896,6 @@ }, "node_modules/get-proto": { "version": "1.0.1", - "dev": true, "license": "MIT", "dependencies": { "dunder-proto": "^1.0.1", @@ -10723,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": { @@ -10778,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": { @@ -10799,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, @@ -10820,7 +11156,6 @@ }, "node_modules/gopd": { "version": "1.2.0", - "dev": true, "license": "MIT", "engines": { "node": ">= 0.4" @@ -10915,7 +11250,6 @@ }, "node_modules/has-symbols": { "version": "1.1.0", - "dev": true, "license": "MIT", "engines": { "node": ">= 0.4" @@ -10926,7 +11260,6 @@ }, "node_modules/has-tostringtag": { "version": "1.0.2", - "dev": true, "license": "MIT", "dependencies": { "has-symbols": "^1.0.3" @@ -10940,7 +11273,6 @@ }, "node_modules/hasown": { "version": "2.0.2", - "dev": true, "license": "MIT", "dependencies": { "function-bind": "^1.1.2" @@ -10978,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" }, @@ -11304,9 +11636,9 @@ } }, "node_modules/human-signals": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-8.0.0.tgz", - "integrity": "sha512-/1/GPCpDUCCYwlERiYjxoczfP0zfvZMU/OWgQPMya9AbAE24vseigFdhAMObpc8Q4lc/kjutPfUddDYyAmejnA==", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-8.0.1.tgz", + "integrity": "sha512-eKCa6bwnJhvxj14kZk5NCPc6Hb6BdsU9DZcOnmQKSnO1VKrfV0zCvtttPZUsBvjmNDn8rpcJfpwSYnHBjc95MQ==", "dev": true, "license": "Apache-2.0", "engines": { @@ -11323,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": { @@ -11387,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": { @@ -11687,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": { @@ -11800,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": { @@ -11853,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, @@ -11866,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" }, @@ -11929,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", @@ -12122,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" @@ -12436,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" }, @@ -12488,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", @@ -12502,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", @@ -12511,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", @@ -12520,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", @@ -12528,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", @@ -12536,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", @@ -12545,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", @@ -12553,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", @@ -12562,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", @@ -12570,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", @@ -12579,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", @@ -12588,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", @@ -12597,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", @@ -12606,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", @@ -12668,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": { @@ -12683,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" }, @@ -12736,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" @@ -12812,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" @@ -12845,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" }, @@ -12889,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" }, @@ -13017,7 +13406,6 @@ }, "node_modules/math-intrinsics": { "version": "1.1.0", - "dev": true, "license": "MIT", "engines": { "node": ">= 0.4" @@ -13342,9 +13730,9 @@ "license": "MIT" }, "node_modules/msw": { - "version": "2.7.3", - "resolved": "https://registry.npmjs.org/msw/-/msw-2.7.3.tgz", - "integrity": "sha512-+mycXv8l2fEAjFZ5sjrtjJDmm2ceKGjrNbBr1durRg6VkU9fNUE/gsmQ51hWbHqs+l35W1iM+ZsmOD9Fd6lspw==", + "version": "2.10.5", + "resolved": "https://registry.npmjs.org/msw/-/msw-2.10.5.tgz", + "integrity": "sha512-0EsQCrCI1HbhpBWd89DvmxY6plmvrM96b0sCIztnvcNHQbXn5vqwm1KlXslo6u4wN9LFGLC1WFjjgljcQhe40A==", "dev": true, "hasInstallScript": true, "license": "MIT", @@ -13353,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", @@ -13424,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", @@ -13626,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": { @@ -13661,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": { @@ -13948,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": { @@ -14107,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": { @@ -14215,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" }, @@ -14399,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": { @@ -14486,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" }, @@ -14722,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", @@ -14741,7 +15145,7 @@ ], "license": "MIT", "dependencies": { - "nanoid": "^3.3.8", + "nanoid": "^3.3.11", "picocolors": "^1.1.1", "source-map-js": "^1.2.1" }, @@ -14751,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" }, @@ -14944,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" @@ -14959,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": { @@ -15270,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": { @@ -15284,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": { @@ -15304,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", @@ -15527,11 +15943,15 @@ }, "node_modules/regenerate": { "version": "1.4.2", + "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz", + "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==", "dev": true, "license": "MIT" }, "node_modules/regenerate-unicode-properties": { "version": "10.2.0", + "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.2.0.tgz", + "integrity": "sha512-DqHn3DwbmmPVzeKj9woBadqmXxLvQoQIwu7nopMc72ztvxVmVk2SBhSnx67zuye5TP+lJsb/TBQsjLKhnDf3MA==", "dev": true, "license": "MIT", "dependencies": { @@ -15545,22 +15965,39 @@ "version": "0.14.1", "license": "MIT" }, - "node_modules/regenerator-transform": { - "version": "0.15.2", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/runtime": "^7.8.4" - } - }, - "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": { @@ -15571,14 +16008,16 @@ } }, "node_modules/regexpu-core": { - "version": "6.1.1", + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-6.2.0.tgz", + "integrity": "sha512-H66BPQMrv+V16t8xtmq+UC0CBpiTBA60V8ibS1QVReIp8T1z8hwFxqcGzm9K6lgsN7sB5edVH8a+ze6Fqm4weA==", "dev": true, "license": "MIT", "dependencies": { "regenerate": "^1.4.2", "regenerate-unicode-properties": "^10.2.0", "regjsgen": "^0.8.0", - "regjsparser": "^0.11.0", + "regjsparser": "^0.12.0", "unicode-match-property-ecmascript": "^2.0.0", "unicode-match-property-value-ecmascript": "^2.1.0" }, @@ -15588,11 +16027,15 @@ }, "node_modules/regjsgen": { "version": "0.8.0", + "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.8.0.tgz", + "integrity": "sha512-RvwtGe3d7LvWiDQXeQw8p5asZUmfU1G/l6WbUXeHta7Y2PEIvBTwH6E2EfmYUK8pxcxEdEmaomqyp0vZZ7C+3Q==", "dev": true, "license": "MIT" }, "node_modules/regjsparser": { - "version": "0.11.2", + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.12.0.tgz", + "integrity": "sha512-cnE+y8bz4NhMjISKbgeVJtqNbtf5QpjZP+Bslo+UqkIt9QPnX9q095eiRRASJG1/tz6dlNr6Z5NsBiWYokp6EQ==", "dev": true, "license": "BSD-2-Clause", "dependencies": { @@ -15680,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" } @@ -15952,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", @@ -15965,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", @@ -15977,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" @@ -15989,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", @@ -16002,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", { @@ -16018,9 +16476,9 @@ } }, "node_modules/sass": { - "version": "1.87.0", - "resolved": "https://registry.npmjs.org/sass/-/sass-1.87.0.tgz", - "integrity": "sha512-d0NoFH4v6SjEK7BoX810Jsrhj7IQSYHAHLi/iSpgqKc7LaIDshFRlSg5LOymf9FqQhxEHs2W5ZQXlvy0KD45Uw==", + "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": { @@ -16386,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": { @@ -16560,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, @@ -16792,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, @@ -16811,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" }, @@ -17057,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": { @@ -17066,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": [ { @@ -17083,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", @@ -17093,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", @@ -17130,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": [ { @@ -17147,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": { @@ -17173,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": { @@ -17193,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, @@ -17237,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": { @@ -17301,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, @@ -17424,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" @@ -17434,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": { @@ -17630,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", @@ -17690,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": { @@ -17703,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": { @@ -17748,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": { @@ -17764,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": { @@ -17842,10 +18345,6 @@ "node": ">=0.6" } }, - "node_modules/toml": { - "version": "3.0.0", - "license": "MIT" - }, "node_modules/toposort": { "version": "2.0.2", "license": "MIT" @@ -18096,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" }, @@ -18246,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", @@ -18271,13 +18794,15 @@ } }, "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": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.1.tgz", + "integrity": "sha512-dA8WbNeb2a6oQzAQ55YlT5vQAWGV9WXOsi3SskE3bcCdM0P4SDd+24zS/OCacdRq5BkdsRj9q3Pg6YyQoxIGqg==", "dev": true, "license": "MIT", "engines": { @@ -18286,6 +18811,8 @@ }, "node_modules/unicode-match-property-ecmascript": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz", + "integrity": "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==", "dev": true, "license": "MIT", "dependencies": { @@ -18298,6 +18825,8 @@ }, "node_modules/unicode-match-property-value-ecmascript": { "version": "2.2.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.2.0.tgz", + "integrity": "sha512-4IehN3V/+kkr5YeSSDDQG8QLqO26XpL2XP3GQtqwlT/QYSECAwFztxVHjlbh0+gjJ3XmNLS0zDsbgs9jWKExLg==", "dev": true, "license": "MIT", "engines": { @@ -18306,6 +18835,8 @@ }, "node_modules/unicode-property-aliases-ecmascript": { "version": "2.1.0", + "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz", + "integrity": "sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==", "dev": true, "license": "MIT", "engines": { @@ -18387,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", @@ -18405,7 +18938,7 @@ "license": "MIT", "dependencies": { "escalade": "^3.2.0", - "picocolors": "^1.1.0" + "picocolors": "^1.1.1" }, "bin": { "update-browserslist-db": "cli.js" @@ -18527,15 +19060,18 @@ } }, "node_modules/vite": { - "version": "6.2.6", - "resolved": "https://registry.npmjs.org/vite/-/vite-6.2.6.tgz", - "integrity": "sha512-9xpjNl3kR4rVDZgPNdTL0/c6ao4km69a/2ihNQbcANz8RuCOK3hQBmLSJf3bRKVQjVMda+YvizNE8AwvogcPbw==", + "version": "6.3.4", + "resolved": "https://registry.npmjs.org/vite/-/vite-6.3.4.tgz", + "integrity": "sha512-BiReIiMS2fyFqbqNT/Qqt4CVITDU9M9vE+DKcVAsB+ZV0wvTKd+3hMbkpxz1b+NmEDMegpVbisKiAZOnvO92Sw==", "dev": true, "license": "MIT", "dependencies": { "esbuild": "^0.25.0", + "fdir": "^6.4.4", + "picomatch": "^4.0.2", "postcss": "^8.5.3", - "rollup": "^4.30.1" + "rollup": "^4.34.9", + "tinyglobby": "^0.2.13" }, "bin": { "vite": "bin/vite.js" @@ -18599,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" @@ -18621,33 +19157,63 @@ "url": "https://opencollective.com/vitest" } }, + "node_modules/vite/node_modules/fdir": { + "version": "6.4.4", + "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.4.4.tgz", + "integrity": "sha512-1NZP+GK4GfuAv3PqKvxQRDMjdSRZjnkq7KfhlNrCNNlZ0ygQFpebfrnfnq/W7fpUnAv9aGWmY1zKx7FYL3gwhg==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "picomatch": "^3 || ^4" + }, + "peerDependenciesMeta": { + "picomatch": { + "optional": true + } + } + }, + "node_modules/vite/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/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": { @@ -18663,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": "*" }, @@ -18711,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, @@ -19254,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" }, @@ -19348,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": { @@ -19583,31 +20165,35 @@ } }, "@babel/code-frame": { - "version": "7.26.2", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.27.1.tgz", + "integrity": "sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==", "requires": { - "@babel/helper-validator-identifier": "^7.25.9", + "@babel/helper-validator-identifier": "^7.27.1", "js-tokens": "^4.0.0", - "picocolors": "^1.0.0" + "picocolors": "^1.1.1" } }, "@babel/compat-data": { - "version": "7.26.8" + "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", @@ -19616,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", @@ -19625,203 +20213,248 @@ } }, "@babel/generator": { - "version": "7.27.0", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.27.0.tgz", - "integrity": "sha512-VybsKvpiN1gU1sdMZIp7FcqphVVKEwcuj02x73uvcHE0PTihx1nlBcowYWhDwjpoAXRv43+gDzyggGnn1XZhVw==", + "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.0", - "@babel/types": "^7.27.0", - "@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.25.9", + "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.25.9" + "@babel/types": "^7.27.3" } }, "@babel/helper-compilation-targets": { - "version": "7.26.5", + "version": "7.27.2", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.27.2.tgz", + "integrity": "sha512-2+1thGUUWWjLTYTHZWK1n8Yga0ijBz1XAhUXcKy81rd5g6yh7hGqMp45v7cadSbEHc9G3OTv45SyneRN3ps4DQ==", "requires": { - "@babel/compat-data": "^7.26.5", - "@babel/helper-validator-option": "^7.25.9", + "@babel/compat-data": "^7.27.2", + "@babel/helper-validator-option": "^7.27.1", "browserslist": "^4.24.0", "lru-cache": "^5.1.1", "semver": "^6.3.1" } }, "@babel/helper-create-class-features-plugin": { - "version": "7.27.0", - "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.27.0.tgz", - "integrity": "sha512-vSGCvMecvFCd/BdpGlhpXYNhhC4ccxyvQWpbGL4CWbvfEoLFWUZuSuf7s9Aw70flgQF+6vptvgK2IfOnKlRmBg==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.27.1.tgz", + "integrity": "sha512-QwGAmuvM17btKU5VqXfb+Giw4JcN0hjuufz3DYnpeVDvZLAObloM77bhMXiqry3Iio+Ai4phVRDwl6WU10+r5A==", "dev": true, "requires": { - "@babel/helper-annotate-as-pure": "^7.25.9", - "@babel/helper-member-expression-to-functions": "^7.25.9", - "@babel/helper-optimise-call-expression": "^7.25.9", - "@babel/helper-replace-supers": "^7.26.5", - "@babel/helper-skip-transparent-expression-wrappers": "^7.25.9", - "@babel/traverse": "^7.27.0", + "@babel/helper-annotate-as-pure": "^7.27.1", + "@babel/helper-member-expression-to-functions": "^7.27.1", + "@babel/helper-optimise-call-expression": "^7.27.1", + "@babel/helper-replace-supers": "^7.27.1", + "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1", + "@babel/traverse": "^7.27.1", "semver": "^6.3.1" } }, "@babel/helper-create-regexp-features-plugin": { - "version": "7.25.9", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.27.1.tgz", + "integrity": "sha512-uVDC72XVf8UbrH5qQTc18Agb8emwjTiZrQE11Nv3CuBEZmVvTwwE9CBUEvHku06gQCAyYf8Nv6ja1IN+6LMbxQ==", "dev": true, "requires": { - "@babel/helper-annotate-as-pure": "^7.25.9", - "regexpu-core": "^6.1.1", + "@babel/helper-annotate-as-pure": "^7.27.1", + "regexpu-core": "^6.2.0", "semver": "^6.3.1" } }, "@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.25.9", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.27.1.tgz", + "integrity": "sha512-E5chM8eWjTp/aNoVpcbfM7mLxu9XGLWYise2eBKGQomAk/Mb4XoxyqXTZbuTohbsl8EKqdlMhnDI2CCLfcs9wA==", "dev": true, "requires": { - "@babel/traverse": "^7.25.9", - "@babel/types": "^7.25.9" + "@babel/traverse": "^7.27.1", + "@babel/types": "^7.27.1" } }, "@babel/helper-module-imports": { - "version": "7.25.9", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.27.1.tgz", + "integrity": "sha512-0gSFWUPNXNopqtIPQvlD5WgXYI5GY2kP2cCvoT8kczjbfcfuIljTbcWrulD1CIPIX2gt1wghbDy08yE1p+/r3w==", "requires": { - "@babel/traverse": "^7.25.9", - "@babel/types": "^7.25.9" + "@babel/traverse": "^7.27.1", + "@babel/types": "^7.27.1" } }, "@babel/helper-module-transforms": { - "version": "7.26.0", + "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.25.9", - "@babel/helper-validator-identifier": "^7.25.9", - "@babel/traverse": "^7.25.9" + "@babel/helper-module-imports": "^7.27.1", + "@babel/helper-validator-identifier": "^7.27.1", + "@babel/traverse": "^7.27.3" } }, "@babel/helper-optimise-call-expression": { - "version": "7.25.9", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.27.1.tgz", + "integrity": "sha512-URMGH08NzYFhubNSGJrpUEphGKQwMQYBySzat5cAByY1/YgIRkULnIy3tAMeszlL/so2HbeilYloUmSpd7GdVw==", "dev": true, "requires": { - "@babel/types": "^7.25.9" + "@babel/types": "^7.27.1" } }, "@babel/helper-plugin-utils": { - "version": "7.26.5", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.27.1.tgz", + "integrity": "sha512-1gn1Up5YXka3YYAHGKpbideQ5Yjf1tDa9qYcgysz+cNCXukyLl6DjPXhD3VRwSb8c0J9tA4b2+rHEZtc6R0tlw==", "dev": true }, "@babel/helper-remap-async-to-generator": { - "version": "7.25.9", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.27.1.tgz", + "integrity": "sha512-7fiA521aVw8lSPeI4ZOD3vRFkoqkJcS+z4hFo82bFSH/2tNd6eJ5qCVMS5OzDmZh/kaHQeBaeyxK6wljcPtveA==", "dev": true, "requires": { - "@babel/helper-annotate-as-pure": "^7.25.9", - "@babel/helper-wrap-function": "^7.25.9", - "@babel/traverse": "^7.25.9" + "@babel/helper-annotate-as-pure": "^7.27.1", + "@babel/helper-wrap-function": "^7.27.1", + "@babel/traverse": "^7.27.1" } }, "@babel/helper-replace-supers": { - "version": "7.26.5", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.26.5.tgz", - "integrity": "sha512-bJ6iIVdYX1YooY2X7w1q6VITt+LnUILtNk7zT78ykuwStx8BauCzxvFqFaHjOpW1bVnSUM1PN1f0p5P21wHxvg==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.27.1.tgz", + "integrity": "sha512-7EHz6qDZc8RYS5ElPoShMheWvEgERonFCs7IAonWLLUTXW59DP14bCZt89/GKyreYn8g3S83m21FelHKbeDCKA==", "dev": true, "requires": { - "@babel/helper-member-expression-to-functions": "^7.25.9", - "@babel/helper-optimise-call-expression": "^7.25.9", - "@babel/traverse": "^7.26.5" + "@babel/helper-member-expression-to-functions": "^7.27.1", + "@babel/helper-optimise-call-expression": "^7.27.1", + "@babel/traverse": "^7.27.1" } }, "@babel/helper-skip-transparent-expression-wrappers": { - "version": "7.25.9", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.27.1.tgz", + "integrity": "sha512-Tub4ZKEXqbPjXgWLl2+3JpQAYBJ8+ikpQ2Ocj/q/r0LwE3UhENh7EUabyHjz2kCEsrRY83ew2DQdHluuiDQFzg==", "dev": true, "requires": { - "@babel/traverse": "^7.25.9", - "@babel/types": "^7.25.9" + "@babel/traverse": "^7.27.1", + "@babel/types": "^7.27.1" } }, "@babel/helper-string-parser": { - "version": "7.25.9" + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz", + "integrity": "sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==" }, "@babel/helper-validator-identifier": { - "version": "7.25.9" + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.27.1.tgz", + "integrity": "sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow==" }, "@babel/helper-validator-option": { - "version": "7.25.9" + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.27.1.tgz", + "integrity": "sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==" }, "@babel/helper-wrap-function": { - "version": "7.25.9", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.27.1.tgz", + "integrity": "sha512-NFJK2sHUvrjo8wAU/nQTWU890/zB2jj0qBcCbZbbf+005cAsv6tMjXz31fBign6M5ov1o0Bllu+9nbqkfsjjJQ==", "dev": true, "requires": { - "@babel/template": "^7.25.9", - "@babel/traverse": "^7.25.9", - "@babel/types": "^7.25.9" + "@babel/template": "^7.27.1", + "@babel/traverse": "^7.27.1", + "@babel/types": "^7.27.1" } }, "@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.0", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.27.0.tgz", - "integrity": "sha512-iaepho73/2Pz7w2eMS0Q5f83+0RKI7i4xmiYeBmDzfRVbQtTOG7Ts0S4HzJVsTMGI9keU8rNfuZr8DKfSt7Yyg==", + "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.0" + "@babel/types": "^7.28.0" } }, "@babel/plugin-bugfix-firefox-class-in-computed-class-key": { - "version": "7.25.9", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-firefox-class-in-computed-class-key/-/plugin-bugfix-firefox-class-in-computed-class-key-7.27.1.tgz", + "integrity": "sha512-QPG3C9cCVRQLxAVwmefEmwdTanECuUBMQZ/ym5kiw3XKCGA7qkuQLcjWWHcrD/GKbn/WmJwaezfuuAOcyKlRPA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.25.9", - "@babel/traverse": "^7.25.9" + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/traverse": "^7.27.1" } }, "@babel/plugin-bugfix-safari-class-field-initializer-scope": { - "version": "7.25.9", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-class-field-initializer-scope/-/plugin-bugfix-safari-class-field-initializer-scope-7.27.1.tgz", + "integrity": "sha512-qNeq3bCKnGgLkEXUuFry6dPlGfCdQNZbn7yUAPCInwAJHMU7THJfrBSozkcWq5sNM6RcF3S8XyQL2A52KNR9IA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.25.9" + "@babel/helper-plugin-utils": "^7.27.1" } }, "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { - "version": "7.25.9", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.27.1.tgz", + "integrity": "sha512-g4L7OYun04N1WyqMNjldFwlfPCLVkgB54A/YCXICZYBsvJJE3kByKv9c9+R/nAfmIfjl2rKYLNyMHboYbZaWaA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.25.9" + "@babel/helper-plugin-utils": "^7.27.1" } }, "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { - "version": "7.25.9", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.27.1.tgz", + "integrity": "sha512-oO02gcONcD5O1iTLi/6frMJBIwWEHceWGSGqrpCmEL8nogiS6J9PBlE48CaK20/Jx1LuRml9aDftLgdjXT8+Cw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.25.9", - "@babel/helper-skip-transparent-expression-wrappers": "^7.25.9", - "@babel/plugin-transform-optional-chaining": "^7.25.9" + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1", + "@babel/plugin-transform-optional-chaining": "^7.27.1" } }, "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": { - "version": "7.25.9", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.27.1.tgz", + "integrity": "sha512-6BpaYGDavZqkI6yT+KSPdpZFfpnd68UKXbcjI9pJ13pvHhPrCKWOOLp+ysvMeA+DxnhuPpgIaRpxRxo5A9t5jw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.25.9", - "@babel/traverse": "^7.25.9" + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/traverse": "^7.27.1" } }, "@babel/plugin-proposal-private-property-in-object": { @@ -19830,33 +20463,39 @@ "requires": {} }, "@babel/plugin-syntax-import-assertions": { - "version": "7.26.0", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.27.1.tgz", + "integrity": "sha512-UT/Jrhw57xg4ILHLFnzFpPDlMbcdEicaAtjPQpbj9wa8T4r5KVWCimHcL/460g8Ht0DMxDyjsLgiWSkVjnwPFg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.25.9" + "@babel/helper-plugin-utils": "^7.27.1" } }, "@babel/plugin-syntax-import-attributes": { - "version": "7.26.0", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.27.1.tgz", + "integrity": "sha512-oFT0FrKHgF53f4vOsZGi2Hh3I35PfSmVs4IBFLFj4dnafP+hIWDLg3VyKmUHfLoLHlyxY4C7DGtmHuJgn+IGww==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.25.9" + "@babel/helper-plugin-utils": "^7.27.1" } }, "@babel/plugin-syntax-jsx": { - "version": "7.25.9", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.27.1.tgz", + "integrity": "sha512-y8YTNIeKoyhGd9O0Jiyzyyqk8gdjnumGTQPsz0xOZOQ2RmkVJeZ1vmmfIvFEKqucBG6axJGBZDE/7iI5suUI/w==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.25.9" + "@babel/helper-plugin-utils": "^7.27.1" } }, "@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": { @@ -19868,524 +20507,651 @@ } }, "@babel/plugin-transform-arrow-functions": { - "version": "7.25.9", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.27.1.tgz", + "integrity": "sha512-8Z4TGic6xW70FKThA5HYEKKyBpOOsucTOD1DjU3fZxDg+K3zBJcXMFnt/4yQiZnf5+MiOMSXQ9PaEK/Ilh1DeA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.25.9" + "@babel/helper-plugin-utils": "^7.27.1" } }, "@babel/plugin-transform-async-generator-functions": { - "version": "7.26.8", + "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.26.5", - "@babel/helper-remap-async-to-generator": "^7.25.9", - "@babel/traverse": "^7.26.8" + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-remap-async-to-generator": "^7.27.1", + "@babel/traverse": "^7.28.0" } }, "@babel/plugin-transform-async-to-generator": { - "version": "7.25.9", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.27.1.tgz", + "integrity": "sha512-NREkZsZVJS4xmTr8qzE5y8AfIPqsdQfRuUiLRTEzb7Qii8iFWCyDKaUV2c0rCuh4ljDZ98ALHP/PetiBV2nddA==", "dev": true, "requires": { - "@babel/helper-module-imports": "^7.25.9", - "@babel/helper-plugin-utils": "^7.25.9", - "@babel/helper-remap-async-to-generator": "^7.25.9" + "@babel/helper-module-imports": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-remap-async-to-generator": "^7.27.1" } }, "@babel/plugin-transform-block-scoped-functions": { - "version": "7.26.5", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.27.1.tgz", + "integrity": "sha512-cnqkuOtZLapWYZUYM5rVIdv1nXYuFVIltZ6ZJ7nIj585QsjKM5dhL2Fu/lICXZ1OyIAFc7Qy+bvDAtTXqGrlhg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.26.5" + "@babel/helper-plugin-utils": "^7.27.1" } }, "@babel/plugin-transform-block-scoping": { - "version": "7.25.9", + "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.25.9" + "@babel/helper-plugin-utils": "^7.27.1" } }, "@babel/plugin-transform-class-properties": { - "version": "7.25.9", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.27.1.tgz", + "integrity": "sha512-D0VcalChDMtuRvJIu3U/fwWjf8ZMykz5iZsg77Nuj821vCKI3zCyRLwRdWbsuJ/uRwZhZ002QtCqIkwC/ZkvbA==", "dev": true, "requires": { - "@babel/helper-create-class-features-plugin": "^7.25.9", - "@babel/helper-plugin-utils": "^7.25.9" + "@babel/helper-create-class-features-plugin": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" } }, "@babel/plugin-transform-class-static-block": { - "version": "7.26.0", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.27.1.tgz", + "integrity": "sha512-s734HmYU78MVzZ++joYM+NkJusItbdRcbm+AGRgJCt3iA+yux0QpD9cBVdz3tKyrjVYWRl7j0mHSmv4lhV0aoA==", "dev": true, "requires": { - "@babel/helper-create-class-features-plugin": "^7.25.9", - "@babel/helper-plugin-utils": "^7.25.9" + "@babel/helper-create-class-features-plugin": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" } }, "@babel/plugin-transform-classes": { - "version": "7.25.9", + "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.25.9", - "@babel/helper-compilation-targets": "^7.25.9", - "@babel/helper-plugin-utils": "^7.25.9", - "@babel/helper-replace-supers": "^7.25.9", - "@babel/traverse": "^7.25.9", - "globals": "^11.1.0" + "@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.28.0" } }, "@babel/plugin-transform-computed-properties": { - "version": "7.25.9", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.27.1.tgz", + "integrity": "sha512-lj9PGWvMTVksbWiDT2tW68zGS/cyo4AkZ/QTp0sQT0mjPopCmrSkzxeXkznjqBxzDI6TclZhOJbBmbBLjuOZUw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.25.9", - "@babel/template": "^7.25.9" + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/template": "^7.27.1" } }, "@babel/plugin-transform-destructuring": { - "version": "7.25.9", + "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.25.9" + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/traverse": "^7.28.0" } }, "@babel/plugin-transform-dotall-regex": { - "version": "7.25.9", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.27.1.tgz", + "integrity": "sha512-gEbkDVGRvjj7+T1ivxrfgygpT7GUd4vmODtYpbs0gZATdkX8/iSnOtZSxiZnsgm1YjTgjI6VKBGSJJevkrclzw==", "dev": true, "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.25.9", - "@babel/helper-plugin-utils": "^7.25.9" + "@babel/helper-create-regexp-features-plugin": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" } }, "@babel/plugin-transform-duplicate-keys": { - "version": "7.25.9", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.27.1.tgz", + "integrity": "sha512-MTyJk98sHvSs+cvZ4nOauwTTG1JeonDjSGvGGUNHreGQns+Mpt6WX/dVzWBHgg+dYZhkC4X+zTDfkTU+Vy9y7Q==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.25.9" + "@babel/helper-plugin-utils": "^7.27.1" } }, "@babel/plugin-transform-duplicate-named-capturing-groups-regex": { - "version": "7.25.9", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-named-capturing-groups-regex/-/plugin-transform-duplicate-named-capturing-groups-regex-7.27.1.tgz", + "integrity": "sha512-hkGcueTEzuhB30B3eJCbCYeCaaEQOmQR0AdvzpD4LoN0GXMWzzGSuRrxR2xTnCrvNbVwK9N6/jQ92GSLfiZWoQ==", "dev": true, "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.25.9", - "@babel/helper-plugin-utils": "^7.25.9" + "@babel/helper-create-regexp-features-plugin": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" } }, "@babel/plugin-transform-dynamic-import": { - "version": "7.25.9", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.27.1.tgz", + "integrity": "sha512-MHzkWQcEmjzzVW9j2q8LGjwGWpG2mjwaaB0BNQwst3FIjqsg8Ct/mIZlvSPJvfi9y2AC8mi/ktxbFVL9pZ1I4A==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.25.9" + "@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.26.3", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.27.1.tgz", + "integrity": "sha512-uspvXnhHvGKf2r4VVtBpeFnuDWsJLQ6MF6lGJLC89jBR1uoVeqM416AZtTuhTezOfgHicpJQmoD5YUakO/YmXQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.25.9" + "@babel/helper-plugin-utils": "^7.27.1" } }, "@babel/plugin-transform-export-namespace-from": { - "version": "7.25.9", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.27.1.tgz", + "integrity": "sha512-tQvHWSZ3/jH2xuq/vZDy0jNn+ZdXJeM8gHvX4lnJmsc3+50yPlWdZXIc5ay+umX+2/tJIqHqiEqcJvxlmIvRvQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.25.9" + "@babel/helper-plugin-utils": "^7.27.1" } }, "@babel/plugin-transform-for-of": { - "version": "7.26.9", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.27.1.tgz", + "integrity": "sha512-BfbWFFEJFQzLCQ5N8VocnCtA8J1CLkNTe2Ms2wocj75dd6VpiqS5Z5quTYcUoo4Yq+DN0rtikODccuv7RU81sw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.26.5", - "@babel/helper-skip-transparent-expression-wrappers": "^7.25.9" + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1" } }, "@babel/plugin-transform-function-name": { - "version": "7.25.9", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.27.1.tgz", + "integrity": "sha512-1bQeydJF9Nr1eBCMMbC+hdwmRlsv5XYOMu03YSWFwNs0HsAmtSxxF1fyuYPqemVldVyFmlCU7w8UE14LupUSZQ==", "dev": true, "requires": { - "@babel/helper-compilation-targets": "^7.25.9", - "@babel/helper-plugin-utils": "^7.25.9", - "@babel/traverse": "^7.25.9" + "@babel/helper-compilation-targets": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/traverse": "^7.27.1" } }, "@babel/plugin-transform-json-strings": { - "version": "7.25.9", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.27.1.tgz", + "integrity": "sha512-6WVLVJiTjqcQauBhn1LkICsR2H+zm62I3h9faTDKt1qP4jn2o72tSvqMwtGFKGTpojce0gJs+76eZ2uCHRZh0Q==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.25.9" + "@babel/helper-plugin-utils": "^7.27.1" } }, "@babel/plugin-transform-literals": { - "version": "7.25.9", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.27.1.tgz", + "integrity": "sha512-0HCFSepIpLTkLcsi86GG3mTUzxV5jpmbv97hTETW3yzrAij8aqlD36toB1D0daVFJM8NK6GvKO0gslVQmm+zZA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.25.9" + "@babel/helper-plugin-utils": "^7.27.1" } }, "@babel/plugin-transform-logical-assignment-operators": { - "version": "7.25.9", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.27.1.tgz", + "integrity": "sha512-SJvDs5dXxiae4FbSL1aBJlG4wvl594N6YEVVn9e3JGulwioy6z3oPjx/sQBO3Y4NwUu5HNix6KJ3wBZoewcdbw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.25.9" + "@babel/helper-plugin-utils": "^7.27.1" } }, "@babel/plugin-transform-member-expression-literals": { - "version": "7.25.9", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.27.1.tgz", + "integrity": "sha512-hqoBX4dcZ1I33jCSWcXrP+1Ku7kdqXf1oeah7ooKOIiAdKQ+uqftgCFNOSzA5AMS2XIHEYeGFg4cKRCdpxzVOQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.25.9" + "@babel/helper-plugin-utils": "^7.27.1" } }, "@babel/plugin-transform-modules-amd": { - "version": "7.25.9", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.27.1.tgz", + "integrity": "sha512-iCsytMg/N9/oFq6n+gFTvUYDZQOMK5kEdeYxmxt91fcJGycfxVP9CnrxoliM0oumFERba2i8ZtwRUCMhvP1LnA==", "dev": true, "requires": { - "@babel/helper-module-transforms": "^7.25.9", - "@babel/helper-plugin-utils": "^7.25.9" + "@babel/helper-module-transforms": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" } }, "@babel/plugin-transform-modules-commonjs": { - "version": "7.26.3", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.27.1.tgz", + "integrity": "sha512-OJguuwlTYlN0gBZFRPqwOGNWssZjfIUdS7HMYtN8c1KmwpwHFBwTeFZrg9XZa+DFTitWOW5iTAG7tyCUPsCCyw==", "dev": true, "requires": { - "@babel/helper-module-transforms": "^7.26.0", - "@babel/helper-plugin-utils": "^7.25.9" + "@babel/helper-module-transforms": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" } }, "@babel/plugin-transform-modules-systemjs": { - "version": "7.25.9", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.27.1.tgz", + "integrity": "sha512-w5N1XzsRbc0PQStASMksmUeqECuzKuTJer7kFagK8AXgpCMkeDMO5S+aaFb7A51ZYDF7XI34qsTX+fkHiIm5yA==", "dev": true, "requires": { - "@babel/helper-module-transforms": "^7.25.9", - "@babel/helper-plugin-utils": "^7.25.9", - "@babel/helper-validator-identifier": "^7.25.9", - "@babel/traverse": "^7.25.9" + "@babel/helper-module-transforms": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-validator-identifier": "^7.27.1", + "@babel/traverse": "^7.27.1" } }, "@babel/plugin-transform-modules-umd": { - "version": "7.25.9", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.27.1.tgz", + "integrity": "sha512-iQBE/xC5BV1OxJbp6WG7jq9IWiD+xxlZhLrdwpPkTX3ydmXdvoCpyfJN7acaIBZaOqTfr76pgzqBJflNbeRK+w==", "dev": true, "requires": { - "@babel/helper-module-transforms": "^7.25.9", - "@babel/helper-plugin-utils": "^7.25.9" + "@babel/helper-module-transforms": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" } }, "@babel/plugin-transform-named-capturing-groups-regex": { - "version": "7.25.9", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.27.1.tgz", + "integrity": "sha512-SstR5JYy8ddZvD6MhV0tM/j16Qds4mIpJTOd1Yu9J9pJjH93bxHECF7pgtc28XvkzTD6Pxcm/0Z73Hvk7kb3Ng==", "dev": true, "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.25.9", - "@babel/helper-plugin-utils": "^7.25.9" + "@babel/helper-create-regexp-features-plugin": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" } }, "@babel/plugin-transform-new-target": { - "version": "7.25.9", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.27.1.tgz", + "integrity": "sha512-f6PiYeqXQ05lYq3TIfIDu/MtliKUbNwkGApPUvyo6+tc7uaR4cPjPe7DFPr15Uyycg2lZU6btZ575CuQoYh7MQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.25.9" + "@babel/helper-plugin-utils": "^7.27.1" } }, "@babel/plugin-transform-nullish-coalescing-operator": { - "version": "7.26.6", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.27.1.tgz", + "integrity": "sha512-aGZh6xMo6q9vq1JGcw58lZ1Z0+i0xB2x0XaauNIUXd6O1xXc3RwoWEBlsTQrY4KQ9Jf0s5rgD6SiNkaUdJegTA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.26.5" + "@babel/helper-plugin-utils": "^7.27.1" } }, "@babel/plugin-transform-numeric-separator": { - "version": "7.25.9", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.27.1.tgz", + "integrity": "sha512-fdPKAcujuvEChxDBJ5c+0BTaS6revLV7CJL08e4m3de8qJfNIuCc2nc7XJYOjBoTMJeqSmwXJ0ypE14RCjLwaw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.25.9" + "@babel/helper-plugin-utils": "^7.27.1" } }, "@babel/plugin-transform-object-rest-spread": { - "version": "7.25.9", + "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.25.9", - "@babel/helper-plugin-utils": "^7.25.9", - "@babel/plugin-transform-parameters": "^7.25.9" + "@babel/helper-compilation-targets": "^7.27.2", + "@babel/helper-plugin-utils": "^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": { - "version": "7.25.9", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.27.1.tgz", + "integrity": "sha512-SFy8S9plRPbIcxlJ8A6mT/CxFdJx/c04JEctz4jf8YZaVS2px34j7NXRrlGlHkN/M2gnpL37ZpGRGVFLd3l8Ng==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.25.9", - "@babel/helper-replace-supers": "^7.25.9" + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-replace-supers": "^7.27.1" } }, "@babel/plugin-transform-optional-catch-binding": { - "version": "7.25.9", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.27.1.tgz", + "integrity": "sha512-txEAEKzYrHEX4xSZN4kJ+OfKXFVSWKB2ZxM9dpcE3wT7smwkNmXo5ORRlVzMVdJbD+Q8ILTgSD7959uj+3Dm3Q==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.25.9" + "@babel/helper-plugin-utils": "^7.27.1" } }, "@babel/plugin-transform-optional-chaining": { - "version": "7.25.9", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.27.1.tgz", + "integrity": "sha512-BQmKPPIuc8EkZgNKsv0X4bPmOoayeu4F1YCwx2/CfmDSXDbp7GnzlUH+/ul5VGfRg1AoFPsrIThlEBj2xb4CAg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.25.9", - "@babel/helper-skip-transparent-expression-wrappers": "^7.25.9" + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1" } }, "@babel/plugin-transform-parameters": { - "version": "7.25.9", + "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.25.9" + "@babel/helper-plugin-utils": "^7.27.1" } }, "@babel/plugin-transform-private-methods": { - "version": "7.25.9", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.27.1.tgz", + "integrity": "sha512-10FVt+X55AjRAYI9BrdISN9/AQWHqldOeZDUoLyif1Kn05a56xVBXb8ZouL8pZ9jem8QpXaOt8TS7RHUIS+GPA==", "dev": true, "requires": { - "@babel/helper-create-class-features-plugin": "^7.25.9", - "@babel/helper-plugin-utils": "^7.25.9" + "@babel/helper-create-class-features-plugin": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" } }, "@babel/plugin-transform-private-property-in-object": { - "version": "7.25.9", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.27.1.tgz", + "integrity": "sha512-5J+IhqTi1XPa0DXF83jYOaARrX+41gOewWbkPyjMNRDqgOCqdffGh8L3f/Ek5utaEBZExjSAzcyjmV9SSAWObQ==", "dev": true, "requires": { - "@babel/helper-annotate-as-pure": "^7.25.9", - "@babel/helper-create-class-features-plugin": "^7.25.9", - "@babel/helper-plugin-utils": "^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/plugin-transform-property-literals": { - "version": "7.25.9", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.27.1.tgz", + "integrity": "sha512-oThy3BCuCha8kDZ8ZkgOg2exvPYUlprMukKQXI1r1pJ47NCvxfkEy8vK+r/hT9nF0Aa4H1WUPZZjHTFtAhGfmQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.25.9" + "@babel/helper-plugin-utils": "^7.27.1" } }, "@babel/plugin-transform-react-display-name": { - "version": "7.25.9", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.27.1.tgz", + "integrity": "sha512-p9+Vl3yuHPmkirRrg021XiP+EETmPMQTLr6Ayjj85RLNEbb3Eya/4VI0vAdzQG9SEAl2Lnt7fy5lZyMzjYoZQQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.25.9" + "@babel/helper-plugin-utils": "^7.27.1" } }, "@babel/plugin-transform-react-jsx": { - "version": "7.25.9", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.27.1.tgz", + "integrity": "sha512-2KH4LWGSrJIkVf5tSiBFYuXDAoWRq2MMwgivCf+93dd0GQi8RXLjKA/0EvRnVV5G0hrHczsquXuD01L8s6dmBw==", "dev": true, "requires": { - "@babel/helper-annotate-as-pure": "^7.25.9", - "@babel/helper-module-imports": "^7.25.9", - "@babel/helper-plugin-utils": "^7.25.9", - "@babel/plugin-syntax-jsx": "^7.25.9", - "@babel/types": "^7.25.9" + "@babel/helper-annotate-as-pure": "^7.27.1", + "@babel/helper-module-imports": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/plugin-syntax-jsx": "^7.27.1", + "@babel/types": "^7.27.1" } }, "@babel/plugin-transform-react-jsx-development": { - "version": "7.25.9", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.27.1.tgz", + "integrity": "sha512-ykDdF5yI4f1WrAolLqeF3hmYU12j9ntLQl/AOG1HAS21jxyg1Q0/J/tpREuYLfatGdGmXp/3yS0ZA76kOlVq9Q==", "dev": true, "requires": { - "@babel/plugin-transform-react-jsx": "^7.25.9" + "@babel/plugin-transform-react-jsx": "^7.27.1" } }, "@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": { - "version": "7.25.9", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.27.1.tgz", + "integrity": "sha512-JfuinvDOsD9FVMTHpzA/pBLisxpv1aSf+OIV8lgH3MuWrks19R27e6a6DipIg4aX1Zm9Wpb04p8wljfKrVSnPA==", "dev": true, "requires": { - "@babel/helper-annotate-as-pure": "^7.25.9", - "@babel/helper-plugin-utils": "^7.25.9" + "@babel/helper-annotate-as-pure": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" } }, "@babel/plugin-transform-regenerator": { - "version": "7.25.9", + "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.25.9", - "regenerator-transform": "^0.15.2" + "@babel/helper-plugin-utils": "^7.27.1" } }, "@babel/plugin-transform-regexp-modifiers": { - "version": "7.26.0", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regexp-modifiers/-/plugin-transform-regexp-modifiers-7.27.1.tgz", + "integrity": "sha512-TtEciroaiODtXvLZv4rmfMhkCv8jx3wgKpL68PuiPh2M4fvz5jhsA7697N1gMvkvr/JTF13DrFYyEbY9U7cVPA==", "dev": true, "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.25.9", - "@babel/helper-plugin-utils": "^7.25.9" + "@babel/helper-create-regexp-features-plugin": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" } }, "@babel/plugin-transform-reserved-words": { - "version": "7.25.9", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.27.1.tgz", + "integrity": "sha512-V2ABPHIJX4kC7HegLkYoDpfg9PVmuWy/i6vUM5eGK22bx4YVFD3M5F0QQnWQoDs6AGsUWTVOopBiMFQgHaSkVw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.25.9" + "@babel/helper-plugin-utils": "^7.27.1" } }, "@babel/plugin-transform-shorthand-properties": { - "version": "7.25.9", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.27.1.tgz", + "integrity": "sha512-N/wH1vcn4oYawbJ13Y/FxcQrWk63jhfNa7jef0ih7PHSIHX2LB7GWE1rkPrOnka9kwMxb6hMl19p7lidA+EHmQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.25.9" + "@babel/helper-plugin-utils": "^7.27.1" } }, "@babel/plugin-transform-spread": { - "version": "7.25.9", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.27.1.tgz", + "integrity": "sha512-kpb3HUqaILBJcRFVhFUs6Trdd4mkrzcGXss+6/mxUd273PfbWqSDHRzMT2234gIg2QYfAjvXLSquP1xECSg09Q==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.25.9", - "@babel/helper-skip-transparent-expression-wrappers": "^7.25.9" + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1" } }, "@babel/plugin-transform-sticky-regex": { - "version": "7.25.9", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.27.1.tgz", + "integrity": "sha512-lhInBO5bi/Kowe2/aLdBAawijx+q1pQzicSgnkB6dUPc1+RC8QmJHKf2OjvU+NZWitguJHEaEmbV6VWEouT58g==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.25.9" + "@babel/helper-plugin-utils": "^7.27.1" } }, "@babel/plugin-transform-template-literals": { - "version": "7.26.8", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.27.1.tgz", + "integrity": "sha512-fBJKiV7F2DxZUkg5EtHKXQdbsbURW3DZKQUWphDum0uRP6eHGGa/He9mc0mypL680pb+e/lDIthRohlv8NCHkg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.26.5" + "@babel/helper-plugin-utils": "^7.27.1" } }, "@babel/plugin-transform-typeof-symbol": { - "version": "7.26.7", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.27.1.tgz", + "integrity": "sha512-RiSILC+nRJM7FY5srIyc4/fGIwUhyDuuBSdWn4y6yT6gm652DpCHZjIipgn6B7MQ1ITOUnAKWixEUjQRIBIcLw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.26.5" + "@babel/helper-plugin-utils": "^7.27.1" } }, "@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": { - "version": "7.25.9", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.27.1.tgz", + "integrity": "sha512-Ysg4v6AmF26k9vpfFuTZg8HRfVWzsh1kVfowA23y9j/Gu6dOuahdUVhkLqpObp3JIv27MLSii6noRnuKN8H0Mg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.25.9" + "@babel/helper-plugin-utils": "^7.27.1" } }, "@babel/plugin-transform-unicode-property-regex": { - "version": "7.25.9", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.27.1.tgz", + "integrity": "sha512-uW20S39PnaTImxp39O5qFlHLS9LJEmANjMG7SxIhap8rCHqu0Ik+tLEPX5DKmHn6CsWQ7j3lix2tFOa5YtL12Q==", "dev": true, "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.25.9", - "@babel/helper-plugin-utils": "^7.25.9" + "@babel/helper-create-regexp-features-plugin": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" } }, "@babel/plugin-transform-unicode-regex": { - "version": "7.25.9", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.27.1.tgz", + "integrity": "sha512-xvINq24TRojDuyt6JGtHmkVkrfVV3FPT16uytxImLeBZqW3/H52yN+kM1MGuyPkIQxrzKwPHs5U/MP3qKyzkGw==", "dev": true, "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.25.9", - "@babel/helper-plugin-utils": "^7.25.9" + "@babel/helper-create-regexp-features-plugin": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" } }, "@babel/plugin-transform-unicode-sets-regex": { - "version": "7.25.9", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.27.1.tgz", + "integrity": "sha512-EtkOujbc4cgvb0mlpQefi4NTPBzhSIevblFevACNLUspmrALgmEBdL/XfnyyITfd8fKBZrZys92zOWcik7j9Tw==", "dev": true, "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.25.9", - "@babel/helper-plugin-utils": "^7.25.9" + "@babel/helper-create-regexp-features-plugin": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" } }, "@babel/preset-env": { - "version": "7.26.9", + "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.26.8", - "@babel/helper-compilation-targets": "^7.26.5", - "@babel/helper-plugin-utils": "^7.26.5", - "@babel/helper-validator-option": "^7.25.9", - "@babel/plugin-bugfix-firefox-class-in-computed-class-key": "^7.25.9", - "@babel/plugin-bugfix-safari-class-field-initializer-scope": "^7.25.9", - "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.25.9", - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.25.9", - "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": "^7.25.9", + "@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", + "@babel/plugin-bugfix-firefox-class-in-computed-class-key": "^7.27.1", + "@babel/plugin-bugfix-safari-class-field-initializer-scope": "^7.27.1", + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.27.1", + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.27.1", + "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": "^7.27.1", "@babel/plugin-proposal-private-property-in-object": "7.21.0-placeholder-for-preset-env.2", - "@babel/plugin-syntax-import-assertions": "^7.26.0", - "@babel/plugin-syntax-import-attributes": "^7.26.0", + "@babel/plugin-syntax-import-assertions": "^7.27.1", + "@babel/plugin-syntax-import-attributes": "^7.27.1", "@babel/plugin-syntax-unicode-sets-regex": "^7.18.6", - "@babel/plugin-transform-arrow-functions": "^7.25.9", - "@babel/plugin-transform-async-generator-functions": "^7.26.8", - "@babel/plugin-transform-async-to-generator": "^7.25.9", - "@babel/plugin-transform-block-scoped-functions": "^7.26.5", - "@babel/plugin-transform-block-scoping": "^7.25.9", - "@babel/plugin-transform-class-properties": "^7.25.9", - "@babel/plugin-transform-class-static-block": "^7.26.0", - "@babel/plugin-transform-classes": "^7.25.9", - "@babel/plugin-transform-computed-properties": "^7.25.9", - "@babel/plugin-transform-destructuring": "^7.25.9", - "@babel/plugin-transform-dotall-regex": "^7.25.9", - "@babel/plugin-transform-duplicate-keys": "^7.25.9", - "@babel/plugin-transform-duplicate-named-capturing-groups-regex": "^7.25.9", - "@babel/plugin-transform-dynamic-import": "^7.25.9", - "@babel/plugin-transform-exponentiation-operator": "^7.26.3", - "@babel/plugin-transform-export-namespace-from": "^7.25.9", - "@babel/plugin-transform-for-of": "^7.26.9", - "@babel/plugin-transform-function-name": "^7.25.9", - "@babel/plugin-transform-json-strings": "^7.25.9", - "@babel/plugin-transform-literals": "^7.25.9", - "@babel/plugin-transform-logical-assignment-operators": "^7.25.9", - "@babel/plugin-transform-member-expression-literals": "^7.25.9", - "@babel/plugin-transform-modules-amd": "^7.25.9", - "@babel/plugin-transform-modules-commonjs": "^7.26.3", - "@babel/plugin-transform-modules-systemjs": "^7.25.9", - "@babel/plugin-transform-modules-umd": "^7.25.9", - "@babel/plugin-transform-named-capturing-groups-regex": "^7.25.9", - "@babel/plugin-transform-new-target": "^7.25.9", - "@babel/plugin-transform-nullish-coalescing-operator": "^7.26.6", - "@babel/plugin-transform-numeric-separator": "^7.25.9", - "@babel/plugin-transform-object-rest-spread": "^7.25.9", - "@babel/plugin-transform-object-super": "^7.25.9", - "@babel/plugin-transform-optional-catch-binding": "^7.25.9", - "@babel/plugin-transform-optional-chaining": "^7.25.9", - "@babel/plugin-transform-parameters": "^7.25.9", - "@babel/plugin-transform-private-methods": "^7.25.9", - "@babel/plugin-transform-private-property-in-object": "^7.25.9", - "@babel/plugin-transform-property-literals": "^7.25.9", - "@babel/plugin-transform-regenerator": "^7.25.9", - "@babel/plugin-transform-regexp-modifiers": "^7.26.0", - "@babel/plugin-transform-reserved-words": "^7.25.9", - "@babel/plugin-transform-shorthand-properties": "^7.25.9", - "@babel/plugin-transform-spread": "^7.25.9", - "@babel/plugin-transform-sticky-regex": "^7.25.9", - "@babel/plugin-transform-template-literals": "^7.26.8", - "@babel/plugin-transform-typeof-symbol": "^7.26.7", - "@babel/plugin-transform-unicode-escapes": "^7.25.9", - "@babel/plugin-transform-unicode-property-regex": "^7.25.9", - "@babel/plugin-transform-unicode-regex": "^7.25.9", - "@babel/plugin-transform-unicode-sets-regex": "^7.25.9", + "@babel/plugin-transform-arrow-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.28.0", + "@babel/plugin-transform-class-properties": "^7.27.1", + "@babel/plugin-transform-class-static-block": "^7.27.1", + "@babel/plugin-transform-classes": "^7.28.0", + "@babel/plugin-transform-computed-properties": "^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", + "@babel/plugin-transform-function-name": "^7.27.1", + "@babel/plugin-transform-json-strings": "^7.27.1", + "@babel/plugin-transform-literals": "^7.27.1", + "@babel/plugin-transform-logical-assignment-operators": "^7.27.1", + "@babel/plugin-transform-member-expression-literals": "^7.27.1", + "@babel/plugin-transform-modules-amd": "^7.27.1", + "@babel/plugin-transform-modules-commonjs": "^7.27.1", + "@babel/plugin-transform-modules-systemjs": "^7.27.1", + "@babel/plugin-transform-modules-umd": "^7.27.1", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.27.1", + "@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.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.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.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", + "@babel/plugin-transform-spread": "^7.27.1", + "@babel/plugin-transform-sticky-regex": "^7.27.1", + "@babel/plugin-transform-template-literals": "^7.27.1", + "@babel/plugin-transform-typeof-symbol": "^7.27.1", + "@babel/plugin-transform-unicode-escapes": "^7.27.1", + "@babel/plugin-transform-unicode-property-regex": "^7.27.1", + "@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" } }, @@ -20399,28 +21165,30 @@ } }, "@babel/preset-react": { - "version": "7.26.3", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.27.1.tgz", + "integrity": "sha512-oJHWh2gLhU9dW9HHr42q0cI0/iHHXTLGe39qvpAZZzagHy0MzYLCnCVV0symeRvzmjHyVU7mw2K06E6u/JwbhA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.25.9", - "@babel/helper-validator-option": "^7.25.9", - "@babel/plugin-transform-react-display-name": "^7.25.9", - "@babel/plugin-transform-react-jsx": "^7.25.9", - "@babel/plugin-transform-react-jsx-development": "^7.25.9", - "@babel/plugin-transform-react-pure-annotations": "^7.25.9" + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-validator-option": "^7.27.1", + "@babel/plugin-transform-react-display-name": "^7.27.1", + "@babel/plugin-transform-react-jsx": "^7.27.1", + "@babel/plugin-transform-react-jsx-development": "^7.27.1", + "@babel/plugin-transform-react-pure-annotations": "^7.27.1" } }, "@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": { @@ -20432,36 +21200,36 @@ } }, "@babel/template": { - "version": "7.27.0", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.27.0.tgz", - "integrity": "sha512-2ncevenBqXI6qRMukPlXwHKHchC7RyMuu4xv5JBXRfOGVcTy1mXCD12qrp7Jsoxll1EV3+9sE4GugBVRjT2jFA==", + "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.26.2", - "@babel/parser": "^7.27.0", - "@babel/types": "^7.27.0" + "@babel/code-frame": "^7.27.1", + "@babel/parser": "^7.27.2", + "@babel/types": "^7.27.1" } }, "@babel/traverse": { - "version": "7.27.0", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.27.0.tgz", - "integrity": "sha512-19lYZFzYVQkkHkl4Cy4WrAVcqBkgvV2YM2TU3xG6DIwO7O3ecbDPfW3yM3bjAGcqcQHi+CCtjMR3dIEHxsd6bA==", + "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.26.2", - "@babel/generator": "^7.27.0", - "@babel/parser": "^7.27.0", - "@babel/template": "^7.27.0", - "@babel/types": "^7.27.0", - "debug": "^4.3.1", - "globals": "^11.1.0" + "@babel/code-frame": "^7.27.1", + "@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.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.27.0.tgz", - "integrity": "sha512-H45s8fVLYjbhFH62dIJ3WtmJ6RSPt/3DRO0ZcT2SUiYiQyz3BLVb9ADEnLl91m74aQPS3AzzeajZHYOalWe3bg==", + "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.25.9", - "@babel/helper-validator-identifier": "^7.25.9" + "@babel/helper-string-parser": "^7.27.1", + "@babel/helper-validator-identifier": "^7.27.1" } }, "@bcoe/v8-coverage": { @@ -20538,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": {} }, @@ -20682,24 +21456,24 @@ } }, "@currents/playwright": { - "version": "1.12.1", - "resolved": "https://registry.npmjs.org/@currents/playwright/-/playwright-1.12.1.tgz", - "integrity": "sha512-mNkcyRnbewsl0slWftscRvO/9RkVRL6OsDpyi0tQQY4xGwS++0ja5r1HBvrjPJgjtQGllKltpSR3uZliy0vpuA==", + "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.18.6", + "@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.8.3", + "axios": "^1.10.0", "axios-retry": "^4.5.0", "c12": "^1.11.2", "chalk": "^4.1.2", "commander": "^12.1.0", "date-fns": "^4.1.0", "debug": "^4.3.7", - "dotenv": "^16.0.3", - "execa": "^9.5.2", + "dotenv": "^16.5.0", + "execa": "^9.5.3", "getos": "^3.2.1", "https-proxy-agent": "^7.0.5", "istanbul-lib-coverage": "^3.2.2", @@ -20715,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": { @@ -20793,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", @@ -20976,7 +21755,9 @@ "optional": true }, "@eslint-community/eslint-utils": { - "version": "4.4.1", + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.7.0.tgz", + "integrity": "sha512-dyybb3AcajC7uha6CvhdVRJqaKyn7w2YKqKyAN37NKYgZT36w+iRb0Dymmc5qEJ549c/S31cMMSFd75bteCpCw==", "dev": true, "requires": { "eslint-visitor-keys": "^3.4.3" @@ -20992,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", @@ -21009,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", @@ -21018,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", @@ -21026,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 @@ -21068,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 } } }, @@ -21098,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": { @@ -21196,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": { @@ -21220,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" @@ -21251,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", @@ -21267,6 +22115,11 @@ "version": "2.0.5", "dev": true }, + "@ltd/j-toml": { + "version": "1.38.0", + "resolved": "https://registry.npmjs.org/@ltd/j-toml/-/j-toml-1.38.0.tgz", + "integrity": "sha512-lYtBcmvHustHQtg4X7TXUu1Xa/tbLC3p2wLvgQI+fWVySguVZJF60Snxijw5EiohumxZbR10kWYFFebh1zotiw==" + }, "@monaco-editor/loader": { "version": "1.4.0", "requires": { @@ -21280,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", @@ -21293,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" @@ -21325,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", @@ -21337,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": { @@ -21406,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", @@ -21493,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", @@ -21628,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", @@ -21658,27 +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.23", + "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" @@ -21698,13 +22588,17 @@ } }, "@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.6.1", - "resolved": "https://registry.npmjs.org/@reduxjs/toolkit/-/toolkit-2.6.1.tgz", - "integrity": "sha512-SSlIqZNYhqm/oMkXbtofwZSt9lrncblzo6YcZ9zoX+zLngRBrCOjK4lNLdkNucJF58RHOWrD9txT3bT3piH7Zw==", + "version": "2.8.2", + "resolved": "https://registry.npmjs.org/@reduxjs/toolkit/-/toolkit-2.8.2.tgz", + "integrity": "sha512-MYlOhQ0sLdw4ud48FoC5w0dH9VfWQjtCjreKwYTT3l+r427qYC5Y8PihNutepr8XrNaBUDQo9khWUwQxZaqt5A==", "requires": { + "@standard-schema/spec": "^1.0.0", + "@standard-schema/utils": "^0.3.0", "immer": "^10.0.3", "redux": "^5.0.1", "redux-thunk": "^3.1.0", @@ -21714,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", @@ -21872,10 +22772,6 @@ "version": "6.2.1", "dev": true }, - "prettier": { - "version": "3.3.3", - "dev": true - }, "semver": { "version": "7.6.3", "dev": true @@ -21912,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.3.1", - "resolved": "https://registry.npmjs.org/@sentry/babel-plugin-component-annotate/-/babel-plugin-component-annotate-3.3.1.tgz", - "integrity": "sha512-5GOxGT7lZN+I8A7Vp0rWY+726FDKEw8HnFiebe51rQrMbfGfCu2Aw9uSM0nT9OG6xhV6WvGccIcCszTPs4fUZQ==" + "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.3.1", - "resolved": "https://registry.npmjs.org/@sentry/bundler-plugin-core/-/bundler-plugin-core-3.3.1.tgz", - "integrity": "sha512-Dd6xaWb293j9otEJ1yJqG2Ra6zB49OPzMNdIkdP8wdY+S9UFQE5PyKTyredmPY7hqCc005OrUQZolIIo9Zl13A==", + "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.3.1", - "@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", @@ -21996,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", @@ -22015,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.3.1", - "resolved": "https://registry.npmjs.org/@sentry/webpack-plugin/-/webpack-plugin-3.3.1.tgz", - "integrity": "sha512-AFRnGNUnlIvq3M+ADdfWb+DIXWKK6yYEkVPAyOppkjO+cL/19gjXMdvAwv+CMFts28YCFKF8Kr3pamUiCmwodA==", + "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.3.1", + "@sentry/bundler-plugin-core": "4.1.1", "unplugin": "1.0.1", "uuid": "^9.0.0" }, @@ -22126,6 +23047,16 @@ "integrity": "sha512-tlqY9xq5ukxTUZBmoOp+m61cqwQD5pHJtFY3Mn8CA8ps6yghLH/Hw8UPdqg4OLmFW3IFlcXnQNmo/dh8HzXYIQ==", "dev": true }, + "@standard-schema/spec": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@standard-schema/spec/-/spec-1.0.0.tgz", + "integrity": "sha512-m2bOd0f2RT9k8QJx1JN85cZYyH1RqFBdlwtkSlf4tBDYLCiiZnv1fIIwacK6cqwXavOydf0NPToMQgpKq+dVlA==" + }, + "@standard-schema/utils": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/@standard-schema/utils/-/utils-0.3.0.tgz", + "integrity": "sha512-e7Mew686owMaPJVNNLs55PUvgz371nKgwsc4vxE49zsODpJEnxgxRo2y/OKrqueavXgZNMDVj3DdHFlaSAeU8g==" + }, "@swc/core": { "version": "1.9.2", "dev": true, @@ -22166,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 @@ -22207,7 +23134,9 @@ } }, "@testing-library/react": { - "version": "16.2.0", + "version": "16.3.0", + "resolved": "https://registry.npmjs.org/@testing-library/react/-/react-16.3.0.tgz", + "integrity": "sha512-kFSyxiEDwv1WLl2fgsq6pPBbw5aWKrsY2/noi1Id0TK0UParSF62oFQFGHXIyaG4pp2tEub/Zlel+fjjZILDsw==", "dev": true, "requires": { "@babel/runtime": "^7.12.5" @@ -22312,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, @@ -22332,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", @@ -22435,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": { @@ -22553,138 +23499,26 @@ } }, "@typescript-eslint/eslint-plugin": { - "version": "8.30.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.30.1.tgz", - "integrity": "sha512-v+VWphxMjn+1t48/jO4t950D6KR8JaJuNXzi33Ve6P8sEmPr5k6CEXjdGwT6+LodVnEa91EQCtwjWNUCPweo+Q==", + "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.30.1", - "@typescript-eslint/type-utils": "8.30.1", - "@typescript-eslint/utils": "8.30.1", - "@typescript-eslint/visitor-keys": "8.30.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": "^5.3.1", + "ignore": "^7.0.0", "natural-compare": "^1.4.0", - "ts-api-utils": "^2.0.1" + "ts-api-utils": "^2.1.0" }, "dependencies": { - "@typescript-eslint/scope-manager": { - "version": "8.30.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.30.1.tgz", - "integrity": "sha512-+C0B6ChFXZkuaNDl73FJxRYT0G7ufVPOSQkqkpM/U198wUwUFOtgo1k/QzFh1KjpBitaK7R1tgjVz6o9HmsRPg==", - "dev": true, - "requires": { - "@typescript-eslint/types": "8.30.1", - "@typescript-eslint/visitor-keys": "8.30.1" - } - }, - "@typescript-eslint/types": { - "version": "8.30.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.30.1.tgz", - "integrity": "sha512-81KawPfkuulyWo5QdyG/LOKbspyyiW+p4vpn4bYO7DM/hZImlVnFwrpCTnmNMOt8CvLRr5ojI9nU1Ekpw4RcEw==", - "dev": true - }, - "@typescript-eslint/visitor-keys": { - "version": "8.30.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.30.1.tgz", - "integrity": "sha512-aEhgas7aJ6vZnNFC7K4/vMGDGyOiqWcYZPpIWrTKuTAlsvDNKy2GFDqh9smL+iq069ZvR0YzEeq0B8NJlLzjFA==", - "dev": true, - "requires": { - "@typescript-eslint/types": "8.30.1", - "eslint-visitor-keys": "^4.2.0" - } - }, - "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==", - "dev": true - }, - "ts-api-utils": { - "version": "2.0.1", - "dev": true, - "requires": {} - } - } - }, - "@typescript-eslint/parser": { - "version": "8.29.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.29.0.tgz", - "integrity": "sha512-8C0+jlNJOwQso2GapCVWWfW/rzaq7Lbme+vGUFKE31djwNncIpgXD7Cd4weEsDdkoZDjH0lwwr3QDQFuyrMg9g==", - "dev": true, - "requires": { - "@typescript-eslint/scope-manager": "8.29.0", - "@typescript-eslint/types": "8.29.0", - "@typescript-eslint/typescript-estree": "8.29.0", - "@typescript-eslint/visitor-keys": "8.29.0", - "debug": "^4.3.4" - } - }, - "@typescript-eslint/scope-manager": { - "version": "8.29.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.29.0.tgz", - "integrity": "sha512-aO1PVsq7Gm+tcghabUpzEnVSFMCU4/nYIgC2GOatJcllvWfnhrgW0ZEbnTxm36QsikmCN1K/6ZgM7fok2I7xNw==", - "dev": true, - "requires": { - "@typescript-eslint/types": "8.29.0", - "@typescript-eslint/visitor-keys": "8.29.0" - } - }, - "@typescript-eslint/type-utils": { - "version": "8.30.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.30.1.tgz", - "integrity": "sha512-64uBF76bfQiJyHgZISC7vcNz3adqQKIccVoKubyQcOnNcdJBvYOILV1v22Qhsw3tw3VQu5ll8ND6hycgAR5fEA==", - "dev": true, - "requires": { - "@typescript-eslint/typescript-estree": "8.30.1", - "@typescript-eslint/utils": "8.30.1", - "debug": "^4.3.4", - "ts-api-utils": "^2.0.1" - }, - "dependencies": { - "@typescript-eslint/types": { - "version": "8.30.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.30.1.tgz", - "integrity": "sha512-81KawPfkuulyWo5QdyG/LOKbspyyiW+p4vpn4bYO7DM/hZImlVnFwrpCTnmNMOt8CvLRr5ojI9nU1Ekpw4RcEw==", - "dev": true - }, - "@typescript-eslint/typescript-estree": { - "version": "8.30.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.30.1.tgz", - "integrity": "sha512-kQQnxymiUy9tTb1F2uep9W6aBiYODgq5EMSk6Nxh4Z+BDUoYUSa029ISs5zTzKBFnexQEh71KqwjKnRz58lusQ==", - "dev": true, - "requires": { - "@typescript-eslint/types": "8.30.1", - "@typescript-eslint/visitor-keys": "8.30.1", - "debug": "^4.3.4", - "fast-glob": "^3.3.2", - "is-glob": "^4.0.3", - "minimatch": "^9.0.4", - "semver": "^7.6.0", - "ts-api-utils": "^2.0.1" - } - }, - "@typescript-eslint/visitor-keys": { - "version": "8.30.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.30.1.tgz", - "integrity": "sha512-aEhgas7aJ6vZnNFC7K4/vMGDGyOiqWcYZPpIWrTKuTAlsvDNKy2GFDqh9smL+iq069ZvR0YzEeq0B8NJlLzjFA==", - "dev": true, - "requires": { - "@typescript-eslint/types": "8.30.1", - "eslint-visitor-keys": "^4.2.0" - } - }, - "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==", - "dev": true - }, - "semver": { - "version": "7.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.1.tgz", - "integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==", + "ignore": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-7.0.4.tgz", + "integrity": "sha512-gJzzk+PQNznz8ysRrC0aOkBNVRBDtE1n53IqyqEf3PXrYwomFs5q4pGMizBMJF+ykh03insJ27hB8gSrD2Hn8A==", "dev": true }, "ts-api-utils": { @@ -22696,32 +23530,97 @@ } } }, + "@typescript-eslint/parser": { + "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.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.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.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.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/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" + }, + "dependencies": { + "ts-api-utils": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-2.1.0.tgz", + "integrity": "sha512-CUgTZL1irw8u29bzrOD/nH85jqyc74D6SshFgujOIA7osm2Rz7dYH77agkx7H4FBNxDq7Cjf+IjaX/8zwFW+ZQ==", + "dev": true, + "requires": {} + } + } + }, "@typescript-eslint/types": { - "version": "8.29.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.29.0.tgz", - "integrity": "sha512-wcJL/+cOXV+RE3gjCyl/V2G877+2faqvlgtso/ZRbTCnZazh0gXhe+7gbAnfubzN2bNsBtZjDvlh7ero8uIbzg==", + "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.29.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.29.0.tgz", - "integrity": "sha512-yOfen3jE9ISZR/hHpU/bmNvTtBW1NjRbkSFdZOksL1N+ybPEE7UVGMwqvS6CP022Rp00Sb0tdiIkhSCe6NI8ow==", + "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.29.0", - "@typescript-eslint/visitor-keys": "8.29.0", + "@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", "minimatch": "^9.0.4", "semver": "^7.6.0", - "ts-api-utils": "^2.0.1" + "ts-api-utils": "^2.1.0" }, "dependencies": { "semver": { - "version": "7.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.1.tgz", - "integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==", + "version": "7.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz", + "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==", "dev": true }, "ts-api-utils": { @@ -22734,117 +23633,51 @@ } }, "@typescript-eslint/utils": { - "version": "8.30.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.30.1.tgz", - "integrity": "sha512-T/8q4R9En2tcEsWPQgB5BQ0XJVOtfARcUvOa8yJP3fh9M/mXraLxZrkCfGb6ChrO/V3W+Xbd04RacUEqk1CFEQ==", + "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.4.0", - "@typescript-eslint/scope-manager": "8.30.1", - "@typescript-eslint/types": "8.30.1", - "@typescript-eslint/typescript-estree": "8.30.1" - }, - "dependencies": { - "@typescript-eslint/scope-manager": { - "version": "8.30.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.30.1.tgz", - "integrity": "sha512-+C0B6ChFXZkuaNDl73FJxRYT0G7ufVPOSQkqkpM/U198wUwUFOtgo1k/QzFh1KjpBitaK7R1tgjVz6o9HmsRPg==", - "dev": true, - "requires": { - "@typescript-eslint/types": "8.30.1", - "@typescript-eslint/visitor-keys": "8.30.1" - } - }, - "@typescript-eslint/types": { - "version": "8.30.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.30.1.tgz", - "integrity": "sha512-81KawPfkuulyWo5QdyG/LOKbspyyiW+p4vpn4bYO7DM/hZImlVnFwrpCTnmNMOt8CvLRr5ojI9nU1Ekpw4RcEw==", - "dev": true - }, - "@typescript-eslint/typescript-estree": { - "version": "8.30.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.30.1.tgz", - "integrity": "sha512-kQQnxymiUy9tTb1F2uep9W6aBiYODgq5EMSk6Nxh4Z+BDUoYUSa029ISs5zTzKBFnexQEh71KqwjKnRz58lusQ==", - "dev": true, - "requires": { - "@typescript-eslint/types": "8.30.1", - "@typescript-eslint/visitor-keys": "8.30.1", - "debug": "^4.3.4", - "fast-glob": "^3.3.2", - "is-glob": "^4.0.3", - "minimatch": "^9.0.4", - "semver": "^7.6.0", - "ts-api-utils": "^2.0.1" - } - }, - "@typescript-eslint/visitor-keys": { - "version": "8.30.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.30.1.tgz", - "integrity": "sha512-aEhgas7aJ6vZnNFC7K4/vMGDGyOiqWcYZPpIWrTKuTAlsvDNKy2GFDqh9smL+iq069ZvR0YzEeq0B8NJlLzjFA==", - "dev": true, - "requires": { - "@typescript-eslint/types": "8.30.1", - "eslint-visitor-keys": "^4.2.0" - } - }, - "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==", - "dev": true - }, - "semver": { - "version": "7.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.1.tgz", - "integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==", - "dev": true - }, - "ts-api-utils": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-2.1.0.tgz", - "integrity": "sha512-CUgTZL1irw8u29bzrOD/nH85jqyc74D6SshFgujOIA7osm2Rz7dYH77agkx7H4FBNxDq7Cjf+IjaX/8zwFW+ZQ==", - "dev": true, - "requires": {} - } + "@eslint-community/eslint-utils": "^4.7.0", + "@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.29.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.29.0.tgz", - "integrity": "sha512-Sne/pVz8ryR03NFK21VpN88dZ2FdQXOlq3VIklbrTYEt8yXtRFr9tvUhqvCeKjqYk5FSim37sHbooT6vzBTZcg==", + "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.29.0", - "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" }, @@ -22858,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", @@ -22887,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" }, @@ -22930,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" }, @@ -22971,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" } }, @@ -23180,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": {} }, @@ -23312,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": { @@ -23347,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": { @@ -23427,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 @@ -23457,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", @@ -23468,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", @@ -23476,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" } @@ -23489,12 +24374,12 @@ "dev": true }, "axios": { - "version": "1.8.4", - "resolved": "https://registry.npmjs.org/axios/-/axios-1.8.4.tgz", - "integrity": "sha512-eBSYY4Y68NNlHbHBMdeDmKNtDgXWhQsJcGqzO3iLUM0GraQFSS9cVgPX5I9b3lbdFKyYoAEGAZF1DwhTaljNAw==", + "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" } }, @@ -23521,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": { @@ -23644,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" } @@ -23663,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": { @@ -23732,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" } } } @@ -23766,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" @@ -23799,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", @@ -23827,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" @@ -23983,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", @@ -24025,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" }, @@ -24134,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": { @@ -24167,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", @@ -24181,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", @@ -24228,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" @@ -24311,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" } @@ -24555,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 } } }, @@ -24616,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 @@ -24677,13 +25562,12 @@ } }, "dotenv": { - "version": "16.4.7", - "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.4.7.tgz", - "integrity": "sha512-47qPchRCykZC03FhkYAhrvwU4xDBFIj1QPqaarj6mdM/hgUzfPHcpkHJOn3mJAufFeeAxAzeGsr5X0M4k6fLZQ==" + "version": "16.5.0", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.5.0.tgz", + "integrity": "sha512-m/C+AwOAr9/W1UOIZUo232ejMNnJAJtYQjUbHoNTBNTJSvqzzDh7vnrei3o3r3m9blf6ZoDkvcw0VmozNRFJxg==" }, "dunder-proto": { "version": "1.0.1", - "dev": true, "requires": { "call-bind-apply-helpers": "^1.0.1", "es-errors": "^1.3.0", @@ -24710,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", @@ -24766,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", @@ -24796,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", @@ -24819,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", @@ -24853,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", @@ -24875,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": { @@ -24955,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, @@ -25009,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", @@ -25017,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", @@ -25025,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 @@ -25045,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": {} }, @@ -25076,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" @@ -25084,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" @@ -25101,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", @@ -25158,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", @@ -25190,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", @@ -25207,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" @@ -25227,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": { @@ -25260,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", @@ -25314,7 +26226,9 @@ "dev": true }, "eslint-plugin-testing-library": { - "version": "7.1.1", + "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", @@ -25339,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 } } @@ -25396,9 +26316,9 @@ "version": "3.3.0" }, "execa": { - "version": "9.5.2", - "resolved": "https://registry.npmjs.org/execa/-/execa-9.5.2.tgz", - "integrity": "sha512-EHlpxMCpHWSAh1dgS6bVeoLAXGnJNdR93aabr4QCGbzOM73o5XmRfM/e5FUqsw3aagP8S8XEWUWFAxnRBnAF0Q==", + "version": "9.5.3", + "resolved": "https://registry.npmjs.org/execa/-/execa-9.5.3.tgz", + "integrity": "sha512-QFNnTvU3UjgWFy8Ef9iDHvIdcgZ344ebkwYx4/KLbR+CKQA4xBaHzv+iRpp86QfMHP8faFQLh8iOc57215y4Rg==", "dev": true, "requires": { "@sindresorhus/merge-streams": "^4.0.0", @@ -25454,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", @@ -25476,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", @@ -25517,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": { @@ -25592,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": { @@ -25680,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": { @@ -25704,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" } @@ -25713,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": { @@ -25761,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", @@ -25795,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" } }, @@ -25859,8 +26789,7 @@ "optional": true }, "function-bind": { - "version": "1.1.2", - "dev": true + "version": "1.1.2" }, "function.prototype.name": { "version": "1.1.8", @@ -25897,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", @@ -25917,7 +26845,6 @@ }, "get-proto": { "version": "1.0.1", - "dev": true, "requires": { "dunder-proto": "^1.0.1", "es-object-atoms": "^1.0.0" @@ -25992,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", @@ -26044,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", @@ -26054,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 @@ -26066,8 +27020,7 @@ } }, "gopd": { - "version": "1.2.0", - "dev": true + "version": "1.2.0" }, "graceful-fs": { "version": "4.2.11" @@ -26117,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" } @@ -26156,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": { @@ -26369,9 +27319,9 @@ } }, "human-signals": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-8.0.0.tgz", - "integrity": "sha512-/1/GPCpDUCCYwlERiYjxoczfP0zfvZMU/OWgQPMya9AbAE24vseigFdhAMObpc8Q4lc/kjutPfUddDYyAmejnA==", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-8.0.1.tgz", + "integrity": "sha512-eKCa6bwnJhvxj14kZk5NCPc6Hb6BdsU9DZcOnmQKSnO1VKrfV0zCvtttPZUsBvjmNDn8rpcJfpwSYnHBjc95MQ==", "dev": true }, "hyperdyperid": { @@ -26379,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", @@ -26409,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" @@ -26591,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" @@ -26646,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", @@ -26671,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": { @@ -26714,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", @@ -26809,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": { @@ -27010,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": { @@ -27046,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", @@ -27055,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", @@ -27063,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", @@ -27071,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" @@ -27078,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" @@ -27085,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", @@ -27093,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" @@ -27100,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", @@ -27108,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" @@ -27115,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", @@ -27123,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", @@ -27131,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", @@ -27139,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", @@ -27147,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", @@ -27198,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" @@ -27208,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": { @@ -27246,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" } @@ -27298,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" } @@ -27320,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": { @@ -27349,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": { @@ -27430,8 +28434,7 @@ "dev": true }, "math-intrinsics": { - "version": "1.1.0", - "dev": true + "version": "1.1.0" }, "mathml-tag-names": { "version": "2.1.3", @@ -27619,16 +28622,16 @@ "version": "2.1.3" }, "msw": { - "version": "2.7.3", - "resolved": "https://registry.npmjs.org/msw/-/msw-2.7.3.tgz", - "integrity": "sha512-+mycXv8l2fEAjFZ5sjrtjJDmm2ceKGjrNbBr1durRg6VkU9fNUE/gsmQ51hWbHqs+l35W1iM+ZsmOD9Fd6lspw==", + "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", @@ -27670,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", @@ -27801,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", @@ -27829,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", @@ -28017,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": { @@ -28118,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": { @@ -28187,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": { @@ -28296,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", @@ -28353,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": { @@ -28507,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": { @@ -28617,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" @@ -28822,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", @@ -28832,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" } }, @@ -28844,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", @@ -28978,10 +30009,14 @@ }, "regenerate": { "version": "1.4.2", + "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz", + "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==", "dev": true }, "regenerate-unicode-properties": { "version": "10.2.0", + "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.2.0.tgz", + "integrity": "sha512-DqHn3DwbmmPVzeKj9woBadqmXxLvQoQIwu7nopMc72ztvxVmVk2SBhSnx67zuye5TP+lJsb/TBQsjLKhnDf3MA==", "dev": true, "requires": { "regenerate": "^1.4.2" @@ -28990,41 +30025,58 @@ "regenerator-runtime": { "version": "0.14.1" }, - "regenerator-transform": { - "version": "0.15.2", - "dev": true, - "requires": { - "@babel/runtime": "^7.8.4" - } - }, - "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" } }, "regexpu-core": { - "version": "6.1.1", + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-6.2.0.tgz", + "integrity": "sha512-H66BPQMrv+V16t8xtmq+UC0CBpiTBA60V8ibS1QVReIp8T1z8hwFxqcGzm9K6lgsN7sB5edVH8a+ze6Fqm4weA==", "dev": true, "requires": { "regenerate": "^1.4.2", "regenerate-unicode-properties": "^10.2.0", "regjsgen": "^0.8.0", - "regjsparser": "^0.11.0", + "regjsparser": "^0.12.0", "unicode-match-property-ecmascript": "^2.0.0", "unicode-match-property-value-ecmascript": "^2.1.0" } }, "regjsgen": { "version": "0.8.0", + "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.8.0.tgz", + "integrity": "sha512-RvwtGe3d7LvWiDQXeQw8p5asZUmfU1G/l6WbUXeHta7Y2PEIvBTwH6E2EfmYUK8pxcxEdEmaomqyp0vZZ7C+3Q==", "dev": true }, "regjsparser": { - "version": "0.11.2", + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.12.0.tgz", + "integrity": "sha512-cnE+y8bz4NhMjISKbgeVJtqNbtf5QpjZP+Bslo+UqkIt9QPnX9q095eiRRASJG1/tz6dlNr6Z5NsBiWYokp6EQ==", "dev": true, "requires": { "jsesc": "~3.0.2" @@ -29077,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" } @@ -29233,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", @@ -29245,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", @@ -29253,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", @@ -29267,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", @@ -29277,9 +30341,9 @@ } }, "sass": { - "version": "1.87.0", - "resolved": "https://registry.npmjs.org/sass/-/sass-1.87.0.tgz", - "integrity": "sha512-d0NoFH4v6SjEK7BoX810Jsrhj7IQSYHAHLi/iSpgqKc7LaIDshFRlSg5LOymf9FqQhxEHs2W5ZQXlvy0KD45Uw==", + "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", @@ -29512,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", @@ -29628,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, @@ -29797,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, @@ -29814,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": { @@ -29979,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", @@ -29997,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", @@ -30027,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 @@ -30046,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 } } @@ -30202,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", @@ -30329,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", @@ -30371,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", @@ -30382,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", @@ -30407,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": { @@ -30415,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": { @@ -30469,9 +31577,6 @@ "version": "1.0.1", "dev": true }, - "toml": { - "version": "3.0.0" - }, "toposort": { "version": "2.0.2" }, @@ -30608,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": { @@ -30705,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", @@ -30722,16 +31839,20 @@ } }, "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", + "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.1.tgz", + "integrity": "sha512-dA8WbNeb2a6oQzAQ55YlT5vQAWGV9WXOsi3SskE3bcCdM0P4SDd+24zS/OCacdRq5BkdsRj9q3Pg6YyQoxIGqg==", "dev": true }, "unicode-match-property-ecmascript": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz", + "integrity": "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==", "dev": true, "requires": { "unicode-canonical-property-names-ecmascript": "^2.0.0", @@ -30740,10 +31861,14 @@ }, "unicode-match-property-value-ecmascript": { "version": "2.2.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.2.0.tgz", + "integrity": "sha512-4IehN3V/+kkr5YeSSDDQG8QLqO26XpL2XP3GQtqwlT/QYSECAwFztxVHjlbh0+gjJ3XmNLS0zDsbgs9jWKExLg==", "dev": true }, "unicode-property-aliases-ecmascript": { "version": "2.1.0", + "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz", + "integrity": "sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==", "dev": true }, "unicorn-magic": { @@ -30797,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": { @@ -30884,56 +32011,76 @@ "dev": true }, "vite": { - "version": "6.2.6", - "resolved": "https://registry.npmjs.org/vite/-/vite-6.2.6.tgz", - "integrity": "sha512-9xpjNl3kR4rVDZgPNdTL0/c6ao4km69a/2ihNQbcANz8RuCOK3hQBmLSJf3bRKVQjVMda+YvizNE8AwvogcPbw==", + "version": "6.3.4", + "resolved": "https://registry.npmjs.org/vite/-/vite-6.3.4.tgz", + "integrity": "sha512-BiReIiMS2fyFqbqNT/Qqt4CVITDU9M9vE+DKcVAsB+ZV0wvTKd+3hMbkpxz1b+NmEDMegpVbisKiAZOnvO92Sw==", "dev": true, "requires": { "esbuild": "^0.25.0", + "fdir": "^6.4.4", "fsevents": "~2.3.3", + "picomatch": "^4.0.2", "postcss": "^8.5.3", - "rollup": "^4.30.1" + "rollup": "^4.34.9", + "tinyglobby": "^0.2.13" + }, + "dependencies": { + "fdir": { + "version": "6.4.4", + "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.4.4.tgz", + "integrity": "sha512-1NZP+GK4GfuAv3PqKvxQRDMjdSRZjnkq7KfhlNrCNNlZ0ygQFpebfrnfnq/W7fpUnAv9aGWmY1zKx7FYL3gwhg==", + "dev": true, + "requires": {} + }, + "picomatch": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.2.tgz", + "integrity": "sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==", + "dev": true + } } }, "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": { @@ -30943,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 } } }, @@ -31283,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" } @@ -31341,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 e7760e8d..a262b49f 100644 --- a/package.json +++ b/package.json @@ -7,17 +7,19 @@ "npm": ">=7.0.0" }, "dependencies": { - "@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", - "@reduxjs/toolkit": "2.6.1", + "@ltd/j-toml": "1.38.0", + "@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.3.1", - "@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", @@ -26,72 +28,75 @@ "react-redux": "9.2.0", "react-router-dom": "6.27.0", "redux": "5.0.1", - "redux-promise-middleware": "6.2.0", - "toml": "3.0.0" + "redux-promise-middleware": "6.2.0" }, "devDependencies": { - "@babel/core": "7.26.10", - "@babel/preset-env": "7.26.9", - "@babel/preset-react": "7.26.3", - "@babel/preset-typescript": "7.27.0", - "@patternfly/react-icons": "5.4.2", + "@babel/core": "7.28.0", + "@babel/preset-env": "7.28.0", + "@babel/preset-react": "7.27.1", + "@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", - "@currents/playwright": "1.12.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.23", + "@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/react": "16.2.0", + "@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.30.1", - "@typescript-eslint/parser": "8.29.0", - "@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.1.1", + "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.3", + "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.87.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 new file mode 100644 index 00000000..1bfba62c --- /dev/null +++ b/playwright/Customizations/Firewall.spec.ts @@ -0,0 +1,155 @@ +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 Firewall 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 correctly fill the ports in Firewall step', async () => { + await frame.getByRole('button', { name: 'Firewall' }).click(); + await frame.getByPlaceholder('Add ports').fill('80:tcp'); + await frame.getByRole('button', { name: 'Add ports' }).click(); + await expect(frame.getByText('80:tcp')).toBeVisible(); + }); + + await test.step('Select and correctly fill the disabled services in Firewall step', async () => { + await frame + .getByPlaceholder('Add disabled service') + .fill('disabled_service'); + await frame.getByRole('button', { name: 'Add disabled service' }).click(); + await expect(frame.getByText('disabled_service')).toBeVisible(); + }); + + await test.step('Select and correctly fill the enabled services in Firewall step', async () => { + await frame.getByPlaceholder('Add enabled service').fill('enabled_service'); + await frame.getByRole('button', { name: 'Add enabled service' }).click(); + await expect(frame.getByText('enabled_service')).toBeVisible(); + }); + + 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( + '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('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('Expected format: . Example: sshd').nth(1), + ).toBeVisible(); + }); + + 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 Firewall step').click(); + + await frame.getByPlaceholder('Add ports').fill('90:tcp'); + await frame.getByRole('button', { name: 'Add ports' }).click(); + await frame.getByPlaceholder('Add disabled service').fill('x'); + await frame.getByRole('button', { name: 'Add disabled service' }).click(); + await frame.getByPlaceholder('Add enabled service').fill('y'); + await frame.getByRole('button', { name: 'Add enabled service' }).click(); + + await frame.getByRole('button', { name: 'Close 80:tcp' }).click(); + await frame.getByRole('button', { name: 'Close enabled_service' }).click(); + await frame.getByRole('button', { name: 'Close disabled_service' }).click(); + + await expect(frame.getByText('90:tcp')).toBeVisible(); + await expect(frame.getByText('x').nth(0)).toBeVisible(); + await expect(frame.getByText('y').nth(0)).toBeVisible(); + + await expect(frame.getByText('80:tcp')).toBeHidden(); + await expect(frame.getByText('disabled_service')).toBeHidden(); + await expect(frame.getByText('enabled_service')).toBeHidden(); + + 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: 'Firewall' }).click(); + + await expect(frame.getByText('90:tcp')).toBeVisible(); + await expect(frame.getByText('x').nth(0)).toBeVisible(); + await expect(frame.getByText('y').nth(0)).toBeVisible(); + + await expect(frame.getByText('80:tcp')).toBeHidden(); + await expect(frame.getByText('disabled_service')).toBeHidden(); + await expect(frame.getByText('enabled_service')).toBeHidden(); + + await page.getByRole('button', { name: 'Cancel' }).click(); + }); +}); 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 new file mode 100644 index 00000000..a7360ca9 --- /dev/null +++ b/playwright/Customizations/Systemd.spec.ts @@ -0,0 +1,156 @@ +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 Systemd 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 correctly fill all of the service fields', async () => { + await frame.getByRole('button', { name: 'Systemd services' }).click(); + + await frame + .getByPlaceholder('Add disabled service') + .fill('systemd-dis.service'); + await frame.getByRole('button', { name: 'Add disabled service' }).click(); + await expect(frame.getByText('systemd-dis.service')).toBeVisible(); + + await frame + .getByPlaceholder('Add enabled service') + .fill('systemd-en.service'); + await frame.getByRole('button', { name: 'Add enabled service' }).click(); + await expect(frame.getByText('systemd-en.service')).toBeVisible(); + + await frame + .getByPlaceholder('Add masked service') + .fill('systemd-m.service'); + await frame.getByRole('button', { name: 'Add masked service' }).click(); + await expect(frame.getByText('systemd-m.service')).toBeVisible(); + }); + + 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('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('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('Expected format: . Example: sshd').nth(2), + ).toBeVisible(); + }); + + 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 Systemd services step').click(); + + await frame + .getByPlaceholder('Add disabled service') + .fill('disabled-service'); + await frame.getByRole('button', { name: 'Add disabled service' }).click(); + await frame.getByPlaceholder('Add enabled service').fill('enabled-service'); + await frame.getByRole('button', { name: 'Add enabled service' }).click(); + await frame.getByPlaceholder('Add masked service').fill('masked-service'); + await frame.getByRole('button', { name: 'Add masked service' }).click(); + + await frame + .getByRole('button', { name: 'Close systemd-m.service' }) + .click(); + await frame + .getByRole('button', { name: 'Close systemd-en.service' }) + .click(); + await frame + .getByRole('button', { name: 'Close systemd-dis.service' }) + .click(); + + await expect(frame.getByText('enabled-service')).toBeVisible(); + await expect(frame.getByText('disabled-service')).toBeVisible(); + await expect(frame.getByText('masked-service')).toBeVisible(); + + await expect(frame.getByText('systemd-en.service')).toBeHidden(); + await expect(frame.getByText('systemd-dis.service')).toBeHidden(); + await expect(frame.getByText('systemd-m.service')).toBeHidden(); + + 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: 'Systemd services' }).click(); + + await expect(frame.getByText('enabled-service')).toBeVisible(); + await expect(frame.getByText('disabled-service')).toBeVisible(); + await expect(frame.getByText('masked-service')).toBeVisible(); + + await expect(frame.getByText('systemd-en.service')).toBeHidden(); + await expect(frame.getByText('systemd-dis.service')).toBeHidden(); + await expect(frame.getByText('systemd-m.service')).toBeHidden(); + + await page.getByRole('button', { name: 'Cancel' }).click(); + }); +}); diff --git a/playwright/Customizations/Timezone.spec.ts b/playwright/Customizations/Timezone.spec.ts new file mode 100644 index 00000000..8a3c51cf --- /dev/null +++ b/playwright/Customizations/Timezone.spec.ts @@ -0,0 +1,128 @@ +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 Timezone 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 Timezone step', async () => { + await frame.getByRole('button', { name: 'Timezone' }).click(); + await frame.getByPlaceholder('Select a timezone').fill('Canada'); + await frame.getByRole('option', { name: 'Canada/Saskatchewan' }).click(); + await frame.getByRole('button', { name: 'Clear input' }).first().click(); + await frame.getByPlaceholder('Select a timezone').fill('Europe'); + await frame.getByRole('option', { name: 'Europe/Stockholm' }).click(); + + await frame.getByPlaceholder('Add NTP servers').fill('0.nl.pool.ntp.org'); + await frame.getByRole('button', { name: 'Add NTP server' }).click(); + await expect(frame.getByText('0.nl.pool.ntp.org')).toBeVisible(); + await frame.getByPlaceholder('Add NTP servers').fill('0.nl.pool.ntp.org'); + await frame.getByRole('button', { name: 'Add NTP server' }).click(); + 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('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(); + await frame.getByPlaceholder('Add NTP servers').fill('0.de.pool.ntp.org'); + await frame.getByRole('button', { name: 'Add NTP server' }).click(); + await expect(frame.getByText('0.de.pool.ntp.org')).toBeVisible(); + await frame + .getByRole('button', { name: 'Close 0.cz.pool.ntp.org' }) + .click(); + await expect(frame.getByText('0.cz.pool.ntp.org')).toBeHidden(); + 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 Timezone step').click(); + await expect(frame.getByText('Canada/Saskatchewan')).toBeHidden(); + await expect(frame.getByPlaceholder('Select a timezone')).toHaveValue( + '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', + ); + await expect(frame.getByText('0.nl.pool.ntp.org')).toBeVisible(); + await expect(frame.getByText('0.de.pool.ntp.org')).toBeVisible(); + await expect(frame.getByText('0.cz.pool.ntp.org')).toBeHidden(); + 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: 'Timezone' }).click(); + await expect(frame.getByPlaceholder('Select a timezone')).toHaveValue( + 'Europe/Oslo', + ); + await expect(frame.getByText('0.nl.pool.ntp.org')).toBeVisible(); + await expect(frame.getByText('0.de.pool.ntp.org')).toBeVisible(); + await expect(frame.getByText('0.cz.pool.ntp.org')).toBeHidden(); + await frame.getByRole('button', { name: 'Cancel' }).click(); + }); +}); 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 3cd26521..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,15 +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' }), // 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 7b460862..4ae5531b 100644 --- a/playwright/helpers/login.ts +++ b/playwright/helpers/login.ts @@ -1,6 +1,9 @@ -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'; /** * Logs in to either Cockpit or Console, will distinguish between them based on the environment @@ -20,46 +23,116 @@ 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'); await page.getByRole('textbox', { name: 'User name' }).fill(user); await page.getByRole('textbox', { name: 'Password' }).fill(password); - - // cockpit-image-builder needs superuser await page.getByRole('button', { name: 'Log in' }).click(); - 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(); + // image-builder lives inside an iframe + const frame = ibFrame(page); - 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(); + 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(); + + 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' }), ).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/make_rpm_and_install.sh b/schutzbot/make_rpm_and_install.sh index eda1a7a2..7f58d660 100755 --- a/schutzbot/make_rpm_and_install.sh +++ b/schutzbot/make_rpm_and_install.sh @@ -6,12 +6,16 @@ source /etc/os-release sudo dnf install -y \ libappstream-glib -# RHEL9 has nodejs and npm separately if [[ "$ID" == rhel && ${VERSION_ID%.*} == 10 ]]; then sudo dnf install -y nodejs-npm \ sqlite # node fails to pull this in -else +elif [[ "$ID" == rhel ]]; then sudo dnf install -y npm +elif [[ "$ID" == fedora ]]; then + sudo dnf install -y \ + nodejs-npm \ + sqlite \ + gettext fi npm ci 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 3b73239f..a3ddc921 100644 --- a/schutzbot/terraform +++ b/schutzbot/terraform @@ -1 +1 @@ -9e23ef712339fdc44d3499ee487ef3a3a202db25 +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 397772a3..4c825be2 100644 --- a/src/AppCockpit.tsx +++ b/src/AppCockpit.tsx @@ -3,35 +3,49 @@ 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 { NotReady } from './Components/Cockpit/NotReady'; +import './AppCockpit.scss'; +import { NotReady, RequireAdmin } from './Components/Cockpit'; import { Router } from './Router'; import { onPremStore as store } from './store'; import { useGetComposerSocketStatus } from './Utilities/useComposerStatus'; +import { useIsCockpitAdmin } from './Utilities/useIsCockpitAdmin'; const Application = () => { const { enabled, started } = useGetComposerSocketStatus(); + const isAdmin = useIsCockpitAdmin(); if (!started || !enabled) { return ; } + if (!isAdmin) { + return ; + } + 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' > -